Android Studio 实现引导倒计时

本文详细介绍了如何在Android应用中实现广告倒计时功能,包括XML布局设计和Java逻辑代码,涉及倒计时定时器、UI更新、点击事件以及页面跳转的处理。
摘要由CSDN通过智能技术生成

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();
        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值