我想在用户触摸项目时为ListView
中的项目制作动画,并在触摸结束时向后执行动画。
我尝试通过覆盖列表项的onTouchEvent
来做到这一点,但如果我在处理事件时返回true,则不再接收OnItemClickListener
次调用,因为我已经消耗了触摸事件,如果我返回false,当用户停止触摸视图时,我不会收到回调。
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
//handle onclick
}
});
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.v(TAG, event.getActionMasked() + "");
if(event.getActionMasked() == MotionEvent.ACTION_DOWN) {
Animation animation = createColorAnimation(false);
animation.setDuration(500);
startAnimation(animation);
return true;
} else if(event.getActionMasked() == MotionEvent.ACTION_UP || event.getActionMasked() == MotionEvent.ACTION_CANCEL) {
Animation animation = createColorAnimation(true);
animation.setDuration(500);
startAnimation(animation);
return true;
}
return super.onTouchEvent(event);
}
我希望收到ACTION_UP
和ACTION_CANCEL
个活动onTouchEvent
并致电OnItemClickListener
,我该如何实现?
答案 0 :(得分:2)
。这个Drawable必须是有状态的(isStatefull shound返回true),覆盖onStateChanged并记录StateSet.dump(stateSet),其余的由你决定你对每个状态做什么