自定义视图无效

时间:2016-03-24 02:19:56

标签: android animation view rotation

我有这个自定义视图类,我发现它为我在项目中的imageView制作旋转动画:

public class RotatedTitle extends ImageView
{
private float angleRotation;

public RotatedTitle(Context context)
{
    super(context);
}

public RotatedTitle(Context context, AttributeSet attrs)
{
    super(context, attrs);
}

public RotatedTitle(Context context, AttributeSet attrs, int defStyle)
{
    super(context, attrs, defStyle);
}

public void setAngleRotation(float angleRotation)
{
    this.angleRotation = angleRotation;
    postInvalidate();
}

@Override
protected void onDraw(Canvas canvas)
{

    Rect clipBounds = canvas.getClipBounds();
    canvas.save();
    canvas.rotate(angleRotation, clipBounds.exactCenterX(), clipBounds.exactCenterY());
    super.onDraw(canvas);
    canvas.restore();
    postInvalidate();

}
}

然后我在我的主项目中这样称呼它:

RotatedTitle to = (RotatedTitle) findViewById(R.id.rotate);
    to.setAngleRotation(10);

一切都没发生!我确实要在屏幕上绘制图像,但没有动画发生。我试图将invalidate()更改为postInvalidate(),但没有任何效果。问题到底在哪里?为什么我不能得到任何旋转动画!

谢谢

2 个答案:

答案 0 :(得分:0)

如果您正在尝试旋转视图,请使用RotateAnimation类。它专为此用途而设计。请参阅文档:http://developer.android.com/reference/android/view/animation/RotateAnimation.html

答案 1 :(得分:0)

但是你可以只使用SDK提供的RotateAnimation()类

ImageView image = (ImageView) findViewById(R.id.imageView);
Animation anim = new RotateAnimation(0.0f, 10.0f, pivotX, pivotY);
an.setDuration(5000);               
an.setFillAfter(true);        

image.setAnimation(anim);