使用CountDownTimer实现倒计时广告

一般app的首页跳入会显示还有X秒跳过广告。使用CountDownTimer(定时器)可以轻松实现。还有一个问题就是广告图片加载过程中发现当前图片更换了,采用的是首次加载图片如果更换了图片,首先不切换图片,否则用户体验不好,先下载到本地,也就是每次获取图片资源会优先选择本地文件夹中的图片,如果不存在,就使用drawable资源文件夹中的图片先,如果服务端存在图片,下载到本地。会有一个延迟的效果。。。
这里写图片描述

activity_advitisement.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/oldt_background"
    android:orientation="vertical" >


    <TextView
        android:id="@+id/jumped_advert"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:background="@drawable/icon_advert_bg"
        android:gravity="center"
        android:text="6s 跳过广告"
        android:textColor="@android:color/white"
        android:textSize="16sp" />

</LinearLayout>

WelcomeAct.java

package com.example.test;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

public class WelcomeAct extends Activity {

    private TextView tvAdvert;// 倒计时操作
    private int adTimer = 6000;// 倒计时秒数
    private int TimerInterval = 1000;// 倒计时间隔
    private CountDownTimer timer;// 使用计时器

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_advitisement);
        initView();
        initData();
        setOnListenter();
    }

    private void setOnListenter() {
        tvAdvert.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                timer.cancel();// 销毁计时器
                jumpActivity();// 跳转页面
            }
        });

    }

    private void initData() {
        // 初始化计时器,第一个参数是共要倒计时的秒数,第二个参数是倒计时的间隔
        timer = new CountDownTimer(adTimer, TimerInterval) {
            // 倒计时开始时要做的事情,参数m是直到完成的时间
            @Override
            public void onTick(long millisUntilFinished) {
                tvAdvert.setText("" + millisUntilFinished / 1000 + "s跳过广告");
            }
            // 结束计时后要做的工作
            @Override
            public void onFinish() {
                if (!isFinishing())
                    finish();
                jumpActivity();
            }
        };
        // 开启计时
        timer.start();
    }
    // 跳转页面
    private void jumpActivity() {
        Intent it = new Intent(WelcomeAct.this, MainActivity.class);
        startActivity(it);
        // 判断当前的页面是否关闭,如果未关闭则关闭
        if (!isFinishing())
            finish();
    }

    private void initView() {
        tvAdvert = (TextView) findViewById(R.id.jumped_advert);
    }
}

总结:用户体验是第一位。规避用户第一眼能预见的缺陷

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值