티스토리 뷰


AndroidManifest.xml 의 해당 Activity 안에 android:configChanges="keyboardHidden|orientation"
를 넣으면 가로,세로 화면전환이 일어날때 onCreate(), onDestroy()를 안하고

밑에 메소드를 @Override 하면 가로 또는 세로모드로 전환 시점을 알 수 있어 그때그때 액션을 넣을 수 있다.
  @Override
 public void onConfigurationChanged(Configuration newConfig) {
  if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { // 세로 전환시 발생
    android.util.Log.d("test", "@@@@@ Configuration.ORIENTATION_PORTRAIT : 세로전환요청");  
 } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { // 가로 전환시 발생
     android.util.Log.d("test", "@@@@@ Configuration.ORIENTATION_LANDSCAPE :  가로전환요청");  
 }
  super.onConfigurationChanged(newConfig);
 }


또 밑에와 같이 Configruation 을 이용하여 가로모드이건 세로모드이건
버튼하나로 현재 화면상태를 유지,변경시킬 수 있다.

//필드정의 
private Configuration config;
 private Button screenLock;
 private boolean lockYn = false;


//버튼 리스너 (초기화는 알아서 해주세요)
   screenLock.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

     String messageMng = "";
     if(lockYn){
      lockYn = false;
      messageMng = "result [Lock OFF]";
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); // 모두전환 됨
     }else{
      lockYn = true;
      messageMng = "result [Lock ON]";
      //현재 가로모드 일경우
      if(config.orientation == Configuration.ORIENTATION_LANDSCAPE){
       setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); // 가로고정
      }
      //현재 세로모드 일경우
      else if(config.orientation == Configuration.ORIENTATION_PORTRAIT){
       setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // 세로고정
      }
      
     }
     
           if(mtoast == null){
            mtoast = Toast.makeText(Mytest.this,messageMng, Toast.LENGTH_SHORT ); 
           }else{
            mtoast.setText(messageMng);
           }
           mtoast.show();
    }
   });


댓글