发布于 2017-01-07 13:28:58 | 600 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

Android移动端操作系统

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。


这篇文章主要为大家详细介绍了Android中RecyclerView嵌套滑动冲突解决的代码片段,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

在纵向RecyclerView嵌套横向RecyclerView时,如果纵向RecyclerView有下拉刷新功能,那么内部的横向RecyclerView的横向滑动体验会很差.(只有纯横向滑动时,才能滑动内部的横向RecyclerView,否则滑动事件就会影响到下拉刷新),添加拦截判断.


public class MySwipeRefreshLayout extends SwipeRefreshLayout {
  private boolean mIsVpDragger;
  private final int mTouchSlop;
  private float startY;
  private float startX;
  public MySwipeRefreshLayout(Context context) {
    super(context);
    mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
  }
  public MySwipeRefreshLayout(Context context, AttributeSet attrs) {
    super(context, attrs);
    mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
  }

  @Override
  public boolean onInterceptTouchEvent(MotionEvent ev) {
    int action = ev.getAction();
    switch (action) {
      case MotionEvent.ACTION_DOWN:
        // 记录手指按下的位置
        startY = ev.getY();
        startX = ev.getX();
        // 初始化标记
        mIsVpDragger = false;
        break;
      case MotionEvent.ACTION_MOVE:
        // 如果viewpager正在拖拽中,那么不拦截它的事件,直接return false;
        if (mIsVpDragger) {
          return false;
        }
        // 获取当前手指位置
        float endY = ev.getY();
        float endX = ev.getX();
        float distanceX = Math.abs(endX - startX);
        float distanceY = Math.abs(endY - startY);
        // 如果X轴位移大于Y轴位移,那么将事件交给viewPager处理。
        if (distanceX > mTouchSlop && distanceX > distanceY) {
          mIsVpDragger = true;
          return false;
        }
        break;
      case MotionEvent.ACTION_UP:
      case MotionEvent.ACTION_CANCEL:
        // 初始化标记
        mIsVpDragger = false;
        break;
    }
    // 如果是Y轴位移大于X轴,事件交给swipeRefreshLayout处理。
    return super.onInterceptTouchEvent(ev);
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHPERZ。



相关阅读 :
Android中RecyclerView嵌套滑动冲突解决的代码片段
Android之ScrollView嵌套ListView和GridView冲突的解决方法
Android编程开发ScrollView中ViewPager无法正常滑动问题解决方法
Android中ViewPager带来的滑动卡顿问题解决要点解析
Android 解决嵌套Fragment无法接收onCreateOptionsMenu事件的问题
Android中 webView调用JS出错的解决办法
Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)
Android中findViewById获取控件返回为空问题怎么解决
Android中findViewById返回为空null的快速解决办法
Android中EditText 设置 imeOptions 无效问题的解决方法
android开发:Error:android.database.sqlite.SQLiteException: no such table解决方法
android错误:Unable to instantiate application解决方法
最新网友评论  共有(0)条评论 发布评论 返回顶部
月排行榜

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  服务