java group布局_经典自定义 ViewGroup集合,高效布局。

WidgetLayout 是一系列基于 ViewGroup 的自定义容器,包含 ColumnLayout、NestRefreshLayout 等,支持描边、内容分割线等功能。解决布局嵌套和复杂交互问题,适用于需要描边、分割线、自适应换行、悬停模式等场景。例如,ColumnLayout 用于等分布局,NestRefreshLayout 提供下拉刷新、上拉加载,PageScrollView 支持滑动吸顶等。
摘要由CSDN通过智能技术生成

WidgetLayout 介绍

WidgetLayout是一组继承于ViewGroup的自定义容器集合,大部分支持描边和内容分割线,目前实现了以下实用容器:

ColumnLayout 以等分列方式布局,每列可设置内容居左,中,右,及铺满,可设置最小最大列宽高限定。

NestRefreshLayout 一个精简强大的支持任意类型View的下拉刷新,上拉加载更多,可添加头部和尾部且可设置悬停模式。

NestFloatLayout 支持列表的嵌套滑动和指定子 View 悬停顶部,类似NestScrollView 。

PageScrollView 可水平垂直方向布局和滑动吸顶等,无需嵌套,支持ScrollView和ViewPager的交互和接口。

PageScrollTab 在PageScrollView上扩展支持Tab场景交互和各种UI定制。

WrapLayout 支持水平布局,并自适应换行,单行或列时支持weight属性,可限定每行最少和最多Item数,行内容可水平和垂直居中。

LabelLayout 继承自 WrapLayout,以ItemProvider 方式提供内容,有简单的回收复用机制,有Item点击监听。

HierarchyLayout 一个展示 View树层级关系和工具容器,可画出结束依赖图和3D层级图,计算出平均层级和最近一次measure,layout,draw的时间。

c014f25fd5eb

classlayer.jpg

实现背景及使用场景

1. 现有系统容器下开发界面经常遇到以下尴尬问题:

实现特定的组合布局,我们会用功能鲜明的4大常用布局去嵌套实现,增加了严重OverDraw的机率;

RelativeLayout 布局功能强大但是measure过程复杂(每次执行onMeasure 所有直接子View会有两次measure)

为实现复杂交互工作量比开发业务繁重,比如滑动控件的悬停或联动;

分割线或是边界线很多人常用View来实现,即耗内存,又影响测绘时间。

等分布局,使用多层不同方向LinearLayout来实现,嵌套太多。

常用容器控件还没有对自身做最大宽高限定的,也无对子 View 做最大宽高限定。

2. 适合的使用场景举例按需要选择,可减少布局嵌套和复杂的交互代码。

容器自身或对直接子View的最大宽高限定,容器内容和直接子View的gravity灵活支持。

容器需要描边或子View间画分割线的,或有各种间距要求,或按下自带激变层效果可使用继承于PressViewGroup的容器,如WrapLayout,LabelLayout,ColumnLayout。

常见的表格布局或动态等分布局可用ColumnLayout,支持每列的Align方式(左中右上下)和全铺满。

标签布局或需自适应换行可选用WrapLayout和LabelLayout,可设置行最少最多的View 个数和行居中,

列表需要嵌套滑动和悬停吸顶可用NestFloatLayout,类似NestScrollView 。

PageScrollView 可取代ScrollView&HorizontalScrollView 少嵌套,可设置任意子View滑动悬停在开始和结束位置,可不限定子View大小像 ViewPager 一样选中居中和滑动的交互。

WrapLayout,ColumnLayout是完全可替代支持不同方向的LinearLayout并能提供更多的布局约束,和背景,描边,分割等额外装饰。

以上容器都有一个共通的基类,便于统一监控性能打点如layout,mea

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值