zoukankan      html  css  js  c++  java
  • 项目中使用动画

    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动画的一部分和这个还是很像的,而且实现的比安卓的要复杂一点,随后打算把复杂一点的动画加入到里边,不写了,睡觉!

  • 相关阅读:
    html5基础---canvas
    html5基础---h5特性
    JS常用知识点(一)
    微信小程序开发(一)基础知识学习
    关于C# winform唤起本地已安装应用程序(测试win10,win7可用)
    js原型链结构理解
    JS闭包应用场景之函数回调(含函数的调用个人理解)
    (十三)MySQL锁机制
    (十一)MVCC-多版本并发控制机制(转)
    jvm014-垃圾回收器
  • 原文地址:https://www.cnblogs.com/hpustudent/p/4594334.html
Copyright © 2011-2022 走看看