安卓数字倒数控件_Android 自定义倒计时控件CountdownTextView

这是一个关于如何在Android中创建自定义倒计时控件CountdownTextView的示例,该控件可以显示剩余的小时、分钟和秒数。文章详细讲解了控件的初始化、开始倒计时的方法以及转换时间格式的函数。
摘要由CSDN通过智能技术生成

效果如下:

剩余 00:59:21

package com.bihu.advertiserapp.widgets;

import android.annotation.TargetApi;

import android.content.Context;

import android.icu.text.SimpleDateFormat;

import android.os.Handler;

import android.text.TextUtils;

import android.util.AttributeSet;

import android.util.Log;

import android.view.View;

import android.widget.TextView;

import java.util.HashMap;

import java.util.Map;

import java.util.Timer;

import java.util.TimerTask;

/** 倒计时控件

* Created by huqiang2 on 2016/12/7.

*/

public class CountdownTextView extends TextView {

long mSeconds;

String mStrFormat;

Map mTimerMap;

TimerTask mTimerTask;

final int what_count_down_tick = 1;

String TAG = "CountdownTextView";

public CountdownTextView(Context context) {

super(context);

}

public CountdownTextView(Context context, AttributeSet attrs) {

super(context, attrs);

}

public CountdownTextView(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

}

@TargetApi(21)

public CountdownTextView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {

super(context, attrs, defStyleAttr, defStyleRes);

}

/**

*

* @param format 例如:剩余%s

* @param seconds

*/

public void init(String format,long seconds){

mTimerMap = new HashMap<>();

if(!TextUtils.isEmpty(format)){

mStrFormat = format;

}

mSeconds = seconds; //设置总共的秒数

mTimerTask = new TimerTask() {

@Override

public void run() {

if(mSeconds > 0){

mSeconds --;

mHandler.sendEmptyMessage(what_count_down_tick);

}

}

};

}

public void start(int position){

if(mTimerMap.get(position) == null){

Timer timer = new Timer();

mTimerMap.put(position,timer);

mTimerMap.get(position).schedule(mTimerTask,0,1000);

}

}

private Handler mHandler = new Handler() {

public void handleMessage(android.os.Message msg) {

switch (msg.what){

case what_count_down_tick:

if(mSeconds <= 0){

setText(String.format(mStrFormat,"00:00:00"));

}else {

Log.e(TAG,"mSeconds="+mSeconds+"#what_count_down_tick:"+second2TimeSecond(mSeconds)+"#"+String.format(mStrFormat,second2TimeSecond(mSeconds)));

setText(mStrFormat== null ?second2TimeSecond(mSeconds):String.format(mStrFormat,second2TimeSecond(mSeconds)));

}

break;

}

}

};

@Override

public void removeOnLayoutChangeListener(OnLayoutChangeListener listener) {

Log.e(TAG,"removeOnLayoutChangeListener");

super.removeOnLayoutChangeListener(listener);

}

@Override

public void removeOnAttachStateChangeListener(OnAttachStateChangeListener listener) {

Log.e(TAG,"removeOnAttachStateChangeListener");

super.removeOnAttachStateChangeListener(listener);

}

/**

* 转化为 hh:mm:ss 格式

* @param second

* @return

*/

private String second2TimeSecond(long second) {

long hours = second / 3600;

long minutes = (second%3600)/ 60;

long seconds = second % 60;

String hourString = "";

String minuteString = "";

String secondString = "";

if(hours < 10){

hourString = "0";

if(hours == 0){

hourString += "0";

}else{

hourString += String.valueOf(hours);

}

}else{

hourString = String.valueOf(hours);

}

if (minutes < 10) {

minuteString = "0";

if (minutes == 0) {

minuteString += "0";

}else {

minuteString += String.valueOf(minutes);

}

}else{

minuteString = String.valueOf(minutes);

}

if(seconds < 10){

secondString = "0";

if (seconds == 0) {

secondString += "0";

}else {

secondString += String.valueOf(seconds);

}

}else {

secondString = String.valueOf(seconds);

}

return hourString + ":" + minuteString+":"+secondString;

}

}

android自定义倒计时控件示例

这篇文章主要介绍了Android秒杀倒计时自定义TextView示例,大家参考使用吧 自定义TextView控件TimeTextView代码: 复制代码 代码如下: import android.co ...

android中倒计时控件CountDownTimer分析

android中倒计时控件CountDownTimer分析 1 示例代码 new CountDownTimer(10000, 1000) { public void onTick(long milli ...

Android自定义日历控件&lpar;继承系统控件实现&rpar;

Android自定义日历控件(继承系统控件实现) 主要步骤 编写布局 继承LinearLayout设置子控件 设置数据 继承TextView实现有圆圈背景的TextView 添加Attribute 添 ...

Android自定义组合控件详细示例 &lpar;附完整源码&rpar;

在我们平时的Android开发中,有时候原生的控件无法满足我们的需求,或者经常用到几个控件组合在一起来使用.这个时候,我们就可以根据自己的需求创建自定义的控件了,一般通过继承View或其子类来实现. ...

014 Android 自定义组合控件

1.需求介绍 将已经编写好的布局文件,抽取到一个类中去做管理,下次还需要使用类似布局时,直接使用该组合控件的对象. 优点:可复用. 例如要重复利用以下布局:

Android自定义用户控件简单范例&lpar;二&rpar;

对于完全由后台定制的控件,并不是很方便其他人的使用,因为我们常常需要看到控件放到xml界面上的效果,并根据效果进行布局的调整,这就需要一个更加标准的控件制作流程: 我们的自定义控件和其他的控件一样,应 ...

&lpar;转&rpar;android自定义组合控件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值