0

私のアプリの主なアクティビティは、次の属性を持つ Android マニフェスト ファイルで定義されています。

android:theme="@style/Theme.Translucent.NoTitleBar"

これにより、アクティビティが透明になり、メイン ビュー オブジェクトを操作して (たとえば、メイン ビューで呼び出しsetVisibility(View.INVISIBLE)て)、コードでアプリの透明度を制御できるようになります。これはうまくいきます。

ただし、このアプローチの望ましくない結果の 1 つは、アプリが起動されたときに、メイン ビューが表示されるまで目に見える応答がないことです。通常、アプリのメイン アクティビティの既定の黒の背景は、アプリが起動されるとすぐに表示されます。これにより、ユーザーがランチャーでアイコンをタップすると、アプリの実行が開始されることがすぐに確認できます。ただし、背景が透明な場合、ユーザーはメイン ビューが表示されるまでアプリを起動しているディスプレイの背景を透視し続けるため (その間) 何も起こらなかったように見えます。

平凡なパフォーマンスのデバイス (Motorola Droid など) でも、約 1 秒でビューが表示されます。これはそれほど悪くはありません。ただし、非常に遅いデバイス (G1 など) では、4 秒近くかかる場合があります。これは災害ではありませんが、ユーザーがアプリが実際にトリガーされたかどうか疑問に思わないように、すぐに対応したいと思います.

いつものように、透明なテーマを削除しようとしました。これにより、黒い背景を介してすぐに確認できます。ただし、アプリが初期化されると、コードでアクティビティの背景を透明に設定できませんでした。

初めてsetTheme()呼び出す直前にアクティビティを呼び出して、透明なテーマを渡しましたが、これではアクティビティが透明になりません。setContentView()

私もこれを試しましたonCreate()(繰り返しますが、 を呼び出す直前にsetContentView()):

ColorDrawable transparentDrawable = new ColorDrawable(Color.TRANSPARENT);
getWindow().setBackgroundDrawable(transparentDrawable);

これも効果がないようです。

android:windowBackgroundまた、マニフェストで、ほとんどが透明な PNG であるドローアブルに設定されたテーマを使用しようとしましたが、透明な背景にテキスト (アプリの名前など) を重ねて、ユーザーにその手がかりを提供します。アプリがロードされていました。残念ながら、ドローアブルをテーマの一部として使用すると、メイン ビューが初期化されるまで背景がまったく表示されません。

時間のかかる初期化はすべてワーカー スレッドで既に行われているため、それを達成する方法についてアドバイスを求めているわけではありません。ビュー自体が表示されるまでにある程度の時間がかかります。かなり高速ですが、アプリを起動するとすぐにメイン アクティビティの背景が表示されるという瞬時の応答に勝るものはありません。

4

2 に答える 2

1

平凡なパフォーマンスのデバイス (Motorola Droid など) でも、約 1 秒でビューが表示されます。これはそれほど悪くはありません。ただし、非常に遅いデバイス (G1 など) では、4 秒近くかかる場合があります。

ミリ秒単位で表示されるはずです。メイン アプリケーション スレッドで過度の作業を行っていないことを確認してください。

ビュー自体が表示されるまでにある程度の時間がかかります。かなり高速ですが、アプリを起動するとすぐにメイン アクティビティの背景が表示されるという瞬時の応答に勝るものはありません。

次に、最初に表示するのが安価な別のもの (例: ProgressBar) を表示し、準備ができたら通常の UI に置き換えます。

于 2012-04-10T15:30:18.897 に答える
0

CommonsWare の回答に賛成票を投じました。なぜなら、彼は正しい方向を示してくれたからです。これは、メイン アクティビティが起動された後にその透明性を変更しようとすることから遠ざかっています (私が疑い始めていることは、簡単には実行できないと思います)。

ただし、正しい方向へのポインターにすぎないことを考えると、そのアドバイス自体が受け入れられる答えになることはありません。

このガイダンスに基づいて私が決めた答えは、スプラッシュ ディスプレイを作成することでした。しかし、本当に良い Android スプラッシュの例はどこにも見つかりませんでした。それで、私はそれを考案しました。それは私にとって非常にうまく機能しており、私の問題を完全に解決しています。

スプラッシュ ディスプレイの作成は、私が始めた質問よりも一般的な質問であるため、スプラッシュ スクリーンの実装方法に関する質問への回答として、それを行う方法の詳細な説明を掲載し、その回答にリンクしました。下:

真のスプラッシュ スクリーンを作成する

于 2012-04-18T03:28:24.160 に答える