facebook twitter hatena line email

「Android/端末回転」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(回転するときにActivityを破棄させない方法)
行29: 行29:
  
 
参考:https://qiita.com/kobakei/items/5f38339dd6528fdc6b5d
 
参考:https://qiita.com/kobakei/items/5f38339dd6528fdc6b5d
 +
 +
==onConfigurationChangedが回転前の縦幅横幅を取得してくる対策==
 +
thread処理させるとよい
 +
    @Override
 +
    public void onConfigurationChanged(Configuration newConfig) {
 +
        super.onConfigurationChanged(newConfig);
 +
        final Handler handler = new Handler();
 +
        handler.post(new Runnable() {
 +
            @Override
 +
            public void run() {
 +
                Log.i(TAG, "onConfigurationChanged width=" + imageView.getWidth());
 +
                Log.i(TAG, "onConfigurationChanged height=" + imageView.getHeight());
 +
            }
 +
        });
 +
    }

2018年11月14日 (水) 18:59時点における版

回転時のライフサイクル

android/ライフサイクル

回転するときにActivityを破棄させない方法

AndroidManifest.xmlに以下を追加

<activity android:name=".MainActivity"
        android:configChanges="orientation|screenSize"></activity>

すると以下イベントは発生しなくなる。

  1. onCreate
  2. onStart
  3. onRestoreInstanceState
  4. onResume
  5. onWindowFocusChanged
  6. onPause
  7. onSaveInstanceState
  8. onStop
  9. onDestroy

代わりにonConfigurationChangedが発生するので以下コードで捕まえる

@Override
public void onConfigurationChanged(Configuration newConfig) {
       super.onConfigurationChanged(newConfig);
       Log.d(TAG, "onConfigurationChanged");
}

参考:https://qiita.com/myoshimu/items/4d891f8e0ec3abaa7662

参考:https://qiita.com/kobakei/items/5f38339dd6528fdc6b5d

onConfigurationChangedが回転前の縦幅横幅を取得してくる対策

thread処理させるとよい

   @Override
   public void onConfigurationChanged(Configuration newConfig) {
       super.onConfigurationChanged(newConfig);
       final Handler handler = new Handler();
       handler.post(new Runnable() {
           @Override
           public void run() {
               Log.i(TAG, "onConfigurationChanged width=" + imageView.getWidth());
               Log.i(TAG, "onConfigurationChanged height=" + imageView.getHeight());
           }
       });
   }