アクティビティでフルスクリーンのビットマップを表示するアプリがあります。読み込み時間を短縮するために、メモリに読み込みます。しかし、画面の向きが変わったら、キャッシュをクリアして、新しいサイズに収まるビットマップで再度埋めたいと思います。唯一の問題は、これを行うには、向きの変化がいつ発生したかを検出する必要があることです。これを検出する方法を知っている人はいますか?
質問する
28229 次
4 に答える
4
onSavedInstanceState
メソッドから確認できますonCreate
。null でない場合は、これが構成の変更であることを意味します。
于 2013-08-19T19:46:13.240 に答える
4
別のアプローチは、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();
}
于 2016-04-01T10:49:48.927 に答える
2
OnCreate()
何か別のことをしない限り、通常は向きの変更が呼び出されます。
そこにロジックを配置できます。
于 2013-08-19T19:36:40.413 に答える