用一个textview显示数字,让数字从一个值渐变到另外一个值
2017-05-08 22:33
357 查看
如何将一个数字从一个值逐渐变化到另外一个值?
构造方法中要传入一个textview,可以将要操作的textview传进来,因为启动动画需要一个实例的view,这里并不会对该textview进行动画变化(移动,旋转等),只是利用他启动动画和改变textview中的数字。
interpolatedTime的值从0变化到1,持续时间由setDuration()方法设定,这里设置了20*2000毫秒,如果你的数据变化跨度很大,没能在20*2000毫秒变化完成,可以将时间设置更长一些。当然也可以加快from的变化速度,让它一次多加/减一些
[java] view
plain copy
public class NumberAnimation extends Animation {
TextView view;
int from, to;
int cha;
public NumberAnimation(TextView v){
view = v;
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
super.applyTransformation(interpolatedTime, t);
if (interpolatedTime < 1.0f) {
if(from != to){//当没有达到要显示的新值时,持续更新textview
if(cha > 0){
from ++;
view.setText(from + "");
}else{
from --;
view.setText(from + "");
}
}
}
}
// 数字从from逐渐变化到to
public void setNum(int from, int to){
this.from = from;
this.to = to;
cha = to - from;
NumberAnimation.this.setDuration(20 * 2000);//最长持续40秒
view.startAnimation(NumberAnimation.this);
}
}
用法:
[java] view
plain copy
NumberAnimation na = new NumberAnimation(mMenTemperature);
na.setNum(0, 99);
构造方法中要传入一个textview,可以将要操作的textview传进来,因为启动动画需要一个实例的view,这里并不会对该textview进行动画变化(移动,旋转等),只是利用他启动动画和改变textview中的数字。
interpolatedTime的值从0变化到1,持续时间由setDuration()方法设定,这里设置了20*2000毫秒,如果你的数据变化跨度很大,没能在20*2000毫秒变化完成,可以将时间设置更长一些。当然也可以加快from的变化速度,让它一次多加/减一些
[java] view
plain copy
public class NumberAnimation extends Animation {
TextView view;
int from, to;
int cha;
public NumberAnimation(TextView v){
view = v;
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
super.applyTransformation(interpolatedTime, t);
if (interpolatedTime < 1.0f) {
if(from != to){//当没有达到要显示的新值时,持续更新textview
if(cha > 0){
from ++;
view.setText(from + "");
}else{
from --;
view.setText(from + "");
}
}
}
}
// 数字从from逐渐变化到to
public void setNum(int from, int to){
this.from = from;
this.to = to;
cha = to - from;
NumberAnimation.this.setDuration(20 * 2000);//最长持续40秒
view.startAnimation(NumberAnimation.this);
}
}
用法:
[java] view
plain copy
NumberAnimation na = new NumberAnimation(mMenTemperature);
na.setNum(0, 99);
相关文章推荐
- 用一个textview显示数字,让数字从一个值渐变到另外一个值
- TextView中的连续空格只显示一个的解决方法
- android如果重写onDraw实现一个类似TextView可以显示表情和链接的控件(二)
- 解决Android TextView使用Html多个空格只显示一个空格
- Android中一个textviewz中的字符串俩个颜色显示
- 给一个TextView控件中的文字显示不同的颜色
- Toast自定义和一个textview中显示不同颜色
- TextView显示文字过长时添加阴影渐变消失效果
- iOS swift 实现图文混排 emoji小表情和文字都显示在一个textview中
- 从网上获取一个网页,在一个TextView中将其源代码显示出来
- TextView中显示价格并且中间直接有一个横线
- android中的textview显示汉字不能自动换行的一个解决办法
- android中的textview显示汉字不能自动换行的一个解决办法
- 如何设置一个textview的文字显示为垂直居中,水平居左呢
- Android中使用一个textview实现不同颜色以及内容分割的显示
- android中textview显示汉字,字母,数字乱行行问题解决
- 给一个android的TextView设置背景颜色动态显示,到那时好像不起作用。我是少了什么东西么?
- Android TextView显示文字过长时添加阴影渐变消失效果
- 在一个TextView中字体显示不同颜色
- 如何在一个TextView中显示不同颜色的文本