반응형
1. 안드로이드 스튜디오 화면회전해도 data들 그대로 유지.
2. 안드로이드 스튜디오 화면회전 막기/ 화면고정
.......................................................
1. 안드로이드 스튜디오 화면회전해도 data들 그대로 유지. (코딩)
<MainActivity>
package com.example.orientation;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
//세로, 가로 화면 각각 화면설정했음. - 각 화면의 editText, textView의 id는 같게 해야 코딩 편하다.
//button은 onclick이용할꺼라 id동일여부 딱히 신경 안써도 됨.
//define variables
EditText edit1;
TextView text1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//connect to xml id
edit1 = findViewById(R.id.editTextTextPersonName); //가로화면, 세로화면 id 동일
text1 = findViewById(R.id.textView); //가로화면, 세로화면 id 동일
//화면회전시, 화면복원위한 data
if(savedInstanceState != null){ //화면회전전에는 null 값이다.
String str2 = savedInstanceState.getString("data1"); //아래 method의 값가져오기.
text1.setText(str2);
}
}//finish
//버튼 클릭시, editText의 입력내용 textView에 띄우기 method - > onclick 설정도
public void btnMethod(View view){
String str = edit1.getText().toString();
text1.setText(str);
}//finish
//app 실행후 화면회전해본니, 화면회전 후 textView의 data가 초기화 되어버린다.
//화면 회전시, 초기화 방지위한 data 저장(editText는 data가 보존되는거 확인했으니, textView만 한다.)
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
//화면 회전시, 화면복원에 필요한 data 저장
outState.putString("data1", text1.getText().toString()); //key, value
//onCreate의 변수 SavedInstanceState로 받을거다.
}//finish-> 적용 ㄱㄱ
}
2. 안드로이드 스튜디오 화면회전 막기/ 화면고정 (코딩)
Manifest의 .MainActivity에 screenOrientation 설정.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.orientation">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
<!--화면고정을 위해 추가한 사항
mainActivity에 screenOrientation 설정.-->