安卓复杂滑动案例 自定义behavior源码分析 实现头布局图片的缩放透明度变化,RecycleView的滑动布局,坐标变化

**#复杂滑动案例
* 上方图片放大,
* 透明
* 输入框,不断增大
* 变色
* 滑动的时候,条目不会改变.
* 再滑的时候,条目滑动

  • 1,让rv居于头部的下方
    • 方案?:
    • 1,重写layoutDependsOn 让当前rv去以来头部视图
    • 2,获取都以来的头部视图的高度onDependentViewChanged 设置给rv 设置setTranslationY
  • 2,让rv跟着头部 向上平移
  • 处理头部的向上平移:在onNestedPreScroll中计算移动距离,还没有真正移动

    • float newTranslationY = dependency.getTranslationY() - dy;
      //计算出最小平移的y的距离

      float minTranslationY = -(dependency.getHeight() - finalHeight);
      if (newTranslationY > minTranslationY) {
          dependency.setTranslationY(newTranslationY);
          /**
           * 在图片折叠的情况下
           * 1不允许RecycleView自身滚动,不能和图片一起平移
           * 2只能和图片一起向上移动
           */
          //1,
          consumed[1] = dy;
          //2,
      }
      

      3,rv向上平移
      onDependentViewChanged
      child.setTranslationY(dependency.getHeight()+dependency.getTranslationY());
      后面是一个负数,所以用+号
      4,向下平移的处理,

  • onNestedScroll方法中
  • float newTranslation = dependency.getTranslationY() - dyUnconsumed;
    //平移的最大距离,坐标0
    if (newTranslation <0) {
    dependency.setTranslationY(newTranslation);
    }
  • 5处理图片的缩放和透明都,变化
    • onDependentViewChanged中拿到移动百分比,
    • 按照百分比,进行图片的缩放,和透明度变化
  • 6,手指快读滑动图片的缓慢打开和关闭
    • 快速滑动 **

你可能感兴趣的:(android滑动)