项目中使用动画

1、项目中使用动画可以让产品更具有活力,给产品带来不一样的体验。

2、but,属性动画这个强大的东西没法再项目中直接用,因为他不兼容3.0之前的版本,这个时候就要用NineOldAndroids来代替了

http://nineoldandroids.com/

3、nineoldandroids兼容了安卓系统实现的所有的属性动画,而且扩展了更多的功能。

4、

(1)安卓动画有的已经做了笔记,这里只记录nineoldandroids有的或者是http://www.cnblogs.com/hpustudent/p/4589813.html没有提到的

(2)View属性动画,ViewPropertyAnimator,或者叫做view多属性动画,就是view的多个属性同时组合起来,很简单,一个平移+旋转+alpha

    ViewPropertyAnimator.animate(tvText)
                                    .translationX(300f)
                                    .translationY(300)
                                    .rotationY(100)
                                    .alpha(0.5f)
                                    .setDuration(3000);

so easy

(3)路径动画,PathAnimation是例子中带的一个,可以把里边的放到库里边以方便以后的使用,使用方法有以下

第一步:为了兼容api 11,需要获取到执行动画的AnimatorProxy代理

第二步:设置path的坐标以及关键点之间的连接方式(直线或者狐线)

第三步:使用ofObject方法,传入PathEvaluator和坐标数组

第四步:在ofObject的target中实现set***,方法,在方法中设置对象的新的位置。

public class NineOldActivity extends Activity{
    private Button btnStart;
    private TextView tvText;
    private LinearLayout layoutMain;
    private AnimatorProxy textProxy;
    private  ObjectAnimator anim; 
     
     
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        setContentView(R.layout.activity_nineoldanimator);
        
        btnStart = (Button)findViewById(R.id.btn_start);
        tvText = (TextView)findViewById(R.id.text);
        layoutMain = (LinearLayout)findViewById(R.id.main);
        textProxy = AnimatorProxy.wrap(tvText);
        
         AnimatorPath path = new AnimatorPath();
         path.moveTo(0, 0);
         path.lineTo(0, 300);
         path.curveTo(100, 0, 300, 900, 400, 500);
        
         anim = ObjectAnimator.ofObject(this, "buttonLoc",
                 new PathEvaluator(), path.getPoints().toArray());
         
         
         anim.setDuration(1000);
        
         new Handler().postDelayed(new Runnable() {
            
            @Override
            public void run() {
            
                anim.start();
            }
         }, 1000);
         
         /*
         btnStart.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                 
            }
        });
        */
    }
    
    public void setButtonLoc(PathPoint newPoint){
        textProxy.setTranslationX(newPoint.getX());
        textProxy.setTranslationY(newPoint.getY());
    }
}

-------------------------------------------------------****************-----------------------------------------------------------------------------

端午节就这样过完了,mark,只为能打造一个完美体验的产品出来2015-06-23 0:16,端午假期结束,之前不怎么记录自己的技术,喜欢记在笔记本上,but,前一段老大让做前端的一些东西,时间长没做,忘了不少,找原来的两本前端笔记,翻来翻去找不到,好吧,还是记在blog上吧,以后翻一番还是挺方便的,之前做C++的,Qt动画的一部分和这个还是很像的,而且实现的比安卓的要复杂一点,随后打算把复杂一点的动画加入到里边,不写了,睡觉!

原文地址:https://www.cnblogs.com/hpustudent/p/4594334.html