Bundle savedInstanceState
여기에 멤버 변수를 저장

가로 방향 탭에서 만듬 이때 세로 방향이랑 button, edittext의 이름이 같아야함

가로로 바꿔도 값이 유지가 되는 것은 화면만 유지되는것
if(savedInstanceState != null){
name = savedInstanceState.getString("name");
showToast("값을 복원합니다 : "+name);
System.out.println("savedInstanceState 저장된 값 : "+name);
}

name에 null 값이 들어가 있음
@Override
protected void onSaveInstanceState(@NonNull Bundle outState){
//화면 전환시 자동 호출됨
super.onSaveInstanceState(outState);
System.out.println("onSaveInstanceState 호출됨");
outState.putString("name", name);//멤버변수 값 name 값의 저장
}



가로 방향이 되면 입력 창에 저장한 값을 다시 가로 방향의 name에 저장해 둠
outstate에 name이라는 키 값에 넣은 값을 위의 if문에 다시 넣어줌

화면 돌릴때 이러한 과정을 거침
- manifest.xml에 configChanges 설정, 화면 전환시 onConfigurationChanged함수 자동호출됨
manifest.xml에서
<activity> 안에
android:configChanges="orientation|screenSize|keyboardHidden"
넣기
<!--단말의 방향이 변경시 마다 configChangesg함수 자동 호출됨-->
main
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig){
super.onConfigurationChanged(newConfig);
if (newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
showToast("가로방향 전환됨");
}else if (newConfig.orientation==Configuration.ORIENTATION_PORTRAIT){
showToast("세로방향 전환됨");
}
}//endmethod


화면 돌릴때 마다 함수가 호출됨
뷰(View) 클래스
안드로이드의 화면을 구성하는 것은 위젯과 레이아웃이며, 이 위젯과 레이아웃의 실체는 뷰(view) 클래스 이다.
안드로이드의 화면은 크게 두 가지로 구성된다.
● 뷰(view)
뷰는 직접 화면에 보이고 사용자 인터페이스를 구성하며 일반적으로 위젯이라고 부르는 컴포넌트를 의미한다.
위젯은 모두 View 클래스의 하위 클래스로서 Button, EditText, TextView, ImageView, Checkbox, RadioButton 등이다.
일반적으로 뷰 그룹에 해당하는 레이아웃에 포함되어 보인다.

● 뷰 그룹(ViewGroup)
뷰 그룹은 위젯의 위치 및 크기 등을 지정하여 여러 위젯을 담는 컨테이너 역활을 하는 뷰이다.
일반적으로 레이아웃이라고 부른다.
모두 View 클래스의 하위 클래스로서 LinearLayour, RelativeLayout, FrameLayout, TableLayout, AdaptView,
ConstraintLayout 등이며 레이아웃은 서로 중첩이 가능하다.

뷰 그룹 안에 또다른 뷰 그룹이 올라갈 수 있음
뷰(View) 클래스의 계층구조

View의 공통적인 속성
● id
뷰를 식별하는 방법으로 사용되며 엑티비티 또는 다른 뷰에서 참조할 때 사용된다.
id를 지정하는 규칙은 다음과 같다.
| android:id="@+id/식별값" |
식별값은 유일한 값으로 지정되어야 하며 지정된 값은 R.java 에 int형의 상수로 자동 저장된다.
모든 뷰에 id 속성을 지정할 필요는 없으며 코드에서 참조해야 하는 경우에만 지정해서 사용한다.
마우스 드래그를 이용하여 뷰를 작성하면 자동으로 삽입된다.
● layout_width, layout_height
뷰의 너비와 높이를 지정할 때 사용한다.
속성값으로 다음과 같이 4가지 중 하나를 사요할 수 있다.
① wrap_content : 내용물의 크기만큼만 채운다.
② 정수값 : 지정한 값만큼만 채운다.
주의할 점은 지정한 크기만큼 모두 적용되지 않는다는 것이다.
이유는 주위의 다른 위젯들의 크기에 영향을 받는다.
따라서 주의해서 사용되어야 하며 사용 단위로는 px, dp, sp, pt가 있다.
안드로이드 기기의 해상도가 달라도 화면에 보이는 위젯의 크기가 거의 일정한 dp단위를 권장한다.
③ match_parent : 부모의 주어진 크기를 모두 채운다.

● background
뷰의 배경을 지정하며 이미지 또는 색상을 설정할 수 있다.
색상은 일반적으로 #RGB, #ARGB 형식을 주로 사용한다.
#ARGB에서 A는 투명도(Alpha)를 의미한다.

● padding
뷰와 내용물 간의 간격을 의미한다.
일반적으로 안쪽 여백이라고 한다.
위, 아래, 왼쪽, 오른쪽 4가지 방향의 여백이 한꺼번에 설정된다.
paddingLeft, paddingRight, paddingTop, paddingBottom 속성을 이용하면 한 방향 여백만 지정 할 수 있다.
● visibility
뷰의 표시 여부를 지정할 수 있다.
속성값으로 다음 세가지 값 중 하나를 지정한다.
① visible : 보이는 상태이다.
② invisible : 숨겨진 상태이며 위젯의 크기만큼 공간을 차지한다.
③ gone : 숨겨진 상태이며 위젯의 공간을 차지하지 않는다.
TextView 위젯

위에꺼

아래꺼

input type을 phone으로 하면 숫자 입력하라 고 뜸



아이디 변경
EditText a = findViewById(R.id.textname);
EditText b = findViewById(R.id.textphone);
id를 찾아서 지정해줌
Log.i("Mytag", String.valueOf(a.getText()));

라벨 기능을 하는 뷰이다.
● text
가장 중요한 속성으로 출력할 문자열을 지정한다.
출력 문자열을 지정하는 방법은 다음과 같다.
| 형식 | 설명 |
| "문자열" | text 속성에 직접 리터럴(문자열)을 지정하는 방법이다. |
| @string/식별값 | res/values/strings.xml 파일에 저장된 문자열을 사용하는 방법이다. 공통으로 사용되는 문자열 및 지역화(Localization)를 구현해야 하는 경우에 사용을 권장한다. |
● textColor
문자열의 색상을 지정한다.
● textSize
문자열의 폰트(글꼴) 크기를 지정한다.
사용 단위로는 sp, dp, px, in 등을 사용한다.
● textStyle
폰트의 속성을 지정한다.
normal, bold, italic을 사용할 수 있으며, '|' 를 사용하여 여러 값을 같이 지정할 수도 있다.

● singleLine
문자열 값이 위젯의 너비보다 길 때 강제로 한 줄에 출력된다.
기본은 자동으로 개행(줄바꿈)된다.
● gravity
문자열을 뷰의 x축, y축에 어떻게 정렬시킬 것인지를 지정한다.
● autoLink
자동으로 링크기능을 추가한다.
다음과 같은 속성값을 지정 할 수 있다.
| 속성값 | 설명 |
| none | 링크 기능을 해제 한다. 기본값이다. |
| web | 자동으로 브라우저 화면으로 넘어가는 링크를 생성한다. |
| phone | 자동으로 전화 화면으로 넘어가는 링크를 생성한다. |
| 자동으로 email 입력화면으로 넘어가는 링크를 생성한다. | |
| map | 자동으로 구글맵 화면으로 넘어가는 링크를 생성한다. |
| all | 자동으로 위에서 언급한 화면으로 넘어가는 링크를 생성한다. |

res/valus/strings.xml
<string name="mesg">홍길동</string>


이렇게 고르면 값이 들어가게 만들 수 있음


자동으로 링크를 생성함





phone으로 링크를 걸면 링크를 누르면 자동으로 전화로 연결됨
'코딩공부 > 안드로이드' 카테고리의 다른 글
| 3/21 안드로이드 스튜디오 (0) | 2023.03.21 |
|---|