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)
Copyright(C) 2004-2013 モバイル開発系(K) All rights reserved.
[Home]
|