2.APP歡迎頁面的設計(一)
阿新 • • 發佈:2019-01-10
實現效如下所示
實現這樣的設計需要建立兩個活動以及一個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.各種形狀的背景的設計