ホームページ > php教程 > php手册 > 起動ページに入るときに一瞬黒または白の画面が表示される問題に対する究極の解決策

起動ページに入るときに一瞬黒または白の画面が表示される問題に対する究極の解決策

坏嘻嘻
リリース: 2018-09-14 15:13:15
オリジナル
5138 人が閲覧しました

irontec は、PHP を Android プラットフォームに導入するオープンソース プロジェクト PHP for Android (PFA) を立ち上げました。それでは紹介していきましょう。

問題の説明

Android プロジェクトの開発において、アプリを起動すると、一定期間画面が白く表示されます。または、画面が真っ暗になり、その時間の長さはデバイスによって異なります。ユーザーエクスペリエンスに大きく影響するため、最適化する必要があります。

白黒画面の問題の原因

アプリを起動するとき、そのアプリが属するアプリケーションがバックグラウンドで実行されていない場合、システムは最初にアプリを実行するために新しいプロセスを作成しますが、このアクションが完了するまでにプロセスの作成と初期化に時間がかかり、初期化時間が長すぎると、ユーザーは画面上で何も動かなくなる可能性があります。 APP がクリックされずにアプリケーション アイコンが再度クリックされると、ユーザー エクスペリエンスが大幅に低下するため、Android はユーザーのクリックに応答してアクションを開始するためにタイムリーなフィードバックを行う必要があります。これにより、StartingWindow (PreviewWindow のプレビュー ウィンドウとも呼ばれます) が出現します。 )、アプリは起動されているように見えますが、データの内容はまだ初期化されていません。

StartingWindow は、通常、アプリケーション プロセスが作成され、正常に初期化される前に表示され、プログラムの初期化が完了した後、システムが操作を受信して​​応答していることをユーザーに通知します。同時にウィンドウも削除されるため、彼は単なる一時的なウィンドウです。

通常、アプリケーションとアクティビティのテーマを設定し、システムは設定されたテーマに従ってStartingWindowを初期化します。 Window レイアウトの最上位は DecorView です。StartingWindow には空の DecorView が表示されますが、Activity でテーマが指定されていない場合は、Activity で指定されたテーマに設定された背景色が DecorView に適用されます。 (アプリケーション システムでは、テーマを設定する必要があります。) スタイルの設定により、白い画面が表示されるか黒い画面が表示されるかが決まります:

<application        // ....
        android:theme="@style/AppTheme">
ログイン後にコピー

AppTheme が以下で定義されているライト テーマを使用する場合、表示は白い画面になります。それ以外の場合、黒のテーマを使用すると、表示は黒い画面になります:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
ログイン後にコピー

Solution

1 まず、新しいレイヤーを作成します。 -list を res/drawable の下に、splash.xml などのランダムな名前で記述します。
layer-list の書き方の参考: https://www.jb51.net/article/130850.htm

<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 背景颜色 -->
    <item android:drawable="@color/white" />

    <item>
        <!-- 图片 -->
        <bitmap            android:gravity="center"
            android:src="@drawable/wel_page" />
    </item></layer-list>
ログイン後にコピー

レイヤーリスト 誰でも書き込めます。上は背景色、下は画像です。この画像は全画面の画像でも小さい画像でも構いません。フルスクリーン画像の場合は上記の色を設定する必要はありません。小さな画像の場合は、画像の色と位置を指定する必要があります。

2. テーマのウィンドウの背景を設定します。上記のレイヤーリストを背景として使用できます。もちろん、全画面画像を設定することもできます。

<style name="SplashTheme" parent="AppBaseTheme">
    <!-- 欢迎页背景引用刚才写好的 -->
    <item name="android:windowBackground">@drawable/splash</item>
    <item name="android:windowFullscreen">true</item>
    <!-- <item name="android:windowIsTranslucent">true</item> --> <!-- 透明背景不要了 --></style>
ログイン後にコピー

3. AndroidManifest.xml で SplashActivity のテーマを SplashTheme として定義します。ここで、アプリケーションで使用されるテーマは AppTheme であり、SplashActivity で使用されるテーマは SplashTheme であることに注意してください。この結果、SplashActivity が StartAppTheme テーマを使用している限り、他のアクティビティも AppTheme テーマを使用することになります。

<activity android:name=".SplashActivity"
    android:theme="@style/SplashTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter></activity>
ログイン後にコピー

4. SplashActivity を実装するには、setContentView() を使用せずに onCreate() で MainActivity を直接開始するだけです。

public class SplashActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        // setContentView(R.layout.activity_load_sir);
        new Handler().postDelayed(new Runnable() {            @Override
            public void run() {
                Intent intent = new Intent(SplashActivity.this,MainActivity.class);
                startActivity(intent);
                finish();
            }
        }, 3000);
    }
}
ログイン後にコピー

Extension

上記の 2 番目のステップで説明されています。記事ではlayer-listを使わずに画像を直接背景に設定できるとありますが、.png画像を直接背景に使用するのは画面サイズが大きすぎて画像の表示が崩れるためお勧めできません。 9.pngの背景画像を使用することもできますが、画像の使用方法に欠陥があります。それは、スプラッシュ画像がテーマに記述されているため、画像のメモリが解放されず、レイヤーを使用することです。 -list はメモリを節約します。

関連する推奨事項:

PHP for Android プロジェクト

Android Animation_html/css_WEB-ITnose

以上が起動ページに入るときに一瞬黒または白の画面が表示される問題に対する究極の解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート