1. 程式人生 > >2.APP歡迎頁面的設計(一)

2.APP歡迎頁面的設計(一)

實現效如下所示
在這裡插入圖片描述
實現這樣的設計需要建立兩個活動以及一個CountDownTimer類,分別命名WelcomeActivity和MainActivity。
具體程式設計如下:
WelcomeActivity.class

 package com.example.r.achat;
 
 import android.annotation.SuppressLint;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.TextView; public class WelcomeActivity extends AppCompatActivity { private TextView tv; private Timer timer; public final static int CHANGE_ACTIVITY=
1; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.welcome);//進行啟動前的必要準備 tv = (TextView) findViewById(R.id.time_welcome);//獲取到“幾秒跳過”的TextView的物件 timer = new Timer(3000,1000,this
,tv);//例項化Timer物件並傳入時間引數,context以及TextView的物件 timer.setHd(myhandler); timer.start();//啟動定時器 tv.setOnClickListener(new View.OnClickListener() {//對TextView進行監聽 @Override public void onClick(View view) { if(timer !=null&&timer.getStatus()) timer.cancel(); gotoMainActivity(); } }); } private void gotoMainActivity() {//實現活動間的跳轉 Intent intent = new Intent(this,MainActivity.class);//只能在某個活動中實現這種跳轉 startActivity(intent); finish(); } private final Handler myhandler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case CHANGE_ACTIVITY: gotoMainActivity(); } } }; }

MainActivity,class

    package com.example.r.achat;
    
    import android.annotation.SuppressLint;
    import android.content.Context;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.TextView;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
    }

Timer.class

    package com.example.r.achat;
    
    import android.content.Context;
    import android.content.Intent;
    import android.os.CountDownTimer;
    import android.os.Handler;
    import android.support.v4.content.ContextCompat;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.TextView;
    
    import static android.support.v4.content.ContextCompat.startActivity;
    import static com.example.r.achat.WelcomeActivity.CHANGE_ACTIVITY;
    
    public class Timer extends CountDownTimer {//繼承了CountDownTimer,過載onTick()和onFinish()

 

       private boolean runstatus = true;
        private TextView textView;
        private Handler hd;
        public Timer(long millisInFuture, long countDownInterval, Context context, View view) {
    
            super(millisInFuture, countDownInterval);
            LayoutInflater layoutInflater = LayoutInflater.from(context);
            layoutInflater.inflate(R.layout.welcome, null);
            textView = (TextView) view.findViewById(R.id.time_welcome);
    
        }
    
        @Override
        public void onTick(long l) {//每隔countDownInterval時間執行一次
    
            runstatus = true;
            textView.setText(l / 1000 + "s跳過");
    
        }
    
        @Override
        public void onFinish() {//millisInFuture時間後執行(定時完成)
            runstatus = false;
            textView.setText("跳過");
            hd.obtainMessage(CHANGE_ACTIVITY).sendToTarget();//向主訊息站傳送一個訊息,等待後續的處理
        }
    
    
        public boolean getStatus() {
    
            return runstatus;
    
        }
    
    
        public void setHd(Handler hd) {
    
    //傳遞Handler
            this.hd = hd;
        }
    }

welcome.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        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"
        android:background="@mipmap/huaer"
        android:orientation="vertical"
        android:id="@+id/layout_welcome"
        >
    
        <TextView
            android:id="@+id/time_welcome"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="3s跳過"
            android:layout_gravity="right|top"
            android:layout_margin="13dp"
            android:background="@drawable/shape"
            android:gravity="center"
    
    
             />
    
    
    </LinearLayout>

對於“幾秒跳過”這一TextView的橢圓形的背景可以用下面的方法來實現
新建一個叫shape的xml檔案

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval" >
        <corners android:radius="20dp"/>
        <solid android:color="#9c9797"/>
        <size android:width="50dp"/>
        <size android:height="20dp"/>
        </shape>

android:shape=“oval” 是定義的橢圓
corners android:radius=“20dp"定義的是四個角的圓角半徑(圓角半徑也可以分別定義)
solid android:color=”#9c9797"定義背景顏色
size android:width=“50dp”
size android:height="20dp"定義長度和寬度

總結:
這個例子有以下幾個重要知識:

1.CountDownTimer計時器的運用
2.使用INTENT進行活動間的切換
3.訊息的傳送和處理
4.各種形狀的背景的設計