Androidのプログラミングの下でThemeとStyleを通じてAPPを避けてフラッシュスクリーンを起動します

7913 ワード

以前はアプリを作っているときはあまりこの問題に関心を持っていませんでしたが、自分が他のアプリを使っているときもアプリが起動した最初に黒い画面が点滅してからアプリのウェルカムページが表示されるからです.最近の開発過程で、自分がウェルカムページで起動したスレッドが要求と処理のデータ量が大きすぎるため、ウェルカムページが現れる前にインタフェースに短い白いフラッシュが滞留することを発見した.もちろん、白いフラッシュの滞留はアプリケーションのテーマサンプルandroid:theme="@style/AppTheme"がThemeを使用したためである.ライト問題によると、ライトスタイルのwindowBackground、corBackground、corForegroundなどの属性の値はlight、つまり白色が明るいため、白いフラッシュが表示されます.次は、私のアプリに白いフラッシュが表示されたときのスタイル参照のコードです.
   <style name="AppTheme" parent="android:Theme.Light">

   </style>

簡単な修正後、フラッシュの色は黒で、コードは以下の通りです.
   <style name="AppTheme" parent="android:style/Theme.Black.NoTitleBar.Fullscreen">

   </style>

コードが変更された後に参照されるスタイルは黒いトピックですが、ウェルカムページには黒いフラッシュがしばらく残っています.変更を続行し、透明なプロパティをtrueに設定します.コードは次のとおりです.
    <style name="AppStartTheme" parent="android:style/Theme.Black.NoTitleBar.Fullscreen">
        <item name="android:windowIsTranslucent">true</item>
    </style>

今回の修正を経て、黒いフラッシュ現象は消え、最終的には自分の理想的な効果を達成した.最後に、資料を調べたところ、このような問題をまとめ、処理した人がいることがわかり、長所と短所の分析を提供しました.私はここで私の理解でそれを引用します.
黒いフラッシュを避けるには2つの方法があり、それぞれ:1.Themeの背景図を設定します.2.Themeの透明属性を設定します.明らかに私は2つ目の方法を採用しています.まず、この2つの方法で参照されているコードを見てみましょう.
    <!--   Theme       -->
    <style name="AppStartTheme" parent="android:Theme">
        <item name="android:windowBackground">@drawable/splash_bg</item>
        <item name="android:windowNoTitle">true</item>
    </style>
    <!--   Theme        -->
    <style name="AppStartTheme" parent="android:Theme">
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowNoTitle">true</item>
    </style>
    <!--   Activity    Theme -->
    <activity
        android:name="com.sunzn.act.SplashActivity"
        android:label="@string/app_name"
        android:theme="@style/AppStartLoadTranslucent"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="adjustPan" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

上の2種類のThemeの中で、Themeのために背景図を設定した後、プログラムが起動すると、まずこの図が表示され、黒い画面が発生しないようにします.Themeに透明なプロパティを設定すると、プログラムが起動しても黒ではなく透明になり、インタフェースの初期化が完了してから一度に表示されます.次の2つの方法のメリットとデメリットを示します.
  • Themeのためにバックグラウンドマップを設定してプログラムの起動が速い感じを与え、インタフェースはまずバックグラウンドマップを表示し、それから他のインタフェースコントロールをリフレッシュし、同期していないことをリフレッシュします.
  • Themeのために透明な属性を設定してプログラムの起動が遅い感じを与え、インタフェースが一度にブラシされ、同期がリフレッシュされます.