我有一个包含这样的项目的网格:
http://petromi.com/get/ba4a24f852.png
我希望在用户触摸时播放专辑封面的动画。我为此创建了一个类:
class TouchAnimationHelper {
...
public void setItemTouchAnimation(final View view) {
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
Log.d("Touch action: [%s]", action);
if (action == MotionEvent.ACTION_DOWN) {
view.startAnimation(sDecAnimation);
return true;
} else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) {
if (action == MotionEvent.ACTION_UP) {
sIncAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
sIncAnimation.setAnimationListener(null);
view.performClick();
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
}
view.startAnimation(sIncAnimation);
return true;
}
return false;
}
});
}
}
在适配器的getView
方法中,我调用:
mTouchAnimationHelper.setItemTouchAnimation(view.findViewById(R.id.album_cover));
但结果并不完全是我想要的。
触摸时动画正在工作。但是没有调用Grid的onItemClick
。仅在点击图像下方的文本时才会调用它。我该如何打电话?
我尝试了一些解决方案,但没有成功:
始终在onTouch
中返回false。但在那种情况下没有
其他触摸动作继续进行,动画不播放。
将其他参数传递给setItemTouchAnimation
并致电
adapterView.performItemClick(view, position, id)
代替
view.performClick()
。但在这种情况下,我得到了奇怪的混乱:提出
event的商品ID与点击的商品ID不匹配。我还没有
明白,为什么会这样。
还有其他想法吗?
答案 0 :(得分:1)
getview()中的OnTouch事件返回false而不是true。它适用于我的情况。希望它能为你工作..