Android Studio 实现引导倒计时

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

}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android Studio 倒计时可以通过使用 CountDownTimer 类来实现。这个类可以在指定的时间间隔内执行一些操作,例如更新 UI 或者执行某些代码。以下是一个简单的示例: ``` new CountDownTimer(30000, 100) { public void onTick(long millisUntilFinished) { // 每秒更新一次 UI textView.setText("倒计时:" + millisUntilFinished / 100); } public void onFinish() { // 倒计时结束时执行的操作 textView.setText("倒计时结束"); } }.start(); ``` 在这个示例中,CountDownTimer 的构造函数接受两个参数:倒计时的总时间(单位为毫秒)和每次更新 UI 的时间间隔(单位为毫秒)。在 onTick 方法中,我们可以更新 UI,例如更新一个 TextView 的文本。在 onFinish 方法中,我们可以执行一些操作,例如显示一个提示信息。 希望这个示例能够帮助你实现 Android Studio 倒计时。 ### 回答2: 在Android Studio实现倒计时功能可以通过使用CountDownTimer类来实现。CountDownTimer类提供了一个简单的倒计时功能,它负责在指定时间间隔内执行指定的操作。 首先,我们需要在项目的build.gradle文件中添加对CountDownTimer库的引用。在dependencies部分添加以下代码: implementation 'androidx.core:core-ktx:1.2.0' 然后,在你希望使用倒计时功能的地方创建一个CountDownTimer对象,并在构造函数中指定倒计时总时间和时间间隔。同时,还需要实现onTick()方法和onFinish()方法来设定每个时间间隔和倒计时结束时的操作。 例如,假设我们需要一个60秒的倒计时,每秒更新一次UI,可以这样实现: ```kotlin val countDownTimer = object : CountDownTimer(60000, 1000) { override fun onTick(millisUntilFinished: Long) { // 每秒更新UI,例如更新TextView的显示 textView.text = (millisUntilFinished / 1000).toString() } override fun onFinish() { // 倒计时结束时的操作,例如显示倒计时已结束 textView.text = "倒计时已结束" } } // 开始倒计时 countDownTimer.start() ``` 这段代码创建了一个60秒的倒计时,并且每秒更新一次TextView的显示。在onTick()方法中,我们将剩余的秒数除以1000得到秒数,并将其显示在TextView中。在onFinish()方法中,我们将TextView的显示文本设置为"倒计时已结束"。 需要注意的是,CountDownTimer的单位是毫秒,所以需要根据具体需求调整倒计时总时间和时间间隔的数值。 希望以上回答可以满足你的需求,如有疑问请随时追问。 ### 回答3: 要在Android Studio实现倒计时功能,可以按照以下步骤进行: 1. 在布局文件中添加一个TextView控件,用于显示倒计时的时间。 2. 在Java代码中初始化倒计时的总时长,并将其赋值给一个变量。 3. 在Java代码中使用CountDownTimer类来实现倒计时功能。CountDownTimer是Android提供的用于实现倒计时的一个工具类。 4. 创建一个CountDownTimer对象,并重写其onTick()和onFinish()方法。onTick()方法在倒计时过程中会不断调用,可以用来更新显示倒计时的TextView控件。onFinish()方法在倒计时结束后会执行。 5. 在CountDownTimer的构造函数中传入倒计时的总时长和每次倒计时的时间间隔,以及其他需要的参数。 6. 在onCreate()方法中初始化CountDownTimer对象,并调用其start()方法来启动倒计时。 下面是一个简单的示例代码: ```java import android.os.Bundle; import android.os.CountDownTimer; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private TextView countdownText; private CountDownTimer countDownTimer; private long timeLeftInMillis = 60000; // 倒计时总时长为60秒 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); countdownText = findViewById(R.id.countdown_text); countDownTimer = new CountDownTimer(timeLeftInMillis, 1000) { @Override public void onTick(long millisUntilFinished) { timeLeftInMillis = millisUntilFinished; updateCountdownText(); } @Override public void onFinish() { countdownText.setText("倒计时完成"); } }.start(); } private void updateCountdownText() { int minutes = (int) (timeLeftInMillis / 1000) / 60; int seconds = (int) (timeLeftInMillis / 1000) % 60; String timeLeftFormatted = String.format("%02d:%02d", minutes, seconds); countdownText.setText(timeLeftFormatted); } } ``` 以上就是使用Android Studio实现倒计时功能的简单示例。通过上述步骤,我们可以在TextView上显示倒计时,并在倒计时结束后执行相应的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值