湊字?jǐn)?shù):
之前做的幾個app由于沒考慮加啟動頁(畢竟是打比賽用的,沒做細(xì)節(jié))肺稀,都是一點開出現(xiàn)一個空白頁,然后過幾秒才加載出視圖应民,體驗是真的不行话原。直到現(xiàn)在真的要做一個屬于自己的項目了,才去關(guān)注了下這個問題诲锹。好吧繁仁,今天只是講講啟動頁的簡單實現(xiàn)而已,沒有深入探討归园,可能以后會深入研究的黄虱。
進入正題:
首先要說一件事,那就是我們經(jīng)常用到的onCreate()方法中庸诱,一般是這樣寫的:在setContentView()之后捻浦,開始綁定、初始化和做一些事情桥爽。如下
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_xxxx);
......
}
然后我們再想想啟動頁要干什么朱灿?
僅僅是展示一張logo圖片,然后跳轉(zhuǎn)到主界面钠四,就這么簡單盗扒。
第一步:LunchActivity
這樣來看的話,我們的啟動頁好像不需要做綁定缀去、初始化這之類的工作啊环疼。所以給它加上layout視圖反而是畫蛇添足了。于是我們的啟動頁代碼就是這樣的:
public class LunchActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
new Thread( new Runnable( ) {
@Override
public void run() {
//耗時任務(wù)朵耕,比如加載網(wǎng)絡(luò)數(shù)據(jù)
runOnUiThread(new Runnable() {
@Override
public void run() {
// 這里可以睡幾秒鐘炫隶,如果要放廣告的話
// sleep(3000);
Intent intent = MainActivity.newInstance(LunchActivity.this);
startActivity(intent);
LunchActivity.this.finish();
}
});
}
} ).start();
}
}
可以看到?jīng)]有調(diào)用setContentView()了,這樣做會節(jié)約很多加載視圖的時間阎曹。我們直接開一個線程伪阶,運行一些耗時任務(wù)煞檩,然后回到主線程去啟動主界面,這樣栅贴,啟動頁就完成了斟湃。
那你一定有疑問了,我的logo圖片還沒加進去呢檐薯,上面的代碼根本就沒有加載圖片啊凝赛,而且,不加載layout視圖坛缕,我的logo圖片往哪放呢墓猎,難道不是放在ImageView里面的?
第二步:AndroidManifast文件設(shè)置主題
這里話不多說赚楚,直接上manifast中的代碼:
<activity
android:name=".LunchActivity"
android:theme="@style/LunchTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
然后是LunchTheme的代碼毙沾,在這里面把我們的logo圖片放進去。對于導(dǎo)航欄遮住圖片的問題宠页,我把下這行代碼注釋掉了左胞,這行代碼實現(xiàn)導(dǎo)航欄透明,這樣就不會遮住圖片了举户。
<style name="LunchTheme" parent="Theme.AppCompat">
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
<!--下面這句如果你加上覺得好看就加烤宙,不好看就不加咯-->
<!--<item name="android:navigationBarColor">@color/transparent</item>-->
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowBackground">@drawable/ic_logo</item>
</style>
于是,一個簡單又好用的啟動頁就完成了俭嘁。而且效果也不錯门烂,點擊app圖標(biāo),瞬間啟動頁就出來了兄淫,沒有空白頁屯远,體驗很棒呢。
算是題外話吧:
因為手機屏幕尺寸各異捕虽,圖片會各種拉伸慨丐,所以我們最好不要放"單純"的圖片,我這里是把這個 ic_logo 做成了一張 .9 圖片泄私,既節(jié)省空間房揭,又能自適應(yīng)屏幕,logo不會被拉伸晌端,一舉兩得捅暴。
我有一篇制作.9圖片的文章,捧個場唄: