以分,秒,分秒形式的倒计时组合控件

2024-09-04 18:18

本文主要是介绍以分,秒,分秒形式的倒计时组合控件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实现方法也不是很难,在这里我用一个ViewGroup控件组合成了一个倒计时控件,通过CountDownTimer的实现类来做时间戳的换算
package com.kufeng.hj.one.view;

import android.content.Context;
import android.os.CountDownTimer;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.kufeng.hj.one.R;

/**
* Created by Administrator on 2016/6/23.
* 定时器自定义组合控件
*/
public class CommodityBuyView extends RelativeLayout { //显示倒计时的格式如:00:00:00
private TextView tv_status;
//倒计的毫秒,以毫秒为单位 倒计时的总数
private long mMillisInFuture; //毫秒的最大算值
private long mCountDownInterval;
private MyCountDownTimer mcmc;

public CommodityBuyView(Context context, long mMillisInFuture, long mCountDownInterval) {
super(context);
this.mMillisInFuture = mMillisInFuture;
this.mCountDownInterval = mCountDownInterval;
if (mMillisInFuture > 0 && mCountDownInterval > 0)
initView(context);

}

public CommodityBuyView(Context context, AttributeSet attrs) {
super(context, attrs);
initView(context);
}

public CommodityBuyView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView(context);
}


private void initView(Context context) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.custom_view_commodi, this);
tv_status = ((TextView) view.findViewById(R.id.tv_announce_time));
mcmc = new MyCountDownTimer(mMillisInFuture, mCountDownInterval);
mcmc.start();
}


/**
* 继承 CountDownTimer 防范
* <p/>
* 重写 父类的方法 onTick() 、 onFinish()
*/

public class MyCountDownTimer extends CountDownTimer {
private String awardee;

/**
* @param millisInFuture 表示以毫秒为单位 倒计时的总数
* <p/>
* 例如 millisInFuture=1000 表示1秒
* @param countDownInterval 表示 间隔 多少微秒 调用一次 onTick 方法
* <p/>
* 例如: countDownInterval =1000 ; 表示每1000毫秒调用一次onTick()
*/
public MyCountDownTimer(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}

/**
* 处理时间倒计时进行页面刷新
*
* @param millisUntilFinished
*/
@Override
public void onTick(long millisUntilFinished) {
int ss = 1000;
int mi = ss * 60;
long minute = millisUntilFinished / mi;
long second = (millisUntilFinished - minute * mi) / ss;
long milliSecond = millisUntilFinished - minute * mi - second * ss;
String strMinute = minute < 10 ? "0" + minute : "" + minute;//分钟
String strSecond = second < 10 ? "0" + second : "" + second;//秒
String strMilliSecond = milliSecond < 10 ? "0" + milliSecond : "" + milliSecond;//毫秒
strMilliSecond = milliSecond > 100 ? strMilliSecond.substring(0, strMilliSecond.length() - 1) : "" + strMilliSecond;
tv_status.setText(strMinute + " : " + strSecond + ":" + strMilliSecond);
}


@Override
public void onFinish() {
tv_status.setText("正在计算....");
/* new Handler().postDelayed(new Runnable() {
@Override
public void run() {
tv_status.setVisibility(View.GONE);
//中奖者布局
*//* ll_result.setVisibility(View.VISIBLE);
//中奖者
tv_awardee.setText(awardee);*//*
}
}, 5000);*/
}

/**
* 设置获奖人
*
* @param awardee
*/
public void setAwardee(String awardee) {
this.awardee = awardee;
}
}

}

这篇关于以分,秒,分秒形式的倒计时组合控件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1136668

相关文章

hdu4869(逆元+求组合数)

//输入n,m,n表示翻牌的次数,m表示牌的数目,求经过n次操作后共有几种状态#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdlib.h>#includ

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

Go组合

摘要 golang并非完全面向对象的程序语言,为了实现面向对象的继承这一神奇的功能,golang允许struct间使用匿名引入的方式实现对象属性方法的组合 组合使用注意项 使用匿名引入的方式来组合其他struct 默认优先调用外层方法 可以指定匿名struct以调用内层方法 代码 package mainimport ("fmt")type People struct{}type Pe

小程序button控件上下边框的显示和隐藏

问题 想使用button自带的loading图标功能,但又不需要button显示边框线 button控件有一条淡灰色的边框,在控件上了样式 border:none; 无法让button边框隐藏 代码如下: <button class="btn">.btn{border:none; /*一般使用这个就是可以去掉边框了*/} 解决方案 发现button控件有一个伪元素(::after

2024年AMC10美国数学竞赛倒计时两个月:吃透1250道真题和知识点(持续)

根据通知,2024年AMC10美国数学竞赛的报名还有两周,正式比赛还有两个月就要开始了。计划参赛的孩子们要记好时间,认真备考,最后冲刺再提高成绩。 那么如何备考2024年AMC10美国数学竞赛呢?做真题,吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。通过做真题,可以帮助孩子找到真实竞赛的感觉,而且更加贴近比赛的内容,可以通过真题查漏补缺,更有针对性的补齐知识的短板。

MFC中Spin Control控件使用,同时数据在Edit Control中显示

实现mfc spin control 上下滚动,只需捕捉spin control 的 UDN_DELTAPOD 消息,如下:  OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult) {  LPNMUPDOWN pNMUpDown = reinterpret_cast(pNMHDR);  // TODO: 在此添加控件通知处理程序代码    if

MFC 控件重绘(2) NM_CUSTOMDRAW, WM_DRAWITEM, 虚函数DrawItem

控件重绘有三种方法: 1 设定界面属性 2 利用Windows的消息机制,通过Windows消息映射(Message Mapping)和反映射(Message Reflecting),在合适的时机修改控件的状态和行为。此方式涉及NM_CUSTOMDRAW和WM_DRAWITEM 3 利用虚函数机制,重载虚函数。即DrawItem虚函数。 对于NM_CUSTOMDRAW,某些支持此消息的控件

用Python编写倒计时程序:详细教程

目录 引言 环境准备 基本概念 代码实现 步骤一:导入必要的库 步骤二:获取用户输入 步骤三:实现倒计时逻辑 步骤四:整合代码 运行程序 高级功能 扩展功能示例:支持分钟和小时输入 扩展功能示例:图形用户界面 (GUI) 总结 引言 倒计时程序是一个非常常见的小工具,广泛用于各种应用场景中,例如考试时间提醒、烹饪计时器、会议倒计时等。Python 作为一种

组合c(m,n)的计算方法

问题:求解组合数C(n,m),即从n个相同物品中取出m个的方案数,由于结果可能非常大,对结果模10007即可。       共四种方案。ps:注意使用限制。 方案1: 暴力求解,C(n,m)=n*(n-1)*...*(n-m+1)/m!,n<=15 ; int Combination(int n, int m) { const int M = 10007; int

代码随想录训练营day37|52. 携带研究材料,518.零钱兑换II,377. 组合总和 Ⅳ,70. 爬楼梯

52. 携带研究材料 这是一个完全背包问题,就是每个物品可以无限放。 在一维滚动数组的时候规定了遍历顺序是要从后往前的,就是因为不能多次放物体。 所以这里能多次放物体只需要把遍历顺序改改就好了 # include<iostream># include<vector>using namespace std;int main(){int n,m;cin>>n>>m;std::vector<i