WebViewで画面回転時にActivityのリスタートを抑止する

通常、AndroidのActivityのメカニズムでは、画面の回転が発生するとそれまでの事は全部忘れてリスタート(onCreateメソッドが呼ばれる)してしまう。これはこれで良いのだが、WebViewを使ってWebページを閲覧しているとき等はそれでは都合の悪い場合もある。

そのような場合、AndroidManifest.xmlで該当Activityにandroid:configChanges="orientation|screenSize"を追加することで、Webページの状態を保ったままタテ・ヨコの切り替えが可能となる。尚、今回はWebViewを題材としているが、この仕組みはActivityが持つメカニズムであり必ずしもWebViewに限ったことではない。

        <activity
            android:name="com.example.webviewconfigchange.MainActivity"
            android:label="@string/app_name"
            android:configChanges="orientation|screenSize" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

android:configChangesを設定すると、画面回転時にはonCreateメソッドでなくonConfigurationChangedメソッドが呼ばれる。回転の向きはnewConfig.orientationで取得できる。

	@Override
	public void onConfigurationChanged(Configuration newConfig) {
		// TODO Auto-generated method stub
		super.onConfigurationChanged(newConfig);
		if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
			Log.d(TAG, "onConfigurationChanged! PORTRAIT");
		} else {
			Log.d(TAG, "onConfigurationChanged! LANDSCAPE");
		}
	}
(2013/12/07)

新着情報
【オープンソースソフトウェア環境構築】Apple silicon Macで開発環境を構築
【Rust Tips】Actix webでJSONをPOSTする
【Rust Tips】コマンドライン引数を取得する

Copyright(C) 2004-2013 モバイル開発系(K) All rights reserved.
[Home]