画面の向きが変わったときに onCreate() を再度実行しないようにするために、Android マニフェストに次のコードを追加しました。
android:configChanges="orientation|keyboardHidden|screenSize"
それはいいです。ただし、向きを変更するだけで画面を回転できるようにしたいのですが、onCreate-> onStart-> etcライフサイクルを再度実行することはありません。
メソッド onConfigurationChanged を次のようにオーバーライドしました。
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
そして、それはうまくいきます。ただし、デバイスが縦向きモードか横向きモードかによって背景画像を変更する必要があります。コードに次の行を追加してみました。
mBackground.setBackgroundResource(R.drawable.splash_bg);
これの目的は、方向が変更されたので、splash_bg リソースをリロードすることです。これにより、drawable-land フォルダーで画像が検索されます。
したがって、メソッドは次のようになります。
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mBackground.setBackgroundResource(R.drawable.splash_bg);
}
しかし、それはまったく正しく機能しません。デバイスを縦向きモードで最初に起動した後、縦向きの背景画像が表示されます。それを (横向きモードに) 回転させると、背景画像が縦向きの背景から横向きの背景 (drawable-land にあるもの) に正常に変更されます。逆もまた真です (横向きから始めて縦向きに切り替えた場合)。これは、drawable-port フォルダー (通常の drawable フォルダーの上) に背景画像の縦向きモード バージョンも含めているためです。
したがって、最初の回転では問題なく動作します。ただし、方向を開始した場所に戻すと、画像が適切な方向タイプに更新されません。基本的には1回のみ有効です。
誰でもこれについて考えがありますか?必要に応じてさらにコードを提供しますが、必要なものはすべて含めたと思います。ありがとう!