Uikit

Android custom view tools
Alternatives To Uikit
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Rendererrecyclerviewadapter1,153
8a year ago24April 17, 20211apache-2.0Java
A single adapter with multiple view types for the whole project
Mapme845
a year ago2March 30, 202213mitKotlin
The Android maps adapter
Multiviewadapter791
2 years ago30apache-2.0Java
Easily create complex recyclerview adapters in android
Multityperecyclerviewadapter768
2 years ago1July 11, 20211apache-2.0Java
一个专注于RecyclerView优雅刷新(接管资源和数据源)、高灵活、低耦合、健壮性以及高效性的MVP模式库,支持大多数Adapter
Oneadapter444
16 days ago3mitKotlin
A Viewholderless Adapter for RecyclerView, who supports builtin diffing, states (paging, empty...), events (clicking, swiping...), and more.
Kiel310
2 years ago1April 27, 202112apache-2.0Kotlin
(Published to MavenCentral) Kotlin way of building RecyclerView Adapter 🧩. You do not have to write RecyclerView Adapters again and again and suffer from handling of different view types. Kiel will help you.
Mjolnirrecyclerview235
3 years ago1February 11, 20213apache-2.0Java
[DEPRECATED] This library is no longer maintained and it will not receive any more updates.
Sherlockadapter185
3 years agoJava
一个万能的封装了RecyclerView.Adapter的功能库。
Diffadapter176
3 years ago1Java
A high-performance , easy-to-use Adapter for RecyclerView ,using diffutil
Smart Recycler Adapter135
2 years ago1apache-2.0Kotlin
Small, smart and generic adapter for recycler view with easy and advanced data to ViewHolder binding.
Alternatives To Uikit
Select To Compare


Alternative Project Comparisons
Readme

综述


UIKit主要提供了一些自定义组件辅助类通用组件


如果你需要制作转场动画,可以使用TransitionController负责动画数值计算。

如果你需要识别翻页手势,可以使用TouchController负责触控采集。

如果你需要实现滚动效果,ViewGroupMonitor可以实时提供控件位置信息。


这里提供了下拉刷新组件,基于嵌套滑动实现,列表容器可更替。

这里提供了图片查看器组件,高仿iOS相册浏览效果。


自定义组件辅助类


RectUtil

简介:获取控件位置

接入:调用静态方法

RectUtil.measure(view, rect, traverse);

ViewMonitor&ViewGroupMonitor

简介:控件位置变化监听

接入:静态方法注册,接口实现监听

ViewMonitor.globalMonitor(view, listener);

ViewMonitor.localMonitor(view, listener);

ViewGroupMonitor.globalMonitor(parent, listener);

ViewGroupMonitor.localMonitor(parent, listener);

AnimatorManager

简介:简易防突变动画

接入:提供View对象控制动画

manager.getValue(view);

manager.setValue(view, value);

manager.getTarget(view);

manager.setTarget(view, target);

TransitionController

简介:防突变动画

接入:重载computeScroll方法

controller.getValue();

controller.setValue(value);

controller.getTarget();

controller.setTarget(target);

TouchController

简介:多指触控采集

接入:重载dispatchTouchEvent、onTouchEvent等方法

public interface TouchListener {
    boolean down(float downX, float downY);
    boolean move(float moveX, float moveY);
    void up(float velocityX, float velocityY);
    void cancel();
}

通用组件Refresh


初始化配置方法

view.permit(top, bottom);

设置边缘越界滚动许可,不影响刷新逻辑,但关闭后用户无法通过手势触发刷新。默认头部底部均为开启状态。

view.auto(advance);

设置加载更多模式,当advance>=0时为自动加载模式,代表倒数第几项出现在页面内时触发加载。默认advance=-1由手势触发加载更多。

设置加载监听器

public interface RefreshTopListener {
    void topRefresh();
}

public interface RefreshBottomListener {
    void bottomRefresh();
}

控件提供下拉刷新加载更多功能,接入方自主选择下拉刷新下拉刷新+加载更多解决方案(或不设置仅为实现边缘效果)。接入加载更多可集成RefreshManager负责处理分页列表缓存逻辑,请注意接入加载更多时需保证列表数据请求全部由接口发起

加载控制类方法

view.refresh(isTop);

触发下拉刷新或加载更多,带有防不必要机制,返回值表示是否刷新成功。一般用于页面首次获取数据。

view.callback(isTop, status);

通知下拉刷新或加载更多回调,请注意会话管理防止脏回调。回调类型有NORMAL、END、ERROR,仅接入下拉刷新的场合任选其一即可。

view.violate(anim);

强制触发下拉刷新,可选触发加载动画。用于代替refresh方法解决手势以外的刷新需求,例如按钮点击刷新等。

自定义加载效果

提供RefreshHintView用于自定义加载效果,控件高度影响手势刷新的触发范围

protected abstract int type(); //控件类型

protected abstract long stay(); //暂留时长

protected abstract View build(); //初始化控件

protected abstract void status(int from, int to); //状态变化

protected abstract void layout(int height); //布局变化

protected abstract void scroll(float offset); //越界滚动

控件类型分为TOP、BOTTOM、AUTO,类型会影响status方法的触发。

暂留时长影响组件刷新后的悬停时间,设为负数可关闭悬停。

借助status、layout、scroll方法实现加载效果,其中layout方法入参为列表内容可见高度,scroll方法入参为越界滚动偏移量

列表容器更替性

组件借助RefreshCompat类与子容器通讯,该类已内部兼容了RecyclerView及AdapterView,其余容器需自行实现各接口。仅需下拉刷新时一般实现ViewEdge.Event接口即可。

组件基于嵌套滑动实现,对嵌套滑动支持性不好的容器,可使用NestedChildController模拟嵌套滑动


通用组件Salon

继承SalonMaster实现抽象方法。

protected abstract View onCreateImage(Context context);

protected abstract float getRatio(String url);

onCreateImage返回图片控件,需实现SalonImage接口,设计目的为兼容不同的图片库。

getRatio根据链接获取图片宽高比,用于计算共享动画。

view.display(index, urls);

view.display(index, urls, views);

调用display方法展开组件,传入views会播放共享动画。


其它


Wrapper

简介:RecyclerView.Adapter包装库

接入:插入RecyclerView、Adapter之间,解耦实现首尾项、左滑删除等功能

NotifyManager

简介:DiffUtil更新效果兼容库

接入:使用库方法代替Adapter的更新方法,适配滚动位置等问题


Popular Adapter Projects
Popular Diffutil Projects
Popular Libraries Categories

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Java
Adapter
Diffutil