1. 程式人生 > >Day 5:Android App 歡迎介面的實現

Day 5:Android App 歡迎介面的實現

Day 4:五步實現你的第一個Android App 讓我們初步認識到了App開發的流程。可貌似軟體商店裡的App都有一個不錯的歡迎介面。那麼,下面讓我們一起來實現一個點選或者延遲幾秒後再進入主介面的歡迎介面吧。

1. 開發前

  • 準備一:介面設計素材,這大概是視覺創意達人的活。好吧,PASS!我在PATTERN LIBRARY找到了如下的圖檔案。
    這裡寫圖片描述
  • 準備二:在res目錄下新建一個名為“drawable”的資料夾,然後將圖檔案複製到該目錄下。接著在src/Package Name下新建一個Activity,命名為“WelcomeActivity”。
  • 準備三:最後,一如既往地設計介面,可參看
    Day 4:五步實現你的第一個Android App
    。activity_welcome.xml程式碼如下:
<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" >

    <ImageView
        android:id
="@+id/welcomeImage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:src="@drawable/asteroids" /> <TextView android:id
="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="124dp" android:text="BIG Lottery" android:textColor="#FFFFFF" android:textSize="48sp" android:textStyle="bold|italic" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_marginBottom="45dp" android:layout_marginRight="21dp" android:text="Hewes17/11/16" android:textColor="#FFFFFF" android:textSize="18sp" android:textStyle="bold|italic中中中中中 /> </RelativeLayout>

2. 開發中

① 調整啟動程式

因為開始只有MainActivity為啟動專案的類別,所以要出現歡迎介面就必須修改Activity的啟動順序——修改清單檔案AndroidManifest.xml。將MainActivity中如下內容刪掉:

<intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

即免除了MainActivity的啟動權。可我們終究是要調動主介面的啊,於是我們開始撰寫Welcome.java。
(1) 點選跳轉
關鍵步驟:新增監聽器——OnClickListener。其程式碼如下所示:

package com.example.biglottery;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;

public class Welcome extends Activity {
    private ImageView welcome;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_welcome);

        welcome=(ImageView)findViewById(R.id.welcomeImage);
        welcome.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View arg0) {
                goMain();               
            }           
        });
    }

    private void goMain() {
        //設定調動其他的Activity、Service
        Intent intent=new Intent(this,MainActivity.class);
        startActivity(intent);  //將控制權交給MainActi`
ity
        finish();   //結束
    }

}

(2) 延遲跳轉
關鍵步驟:新建一個訊息處理物件——new Handler(),負責傳送與處理訊息。其程式碼如下所示:

package com.example.biglottery;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;

public class Welcome extends Activity {

    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            //接收到訊息後跳轉
            goMain();
            super.handleMessage(msg);
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_welcome);

        //延遲兩秒傳送訊息
        handler.sendEmptyMessageDelayed(0,2000);
    }

    private void goMain() {
        //設定調動其他的Activity、Service
        Intent intent=new Intent(this,MainActivity.class);
        startActivity(intent);  //將控制權交給MainActivity
        finish();   //結束
    }

}

效果如下(PS:尺寸問題會在後面統一解決):

這裡寫圖片描述

開發後

【學習總結】

  • 應用 Intent協助Android各個元件之間的通訊——Intent實現介面之間的跳轉;
  • Handler機制的學習——利用android.os.Handler的訊息的延遲傳送以及處理。

【編輯推薦】