3

我正在使用下面的代码来旋转 ImageView 控件

ImageView Iv = new this.findViewById(id)
RotateAnimation a = new RotateAnimation(0, 60);
a.setFillAfter(true);
a.setFillBefore(false);
a.setDuration(0);
Iv.startAnimation(a);

上面代码的问题是ImageView看起来是旋转的,但是不能正确点击。触发点击事件的坐标是在旋转之前控件所在区域的坐标。

我还尝试了另一种解决方案,我尝试编写一个自定义视图扩展 ImageView 并在 onDraw() 中旋转控件画布,但此解决方案没有旋转控件,它旋转了控件的内容。

@Override
protected void onDraw(Canvas canvas)
{
canvas.rotate(60, getWidth() / 2, getHeight() / 2);
super.onDraw(canvas);
canvas.save();
canvas.restore();
}

@Override
protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(heightMeasureSpec, widthMeasureSpec);
setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth());
}

知道如何旋转控件本身并使其保持可点击状态吗?

提前致谢,

4

1 回答 1

0

动画不会改变您的视图位置。这是动画的常见问题。请看这里

于 2012-08-09T13:01:10.687 回答