1、布局介绍
好多软件在进入前都有一个倒计时的广告,我们今天做的就是这么实现这个倒计时
首先,我们想要准备一个背景,然后就开始我们的布局吧!
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.YingDaoActivity">
<Button
android:id="@+id/tiaoguo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_marginTop="10dp"
android:layout_marginRight="20dp"
android:background="@drawable/tiao_bg"
android:text="跳过"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="centerCrop"
android:src="@drawable/guid" />
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_marginBottom="40dp"
android:text="摇一摇手机"
android:textStyle="bold"
android:gravity="center"
android:textSize="24sp"
android:textColor="@color/write"
android:layout_marginLeft="30dp"
android:layout_marginRight="30px"/>
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_marginBottom="10dp"
android:text="跳转至详情页或第三方应用"
android:gravity="center"
android:textSize="12sp"
android:textColor="@color/gray"
android:layout_marginLeft="30dp"
android:layout_marginRight="30px"/>
<ImageView
android:id="@+id/yyy"
android:layout_width="105dp"
android:layout_height="112dp"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="-30dp"
android:layout_marginLeft="-30dp"
android:layout_marginEnd="157dp"
android:layout_marginRight="157dp"
android:layout_marginBottom="91dp"
android:src="@drawable/yyy" />
</RelativeLayout>
2、逻辑代码介绍
点击跳过可以进入到首页,倒计时结束也直接进入主页。
public class Guide02Activity extends AppCompatActivity {
private TextView tvIn;
private Timer timer;
//页面显示的倒计时秒数
private int times = 6;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guide02);
initEvent();
}
private void initEvent() {
//实现倒计时
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
//子线程更新UI的问题
//子线程更新UI的方式?三种
//Handler
//view.post
//runOnUiThread
tvIn.post(new Runnable() {
@Override
public void run() {
if (times < 0) {
startNewPage();
} else {
//每一秒去更新一下文字
tvIn.setText("点击进入主页面(" + (times--) + "S)");
}
}
});
}
}, 0, 1000);
//1000:/*每多少秒执行一次*/
//0:/*延迟多少秒执延迟多少秒执行行*/
//点击页面进行跳转
tvIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startNewPage();
}
});
}
//是否已经进入主页面。防止页面打开两次,多次
private boolean isOpen = false;
//进入主页面
private void startNewPage() {
//如果已经打开过主页面,直接return,下面代码不执行
if (isOpen) return;
isOpen = true;//页面被打开的时候标记为true
//打开目标页面DrawerBottomGuideActivity
startActivity(new Intent(Guide02Activity.this, MainActivity.class));
//关闭当前页面
finish();
}
private void initView() {
//获取点击进去的组件对象
tvIn = (TextView) findViewById(R.id.tv_in);
}
@Override
protected void onDestroy() {
super.onDestroy();
//页面关闭时停止倒计时
if (timer != null) {
timer.cancel();
}
}
}