Android仿余额宝金额动画
来源:互联网 发布:51单片机指令集ppt 编辑:程序博客网 时间:2024/04/26 01:00
Android仿余额宝金额动画
package com.lance.widget;import java.text.DecimalFormat;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import android.content.Context;import android.os.Handler;import android.os.Message;import android.util.AttributeSet;import android.util.Log;import android.widget.TextView;public class RunningTextView extends TextView {public double content;// 最后显示的数字private int frames = 25;// 总共跳跃的帧数,默认25跳private double nowNumber = 0.00;// 显示的时间private ExecutorService thread_pool;private Handler handler;private DecimalFormat formater;// 格式化时间,保留两位小数public RunningTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init();}public RunningTextView(Context context, AttributeSet attrs) { super(context, attrs); init();}public RunningTextView(Context context) { super(context); init();}public int getFrames() { return frames;}// 设置帧数public void setFrames(int frames) { this.frames = frames;}/** * 设置数字格式,具体查DecimalFormat类的api * @param pattern */public void setFormat(String pattern) { formater = new DecimalFormat(pattern);}// 初始化private void init() { thread_pool = Executors.newFixedThreadPool(2);// 2个线程的线程池 formater = new DecimalFormat("00.00");// 最多两位小数,而且不够两位整数用0占位。可以通过setFormat再次设置 handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); RunningTextView.this.setText(formater.format(nowNumber) .toString());// 更新显示的数字 nowNumber += Double.parseDouble(msg.obj.toString());// 跳跃arg1那么多的数字间隔// Log.v("nowNumber增加之后的值", nowNumber + ""); // if (nowNumber < content) { Message msg2 = handler.obtainMessage(); msg2.obj = msg.obj; handler.sendMessage(msg2);// 继续发送通知改变UI } else { RunningTextView.this.setText(formater.format(content) .toString());// 最后显示的数字,动画停止 } } };}/** * 播放数字动画的方法 * * @param moneyNumber */public void playNumber(double moneyNumber) { if (moneyNumber == 0) { RunningTextView.this.setText("0.00"); return; } content = moneyNumber;// 设置最后要显示的数字 nowNumber = 0.00;// 默认都是从0开始动画 thread_pool.execute(new Runnable() { @Override public void run() { Message msg = handler.obtainMessage(); double temp = content / frames; msg.obj = temp < 0.01 ? 0.01 : temp;// 如果每帧的间隔比1小,就设置为1// Log.v("每帧跳跃的数量:", "" + msg.obj.toString()); handler.sendMessage(msg);// 发送通知改变UI } });}}
在activity中使用
package com.lance.runningtextview;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends ActionBarActivity implements OnClickListener {private Button mBtrmb;private Button mBtdollar;private Button mBturo;private com.lance.widget.RunningTextView mRunningtextview;private EditText mEdit;private Button mBtplay;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bindViews(); // 设置数字格式,具体查DecimalFormat类的api mRunningtextview.setFormat("00.00"); mBtplay.setOnClickListener(this); mBtrmb.setOnClickListener(this); mBtdollar.setOnClickListener(this); mBturo.setOnClickListener(this);}private void bindViews() { mBtrmb = (Button) findViewById(R.id.btrmb); mBtdollar = (Button) findViewById(R.id.btdollar); mBturo = (Button) findViewById(R.id.bturo); mRunningtextview = (com.lance.widget.RunningTextView) findViewById(R.id.runningtextview); mEdit = (EditText) findViewById(R.id.edit); mBtplay = (Button) findViewById(R.id.btplay);}@Overridepublic void onClick(View v) { switch (v.getId()) { case R.id.btplay: // 播放数字动画 String temp = mEdit.getText().toString(); Log.v("temp:", temp); if(!temp.equals("")){ double number = Double.parseDouble(temp); mRunningtextview.playNumber(number); } break; case R.id.btrmb: Toast.makeText(this, "use the symbol ¥ ", Toast.LENGTH_SHORT).show(); mRunningtextview.setFormat("¥00.00"); break; case R.id.bturo: Toast.makeText(this, "use the symbol € ", Toast.LENGTH_SHORT).show(); mRunningtextview.setFormat("€00.00"); break; case R.id.btdollar: Toast.makeText(this, "use the symbol $ ", Toast.LENGTH_SHORT).show(); mRunningtextview.setFormat("$00.00"); break; }}@Overridepublic boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { Toast.makeText(this, "Oh yeah~", Toast.LENGTH_SHORT).show(); return true; } return super.onOptionsItemSelected(item);}}
0 0
- Android仿余额宝金额动画
- Android 仿余额宝数字动画实现
- 仿余额宝的数字动画效果
- Android 百分位金额数字动画添加 方支付余额
- Android使用ValueAnimator开发仿余额宝数值增加控件
- Android仿余额宝实现七天年化收益率图表
- 余额宝折线高仿
- 仿余额宝折线图
- iOS 金额余额从0跳动显示的动画
- 【android】仿支付宝金额千分位格式化
- 仿余额宝数字渐慢跳动效果
- 仿余额宝跳转精度问题
- Android之闪动的、增长的数字(仿余额宝)
- android开发游记:仿支付宝余额数字累加滚动效果的实现
- android开发游记:仿支付宝余额数字累加滚动效果的实现
- android开发游记:仿支付宝余额数字累加滚动效果的实现
- 仿支付宝金额变化
- 类似余额宝数值增加的动画
- jenkins集群测试环境原理、部署及常见问题解决
- 安装Sublime text 2的Package Control
- Linux之find命令的使用
- CSS2
- TrueCrypt 使用经验[1]:关于加密算法和加密盘的类型
- Android仿余额宝金额动画
- [hadoop]hive的管理(十一)
- 在iOS中使用钥匙串访问——sskeychain框架
- CentOS设置代理, yum, wget
- LeetCode第21题之Generate Parentheses(两种解法)
- 使用Validator做SpringMVC的验证框架 - 配置SpringMVC环境
- NSRooLoop 浅析
- 人脸检测算法 性能统计
- openstack win7镜像制作并支持管理员登陆