关于peoperty animation的理解

来源:互联网 发布:零基础学软件编程 编辑:程序博客网 时间:2024/06/05 19:29


关于ValueAnimation的使用:



ValueAnimator animation = ValueAnimator.ofObject(//此处的ofObject表示建立一个自定义TypeEvaluator的 ValueAnimator,除此之外还有ofFloat等,分别表示建立一个含FloatEvaluator等的ValueAnimator,                new TypeEvaluator<Integer>() {                    public Integer evaluate(float fraction, Integer startValue,                            Integer endValue) {                        // TODO Auto-generated method stub                        Log.i("orignal-fraction", String.valueOf(fraction));                        Log.i("orignal-startvalue", String.valueOf(startValue));                        Log.i("orignal-startvalue", String.valueOf(endValue));                        return 20;                    }//fraction是TimeInterpolator的返回值,本函数的返回值为animation.getAnimatedValue()所获取的值,此处本代码fraction为0.2                }, 12, 23);//此处的12,23用来表示属性的上下限,分别为上TypeEvaluator的参数的startValue和endValue        animation.setDuration(5000);        ValueAnimator.setFrameDelay(500);        animation.setInterpolator(new TimeInterpolator() {            public float getInterpolation(float input) {                // TODO Auto-generated method stub                Log.i("myinterpolation-input", String.valueOf(input));                return 0.2f;            }        });//input参数是已逝去的时间占总时间的比例若直接返回该值,则本TimeInterpolator与linerInterpolator效果一样        animation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {            public void onAnimationUpdate(ValueAnimator animation) {                // TODO Auto-generated method stub                Log.i("update",                        ((Integer) animation.getAnimatedValue()).toString());            }        });//本环节是直线animation效果的关键环节,可在本linstener中加入要改变的属性,并与animation.getAnimatedValue()所得的值联系起来        animation.start();

代码运行部分结果:

160044701.jpg



本文出自 “Rainlee的随笔记” 博客,请务必保留此出处http://rainlee.blog.51cto.com/7389753/1297096

0 0