触摸动画Android ListView视图

时间:2013-06-08 12:16:01

标签: android android-listview android-animation android-ui

我想在用户触摸项目时为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_UPACTION_CANCEL个活动onTouchEvent并致电OnItemClickListener,我该如何实现?

1 个答案:

答案 0 :(得分:2)

在使用自定义Drawable返回View v call v.setBackgroundDrawable之前,在方法getView()中的列表适配器中

。这个Drawable必须是有状态的(isStatefull shound返回true),覆盖onStateChanged并记录StateSet.dump(stateSet),其余的由你决定你对每个状态做什么