android自定义动画以及对pivotX,pivotY认识

对于Androi的帧动画,可以制作gif图片,有时为了能够动态的生成帧动画,就得需要使用代码构建了

AnimationDrawable类中使用 addFrame用来添加帧。

AnimationDrawable类中使用 start来启动动画。

AnimationDrawable类中使用 stop来停止动画。


另外对于补间动画的理解中容易出现错误的地方,更正如下:

RotateAnimation ra = new RotateAnimation(fromDegrees, toDegrees, pivotX, pivotY)

pivotX,pivotY当数值大于1时表示的是实际像素

RotateAnimation ra = new RotateAnimation(fromDegrees, toDegrees, pivotXType, pivotXValue, pivotYType, pivotYValue)

pivotX,pivotY当数值大于1时表示的是比例位置


Animation自定义动画:

public class CustomAnimation extends Animation {

	@Override
	protected void applyTransformation(float interpolatedTime, Transformation t) {
		super.applyTransformation(interpolatedTime, t);
		t.getMatrix().setTranslate((float) (Math.sin(10*interpolatedTime)*50), 0);
	}
	
	
}

Animator自定义动画方式一

            final ShapeHolder ball5 = balls.get(4);
                ValueAnimator valueAnimator5 = ValueAnimator.ofFloat(0f,
                        getHeight() - ball5.getHeight());
                valueAnimator5.setDuration(500);
                valueAnimator5.addUpdateListener(new AnimatorUpdateListener() {                    
                // ValueAnimator需要自己在监听处理中设置对象参数                    
                @Override                    
                public void onAnimationUpdate(ValueAnimator animation) {                        
                // 用animation.getAnimatedValue()得到当前的属性值,设置进动画对象中                        
                ball5.setY((Float) animation.getAnimatedValue());                        
                // 记得要刷新View否则不会调用重新绘制                        
                invalidate();
                    }
                });

Animator自定义动画方式二

public class Point {

    private float x;

    private float y;

    public Point(float x, float y) {
        this.x = x;
        this.y = y;
    }

    public float getX() {
        return x;
    }

    public float getY() {
        return y;
    }

}
public class PointEvaluator implements TypeEvaluator{

    @Override
    public Object evaluate(float fraction, Object startValue, Object endValue) {
        Point startPoint = (Point) startValue;
        Point endPoint = (Point) endValue;
        float x = startPoint.getX() + fraction * (endPoint.getX() - startPoint.getX());
        float y = startPoint.getY() + fraction * (endPoint.getY() - startPoint.getY());
        Point point = new Point(x, y);
        return point;
    }

}
Point point1 = new Point(0, 0);
Point point2 = new Point(300, 300);
ValueAnimator anim = ValueAnimator.ofObject(new PointEvaluator(), point1, point2);
anim.setDuration(5000);
anim.start();

或如下使用

ObjectAnimator.ofObject(Object target, String propertyName, TypeEvaluator evaluator, Object... values)



你可能感兴趣的:(android:pivotX,android:pivotY)