android实现倒计时
前言
在打开爱奇艺等app的欢迎界面的时候,右上角有一个倒计时的控件。倒计时完了以后进入主界面。现在我们来实现这个功能。
方法一
利用java的类Timer,TimerTask还有android的Handler
界面welcome_activity.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"> <TextView
android:id="@+id/count_down"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="16dp"
android:layout_marginTop="16dp"
android:gravity="center"
android:textSize="32sp"
android:textColor="#50000000"
android:background="@drawable/count_down_background"
tools:text="2"
/>
</RelativeLayout>
package com.example.counttimer;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.widget.TextView; public class WelcomeActivity extends Activity {
private final static int COUNT = 1;
private TextView countDown;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_welcome);
initView();
}
//sehedule的第而个参数是第一次启动延时的时间,第三个是每隔多长时间执行一次。单位都是ms。
//因此这里是每一秒发送一次消息给handler更新UI。
//然后三秒后时间到了,在timer的第二个sehedule中进行跳转到另外一个界面
private void initView() {
countDown = (TextView) findViewById(R.id.count_down);
final Timer timer = new Timer();
final long end = System.currentTimeMillis() + 1000*3;
timer.schedule(new TimerTask() {
@Override
public void run() {
handler.sendEmptyMessage(COUNT); }
}, 0, 1000);
//这里的schedule的第二个参数意义是到了这个时间尽快运行run里面的方法
timer.schedule(new TimerTask() { @Override
public void run() {
Intent i = new Intent(WelcomeActivity.this, SecondActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(i);
finish();
timer.cancel();
}
}, new Date(end)); } private Handler handler = new Handler(){
int num = 2;
public void handleMessage(android.os.Message msg) { switch (msg.what) {
case COUNT:
countDown.setText(String.valueOf(num));
num--;
break; default:
break;
}
};
}; }
count_down_background.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:radius="8dp"/> <solid
android:color="#1e000000"/>
</shape>
还有另外的一个空的activity就不贴出来了
效果如下:倒计时到0进入SecondActivity
方法二
利用android封装的类CountDownTimer。其实内部也是用Handler实现的。其他都一样。
package com.example.counttimer;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.Window;
import android.widget.TextView; public class WelcomeActivity extends Activity {
private final static int COUNT = 1;
private TextView countDown;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_welcome);
initView();
} private void initView() {
countDown = (TextView) findViewById(R.id.count_down);
//CountDownTimer构造器的两个参数分别是第一个参数表示总时间,第二个参数表示间隔时间。
//意思就是每隔xxx会回调一次方法onTick,然后xxx之后会回调onFinish方法。
CountDownTimer timer = new CountDownTimer(3200,1000) {
int num = 2;
@Override
public void onTick(long millisUntilFinished) {
countDown.setText(String.valueOf(num));
num--;
} @Override
public void onFinish() {
//计时完成调用
Intent i = new Intent(WelcomeActivity.this, SecondActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(i);
finish();
}
};
timer.start();
} }
android实现倒计时的更多相关文章
- android自定义倒计时控件示例
这篇文章主要介绍了Android秒杀倒计时自定义TextView示例,大家参考使用吧 自定义TextView控件TimeTextView代码: 复制代码 代码如下: import android.co ...
- android中倒计时控件CountDownTimer分析
android中倒计时控件CountDownTimer分析 1 示例代码 new CountDownTimer(10000, 1000) { public void onTick(long milli ...
- [原创]Android秒杀倒计时自定义TextView
自定义TextView控件TimeTextView代码: import android.content.Context; import android.content.res.TypedArray; ...
- Android 关于倒计时功能的实现
关于倒计时的实现,可以说有很多的方法,比较常见的就是Timer+TimerTask+Handler了,或者还可以配合Runnable.例如下面的代码: import java.util.Timer; ...
- Android 开发 倒计时功能 转载
原文地址:https://www.cnblogs.com/xch-yang/p/7920419.html Android为我们封装好了一个抽象类CountDownTimer,可以实现计时器功能: /* ...
- Android 自定义倒计时控件CountdownTextView
效果如下: 剩余 00:59:21 package com.bihu.advertiserapp.widgets; import android.annotation.TargetApi; impor ...
- Android 验证码倒计时两种方案
使用 第一种方案:自定义控件 1.在布局中使用 <?xml version="1.0" encoding="utf-8"?> <Relativ ...
- android实现倒计时,最简单实现RecyclerView倒计时+SwipeRefreshLayout下拉刷新
先上效果图: RecyclerView + SwipeRefreshLayout 实现倒计时效果 MainActivity.java package top.wintp.counttimedemo1; ...
- Android CountDownTimer 倒计时
摘自:http://www.cnblogs.com/over140/archive/2011/12/20/2294220.html 继承关系 public abstract class CountDo ...
随机推荐
- 浅谈PetShop之使用存储过程与PLSQL批量处理(附案例)
1 大概思路 备注:黄色为影响参数 2 PetShop4的经典数据库连接代码回顾 PetShop4有3个函数,具体有: ExecuteReader:可以读一个表的记录,只能读不 ...
- 搭建自己的NuGet服务器,上传自定义NuGet包
第一步搭建NuGet服务器 创建空Web项目 安装Nuget服务,目前最新版本2.8.2 安装完成,会自动生产服务,出现如下界面 发布该网站,并部署至IIS 将.nupkg文件发布至网站的Packag ...
- JZ2440开发笔记(7)——2440启动方式
JZ2440的启动方式有两种,一种是从NOR FLASH中启动,还有一种就是从NAND FLASH中启动. 如果从NOR FLASH启动,CPU会访问NOR FLASH的0地址,而0地址位于BANK0 ...
- 事件demo
delegate void MoveEventHandle(object source,MoveEventArgs e); public class MoveEventArgs:EventArgs { ...
- NSDictionary或NSArray与JSON字符串相互转换
在iOS 5 中,苹果引入了一个解析JSON串的NSJSONSerialization类.通过该类,我们可以完成JSON数据与NSDictionary和NSArray之间的转化. 以前,我记得我用的是 ...
- HTML的id,name,class
HTML中的id是给JavaScript用的(document.getElementById()) HTML中的name是给JavaScript用的(formUploadFile.submit()) ...
- Kinect for Windows SDK开发入门(15):进阶指引 下
Kinect for Windows SDK开发入门(十五):进阶指引 下 上一篇文章介绍了Kinect for Windows SDK进阶开发需要了解的一些内容,包括影像处理Coding4Fun K ...
- android_自定义布局
1.需要实现view类 2.如果需要实现自定义属性则: 1.定义资源文件attrs---->values 2. <?xml version="1.0" encoding ...
- 将默认的Netbeans中文版设置为英文界面
问题:从官网下载的Netbeans不论是中文版还是英文版默认的操作界面都是中文,并且字体十分恶心. 原因:Netbeans 根据本地的操作系统自动设置界面语言,并且没有提供更改的功能. 目标效果:把N ...
- 电话qie听器
业务逻辑: 当有电话打进来或电话打出去的时候,对电话进行录音. public class TelphoneyListenerService extends Service { private stat ...