CounterText 动态数字增加
来源:互联网 发布:kof98um下载 mac 编辑:程序博客网 时间:2024/06/05 06:42
背景:制作一个类似于支付宝 财产金额动态增加的效果
思路一:将目标金额等分,利用Handler不断发生消息,延时修改金额。
实习方法:CounterText extends Text 在设置目标值时开始动态展示。
实现代码如下
public class CounterText extends TextView {//目标金额private double mGolValue;//增长过程中的当前金额private double mCurValue;//增加比例private double mRate;//增加模式private int rate = 1;//是否在刷新private boolean refreshing;//显示格式DecimalFormat fnum = new DecimalFormat(",##0.00");//用于处理增加TextView的UI Handlerprivate Handler handler = new Handler(){public void handleMessage(Message msg){switch(msg.what){case 0:if(rate*mCurValue < mGolValue){ setText(fnum.format(mCurValue)); mCurValue += mRate*rate; //每延时50ms刷新一次 handler.sendEmptyMessageDelayed(0, 50);}else{refreshing = false;setText(fnum.format(mGolValue));}break;default:break;}}};public CounterText(Context context) {super(context);// TODO Auto-generated constructor stub}public CounterText(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub}public CounterText(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);// TODO Auto-generated constructor stub}public void StartDisplay(){if(refreshing)handler.sendEmptyMessage(0);}//输入金额和设置 mCurValue mGolValue mRate refreshing等值public void setValue(String amount) {double value = Double.parseDouble(amount.replaceAll(",", ""));if(value > 0.00){refreshing =true;mCurValue = 0.00;mGolValue = value;mRate = new BigDecimal((double)(value/13.00)).setScale(5, BigDecimal.ROUND_HALF_UP).doubleValue();StartDisplay();}else if(value == 0.00){refreshing = false;setText("0.00");}}}
思路二:利用ValueAnimation的UpdateListener回调来动态修改金额。
实习方法:CounterText extends Text 在设置目标值时开始动态展示。
关键代码
private void startAnimation() { anim = ValueAnimator.ofFloat(0,1); anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { mCurValue = mGolValue * (float)animation.getAnimatedValue(); invalidate(); } }); anim.setDuration(500); anim.start(); startAnim = false; }
1 0
- CounterText 动态数字增加
- 用JQ去实现数字动态增加动画
- 动态增加
- 数字增加价值
- 数字增加动画
- Add Digits -- 增加数字
- Ext动态动态增加Tab
- 动态增加表单元素
- 动态增加删除行
- DHTML动态增加行
- 动态增加按钮
- 动态增加表格
- GridView动态增加行
- 动态增加、删除列
- 动态增加行
- 动态增加表格
- JavaScript动态增加行
- GridView动态增加行
- c++ 关于静态变量的初始化
- Hadoop MapReduce处理海量小文件(每次整个小文件整体读入到map):基于FileInputFormat
- 仿安卓4.0联系人滑动效果 StickyListHeaders
- MFC中实现缩放画图的另一种方式
- 模块
- CounterText 动态数字增加
- for命令
- JSP自定义标签开发入门
- 10020---JavaScript--函数
- HandlerThread的学习心得
- OS X EI Capitan 10.11 安装 cocoapods
- jquery结合Spring MVC实现从后台读取数据的输入框提示
- UI之touchEvent
- 我的第一篇博客^_^