我有这个自定义视图类,我发现它为我在项目中的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(),但没有任何效果。问题到底在哪里?为什么我不能得到任何旋转动画!
谢谢
答案 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);