問題タブ [screen-rotation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2262 参照

android - Android: キャンバス上での描画と回転

タブレット用の描画アプリを作成していますが、画面の向きの変更に関連して描画キャンバスを最適に処理する方法に興味があります。描画プログラムはユーザー入力を追跡し、X、Y 座標で固定されたベクトルとして保存します。

この問題は、縦向き/横向きモードで X、Y のサイズが異なることに関連しています。ユーザーが画面全体を占めるキャンバス (通知とタイトル バーを除く) を持っていて、ポートレート モードでキャンバスの下部近く (320x480 画面のポイント 140,460 など) に描画すると、画面が横向きに反転されてから再作成されます。保存した X、Y ベクトルでは、140,460 の点が画面の境界から外れています (画面が 480x320 になったため)。同様に、画面の右端近くに横向きにポイントを描画し、縦向きに戻すと、それらのポイントは範囲外になります。

私はこれに対する解決策を見回しましたが、明らかな解決策は、画面を特定の向きにロックすることです。Marketplace からダウンロードした多くの描画アプリは、この方法で処理します。

これをタブレット用に設計しているので、ユーザーが好きなように描画できる柔軟性を提供したいと思いますが、画面の境界などに関してはある程度の正気を維持したいと考えています.

私が持っていた/試したアイデアは次のとおりです。

  • 特定の方向へのロック - わかりましたが、ユーザーに特定の設定を強制するのは嫌いです
  • 特定の向きにロックし、タイトル バーと通知バーを非表示にすることで、ユーザーが望むように使用できる大きな空白のキャンバスが表示されるだけですが、通知バーが非表示になるのは嫌です。

タイトルバーを非表示にし、通知を表示し、向きを変更できるようにし、画面が横向きに回転するとキャンバスを縦向きに戻す可能性を考えましたが、ナビゲーションバーが縦向きの上部から横向きの右側でも、同じ X、Y 境界の問題が発生しますが、程度ははるかに小さくなります (通知バーの幅は事実上)。

これに対する解決策について何か考えはありますか?

ありがとう。

0 投票する
5 に答える
53128 参照

android - 画面の回転を検出する方法

コンパスを表示するアクティビティがあり、針を適切に回転させるために画面の向きを知る必要があります。これを適切に処理するには、90° と 270° の回転を区別する必要があります。

画面を回転すると(少なくともNexus Sでは)、onCreate縦向きから横向きモードに回転すると、アクティビティが呼び出されます。上端を上げてあるランドスケープモードから別のランドスケープモードに回転すると、onCreate()2回呼び出されます(縦向きで1回、ターゲットランドスケープモードで1回)。

ただし、下端を上にして回転すると、画面が 180° 回転し、onCreate呼び出されません。この場合、発生するイベントはありますか?

0 投票する
2 に答える
2831 参照

android - Android 画面の向きを変更するとアプリが終了する

設定によってポートレートモードでのみ表示するように設定したアプリがあります

マニフェスト内の各アクティビティに対して。これは正常に機能し、電話を回転させてもアプリ画面が回転しません。

問題は、電話を縦向きにしてアプリを起動すると、最初のアクティビティが実行され (アニメーション化されたスプラッシュ画面)、次のアクティビティが起動されたときに、最初のアクティビティがまだ実行されている間に電話を横向きに回転させることです (最初のアクティビティのスレッドの finally ブロックから起動されます)、アプリは終了します。強制終了ではなく、ホーム画面に戻るだけです。LogCat には、例外がスローされたり、これが発生した理由を示すものはありません。画面が回転することはありません (そうあるべきではありません)。横向きの電話でアプリを起動すると、正常に動作します。これは、ポートレートで開始し、後でランドスケープに回転した場合にのみ発生します。

入れてみました

すべての活動で、私も試しました

アクティビティに onConfigurationChanged を実装して、または実装せずに上記を試しました。私がそれを実装したとき、私は単にそれを無視しました(super.onConfigurationChangedを呼び出すだけです)。

マニフェストに設定するだけでなく、アクティビティをプログラムで縦向きに設定しようとしました。

元の Motorola Droid でも、物理キーボードを開いた状態でアプリを起動し、カー ドックでアプリを起動することで、これを実現できます。アプリが起動し、スプラッシュ スクリーンが縦向きで起動しますが (キーボードが開いているか、電話がカー ドックにある場合でも)、その 2 番目のアクティビティが開始されるとすぐにアプリが終了します。

これは、方向の変更でアクティビティが破棄されることとは関係がないと思います。すべてのグローバル データはアプリのカスタム Application クラスに格納され、前述のように、グローバルが消去された場合に null ポインターなどの例外は発生しません。

Android 2.3.2 を搭載した Verizon で Motorola Droid オリジナルを実行しています。

0 投票する
6 に答える
43876 参照

android - 回転中に Fragment オブジェクトを保持する

Honeycomb でアプリを開発し、フラグメントを使用しています。
これは私のアプリです

  • 私はアクティビティ(たとえばA1)を持っており、その中にフラグメントがあります
  • 最初に、このフラグメントはオブジェクトを 1 つのフラグメント オブジェクトとして保持します (F1)
  • 次に、ユーザーのアクションに応じて、他のオブジェクト F2、F3 に変更される場合があります ....

私の問題は何ですか

ユーザーがデバイスを回転させると、アクティビティが再作成され、F1 をフラグメント オブジェクトとして作成しますが、回転する前は 使用していませんでしたが、機能しませんでした。このように、関数 にコードでフラグメントを追加しました。
What is the way to retain the fragment object while rotating?
setRetainInstance(true);
onCreate

0 投票する
2 に答える
940 参照

android - Android: 画面の向きの報告が遅すぎますか?

このメソッドを使用してDisplay.getRotation()、アプリの画面の現在の向きを判断しています。これは、Google の次の役立つブログ エントリによるものです。

http://android-developers.blogspot.com/2010/09/one-screen-turn-deserves-another.html

一言で言えば、ユーザーが図形などを画面に描画できる描画アプリがあり、描画キャンバスは同じ向きに保つ必要がありますが、オプションメニューなどを正しい場所に反転させたいと思っていましたユーザーがデバイスの向きを変えて描画を開始した場合。

キャンバスについてはonDraw()、方向をリクエストしてからgetRotation()、キャンバスを '0' の位置に戻して、エンド ユーザーの視点からキャンバスが動かないようにします。ユーザーがデバイスを非常にすばやく反転した場合を除い、魅力のように機能します...その後、回転が 0 であると報告され、キャンバスが元に戻らず、描画が反転または回転しているように見えます。getRotation()

興味深いことに、タイトル バーとオプション メニューは反転します。その後、ユーザーが描画を開始すると、次の への呼び出しonDraw()で正しい回転値が取得され、描画は正しい位置に戻りますが、ご想像のとおり、少し不安/煩わしいものです。これに対処するための戦略はありますか?

ありがとう。

0 投票する
1 に答える
351 参照

iphone - cocos2d で iPhone のデバイスの向きを逆にする

ここで奇妙な質問があります。cocos2d で iPhone のデバイスの向きを逆にする方法はありますか? 例:デバイスが横向きの左の位置に保持されている場合、画面に横向きを右に表示し、その逆も同様です。基本的に、デバイスを意図した用途とは逆に動作させるためです。ありがとうございました。

0 投票する
1 に答える
1300 参照

ios - iPad OpenGL画面の回転の問題(マルチタスクバーとポップアップが回転しない)

OpenGLを使用してiPad用のアプリケーションを構築していますが、画面の回転に問題があります。アプリケーション自体は正常に動作し、4つの方向すべてで正しく表示されますが、他の要素はデバイスの回転に部分的にしか応答しません。

OpenGLは、変換行列を使用してアプリケーションの回転を処理します。それはすべてうまくいきます。デフォルトの画像も正しい回転で表示されます。

ただし、マルチタスクバーは正常に回転していません。アプリケーションが開かれた側に表示されます。したがって、アプリケーションを開いた場合、ホームボタンをダブルタップすると正しい側になりますが、デバイスを回転させた後、アプリケーションを閉じて再度開くまで同じ側に留まります。このバーが表示されると、OpenGLアプリケーションが回転してバーの位置に一致します。

「ゲームセンターにサインイン」ポップアップなどのダイアログボックスも正しく回転しません。それらは標準の縦向きで表示されるようです。

問題を特定するために必要な他の具体的な詳細があるかどうかはわかりませんが、提案をいただければ幸いです。

0 投票する
3 に答える
5101 参照

android - 画面の回転後にテキストビューのスクロール位置を復元するには?

私の Android レイアウトには、TextView があります。この TextView はかなり大きなスパン可能なテキストを表示しており、スクロールできます。電話が回転すると、View が破棄されて作成され、TextView を再度 setText() して、スクロール位置を最初にリセットする必要があります。

getScrolly() と scrollTo() を使用してピクセル位置にスクロールできることはわかっていますが、ビューの幅が変更されたため、行が長くなり、ピクセル位置が 400 だった行が 250 になる可能性があります。役に立った。

onDestroy() の TextView で最初に表示されている行を見つける方法と、回転後に TextView をこの特定のテキストにスクロールさせる方法が必要です。

何か案は?

0 投票する
1 に答える
1827 参照

android - AsyncTask で ContentResolver を保持できる期間はどれくらいですか?

長時間実行される操作のために AsyncTask を生成し、定期的にステータスの更新をアクティビティに発行するアクティビティを作成しようとしています。AsyncTask が画面の回転や OOM などの他の破壊条件に正しく耐えられるようにしたいと思います。

私は android-developers listでこのスレッドを読みました。これは、私が必要としているほとんどのものであるthis implementation につながりました。ただし、私の AsyncTask の最後のステップは、コンテンツ リゾルバーから一部のデータを削除することです。データは機密情報であり、通常の状態では電話に残すべきではないため、この手順をスキップしないことが非常に重要です。ただし、ContentResolvers はコンテキスト (この場合はアクティビティ) から取得されます。このスキームでは、AsyncTask が削除を実行する準備が整うまでに、アクティビティが null になる可能性があります。

AsyncTask の構築時に Activity から ContentResolver を取得し、Activity の存続期間を過ぎても保持することは安全ですか? そうでない場合、このケースを処理するにはどうすればよいですか?

0 投票する
3 に答える
5678 参照

android - 画面回転時のタブチェンジ【Android】

こんにちは、私は 4 つのタブ (tab1、tab2、tab3、tab4 としましょう) を持つ Android APP を持っています。アクティビティ開始時のデフォルトのタブは tab1 です。他のタブ (tab2、3、または 4) に切り替えて画面の向きを変更すると、常にデフォルトのタブ (tab1) にリセットされます。

次のコードで試しました:

そして createView() の中に私は持っています:

CurentTabprivate int であり、デフォルトで 0 に設定されていますが、TabChange で設定されています。

私はここでスタックしています...この問題を解決する他の方法はありますか?

手短に: 画面の回転時にタブがデフォルトに変更されないようにしたい...