2

Androidアプリで画面を回転させるときにアクティビティ全体をリロードしない方法を探しました。最後に、私は

android:configChanges="orientation"

AndroidManifest のアクティビティ定義で十分です。電話を回転させても、アクティビティがリロードされず、すべてのビューが横向きに完全に調整され、何も問題がなく、プログラムによる回転のガイドで使用されている onSaveInstanceState も onRestoreInstanceState も起動されません。

しかし、それがそれほど単純である場合、なぜ私が見つけたすべてのチュートリアルとガイドが非常に複雑な解決策を提示しているのでしょうか? いえ

http://www.devahead.com/blog/2012/01/preserving-the-state-of-an-android-webview-on-screen-orientation-change/

Android での向きの変更に関するデータの保存

私の実験では、すべてが自動的に正しく再レンダリングされますが、私の単純な解決策には、私が知らない隠れた問題がありませんか? それは本当に簡単で正しいですか?

ありがとうございました

4

3 に答える 3

1

構成の変更時にリソースを変更する必要がない場合は、これで問題ありません。ただし、ランドスケープリソースを定義した場合は、UIリソースの交換を自分で処理する必要があります。ただし、アクティビティでリソースを変更する必要がない場合は、非常に簡単です。

また、マニフェストでSDK 13以降をターゲットにしている場合は、次のような回転の変更にscreenSize値を含める必要があることに注意してください。-

android:configChanges="orientation|screenSize"

SDK 12以下をターゲットにしている場合は、SDK12以下で問題ありません。

于 2013-01-22T13:23:05.077 に答える
1

連絡先ピッカーなどの「単純な」アプリや、情報を保存する必要があまりないようなアプリの場合は、ビューの向きを変更するだけでよいため、 android:configChanges="orientation" を使用するとうまくいきます。

ただし、ゲームなど、画面領域を計算する必要があるものを開発していて、ポートレート/ランドスケープ モードで異なる場合は、この情報を保存し、すべてを再計算して、エラーなしで正しく表示する必要があります。

ところで、私は Android の専門家でもなんでもありません。これは私の単純な見解/理解です。これが正しい答えでない場合は、遠慮なく反対票を投じてください。

于 2013-01-22T13:22:33.120 に答える
-1

これをマニフェストファイルに追加する

android:configChanges="keyboardHidden|orientation"

本当にこれで十分です。私も同じ疑問を持っています

于 2013-01-22T13:16:41.723 に答える