android设置实现广告倒计时功能


在Android中,CountDownTimer 是一个用于计时的类,它允许你在指定的时间段内执行某些操作。通常用于倒计时功能,例如显示一个倒计时进度条或者在倒计时结束后执行某个动作。
要使用 CountDownTimer,你需要创建一个继承自 CountDownTimer 的匿名内部类或单独的类,并重写其两个方法:onTick() 和 onFinish()。onTick() 方法会在每个计时周期被调用,通常用于更新 UI 以显示剩余时间。onFinish() 方法会在计时结束时被调用,用于执行倒计时结束后的操作。
以下是如何使用 CountDownTimer 的一个简单示例:

CountDownTimer基本使用

创建一个 CountDownTimer 对象并设置总时间(以毫秒为单位)和时间间隔(以毫秒为单位)。
重写 onTick 方法,该方法将在每个时间间隔触发。
重写 onFinish 方法,该方法将在倒计时结束时触发。

import android.os.Bundle;
import android.os.CountDownTimer;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    private TextView textView;
    private Button startButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = findViewById(R.id.textView);
        startButton = findViewById(R.id.startButton);

        startButton.setOnClickListener(v -> startCountDown());
    }

    private void startCountDown() {
        new CountDownTimer(10000, 1000) { // 10秒倒计时,每秒更新一次
            @Override
            public void onTick(long millisUntilFinished) {
                textView.setText("剩余时间: " + millisUntilFinished / 1000 + "秒");
            }

            @Override
            public void onFinish() {
                textView.setText("倒计时结束!");
                // 在这里可以启动其他Activity或执行其他操作
            }
        }.start();
    }
}

下面我们就来使用CountDownTimer完成任务:

增加基础BaseActivity

增加基础BaseActivity 使得其他的页面都可以继承该类,即可同时拥有跳转到固定活动的功能。

package com.ui.base;

import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.jianguo.retention.BaseApplication;
import ADActivity;


/**
 * @author lipeiyong
 */
public abstract class BaseActivity extends AppCompatActivity {
    protected String TAG = getClass().getSimpleName();
    protected Context mContext;
    protected InputMethodManager manager;
    public BaseApplication mApplication;
    public CountDownTimer countDownTimer;
    private final long advTime = 30 * 1000;

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        switch (ev.getAction()) {
            case MotionEvent.ACTION_DOWN:
                if (countDownTimer != null) {
                    countDownTimer.cancel();
                }
                break;
            case MotionEvent.ACTION_UP:
                startAD();
                break;
        }
        return super.dispatchTouchEvent(ev);
    }

    @Override
    protected void onPause() {
        super.onPause();

        if(countDownTimer!= null){
            countDownTimer.cancel();
        }
    }

    private void startAD() {
        if (countDownTimer == null) {
            countDownTimer = new CountDownTimer(advTime, 1000) {
                @Override
                public void onTick(long millisUntilFinished) {
 				 // 更新 UI 显示剩余时间
                }

                @Override
                public void onFinish() {
                    startActivity(new Intent(getApplicationContext(), ADActivity.class));
                }
            };
            countDownTimer.start();
        } else {
            countDownTimer.start();
        }
    }

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }


    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onLogOutEvent(LogoutEvent event) {
        Log.d("BaseActivity", "退出登录,关闭所有activity");
        finish();
    }

    @Override
    protected void onResume() {
        super.onResume();
      
        startAD();
    }

  

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (countDownTimer != null) {
            countDownTimer.cancel();
        }
    }
}

以上代码中,在dispatchTouchEvent里处理触摸事件,实现广告倒计时功能。在onResume()方法中启动广告计时器,在onDestroy()方法中取消广告计时器。这两个方法分别处理活动的恢复和销毁过程,确保资源得到正确释放和清理。
startAD的方法,用于启动一个倒计时器。当倒计时结束时,会跳转到名为ADActivity的活动。如果倒计时器已经存在,则直接重新启动倒计时器;如果不存在,则创建一个新的倒计时器并启动。

增加固定活动

public class ADActivity extends AppCompatActivity implements View.OnClickListener {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ad);
        ImageView imageView = findViewById(R.id.lock_gif);
        imageView.setOnClickListener(this);
        Glide.with(this).load(R.raw.lock).into(imageView);
    }

    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.lock_gif) {
            this.finish();
        }
    }
}

ADActivity 不要继承BaseActivity哦。
activity_ad.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:gravity="center_horizontal"
    android:orientation="vertical">


<ImageView
    android:id="@+id/lock_gif"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
</LinearLayout>

最后就是AndroidManifest.xml在增加活动:
<activity android:name=".ui.activity.ADActivity" />
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jpq+

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值