前書き
開発では、水平画面と垂直画面の切り替えに対処する必要があることがよくあります。最初にどのように対処するかはライフサイクルによって異なります
ステートメント
アクティビティは、水平画面と垂直画面を切り替えるときに、2 つの関数をコールバックする必要があります。したがって、これら 2 つの関数は一時的にアクティビティの水平および垂直画面の切り替えライフ サイクルの一部とみなされます。これら 2 つの機能は次のとおりです
プログラムを起動し、次に入ります。アクティビティインターフェース
2. 画面を回転します3. 再度画面を回転します
4 AndroidManifest.xml で
注:
MiniSdkVersion が 13 以上である場合: android:configChanges="orientation" または android:configChanges="orientation|keyboardHidden" それぞれを思い出してくださいライフサイクル
。
(3) アクティビティの android:configChanges="orientation|keyboardHidden" を設定すると、画面切り替えは各ライフサイクルを再呼び出しせず、onConfigurationChanged メソッドのみが実行されます5. 画面切り替えを回避し、アクティビティを再ウォークします。ライフサイクル 上記の画面切り替えライフサイクルから、ビデオ再生中の画面回転などの不要なトラブルを避けるために、各スイッチが再作成されることがわかります。ライフサイクルの再実行を避ける方が良い解決策です。 (1) Android 2.3以前のバージョン android:configChanges="orientation|keyboardHidden" (2) Android 3.0以降のバージョン android:configChanges="orientation|screenSize"横画面と縦画面の設定 Androidの横画面と縦画面携帯電話開発における横画面と縦画面の切り替えは、開発プロセス中に不要なトラブルを避けるために、多くのソフトウェアでは通常、横画面と縦画面の切り替えを禁止しています。 1. これを実現するには、AndroidManifest.xml のアクティビティに android:screenOrientation 属性値を設定します。 (1) 縦画面: android:screenOrientation="portrait" (2) 横画面: android:screenOrientation="landscape" 2. 以下のようなコードを通じて Java コードで設定します (このメソッドは非対応です)推奨)、大きいアプリを別方向で起動すると遅くなります)(1)縦画面:setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)(2)横画面:setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)の3つです。反転を完全に禁止したい場合は、重力センサーによる切り替えを無視します (シミュレーターでは機能しませんが、実機では正しいです) (1) 重力を無視: android:screenOrientation="nosensor"水平と縦画面の認識1. onConfigurationChanged で画面の向きの変更を有効にするには、次の条件が必要です (1) AndroidManifest.xml に権限を追加します:onSaveInstanceState(Bundle outState) :Activity 即将销毁时保存数据 onRestoreInstanceState(Bundle savedInstanceState) : Activity 重建或者恢复时候取出数据2. 画面が横画面に切り替わったときにシステムが呼び出しますのでもう一度アクティビティの onCreate メソッドを使用して、onCreate で現在の方向を確認し、setContentView に別のレイアウト XML をロードさせます。
@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if(newConfig.orientation == 1)//竖屏 if(newConfig.orientation == 2)// 横屏 }注: このメソッドは、AndroidManifest で onConfigurationChanged を設定せずにライフサイクルを再起動することにより、高さと幅が変更され、別のレイアウトが必要になる可能性があります。以下の方法でレイアウトを切り替えることができます (1) resディレクトリにlayout-landディレクトリとlayout-portディレクトリを作成します。対応するレイアウトファイル名はmain.xmlなどのままです。 layout-land は水平画面レイアウト、layout-port は垂直画面レイアウトです。その他については心配する必要はありません。シミュレータが自動的にそれらを見つけます。
(2) 上記の横画面と縦画面の認識において、横画面と縦画面が変化した場合、onCreate()またはonConfigurationChanged()で方向を決定し、対応するメソッドでsetContentViewを再設定して別のレイアウトXMLレイアウトファイルを読み込みます
横画面と縦画面の切り替えデータの保存と読み込み
さらに、Android の各画面切り替えはアクティビティを再起動するため、アクティビティが破棄される前に現在のアクティビティのステータスを保存する必要があり、アクティビティの作成時に設定が読み込まれます。このようにすると、進行中のゲームは自動的に再起動されません。
アクティビティデータの保存
(1) システムリソースの制約または画面の回転によりアクティビティが破棄または再作成された場合、ユーザーがこのアクティビティに戻ったときに、システムはこのアクティビティの存在の記録を保持します。保存されたレコード データ (インスタンスの状態) は、Bundle オブジェクトに保存されているいくつかのキーと値のペアです。システムはデフォルトで Bundle を使用して情報を保存します
(2) 追加のデータをインスタンスの状態に保存するには、この Callback 関数を onSaveInstanceState(Bundle outState) に書き換えると、アクティビティが異常に破棄されたときにシステムが Bundle オブジェクトを渡すため、Bundle に追加情報を追加してシステムに保存できます。アクティビティが破棄された後にシステムがこのアクティビティ インスタンスを再作成したい場合、以前の Bundle オブジェクトが (システムに) アクティビティの
に渡されます (3) アクティビティが停止し始めると、システムは onSaveInstanceState(Bundle) を呼び出しますoutState)、アクティビティはキーと値のペアのコレクションを使用して状態情報を保存できます。このメソッドは、EditText コンポーネント内のテキストや ListView のスライド位置など、アクティビティ ビューのステータス情報をデフォルトで保存します
アクティビティ データの回復
(1) アクティビティが Destory から再構築されるときに、取得できますシステムによって渡されたアクティビティのバンドルから保存された状態を復元します。 onCreate() コールバック メソッドと onRestoreInstanceState() コールバック メソッドは両方とも、同じインスタンス状態情報を含む同じバンドルを受け取ります。
(2) onCreate() メソッドは、新しい Activity インスタンスが初めて作成されるときと、以前に Destoryed インスタンスが再作成されるときに呼び出されるため、読み取りを試みる前に Bundle オブジェクトが null かどうかを確認する必要があります。それ。 null の場合、システムは以前に Destoryed したアクティビティを復元する代わりに、新しいアクティビティ インスタンスを作成します。
(3) onCreate メソッドでデータを復元する代わりに、onRestoreInstanceState() を実装することも選択できます。 onRestoreInstanceState() メソッドは、onStart() メソッドの後に実行されます。システムは、復元する必要がある状態情報がある場合にのみ onRestoreInstanceState() を呼び出すため、バンドルが null かどうかを確認する必要はありません。
以上、編集者が紹介したAndroidアクティビティの縦横画面切り替えのライフサイクルに関する知識が皆様のお役に立てれば幸いです!
Android アクティビティの水平および垂直画面切り替えのライフサイクルに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

この記事では、分散アプリケーションを構築するためのJavaのリモートメソッドの呼び出し(RMI)について説明します。 インターフェイスの定義、実装、レジストリのセットアップ、およびクライアント側の呼び出しを詳述し、ネットワークの問題やセキュリティなどの課題に対処します。

この記事では、ネットワーク通信のためのJavaのソケットAPI、クライアントサーバーのセットアップ、データ処理、リソース管理、エラー処理、セキュリティなどの重要な考慮事項をカバーしています。 また、パフォーマンスの最適化手法も調査します

この記事では、カスタムJavaネットワーキングプロトコルの作成を詳述しています。 プロトコルの定義(データ構造、フレーミング、エラー処理、バージョン化)、実装(ソケットを使用)、データシリアル化、およびベストプラクティス(効率、セキュリティ、メンテナ


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 中国語版
中国語版、とても使いやすい

ホットトピック



