分析数字自动翻滚的动画---加深对属性动画的理解
2016-07-06 16:48
351 查看
package com.garea.plugin.measurer;
import java.text.DecimalFormat;
import java.util.ArrayList;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.TextView;
public class CountView extends TextView {
int duration = 2000;
float number;
public CountView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void showNumberWithAnimation(float number) {
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(this, "number",
0, number);
objectAnimator.setDuration(duration);
objectAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
objectAnimator.start();
}
public CountView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public CountView(Context context) {
super(context);
}
public void setNumber(float number) {
this.number = number;
DecimalFormat fnum = new DecimalFormat("##0");
String str = fnum.format(number);
setText(str+"");
}
}
想要的效果 要个textView 设置数字100,让它减速的从0到100,而不是直接写上100,这就需要动画
Object动画
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(this, "number", 0, 100);这行代码
的真实意思是 随着时间的变化依次产生0-100之间的数,然后去调用this的 setNumber(float number)方法。
它使用的是反射的机制 所以需要传一个 对象给他 还需要传一个方法的名称给他 这里的“number”就是方法名称
那他怎么会调用setNumber 这是他底层的给他加上的“set”+"Number"
不仅如此 View的 缩放、旋转、平移、透明度等等都是这样的
view.setScaleX(scaleX);
view.setAlpha(alpha);.
.
.
.
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(this, "scaleX", 0, 100);
所以只要View有的setXXX的方法缩放、旋转、平移、透明度都可以这么调用。
import java.text.DecimalFormat;
import java.util.ArrayList;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.TextView;
public class CountView extends TextView {
int duration = 2000;
float number;
public CountView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void showNumberWithAnimation(float number) {
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(this, "number",
0, number);
objectAnimator.setDuration(duration);
objectAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
objectAnimator.start();
}
public CountView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public CountView(Context context) {
super(context);
}
public void setNumber(float number) {
this.number = number;
DecimalFormat fnum = new DecimalFormat("##0");
String str = fnum.format(number);
setText(str+"");
}
}
想要的效果 要个textView 设置数字100,让它减速的从0到100,而不是直接写上100,这就需要动画
Object动画
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(this, "number", 0, 100);这行代码
的真实意思是 随着时间的变化依次产生0-100之间的数,然后去调用this的 setNumber(float number)方法。
它使用的是反射的机制 所以需要传一个 对象给他 还需要传一个方法的名称给他 这里的“number”就是方法名称
那他怎么会调用setNumber 这是他底层的给他加上的“set”+"Number"
不仅如此 View的 缩放、旋转、平移、透明度等等都是这样的
view.setScaleX(scaleX);
view.setAlpha(alpha);.
.
.
.
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(this, "scaleX", 0, 100);
所以只要View有的setXXX的方法缩放、旋转、平移、透明度都可以这么调用。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories