[Android]类似淘宝的数字自增自减文本

手机的支付宝每次打开都有一个数字从0到特定数字的增加或减少, 表示数值的更新. Android也提供了CountDownTimer去实现类似的效果. 要自己来实现, 原理也并不复杂,主要用Handler去定时刷新数字, 和CountDownTimer类似. 于是结合Handler和TextView即可实现.

效果图, GIF图看起来不连贯. 运行代码效果会好一些.

例子不复杂, 所以直接上代码了,提供了自增自减, 继续自增或继续自减, 和取消的接口方法.

public class DecalAddTextView extends TextView{
	private String TAG = "DecalAddTextView";

	private DecimalFormat format = new DecimalFormat("0.000");
	//真实值
	private double realNum;
	//自增或自减量
	private double variable;
	//TextView显示的值
	private double tvValue;
	private boolean ifCancel = false;

	private int decalOpType = 0;
	private static int PLUS = 1;
	private static int MINUS = 2;
	private static int FINISHED = 3;

	private Handler mHandler = new Handler()
	{
		@Override
		public void handleMessage(Message msg)
		{
			if(msg.what == PLUS)
			{
				if(tvValue < realNum)
				{
					setText(format.format(tvValue));
					if(!ifCancel)
					{
						tvValue += variable;
						mHandler.sendEmptyMessageDelayed(PLUS, 30);
					}
				}
				else
				{
					decalOpType = FINISHED;
					setText(format.format(realNum));
				}
			}
			else if(msg.what == MINUS)
			{
				if(tvValue > 0)
				{
					setText(format.format(tvValue));
					if(!ifCancel)
					{
						tvValue -= variable;
						mHandler.sendEmptyMessageDelayed(MINUS, 30);
					}
				}
				else
				{
					decalOpType = FINISHED;
					setText("0.000");
				}
			}
		}
	};

	public DecalAddTextView(Context context){
		this(context, null);
	}

	public DecalAddTextView(Context context, AttributeSet attrs){
		this(context, attrs, 0);
	}

	public DecalAddTextView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
	}

	public void setValue(double d)
	{
		realNum = d;
	}

	/**
	 * 开始自增
	 */
	public void startDecalPlus()
	{
		decalOpType = PLUS;
		tvValue = 0.000;
		//控制变化
		variable = realNum / 30.000;
		mHandler.sendEmptyMessage(PLUS);
	}

	/**
	 * 开始自减
	 */
	public void startDecalMinus()
	{
		decalOpType = MINUS;
		tvValue = realNum;
		variable = realNum / 30.000;
		mHandler.sendEmptyMessage(MINUS);
	}

	public void cancel()
	{
		ifCancel = true;
	}

	public void continueDecalNum()
	{
		if(decalOpType == PLUS)
		{
			mHandler.sendEmptyMessage(PLUS);
		}
		else if(decalOpType == MINUS)
		{
			mHandler.sendEmptyMessage(MINUS);
		}
		else
		{
			Log.e(TAG, "tvValue may be zero that PLUS or MINUS's method can not be invoked...");
		}
	}

}
时间: 2024-10-09 08:04:08

[Android]类似淘宝的数字自增自减文本的相关文章

ios 类似淘宝商品详情页面的效果

今天试着写ios 类似淘宝商品详情页面的效果 我用到的第三方库EGORefreshTableHeaderView下拉刷新的效果还有就是PWLoadMoreTableFooterView上拉加载更多 主要的思路在于UISCrollView两页,一页展示商品概况,另一页展示商品更多详情 首先,第一页的view包含一个UITableView,这个tableView实现PWLoadMoreTableFooterView中的delegate方法, 实现delegate代理方法的时候使用 - (void)s

求大神 &nbsp; 谁做过类似淘宝的sku商品信息组合

求大神   谁做过类似淘宝的sku商品信息组合

类似淘宝的导航栏

效果图 html代码 1 <div class="end_wrap"> 2 <div class="end_box"> 3 <ul> 4 <li class="shiling"> 5 <dl> 6 <dt> 7 <h3>时令周边游</h3> 8 <p><a href="">天数</a><a

ASP.NET MVC关于EF Group By分组实现类似淘宝足迹功能的实现

由于项目上线要求实现类似淘宝我的足迹功能,笔者整理的实现思路如下: 1.项目用的Entity Framework框架,先取得数据,然后根据利用lambda表达式实现分组,并传入视图View(): var  query=CustomerManager.GetCustomerTrace().GroupBy(r => r.UpdateOn.Data); return View(query); 视图中传入model : @model IEnumerable<IGrouping<DateTime,

如何:使用PicturBox实现类似淘宝网站图片的局部放大功能

转载至http://xuzhihong1987.blog.163.com/blog/static/267315872011822113131823/ 概要: 本文将讲述如何使用PictureBox控件实现图片的局部放大浏览功能,效果类似淘宝网站的图片局部放大浏览,通过鼠标悬浮查看局部大图,同时扩展了鼠标滚轮放大缩小功能.本文将详细讲述实现该功能的主要思路,例子虽是在Winform的环境下实现(当时开发的系统用的是winform),但是代码实现思路在其他环境(如WPF)应该是通用的. 解决方案:

Android仿淘宝购物车demo

夏的热情渐渐退去,秋如期而至,丰收的季节,小编继续着实习之路,走着走着,就走到了购物车,逛过淘宝或者是京东的小伙伴都知道购物车里面的宝贝可不止一件,对于爱购物的姑娘来说,购物车里面的商品恐怕是爆满,添加不进去了,以前逛淘宝的时候,小编没有想过要怎么样实现购物车,就知道在哪儿一个劲儿的逛,但是现在不一样了,小编做为一个开发者,想的就是该如何实现,捣鼓了两天的时间,用listview来实现,已经有模有样了,现在小编就来简单的总结一下实现购物车的心路历程,帮助有需要的小伙伴,欢迎小伙伴们留言交流. 首

android 仿淘宝京东购物车 ListView嵌套CheckBox

MyActivity===========================代码如下 package com.example.ListViewBoxDemo; import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.View;import android.widget.CheckBox;import android.widget.CompoundB

这是一个类似淘宝评分

这则代码中需要插入一个JQ文件和几张图片这里就不发出来了:在这代码中只要用户鼠标移入其中星星就会亮,并会显示打分标准,点击过后就会保持所选标准.   <!DOCTYPE html>   <html lang="en">   <head>   <meta charset="UTF-8">   <title>Document</title>   <style>   .container{

jquery--实现类似淘宝星星评分功能

-   不正之处,欢迎指正.^-^.好绕的话 贴码.html <body> <div id="div"> <ul> <li>☆</li> <li>☆</li> <li>☆</li> <li>☆</li> <li>☆</li> </ul> </div> <p id="p"><