検索
ホームページJava&#&チュートリアルAndroid アクティビティの水平および垂直画面切り替えライフ サイクル

前書き

開発では、水平画面と垂直画面の切り替えに対処する必要があることがよくあります。最初にどのように対処するかはライフサイクルによって異なります

ステートメント

アクティビティは、水平画面と垂直画面を切り替えるときに、2 つの関数をコールバックする必要があります。したがって、これら 2 つの関数は一時的にアクティビティの水平および垂直画面の切り替えライフ サイクルの一部とみなされます。これら 2 つの機能は次のとおりです

プログラムを起動し、次に入ります。アクティビティインターフェース

2. 画面を回転します

Android Activity 横竖屏切换的生命周期

3. 再度画面を回転します

4 AndroidManifest.xml で Android Activity 横竖屏切换的生命周期

android:configChanges="orientation|screenSize" を設定します。各ライフサイクルを呼び出すと、onConfigurationChanged メソッドのみが実行されます

注:

MiniSdkVersion が 13 以上である場合: android:configChanges="orientation" または android:configChanges="orientation|keyboardHidden" それぞれを思い出してくださいライフサイクル Android Activity 横竖屏切换的生命周期

MiniSdkVersion が 13 未満の場合

(1) Activity の android:configChanges が設定されていない場合、再度画面が切り替わります 各ライフサイクルの呼び出しは横画面への切り替え時に 1 回実行され、実行されます縦画面切り替え時に2回

(2) アクティビティの android:configChanges="orientation" を設定すると、横画面に切り替えたときにも各ライフサイクルが再度呼び出されますが、画面が縦画面の場合は 1 回だけ実行されます

(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 に権限を追加します:

(2) AndroidManifest.xml に設定されている MiniSdkVersion 属性と TargetSdkVersion 属性が 13 以上である

(3) 次を追加: android:configChanges=" AndroidManifest.xml (Configuration newConfig) のアクティビティの onConfigurationChanged にあるkeyboard|screenSize|orientation|layoutDirection"

(4) を判断して

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 サイトに注目してください。


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?Mar 17, 2025 pm 05:46 PM

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

適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 05:45 PM

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

カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?Mar 17, 2025 pm 05:44 PM

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

キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?Mar 17, 2025 pm 05:43 PM

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

Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Mar 17, 2025 pm 05:35 PM

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

分散コンピューティングにJavaのRMI(リモートメソッドの呼び出し)を使用するにはどうすればよいですか?分散コンピューティングにJavaのRMI(リモートメソッドの呼び出し)を使用するにはどうすればよいですか?Mar 11, 2025 pm 05:53 PM

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

ネットワーク通信にJavaのソケットAPIを使用するにはどうすればよいですか?ネットワーク通信にJavaのソケットAPIを使用するにはどうすればよいですか?Mar 11, 2025 pm 05:53 PM

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

Javaでカスタムネットワークプロトコルを作成するにはどうすればよいですか?Javaでカスタムネットワークプロトコルを作成するにはどうすればよいですか?Mar 11, 2025 pm 05:52 PM

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

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SecLists

SecLists

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

SublimeText3 中国語版

SublimeText3 中国語版

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