网站建设资讯

NEWS

网站建设资讯

Android应用中出现滑动冲突如何解决-创新互联

今天就跟大家聊聊有关Android应用中出现滑动冲突如何解决,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

成都创新互联主要从事成都网站制作、成都网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务乐昌,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792

场景一:类似于ViewPager嵌套Fragmnet并且在Fragmnet中嵌套了一个ListView的效果,可以通过左右滑动来切换或者触发其他view的显示。但是在ViewPager内部已经处理了这个冲突,所以我们会发现ViewPager嵌套Fragmnet的时候很是流畅。如果我们采用的不是ViewPager而是ScrollView,那么就需要我们主动去处理这个冲突了; 

场景二:这种情况比较复杂,那就是view和被嵌套的view需要在同一个方向上滑动,这时候,用户滑动view的时候,系统就不知道用户想要滑动的view是哪一个,问题就不由自主的跳出来了;
场景三:场景三是最为复杂的一种,即有场景一的情况,也有场景二的情况,两种情况的叠加,所以需要处理内部和中部、中部和和外部的冲突。

问题已经出来了,那我们怎么解决呢?

view既然可以滑动,那么就有滑动的规律,一般来说,当用户滑动时,需要让外部的view拦截点击事件,当用户上下滑动时,需要让内部view拦截view的点击事件,这时候,我们就可以根据是上下还是左右滑动来具体处理冲突事件。对于场景二和场景三,大致的想法也是差不多的,修改相关的滑动规则就OK了。

1、外部拦截:

所谓的外部拦截是指点击事件都先经过父容器的拦截处理,如果有需要就去拦截,否则不拦截,这样就可以简单的处理场景一的问题了。

public boolean onInterceptTouchEvent(MotionEvent event){
 boolean intercepted=false;
 int x=(int)event.getX();
 int y=(int)event.getY();
 switch(event.getAction()){
 case MotionEvent.ACTION_DOWN:
  break;
 case MotionEvent.ACTION_MOVE:
  if(父容器需要当前点击事件){
  intercepted=true;
  }else{
  intercepted=false;
  }
  break;
 case MotionEvent.ACTION_UP:
  intercepted=false;
  break;
 default:
  break; 
 }
 mLastXIntercepted=x;
 mLastYIntercepted=y;
 return intercepted;
}

本文标题:Android应用中出现滑动冲突如何解决-创新互联
文章来源:http://njwzjz.com/article/podcd.html