新建啟動頁Activity
新建一個SplashActivity,修改其在AndroidMainfest中的配置,改為啟動檔案,同時原專案的MainActivity中的<intent-filter>洗掉
<activity android:name=".SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
當啟動app時,系統需要加載很多內容,故會產生一定的延遲,其結果是會出現白屏或黑屏(由默認主題而定),加載layout需要事件,解決的方法同樣在AndroidMainfest中解決,在啟動activity中加入選擇的主題即可即可
<activity android:name=".StartActivity"
android:theme="@style/StartActivityTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
創建主題
主題檔案位于/res/values/themes
<style name="SplashActivityTheme" parent="android:Theme.Holo.Light.NoActionBar">
<item name="android:windowBackground">@mipmap/background</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
</style>
這是我新建的style,其中windowsBackground屬性為初始化背景圖片,可以觀察手機app上啟動的程序中,一開始只有一張圖片,然后再跳轉或者添加了一些影片效果,因為這些跳轉的結果和影片效果需要初始化,故放張圖片卡卡時間,除了background其余時設定狀態欄和手機的導航欄會不會顯示,有很多種方法,
錯誤
如果直接添加主題,會報錯
Unable to start activity ComponentInfo{com.jay.startactivity/com.jay.startactivity.SplashActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
因為當在AndroidMainfest中設定主題時,選擇了自己創建的主題,根據代碼可以看出,新建theme的parent是android:Theme.Holo.Light.NoActionBar,但是我們利用Android Studio創建新的Activity時默認為繼承于AppCompatActivity
public class StartActivity extends AppCompatActivity
該activity型別有一個默認的主題Theme.AppCompat theme,而你所新建的主題當然不屬于這個主題,解決方法很簡單,將繼承的父類改為Activity即可,
public class StartActivity extends Activity
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/290121.html
標籤:其他
