時,我有一個自定義的ListView
中,我已經爲每個列表項的OnTouchListener
。當用戶觸摸的項目,我用TransitionDrawable
改變時MotionEvent.ACTION_DOWN
項目的背景顏色,並在MotionEvent.ACTION_UP
使其恢復正常。定製的ListView問題與onTouch滾動
現在,當我滾動這個列表,這是在滾動行動開始觸項目改變背景顏色。我想避免這種行爲。所以,當滾動我想禁用任何背景顏色的變化。有沒有辦法做到這一點?請參閱下面的代碼:
public class ListItemOnTouchListener implements OnTouchListener {
@Override
public boolean onTouch(View v, MotionEvent event) {
Context mContext = getActivity().getApplicationContext();
Resources res = mContext.getResources();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
TransitionDrawable transitionDown = (TransitionDrawable) res
.getDrawable(R.drawable.row_background_transition_down);
v.setBackgroundDrawable(transitionDown);
transitionDown.startTransition(350);
Log.d(TAG, "ACTION_DOWN");
return true;
case MotionEvent.ACTION_UP:
TransitionDrawable transitionUp = (TransitionDrawable) res
.getDrawable(R.drawable.row_background_transition_up);
v.setBackgroundDrawable(transitionUp);
transitionUp.startTransition(1000);
// Get list view
ListView listView = getListView();
int position = listView.getPositionForView((LinearLayout) v.getParent());
listView.performItemClick(v, position, 0);
Log.d(TAG, "ACTION_UP");
return true;
case MotionEvent.ACTION_MOVE:
Log.d(TAG, "ACTION_MOVE");
break;
case MotionEvent.ACTION_CANCEL:
Log.d(TAG, "ACTION_CANCEL");
v.setBackgroundResource(R.drawable.row_background_normal);
break;
}
return false;
}
}
如果撤消對ACTION_UP效果不是那麼重要,那麼你可以替換成一個計時器,並使用點擊或選擇的事件? – 2013-03-14 14:46:43
實際上,在ACTION_UP中改變顏色,因爲我想顯示淡化效果。另外,我在ACTION_UP中生成itemclick事件,因爲我想註冊用戶的點擊。請參閱我編輯的問題中的代碼。 – Robin 2013-03-14 15:12:29