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