重写ScrollView

第一种方案能解决viewpager的滑动问题,但是scrollView有时会滑不动

public class VerticalScrollView extends ScrollView {

    private GestureDetector mGestureDetector;

    public VerticalScrollView(Context context, AttributeSet attrs){
super(context, attrs);
mGestureDetector = new GestureDetector(context, new YScrollDetector());
} @Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return super.onInterceptTouchEvent(ev) && mGestureDetector.onTouchEvent(ev);
} class YScrollDetector extends SimpleOnGestureListener { @Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
/**
* if we're scrolling more closer to x direction, return false, let subview to process it
*/
HBLog.i("VerticalScrollView", distanceY+"----"+distanceX);
return (Math.abs(distanceY) > Math.abs(distanceX));
}
} }

第二种方案能够解决上面的问题

public class VerticalScrollView extends ScrollView {

    private float xDistance, yDistance, xLast, yLast; 

    public VerticalScrollView(Context context) {
super(context);
} public VerticalScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
} public VerticalScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
} @Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
xDistance = yDistance = 0f;
xLast = ev.getX();
yLast = ev.getY();
break;
case MotionEvent.ACTION_MOVE:
final float curX = ev.getX();
final float curY = ev.getY(); xDistance += Math.abs(curX - xLast);
yDistance += Math.abs(curY - yLast);
xLast = curX;
yLast = curY; if (xDistance > yDistance) {
return false;
}
}
return super.onInterceptTouchEvent(ev);
} }

最新文章

  1. CSS中使用text-transform实现首字母大写
  2. Testlink安装问题收录
  3. git之https或http方式设置记住用户名和密码的方法
  4. linux日常小坑
  5. Blackfin DSP(二):寄存器操作与GPIO
  6. EDM博主笔记:EDM邮件营销的几个细节问题
  7. Altium Designer PCB制作入门实例
  8. LightOj1028 - Trailing Zeroes (I)---求因子个数
  9. html网页编码问题
  10. [google面试CTCI] 2-0.链表的创建
  11. PAT1078 Hashing 坑爹
  12. Spark在Windows下的环境搭建(转)
  13. sqlcipher 数据库解密
  14. 虚拟机安装的ubutun全屏
  15. 浅谈CSRF攻击方式(转)
  16. MVC4升级到MVC5未能加载文件或程序集System.Web.WebPages.Razor, Version=3.0.0.0
  17. python线程详解
  18. Android开发之经常使用的时间格式
  19. linux下mysql的安装配置
  20. 英语每日阅读---5、VOA慢速英语(翻译+字幕+讲解):美国人口普查局表示美国人受教育程度提升

热门文章

  1. poj1463 Strategic game[树形DP]
  2. ecshop彻底去版权把信息修改成自己的全教程
  3. 开启MySQL的sql语句记录
  4. HDU1387:Team Queue
  5. (转)NHibernate各种数据库配置写法
  6. Swing编程---添加背景图片的方法
  7. Lib之过?Java反序列化漏洞通用利用分析
  8. KVO键值监听
  9. Rails 表单总结
  10. HDLM命令dlnkmgr详解之四_monitor/offline/online