【问题标题】:OnClick listener does not work after rotate ImageView?旋转 ImageView 后 OnClick 监听器不起作用?
【发布时间】:2012-08-09 12:43:31
【问题描述】:

我正在使用下面的代码来旋转 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());
}

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

提前致谢,

【问题讨论】:

    标签: android android-imageview


    【解决方案1】:

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

    【讨论】:

    • 我知道了,但我的情况与您的链接不同,因为我更改的是控制旋转而不是控制位置,有什么办法可以解决这个问题,我急需,谢谢
    • 但是问题还是一样的——这个问题存在于任何动画(动画后不保持状态),而不是移动物体。处理探针(但不是很好)的最简单方法是放置两个 imageView:一个在动画之前,第二个在动画之后(不可见)。旋转第一张图片后,让它不可见,第二张可见(在 onAnimationEnd 方法中)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多