Onlclick监听器无法正常工作..?

6

我有一个按钮,使用旋转动画将其旋转45度,并应用了点击监听器来显示一条消息。

当我点击按钮的上半部分时,会显示一条消息。 但是当我点击按钮的下半部分时,没有任何消息显示。

这里是动画代码。

<?xml version="1.0" encoding="utf-8"?>
<rotate
 xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="45"
    android:toDegrees="45"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="0" android:fillAfter="true">
</rotate>

df

Thanks in advance.....!

1个回答

3
我相信这是Android动画的限制。从3.0版本开始,他们通过实现新的动画系统来修复了这个问题。
在这里阅读: http://android-developers.blogspot.com/2011/02/animation-in-honeycomb.html "最后,之前的动画只是改变了目标对象的视觉效果... 但它们并没有真正改变对象本身。你可能会遇到这个问题。比如说你想把一个按钮从屏幕的一边移动到另一边。你可以使用 TranslateAnimation 来实现,然后按钮会愉快地滑到屏幕的另一侧。当动画完成时,它会高兴地回到原来的位置。于是你找到了 Animation 的 setFillAfter(true) 方法并再次尝试。这次按钮就会留在被动画到的位置上。你可以通过点击它来验证 - 哎呀!为什么按钮不能被点击?这个问题是动画改变了按钮绘制的位置,但并没有改变按钮在容器内实际存在的位置。如果你想点击按钮,你必须点击它曾经存在的位置。或者,更有效的解决方案(也更加有用),你需要写代码在动画完成时实际改变按钮在布局中的位置。”
"正因为这些原因,我们决定在Honeycomb中提供一个新的动画系统,它建立在“属性动画”的理念上。"

setFillAfter(true) 我已经做了这个。对于上半部分运行良好,但为什么下半部分不行呢..? - Noby
+1 因为这个答案是正确的。@Noby,setFillAfter(true)只保证绘图在动画后保持最终状态。然而,它并不改变事实,即在3.0之前的动画系统从未更改对象的实际边界,因此您的Button实例仍然存在于其原始矩形中...即使它被绘制得不同。原始矩形是触摸事件将被捕获的位置。 - devunwired

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接