Android專案實戰之高仿網易雲音樂啟動介面

愛學啊發表於2018-07-06

這一節我們來講解啟動介面,效果如下:

Android專案實戰之高仿網易雲音樂啟動介面

首次建立一個SplashActivity用來做啟動介面,因為建立完專案預設是MainActivity做主介面,所以需要去掉,將啟動配置到同時去掉SplashActivity,並且去掉SplashActivity的標題欄,同時還要設定為全屏。

Activity啟動配置 在清單檔案將啟動配置剪貼到SplashActivity:

<activity
    android:name=".activity.SplashActivity"
    android:screenOrientation="portrait"
    android:theme="@style/NoActionBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
複製程式碼

佈局的話可以說是很簡單了,最外層使用RelativeLayout,頂部一個ImageView讓他在水平居中,具頂部一個距離,這個距離大家可以按照自己的業務需求調整,然後放入一個TextView讓他在水平居中,垂直方向和父佈局的底部對齊,同時設定一個Margin,接著放一個ImageView用來顯示Logo,讓他在TextView的上方就行了:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.ixuea.android.courses.music.activity.SplashActivity">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:scaleType="centerCrop"
        android:src="@drawable/splash_bg" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="130dp"
        android:src="@drawable/splash_banner" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/tv_copyright"
        android:layout_centerHorizontal="true"
        android:src="@drawable/splash_logo" />

    <TextView
        android:id="@+id/tv_copyright"
        style="@style/CopyrightText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="20dp"
        android:layout_marginTop="10dp"
        android:text="Copyright © 2018 Ixuea. All Rights Reserved" />
</RelativeLayout>
複製程式碼

Activity暫時沒什麼太多的邏輯,只是建立一個Handler,然後延時3秒鐘進行下一步,然後在next方法中判斷是否需要顯示引導介面,是否登入等:

public class SplashActivity extends BaseCommonActivity {

    //這樣建立有記憶體洩漏,在效能優化我們具體講解
    @SuppressLint("HandlerLeak")
    private Handler mHandler = new Handler() {
        @SuppressWarnings("unused")
        public void handleMessage(Message msg) {
            next();
        }
    };

    @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_splash);
    }

    @Override
    protected void initDatas() {
        super.initDatas();
        //延時3秒,在企業中通常會有很多邏輯處理,所以延時時間最好是用3-消耗的的時間
        mHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                mHandler.sendEmptyMessage(-1);
            }
        }, 3000);
    }

    private void next() {
        if (isShowGuide()) {
            startActivityAfterFinishThis(GuideActivity.class);
        } else if (sp.isLogin()) {
            startActivityAfterFinishThis(MainActivity.class);
        } else {
            startActivityAfterFinishThis(LoginActivity.class);
        }
    }

    /**
     * 根據當前版本號判斷是否需要引導頁
     * @return
     */
    private boolean isShowGuide() {
        return sp.getBoolean(String.valueOf(PackageUtil.getVersionCode(getApplicationContext())),true);
    }
}
複製程式碼

當前介面還可以增加倒數計時,廣告等內容,這部分內容我們在後面再講解。

如果感覺我們寫的不錯,可以支援我們一下,本專案提供的線上視訊教程線上電子書,在官網購買視訊可以優惠5元喲,同時視訊課程也可以在網易雲課程,騰訊課堂上購買,如果有任何問題可以新增我們的QQ來討論:3469271680;評論可能回覆不是很及時,還望大家體諒;購買課程後可以獲得一對一答疑服務,當然也可以談人生談理想瞎扯淡;同時如果是零基礎想學程式設計的朋友也可以聯絡我們進行諮詢,我們可以提供一些建議和幫助,讓你在程式設計道路上更順暢。

相關文章