1. 程式人生 > >Android 歡迎介面停留3秒的實現

Android 歡迎介面停留3秒的實現

0.寫在前面

在這篇教程中來實現一個類似於微信的的延遲3秒再進入主介面的效果。

1.專案準備

先新建一個空的android專案。裡面只自帶一個MainActivity,首先我們再新建一個Activity叫做WelcomeActivity繼承自Activity。

Activity程式碼如下:

//package在此省略,根據實際自行新增

import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;

/**
 * Created by HUPENG on 2016/9/21.
 */
public class WelcomeActivity extends Activity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_welcome); } }

佈局檔案程式碼如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent">
<ImageView android:layout_width="match_parent" android:layout_height
="match_parent" android:id="@+id/imageView" android:layout_gravity="center_horizontal" android:src="@mipmap/welcome"/>
<!--android src屬性指定imageView裡面要顯示的資原始檔的來源路徑,也就是在歡迎介面顯示的圖片,在這裡我已經預先上傳了一張圖片了--> </LinearLayout>

修改清單檔案AndroidManifest.xml

宣告WelcomeActivity以及修改Activity的啟動順序,由MainActivity改成WelcomeActivity

原來的xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="supershare.android.hupeng.me.supershare">

    <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

    </application>

</manifest>

修改成

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="supershare.android.hupeng.me.supershare">

    <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
        <activity android:name=".WelcomeActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity android:name=".MainActivity">

        </activity>

    </application>

</manifest>

至此專案的佈局已經完成了,現在來完成跳轉部分原始碼

在這裡用到的核心函式為

Handler.sendEmptyMessageDelayed

主要用來發送延遲訊息

首先新建一個訊息處理物件,負責傳送與處理訊息

    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
        }
    };

在handleMessage方法中處理訊息,在這裡接收到訊息不做複雜處理以後直接執行跳轉操作

貼上WelcomeActivity全部程式碼

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.view.Window;
import android.view.WindowManager;

/**
 * Created by HUPENG on 2016/9/21.
 */
public class WelcomeActivity extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //隱藏標題欄以及狀態列
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        /**標題是屬於View的,所以視窗所有的修飾部分被隱藏後標題依然有效,需要去掉標題**/
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_welcome);
        handler.sendEmptyMessageDelayed(0,3000);
    }

    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            getHome();
            super.handleMessage(msg);
        }
    };

    public void getHome(){
        Intent intent = new Intent(WelcomeActivity.this, MainActivity.class);
        startActivity(intent);
        finish();
    }
}

2.總結

在這裡主要利用了android.os.Handler的訊息的延遲傳送以及處理。