由主页界面引出的几个知识点(一)

先记录一下知识点,有时间整理下主页原型

一:卡片层叠布局

  该作者的玩转recyclerview系列文章可以作为RecyclerView的资料进行学习。
     实现方法:
     利用 LayoutManager 加载显示屏幕上 可见的数量的View ,搭配 ItemTouchHelper 处理拖拽&滑动删除逻辑,核心代码不超过50行。且经过封装,四行代码就可以用。
记住 LayoutManager ,我们写,只layout出界面上可能会看见的那些View即可。
关于 ItemTouchHelper ,它本身实现了拖拽&滑动删除逻辑,我们只需要在 onChildDraw() 中绘制动画和 onSwiped() 中处理数据集(循环or删除)即可。
,你只需要:
       mRv.setLayoutManager(new OverLayCardLayoutManager());
        CardConfig.initConfig(this);
        ItemTouchHelper.Callback callback = new RenRenCallback(mRv, mAdapter, mDatas);
        ItemTouchHelper itemTouchHelper = new ItemTouchHelper(callback);
        itemTouchHelper.attachToRecyclerView(mRv);
 
 
  • 1
  • 2
  • 3
  • 4
  • 5

如果需要定制特殊的参数,例如显示6层:

         CardConfig.MAX_SHOW_COUNT = 6;
具体实现大致分析:
LayoutManager的实现卡片层叠
    LayoutManager 十分简单,因为 ItemTouchHelper 的存在, LayoutManager 根本不需要处理它的滑动事件,而 LayoutManager 中最难写的就是在滑动时的 View 回收和复用,以及 layout View 的处理。
为了实现层叠效果,需要处理
  • 界面最多显示几个View
  • 每一级View之间的Scale差异、translationY等等
    ItemTouchHelper实现炫动滑动:
    滑动删除

    我们本例中,需要的是滑动消失(删除) ,所以我们的Callback不需要关注onMove()方法。 
    且我们需要上下左右滑动都可以删除的效果。 
为了循环:
  • 利用当前被删除的ViewViewHolder拿到Position
  • 删除数据集中对应Position的数据源
  • 同时将该数据源插入数据集中的首位。
  • 调用notifyDataSetChanged(),通知列表刷新 
    如此我们便完成了,循环列表的需求
滑动时动画
我们需要重写 Callback onChildDraw() 方法,
参考的文章:
五行代码实现 炫动滑动 卡片层叠布局,仿探探、人人影视订阅界面 简单&优雅:LayoutManager+ItemTouchHelper
【Android】掌握自定义LayoutManager(一) 系列开篇 常见误区、问题、注意事项,常用API。
【Android】掌握自定义LayoutManager(二) 实现流式布局
二:CoordinatorLayout


协调布局
behavior:行为
另外还需要知道的是, Behavior 是Col.LayoutParams的成员变量,那么也就是说只有当你的 Behavior 设置给Col的  直接子View  才会有效果,这点要记住,不然徒劳无功。(Col的子View的子View就不要给它设置Behavior啦,没效果的)
  • childthe child view associated with this Behavior
    它是一个View,是该Behavior的关联对象,也即Behavior所要操作的对象
  • dependency,也是个View,是child的依赖对象,同时也是Behavior对child进行操作的根据

通过分析源码,可以知道,Col在关键的方法里把处理权优先交给了Behavior,所以才让Behavior拥有了拦截一切的能力,所以,原来是Col放任了Behavior!!~
CoordinatorLayout使用新的思路通过协调调度子布局的形式实现触摸影响布局的形式产生动画效果。CoordinatorLayout通过设置子View的 Behaviors来调度子View。系统(Support V7)提供了AppBarLayout.Behavior, AppBarLayout.ScrollingViewBehavior, FloatingActionButton.Behavior, SwipeDismissBehavior<V extends View> 等。
CoordinatorLayout作为“super-powered FrameLayout”基本实现两个功能: 
1、作为顶层布局 
2、调度协调子布局
三:其他


关于ViewPager高度自适应(随着pager页的高度改变Viewpager的高度)
ViewPager的高度根据item的高度自适应
嵌套Fragments (Nested Fragments), 是在Fragment内部又添加Fragment.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值