Eros 框架的问题分析——Android端下拉刷新的问题

问题描述:

   当第一次进入界面并进行下拉刷新时,下拉或者上滑===》下拉刷新框会根据手指触屏的位置产生一段比较大的位移

原因分析:

Scroll 的 子项中(item中)的相关点击事件的ACTION_DOWN处于消费状态,即scrollView 中的触屏事件action_down不会被触发,造成y轴的初始化距离为0,导致计算过程中产生了距离误差

源码部分:

  @Override
  public boolean onTouchEvent(MotionEvent ev) {
    。。。。。

    // 此处因子项的点击事件影响对于oy不会有一个初始的赋值,默认为 0;因为这个 MotionEvent.ACTION_DOWN不会被执行
    if (ev.getAction() == MotionEvent.ACTION_DOWN) {
      ox = ev.getX();
      oy = ev.getY();
      // Dispatch touch event to parent view
      startNestedScroll(ViewCompat.SCROLL_AXIS_HORIZONTAL | ViewCompat.SCROLL_AXIS_VERTICAL);
    }

    。。。。。。

    return super.onTouchEvent(ev);
  }

解决方案:(对于框架影响最小的解决方案)

 当检测到scrollView 中的oy(y轴的点击坐标)为初始化状态时,不让它移动,即 oy ==移动点的当前坐标;

源码修改:文件路径->nexus\sdk\src\main\java\com\taobao\weex\ui\view\WXScrollView.java

1. 将WxScrollView 中的 oy 设置为一个不可能出现的值;

private float oy = -8000; // 修改oy 的初始状态值(给一个特殊的数,以判断为初始状态)

2.  在OnTouchEvent 中如果oy没有被初始化,则给其当前的y坐标;

 

 @Override
  public boolean onTouchEvent(MotionEvent ev) {
      Log.i("heyn",ev.getAction() + "ev.getY: "+ ev.getY());
      if (oy == -8000) {
          // 初始化oy的值(因未涉及x轴的相关操作,故咱不会进行相关处理)
          oy = ev.getY();
      }
  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Heynchy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值