본문 바로가기

안드로이드

activity 자동회전

반응형
package com.example.eevent;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.res.Configuration;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
//가로세로회전시  activity 바꾸고 싶은경우

// res하위폴더에 layout-land만들고 그곳에 activity.xml파일 만들면. 단말 방향바꿀때 land파일의 xml을 읽는방식
//-단말의 방향이 바뀔때마다 액티비티를 메모리에서 없앴다가 다시 만든다.
//이경우 선언해둔 모든 변수값을 저장했다가 다시 복원하는 방법 =>onsaveInstanceState 콜백메서드:액티비티가 종료전 상태저장=>oncreate메서드가 호출될때 번들객체로 복원가능



//아래코드는 액티비티가 없어졋다가 새로만들어지는 것을 토스트로 확인
public class MainActivity extends AppCompatActivity {
    String name;
    EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) { //화면에 보이기 전에 메모리에 만들어져야함
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
      //  showToast("onCreate호출");

        editText=findViewById(R.id.edittext);
        Button button=findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View v) {
                name=editText.getText().toString();
                showToast("입력된값 변수에저장했습니다"+name);
            }
        });
       if(savedInstanceState!=null){
           name=savedInstanceState.getString("name");
           showToast("값 복원했습니다"+name);
       }
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString("name",name); //name변수저장
    }

    @Override
    protected void onStart() { //화면에 보이기전
        super.onStart();
     //   showToast("onStart호출");
    }

    @Override
    protected void onStop() {//화면이 보이다가 없어지면
        super.onStop();
      //  showToast("onStop호출");
    }

    @Override
    protected void onDestroy() { //메모리에서 없어지는경우
        super.onDestroy();
      //  showToast("onDestroy호출");
    }
/*activiy.xml 재생성 하고 싶지 않을때
 manifest에서 configuration추가
    @Override
    public void onConfigurationChanged(@NonNull Configuration newConfig) { //configureation 객체에는 orientaion성분이 들어있어서 비교할수있다.
        super.onConfigurationChanged(newConfig);
        if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE)
        {
          //  showToast("방향:orientation_landscape");
        }
        else if(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT)
        {
        //    showToast("방향:orientation_portrait");
        }
    }

    */

    //context
    //어플리케이션에 관하여 시스템이 관리하고 있는 정보에 접근하기
    //안드로이드 시스템 서비스에서 제공하는 API 를 호출 할 수 있는 기능
    public void showToast(String data) {
        Toast.makeText(this,data,Toast.LENGTH_LONG).show();
    }


}

1.가로,세로 activity.xml 두개 따로만드는경우

2. 한개의 activity.xml로 처리하는경우 

두가지가 있다..

 

 

 

반응형

'안드로이드' 카테고리의 다른 글

스레드와 핸들러 이해하기  (0) 2021.02.03
Intent란  (0) 2021.01.27
[안드로이드] 검색 기능  (0) 2018.01.02
[안드로이드]dialog size 조절 , 레이아웃 조절  (1) 2018.01.02
[안드로이드] DB 사용하기  (0) 2017.12.29