Android啟動頁的簡單實現
湊字數:
之前做的幾個app由於沒考慮加啟動頁(畢竟是打比賽用的,沒做細節),都是一點開出現一個空白頁,然後過幾秒才加載出檢視,體驗是真的不行。直到現在真的要做一個屬於自己的專案了,才去關注了下這個問題。好吧,今天只是講講啟動頁的簡單實現而已,沒有深入探討,可能以後會深入研究的。
進入正題:
首先要說一件事,那就是我們經常用到的onCreate()方法中,一般是這樣寫的:在setContentView()之後,開始繫結、初始化和做一些事情。如下
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_xxxx); ...... }
然後我們再想想啟動頁要幹什麼?
僅僅是展示一張logo圖片,然後跳轉到主介面,就這麼簡單。
第一步:LunchActivity
這樣來看的話,我們的啟動頁好像不需要做繫結、初始化這之類的工作啊。所以給它加上layout檢視反而是畫蛇添足了。於是我們的啟動頁程式碼就是這樣的:
public class LunchActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate( savedInstanceState ); new Thread( new Runnable( ) { @Override public void run() { //耗時任務,比如載入網路資料 runOnUiThread(new Runnable() { @Override public void run() { // 這裡可以睡幾秒鐘,如果要放廣告的話 // sleep(3000); Intent intent = MainActivity.newInstance(LunchActivity.this); startActivity(intent); LunchActivity.this.finish(); } }); } } ).start(); } }
可以看到沒有呼叫setContentView()了,這樣做會節約很多載入檢視的時間。我們直接開一個執行緒,執行一些耗時任務,然後回到主執行緒去啟動主介面,這樣,啟動頁就完成了。
那你一定有疑問了,我的logo圖片還沒加進去呢,上面的程式碼根本就沒有載入圖片啊,而且,不載入layout檢視,我的logo圖片往哪放呢,難道不是放在ImageView裡面的?
第二步:AndroidManifast檔案設定主題
這裡話不多說,直接上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圖片放進去。
<style name="LunchTheme" parent="Theme.AppCompat"> <item name="android:windowNoTitle">true</item> <item name="android:statusBarColor">@android:color/transparent</item> <item name="android:windowBackground">@drawable/ic_logo</item> </style>
於是,一個簡單又好用的啟動頁就完成了。而且效果也不錯,點選app圖示,瞬間啟動頁就出來了,沒有空白頁,體驗很棒呢。
算是題外話吧:
因為手機螢幕尺寸各異,圖片會各種拉伸,所以我們最好不要放"單純"的圖片,我這裡是把這個 ic_logo 做成了一張 .9 圖片,既節省空間,又能自適應螢幕,logo不會被拉伸,一舉兩得。
我有一篇製作.9圖片的文章,捧個場唄:
ofollow,noindex">Android-製作Nine-Patch圖片