gpt4 book ai didi

android - 使用 ViewPager 和 PassByValue 滑动页面时执行 onTouchEvent

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:06:19 24 4
gpt4 key购买 nike

在我的项目中,使用 onTouchEvent 检测屏幕上的触摸并相应地执行操作,并使用 viewPager 进行滑动操作。问题是滑动触摸 Action 正在执行。所以从here 找到解决方案解决了它。但我的新问题是,在执行 TouchEvent.Action_up 后,触摸将被禁用。代码如下:

parent.setOnTouchListener(new OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {

switch(event.getAction())
{
case MotionEvent.ACTION_MOVE:
awesomePager.requestDisallowInterceptTouchEvent(true);
break;
case MotionEvent.ACTION_UP:
awesomePager.requestDisallowInterceptTouchEvent(true);
if(flag)
{
upperdock.setClickable(false);
upperdock.bringToFront();
tocparent.bringToFront();
tocbottom.bringToFront();
upperdock.setVisibility(RelativeLayout.VISIBLE);
tocparent.setVisibility(LinearLayout.VISIBLE);
tocbottom.setVisibility(LinearLayout.VISIBLE);
flag=false;
}
else
{

parent.bringToFront();
upperdock.setVisibility(RelativeLayout.INVISIBLE);
tocparent.setVisibility(LinearLayout.INVISIBLE);
tocbottom.setVisibility(LinearLayout.INVISIBLE);
flag=true;
}
break;

case MotionEvent.ACTION_CANCEL:
awesomePager.requestDisallowInterceptTouchEvent(false);
break;
default:
break;
}

return false;
}
});

在上面的代码中,如果我返回 false,Action_up 没有被执行。如果我返回 true,Action_cancel 没有被执行。这就是按值传递的问题。

最佳答案

我为此改变了一些东西。

不使用awesomePager.requestDisallowInterceptTouchEvent(false),只需使用 return true

activity中定义一个boolean sroll;

ViewPager.onPageScrolled中设置sroll = positionOffset != 0.0我覆盖 onTouchEvent,其中 ViewPager 中的 view

现在你可以检查if (event.getAction()==MotionEvent.ACTION_UP && !sroll)来决定事件是否会被触发

关于android - 使用 ViewPager 和 PassByValue 滑动页面时执行 onTouchEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10828436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com