Zom*_*bie 7 android pass-by-value touch-event android-viewpager
在我的项目中使用onTouchEvent来检测屏幕上的触摸并相应地执行操作,并使用viewPager进行滑动操作.滑动问题是触摸操作正在执行.所以从这里找到解决方案解决了它.但我的新问题是,一旦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;
}
});
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,如果我返回false,则Action_up没有被执行..如果我返回true,则Action_cancel没有被执行..这是通过值传递的问题.
我为此改变了一些东西。
不是使用
awesomePager.requestDisallowInterceptTouchEvent(false),只是使用return true。
在活动中定义一个布尔滚动;
在ViewPager.onPageScrolled中设置sroll =positionOffset != 0.0 并覆盖ViewPager中视图的onTouchEvent。
现在你可以检查if (event.getAction()==MotionEvent.ACTION_UP && !sroll)来决定事件是否会触发
| 归档时间: |
|
| 查看次数: |
3723 次 |
| 最近记录: |