私はアクティビティでフルスクリーンのビットマップを表示するアプリを持っています。高速の読み込み時間を提供するために、私はそれらをメモリにロードします。しかし、画面の向きが変わったら、キャッシュをクリアして新しいディメンションの内側に収まるビットマップをもう一度埋めたいと思います。唯一の問題は、これを行うために、向きが変わったときを検出する必要があることです。誰もこれを検出する方法を知っていますか?デバイスがポートレートモードからランドスケープモードに切り替わるときを検出するにはどうすればよいですか?
答えて
は、それが実際に新しいビューを作成し、のonCreateが再び呼び出される変更http://developer.android.com/guide/topics/resources/runtime-changes.html
公式ドキュメントを参照してください。
さらに、あなたはこれは設定変更であるヌル手段ではない場合は、お使いのonCreate
方法からonSavedInstanceState
を確認することができます
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
}
すばらしい答えに感謝します! –
@noone:このメソッドは、マニフェストの android.R.attr#configChanges属性で処理したい設定を選択した場合にのみ呼び出されることに注意してください。 javadocを参照してください! – user504342
ありがとう、これも私のために働く。 – Suniel
通常、方向変更はOnCreate()
を呼び出します。
ここにロジックを置くことができます。
もちろん、onCreateを呼び出すたびにキャッシュをリロードしないようにするにはどうすればいいですか? onCreateは、例で電話をかけた後にアクティビティを再作成した後に呼び出すことができ、この状況ではキャッシュを再ロードしないでください。 –
@Poplitou 'onSavedInstanceState'についてのsiikの回答を参照してください。また、http://stackoverflow.com/questions/4096169/onsaveinstancestate-and-onrestoreinstancestate – sealz
ありがとうたくさんのリンクのために –
を経由して、それを確認することができます。
さて、私はこのことを知る方法を見て、偉大な答えをありがとう! –
もう1つのアプローチは、OrientationEventListenerを使用しています。
このように使用することができます:向きを確認するには
OrientationEventListener mOrientationEventListener = new OrientationEventListener(
this, SensorManager.SENSOR_DELAY_NORMAL) {
@Override
public void onOrientationChanged(int orientation) {
//checking if device was rotated
if (orientationPortrait != isPortrait(orientation)) {
orientationPortrait = !orientationPortrait;
Log.d(TAG, "Device was rotated!");
}
}
};
:
private boolean isPortrait(int orientation) {
return (orientation >= (360 - 90) && orientation <= 360) || (orientation >= 0 && orientation <= 90);
}
そしてリスナーを有効または無効にすることを忘れないでください:
if (mOrientationEventListener != null) {
mOrientationEventListener.enable();
}
if (mOrientationEventListener != null) {
mOrientationEventListener.disable();
}
私は構成の変更は1つのことだと思います。この場合、onConfigurationChangedは方法です。しかし、オリエンテーションの変更をロックしても通知を受けたい場合は、オリエンテーションリスナーが最適です。ありがとうBogdan。 – Murciegalo84
- 1. レイアウトをポートレートモードからランドスケープモードに切り替えるときの問題
- 2. デバイスがランドスケープモードのときに制約を変更するにはどうすればよいですか?
- 3. コアグラフィックを使用してランドスケープモードとポートレートモードを作成するにはどうすればよいですか?
- 4. ボタンクリックでポートレートモードをランドスケープモードに変更するにはどうすればよいですか?
- 5. デバイスがアンドロイドウェアであるかどうかを検出するにはどうすればよいですか?
- 6. アプリを閉じるときにデバイスから切断するにはどうすればよいですか?
- 7. デバイスがAndroidのマルチウィンドウモードに切り替わるときの検出方法N
- 8. デバイスがルート(Android)かjailbroken(iOS)かどうかを検出するにはどうすればよいですか?
- 9. ワークシートに切り替えるにはどうすればよいですか?
- 10. ユーザーがクリックしたときにimgを切り替えるにはどうすればよいですか?
- 11. フィルタを切り替えるにはどうすればよいですか?
- 12. バックグラウンドを切り替えるにはどうすればよいですか?
- 13. SL3ベータ版から切り替えるときにURLが正しく表示されるようにするにはどうすればよいですか?
- 14. ドキュメント間で切り替えるときに、Visual Studio XAMLコードエディタでフォーカスを失わないようにするにはどうすればよいですか?
- 15. クラスはどのように切り替わりますか?
- 16. iOSでUUIDを知らずにibeaconデバイスを検出するにはどうすればよいですか?
- 17. アプリがモバイルであるかどうかを検出し、角度2の別のアプリに切り替えるにはどうすればいいですか?
- 18. タブを1つ右に切り替えるようにするにはどうすればいいですか?
- 19. SlidesJSのスライドをSlidesJS.comから自動的に切り替えるにはどうすればよいですか?
- 20. EclipseでActionBarActivityからAppCompatActivityに切り替えるにはどうすればよいですか?
- 21. Androidで1ボタンから別のボタンに切り替えるにはどうすればよいですか?
- 22. Iphoneカメラが返ってきたらビューを切り替えるにはどうすればいいですか?
- 23. タブをプログラムからアンドロイドでフラグメントから切り替えるにはどうすればいいですか?
- 24. インタラクティブモードで「期待する」と「する」を切り替えるにはどうすればよいですか?
- 25. ロックされたディスプレイの向きにもかかわらずデバイスの回転を検出するにはどうすればよいですか?
- 26. Cocos2dシーンを切り替えるにはどうすればいいですか?
- 27. JS .textを切り替えるにはどうすればいいですか
- 28. MapboxでiOSのスタイルからレイヤーを切り替えるにはどうすればよいですか?
- 29. メニューから3D FPS設定に切り替えるにはどうすればよいですか? (libGDX)
- 30. CMD.exeからPowershellに切り替えるにはどうすればよいですか?
[の可能重複Androidのレイアウトの向きの変化を検出する方法は?](http://stackoverflow.com/questions/5726657/how-to-detect-orientation-change-in-layout-in -android) – Sam