一般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);
}
}
总结:用户体验是第一位。规避用户第一眼能预见的缺陷