Android onTouch()并单击ListView元素不能一起工作

Android onTouch()并单击ListView元素不能一起工作,android,Android,我试图做到这一点: 当finger触摸视图(在ListView中)时,视图变大(通过修改LayoutParams)。当视图被释放时,它会收缩并打开新的活动 为此,我编写了以下代码: public final class MakeImageBiggerOnTouchListener implements View.OnTouchListener { @Override public boolean onTouch(final View view, MotionEvent even

我试图做到这一点:

当finger触摸视图(在ListView中)时,视图变大(通过修改LayoutParams)。当视图被释放时,它会收缩并打开新的活动

为此,我编写了以下代码:

public final class MakeImageBiggerOnTouchListener implements View.OnTouchListener {

    @Override
    public boolean onTouch(final View view, MotionEvent event) {

        switch (event.getActionMasked()) {
            case ACTION_DOWN:
                 if(view.getHeight() >= (int) (mStartHeight * sScaleY)) {
                    return true;
                }

                ValueAnimator animator = ValueAnimator.ofInt(view.getHeight(), (int) (mStartHeight * sScaleY));

                final ViewGroup.LayoutParams lp = view.getLayoutParams();
                animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                    @Override
                    public void onAnimationUpdate(ValueAnimator valueAnimator) {
                        lp.height = (Integer) valueAnimator.getAnimatedValue();
                        view.setLayoutParams(lp);

                        imageLp.height = (Integer) valueAnimator.getAnimatedValue();
                        image.setLayoutParams(imageLp);
                    }
                });
                animator.setInterpolator(new AccelerateInterpolator());
                animator.start();

                Log.d("xxx", "ACTION_DOWN");

                return true;
            case ACTION_CANCEL:
                makeSmaller();

                return true;
            case ACTION_UP:
                makeSmaller();

                return false;
            default:
                return false;
        }
    }
}
在具有ListView的活动中:

    mPlacesListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
            MainActivity.this.startActivity(intent);
        }
    });
mPlacesListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
意向意向=新意向(MainActivity.this,SecondActivity.class);
MainActivity.this.startActivity(意图);
}
});

我的问题是,活动开始不起作用。视图在按下时变大,在释放/移动手指时变小,但在释放新活动后不会打开。

问题:

View.OnTouchListener 
当您将它添加到
ListView的视图中时
它将使用它作为
ontouch
侦听器,替换视图中的
setOnItemClickListener
函数。因此,基本上它将使用
makeImageBiggeroTouchListener
作为视图的item touch事件,完全忽略
setOnItemClickListener

解决方案:

View.OnTouchListener 
您需要在switch语句中切换活动,并将上下文传递给
makeImageBiggeroTouchListener
,以便使用该上下文调用
startActivity
和主活动的实例

        case ACTION_CANCEL:
            makeSmaller();
            //call activity here
            return true;
        case ACTION_UP:
            makeSmaller();
            //call activity here

您的日志说明了什么?在这个场景中,是您的onItemClick正在被调用,还是您可以尝试在onTouch方法中找到位置,然后从Post openActivity()开始活动;code@user3141985只需采取行动->行动_UP@Rod_Algonquin我不明白你的意思。你是说在行动中放下openActivity()?