1. 程式人生 > >Android添加全屏啟動畫面

Android添加全屏啟動畫面

全屏 quest ray class max-width pub title nbsp hello

有的Android軟件需要在啟動的時候顯示一個啟動畫面,可以是一張圖或者一些設置什麽呢,還有一個好處就是,可以趁機在後臺加載數據。

創建啟動畫面一般有兩種方式:
1、建立一個activity,展示啟動畫面,然後再啟動主Activity
2、在主Activity建立一個展示區,然後隱藏掉。

第二個其實更簡單,但是這個就展示一次的東西戳在代碼裏,怎麽想都不舒服,而且還可能設計效率問題。所以在項目裏還是選用第一種。


首先建立一個Activity,這裏明明為HelloActivity,界面就是activity_hello.xml。

接下來修改AndroidManifest.xml文件,把主Activity換成HelloActivity。把之前的主Activity放到下面。

技術分享
<activity
    android:name="com.phone.config.SetActivity"
    android:icon="@drawable/set"
    android:label="@string/app_name"
    android:screenOrientation="landscape"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
    android:windowSoftInputMode="adjustUnspecified|stateHidden" >
<intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>
技術分享

這樣HelloActivity就優先啟動了,在java文件中編寫代碼,啟動完畫面後啟動主界面。

在activity_hello.xml中就一個LinearLayout 和一個ImageView,界面很簡單,但要保證他全屏,其實我們在設置文件裏面已經設置了全屏,在java文件的onCreate方法裏也可以設置:

技術分享
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //設置無標題    requestWindowFeature(Window.FEATURE_NO_TITLE);
    //設置全屏    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_hello);
    iv = (ImageView)this.findViewById(R.id.iv);
    timer = new Timer(true);
    timer.schedule(hello, 200, 150); //延遲200毫秒執行,每150毫秒執行一次
}
技術分享

這裏面用了一個Timer,用Timer是因為,我的項目啟動畫面是一個動態的,但是Android又不支持Gif圖播放,但項目中就這個地方用到gif,所以就把gif給分割成jpg文件,然後用timer播放,播放完成後就加載新Activity。

編寫Timer的TimerTask類,重寫run()方法就可以了。

技術分享
TimerTask hello = new TimerTask(){ 
    @Override
    public void run() {
        if(index &lt; 5){
            index++;
            Message msg = new Message();
            msg.what = index;
            handler.sendMessage(msg);
        }else if(index &lt; 8){
            index++;  //靜止片刻
        }else{
            //停止播放,啟動主Activity            timer.cancel();
            Intent intent = new Intent(HelloActivity.this, MainActivity.class);
            startActivity(intent);
            finish();  //不加這一句,按回退鍵就會回到歡迎界面不合理。        }
    } 
};
技術分享

這裏還涉及到了一個消息處理,因為Android不允許隨便讓其他線程操作UI,但是處理系統消息的Handle卻是可以得,所以Timer定時向Handle發送一個消息,用來更改界面。

技術分享
final Handler handler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
        //循環播放圖片        iv.setBackgroundResource(hellores[msg.what]);
    }
};
技術分享

這樣,一個簡單的啟動畫面就做好了。

提示:在Android4.0版本中,這種方法無法隱藏系統的狀態欄,需要修改底層代碼。


來源: http://www.cnblogs.com/mnight/p/3677662.html

來自為知筆記(Wiz)

Android添加全屏啟動畫面