3

キャンバスがあり、向きが変更されると再描画されます。これは、Android が提供していないカスタム キャンバスです。

画面レイアウトが変更されると、アプリケーションの状態と (そのビューのすべての状態) がリセットされます。画面の向きを縦向きのみに変更しました。画面レイアウトは変更されませんが、アプリケーションは再びリセットされます。

ドキュメントを確認したところ、方向の変更が発生すると、アクティビティが破棄され、再び再開されることがわかりました。Savestate() は、カスタム キャンバスに必要なビットマップ データまたは大きなデータを保存およびロードできません。

ドキュメントを再度確認したところ、特定の構成変更が発生したときに呼び出される onConfigurationChanged() に言及しているランタイム変更の処理トピックが見つかりました。これは私の場合は「向き」です。このメソッドは、再起動を防ぎ、構成変更の実装方法を開発者に任せます。最後の段落で、そのメソッドを実装しない場合、これによりアクティビティが onRestart() をスキップするだけで、何もしないことにも言及しました。マニフェストファイルを次のように設定しています

android:screenOrientation="portrait"
android:configChanges="orientation"

そして、私は onConfigurationChanged() を実装していません。しかし、これも役に立ちません。どうしてか分かりません。とても役に立ったようです。

解決策があれば投稿してください。また、アプリにはかなりの時間がかかります。向きを変更してもアプリが再起動しないようにしてください。実際、私はこれが起こったときに何もしたくありません。私もエミュレータを使用しているので、エミュレータのみの問題かどうかを明確にしてください。

PS インターネット接続がダウンしており、愚かなモバイル クライアントを使用しています。オフラインのドキュメントを確認しました。そして、つづりについてはご容赦ください。私は解決策を見つけようとしていますが、現在私は困惑しています。

4

3 に答える 3

7

これを AndroidMenifest.xml で使用します

<activity
            android:name="MyActivity"
            android:configChanges="orientation|keyboard|keyboardHidden"
            android:screenOrientation="sensor" />
于 2012-05-08T13:56:16.757 に答える
1

次のコードをマニフェストに記述します。

android:configChanges="orientation|screenSize|keyboardHidden"
于 2016-02-04T17:29:14.137 に答える
0

AndroidManifest のアクティビティごとに、screenOrientation を指定できます。たとえば、アクティビティが常に縦向きモードのままであることを指定するには、アクティビティ要素に次を追加できます。

android:screenOrientation="ポートレート"

同様に、ランドスケープ モードは次のように指定できます。

android:screenOrientation="ランドスケープ"

ただし、ハード キーボードが引き出されると、前の方法でもアクティビティが破棄され、再開されます。したがって、3 番目の方法が可能です。アプリケーションが向きとキーボードの引き抜きイベントを処理する必要があることを Android システムに伝えます。次の属性をアクティビティ要素に追加します: android:configChanges="orientation|keyboardHidden"

于 2012-05-08T14:12:11.427 に答える