Android 属性动画理解

来源:互联网 发布:三菱plc编程软件安卓版 编辑:程序博客网 时间:2024/05/21 11:07

所谓属性动画在我的理解就是:
1、修改对象的属性
2、形成动画效果

先说第一点:
修改对象属性


tv=(TextView) findViewById(R.id.textview);
tv.setTranslationX(100f);

最简单的程序,R.id.textview就是Hello World!,这个setTranslationX(100f)就是将他平移到x轴100f的位置。
当你完成这段代码,tv自然就到了x轴100的位置是没有动画效果的,那我们如果实现动画效果呢

也就是第二点:
形成动画属性
想象下,如果我们让这个tv在1s内均匀的从(0,0)移动到(0,100)那么这样在肉眼看来是不是就是动画了呢?

so,android提供了这么个类,

         int i=0;        ValueAnimator anim=ValueAnimator.ofFloat(0f,100f);        anim.setDuration(600);        anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {            @Override            public void onAnimationUpdate(ValueAnimator animation) {                i++;                Log.i(TAG, "i="+i+"----onAnimationUpdate: "+animation.getAnimatedValue());            }        });        anim.start();
10-26 10:22:32.960 8692-8692/com.szgroup.wy.androidtest I/Main2Activity: i=1----onAnimationUpdate: 0.010-26 10:22:33.031 8692-8692/com.szgroup.wy.androidtest I/Main2Activity: i=2----onAnimationUpdate: 0.010-26 10:22:33.335 8692-8692/com.szgroup.wy.androidtest I/Main2Activity: i=3----onAnimationUpdate: 52.0937810-26 10:22:33.476 8692-8692/com.szgroup.wy.androidtest I/Main2Activity: i=4----onAnimationUpdate: 81.6690310-26 10:22:33.539 8692-8692/com.szgroup.wy.androidtest I/Main2Activity: i=5----onAnimationUpdate: 92.35609410-26 10:22:33.546 8692-8692/com.szgroup.wy.androidtest I/Main2Activity: i=6----onAnimationUpdate: 94.9013810-26 10:22:33.562 8692-8692/com.szgroup.wy.androidtest I/Main2Activity: i=7----onAnimationUpdate: 97.0440410-26 10:22:33.585 8692-8692/com.szgroup.wy.androidtest I/Main2Activity: i=8----onAnimationUpdate: 98.5567210-26 10:22:33.601 8692-8692/com.szgroup.wy.androidtest I/Main2Activity: i=9----onAnimationUpdate: 99.5722410-26 10:22:33.625 8692-8692/com.szgroup.wy.androidtest I/Main2Activity: i=10----onAnimationUpdate: 99.9828710-26 10:22:33.640 8692-8692/com.szgroup.wy.androidtest I/Main2Activity: i=11----onAnimationUpdate: 100.0

我们可以看到在600ms的时间内,由0f平滑的过度到了100f

so

 ValueAnimator anim=ValueAnimator.ofFloat(0f,100f);        anim.setDuration(6000);        anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {            @Override            public void onAnimationUpdate(ValueAnimator animation) {                tv.setTranslationX((Float) animation.getAnimatedValue());            }        });        anim.start();

这样我们就完成了一个简单的平移动画,且修改了对象的属性
ps:这个时间(anim.setDuration(6000)),为了看的更清楚

0 0
原创粉丝点击