21

この効果を達成する方法を知りたいです。

私のアプリ(デフォルトのすべて)は、ランチャーアイコンをクリックすると、何も起こらない空のダミーウィンドウをすぐに表示し、レイアウトをロードします。

YouTube、ドライブ、Dropbox などの「重い」アプリは、起動時にダミー ウィンドウを表示せずに、起動後に待機しているように見え、準備完了のレイアウトに読み込まれます。

これを行う方法、またはどこを調べる必要がありますか?

ありがとう

//編集: これは、progressBar を表示する必要があるデータベースのロードなどとは関係ありません。これは、アクティビティが存在する前のものと関係があります。

4

5 に答える 5

32

以下を使用して、ダミーの読み込みウィンドウを無効にしないことをお勧めします。

<style name="Theme.MyTheme" parent="android:style/Theme" >
    ....
    <item name="android:windowDisablePreview">true</item>
    ....
</style>

さまざまな問題が発生する可能性があるためです。たとえば、AlertDialog をアニメーション化しようとすると、Enter アニメーションは機能しません (個人的な経験)。

適切な解決策は、アプリケーションのテーマをメイン アクティビティ画面のように設定することです (同じ ActionBar スタイル、同じ背景色)。いくつかの実験の後、私のアプリケーションでは、自分のニーズに合った適切なソリューションを見つけました。(背景が空白で、ActionBar がなく、フルスクリーンの個人用レイアウトのみのメイン アクティビティがあります)

1 - styles.xml : このような新しいスタイルを追加します (ActionBar を削除し、メイン アクティビティと同じ背景色を設定します)

<style name="LoadingTheme" parent="@android:style/Theme.Light.NoTitleBar.Fullscreen">
    <item name="android:windowBackground">@color/white_smoke</item>
</style>

2 - AndroidManifest.xml : メイン アクティビティのテーマを「LoadingTheme」に設定します。

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
        <activity
            android:name="com.company.appname.MainActivity"
            android:label="@string/app_name"
            android:theme="@style/LoadingTheme">
        <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
    </activity>
    ....
</application>

そして最後に、ソフト MainActivity ロードと動作中のアニメーションを備えた、ActionBar のない完全に空白のダミー ロード ウィンドウがあります。

お役に立てば幸いです。

于 2014-05-23T08:40:54.883 に答える
10
<style name="Theme.MyTheme" parent="android:style/Theme" >
    ....
    <item name="android:windowDisablePreview">true</item>
    ....
</style>

ただし、注意して使用してください

于 2013-06-06T09:42:12.433 に答える
0

setContentViewアクティビティ内のどこでもメソッドを呼び出すことができます。このメソッドを呼び出す前に、空白の画面が表示されます。setContentViewスプラッシュ スクリーンが必要な場合は、メソッド内でメソッドを呼び出してonCreate、スプラッシュ スクリーン ビューを表示できます。次に、「メイン」ビューを表示する準備ができたら、 a を使用しLayoutInflaterて表示できます。ProgressDialogを使用して、情報が読み込まれていることをユーザーに示すこともお勧めします。

于 2013-06-04T16:46:18.237 に答える