画面の向きをかなり速く変更したとき、またはバックグラウンドで重いものが発生したときに、奇妙な問題に遭遇しました。私が呼び出すsetContentView(R.layout.main);
とonConfigurationChanged
(向きの変更を自分で処理します)、画面が回転した後、アンドロイドが少しの間、向きと反対のレイアウトを設定します。たとえば、向きを変更すると、このPortrait>Landscapeのようにレイアウトが変更されますが、私の場合、このPortrait>Portrait (電話が既に横向きの位置にある場合)>Landscape のようになることがあります。
これに気付かないこともあれば、画面が約 1/3 秒間縮小することもあります。大したことではありませんが、私の活動では Coverflow ウィジェット (Gallery に基づく) があり、ほとんどの画面で見栄えを良くするために、(onSizeChanged
ウィジェットの)親コンテナーのサイズに基づいて画像サイズを設定します。方向の変更は上記のように行われ、coverflow ウィジェットが間違ったサイズを取得します。
私が今見ている唯一の方法は、向きの変更時に onCreate を呼び出すか (オンラインで大量の UI が入力されているため、これはできません)、UI の初期化に遅延を設定することです (これは醜いです)。
setContentView()
だから、コールバックや何か他のものがあるのだろうか.
それとも別の方法がありますか?
PS: 何らかの理由で、この不具合は主に Desire HD で発生します。