Android/Android 챕터 2-2
[챕터 2-2-6] 오리엔테이션
MINOKUMA
2020. 2. 9. 13:31
반응형
결과화면
초기화면

닉네임 입력


가로 방향으로 전환
가로 방향으로 전환되면서 없어진 세로 방향의 데이터를 가지고 온 것을 확인할 수 있다.

오리엔테이션 (방향 이벤트)
방향에 따라 오리엔테이션 이벤트가 발생하는데 단말의 센서에 의해 발생.
세로방향 (기본)
res/layout/activity_main.xml
가로방향 (기본)
res/layout-land/activity_main.xml
프로젝트명 : MyOrientation
res/ 디렉토리에서 디렉토리 생성

Project Files 로 보기
layout-land 디렉토리 생성 확인

layout 의 activity_main.xml 복사해서
lyaout-land 디렉토리에 복사

더보기
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#2800BCD4"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="가로방향"
android:textColor="#FF5722"
android:textSize="50sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>


MainActivity
더보기
package org.minokuma.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showToToast("onCreate 호출됨");
}
public void showToToast(String data){
Toast.makeText(this, "data", Toast.LENGTH_SHORT).show();
}
}
showToToast() 위에서
Alt + Insert 해서 onDestroy() 지정

더보기
package org.minokuma.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showToToast("onCreate 호출됨");
}
@Override
protected void onDestroy() {
super.onDestroy();
showToToast("onDestroy 호출됨");
}
public void showToToast(String data){
Toast.makeText(this, data, Toast.LENGTH_SHORT).show();
}
}



MainActivity.java
더보기
package org.minokuma.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
String name;
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showToToast("onCreate 호출됨");
editText = findViewById(R.id.editText);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (editText != null) {
name = editText.getText().toString();
showToToast("사용자 입력값을 name 변수에 할당함");
}
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
showToToast("onDestroy 호출됨");
}
public void showToToast(String data){
Toast.makeText(this, data, Toast.LENGTH_SHORT).show();
}
}
showToToast() 위에서 Alt + Insert 후 onSaveInstanceState

MainActivity.java
더보기
package org.minokuma.myapplication;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
String name;
EditText editText;
TextView textView2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showToToast("onCreate 호출됨");
editText = findViewById(R.id.editText);
textView2 = findViewById(R.id.textView2);
Button button = findViewById(R.id.button);
if (button != null) {
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (editText != null) {
name = editText.getText().toString();
showToToast("사용자 입력값을 name 변수에 할당함");
}
}
});
}
if (savedInstanceState != null){
if (textView2 != null){
name = savedInstanceState.getString("name");
textView2.setText(name);
showToToast("값을 복원했습니다. : " + name);
}
}
}
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("name", name);
}
@Override
protected void onDestroy() {
super.onDestroy();
showToToast("onDestroy 호출됨");
}
public void showToToast(String data){
Toast.makeText(this, data, Toast.LENGTH_SHORT).show();
}
}
반응형