5

アクティビティでフルスクリーンのビットマップを表示するアプリがあります。読み込み時間を短縮するために、メモリに読み込みます。しかし、画面の向きが変わったら、キャッシュをクリアして、新しいサイズに収まるビットマップで再度埋めたいと思います。唯一の問題は、これを行うには、向きの変化がいつ発生したかを検出する必要があることです。これを検出する方法を知っている人はいますか?

4

4 に答える 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 に答える