編輯:關於Android編程
冷啟動指的是應用第一次啟動或者應用被殺死(不在內存中)後重新啟動的情況。
你可能已經發現了,這種情況下啟動時間會稍長一點。因為它會重新初始化資源(Application等)。
app啟動時通常會在Application或者所謂的SplashActivity中做初始化工作。如果Application中的工作過多的話, 那麼當冷啟動的時候,就會出現白屏情況,因為此時SplashActivity還沒有被初始化,SplashActivity上的圖片還沒有被顯示出來。
我們當然不希望出現白屏的情況。
解決方案應該從兩方面考慮,1是優化Application的初始化邏輯,比如該異步的異步,該延遲的延遲。2是將白屏換成SplashActivity中展示的圖片,讓用戶有一種應用已經啟動了的錯覺,本文講的就是這種優化方案。
我們需要為SplashActivity設置一個Theme,如下:
styles.xml
<style name="AppTheme.Launcher">
<item name="android:windowBackground">@drawable/launch_screen</item>
<item name="android:windowFullscreen">true</item>
</style>
這個Theme繼承了app的基礎主題AppTheme,同時復寫了windowBackground屬性,它的值即SplashActivity將展示的圖片(logo等等…)。
launch_screen.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:opacity="opaque">
<item android:drawable="@android:color/white"/>
<!-- Your product logo - 144dp color version of your app icon -->
<item>
<bitmap
android:src="@drawable/splash_defalut"
android:gravity="fill"/>
</item>
</layer-list>
然後將這個主題設置到SplashActivity上:
<activity
android:name=".ui.activity.SplashActivity"
android:configChanges="fontScale"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.Launcher"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
這還沒有完,因為我們為SplashActivity多設置了一個背景圖,必然會導致過渡繪制,所以我們在其初始化前,將主題設置回原來的:
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.AppTheme);
super.onCreate(savedInstanceState);
setContentView(R.layout.splash_activity);
以上。
現在你會發現即使啟動時間再長,也不會出現白屏。
Android_切換主題或皮膚的實現方式
1.簡介使用自定義主題或者皮膚,可以將相關配置(顏色、大小等等)放在一個新的apk壓縮文件中,目錄結構保持一致,該apk文件放在任意可以訪問到的目錄即可,類似/syste
Android自定義圓角ImageView
廢話不多說了,直接給大家貼代碼了。java類如下: import android.content.Context; import android.content.res.
結合Android命名空間,自定義一個橫向柱狀圖
話不多說先上圖:類似於這樣的效果,很簡單。這是一個listview,item是自定義的view,有兩個特點: 傳入長度,動態改變柱狀圖的長度;根據長度改變色值,
Android開發系列(二十八):使用SubMenu創建選項菜單
大部分手機上邊都會有一個“MENU”鍵,在一個應用安裝到手機上之後,可以通過“MENU”顯示該應用關聯的菜單。 但是,從Android 3.0開始,Android不再要求