Skip to content
View czy1121's full-sized avatar
Block or Report

Block or report czy1121

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
czy1121/README.md

Project

项目基本结构

  • app - 宿主应用,组合个业务模块形成应用
  • framework - 项目框架,引用各种库并加入第三方依赖形成有业务倾向的框架
  • libs - 项目业务相关或不稳定的的一些库
    • lib1
    • lib2
    • lib3
  • modules - 项目业务模块,依赖framework,各个模块是互相隔离无感知的
    • foo
    • bar
    • zoo
  • repo - 项目仓库,已经成型稳定
    • aar - 功能库,单一职责,应该在任何项目都可以单独引入使用

Repo

repositories {
    maven { url "https://gitee.com/ezy/repo/raw/cosmo/"}
} 

Foundation

UI

  • loading - https://github.com/czy1121/loading
    一些 loading 动画
  • statelayout - https://github.com/czy1121/statelayout
    简单实用无侵入高扩展的页面多状态布局(content,loading,empty,error)
  • tabs - https://github.com/czy1121/tabs
    简化 TabLayout 使用,使用 TabItemView 代替 TabLayout.TabView,支持远程动态加载图标
  • bannerview - https://github.com/czy1121/bannerview
    简单好用的水平轮播控件
  • pickerview - https://github.com/czy1121/pickerview
    使用 RecyclerView 实现的滚轮控件,这个可以显示3个以上元素(系统自带的 NumberPicker 写死了只能显示3个)。
  • pullrefresh - https://github.com/czy1121/pullrefresh
    实现了嵌套滚动机制的下拉刷新控件。
  • scrollinglayout - https://github.com/czy1121/scrollinglayout
    垂直方向支持多个子视图持续连贯滚动的容器,并且支持吸顶功能。
  • bk - https://github.com/czy1121/bk
    BKDrawable/BKFrameLayout/BKLinearLayout/BKTextView 可自定义 背景色/渐变/圆角/阴影/描边
    • 支持 背景色[正常/选中/按下/禁用]
    • 支持 渐变[类型/半径/方向/中心点XY坐标(0.0~1.0)/颜色(开始-中心-结束)]
    • 支持 圆角[半径,位置],根据宽高自动计算圆角半径 min(height,width) / 2
    • 支持 阴影[颜色/半径/边距(容纳阴影的空间)]
      • 阴影颜色默认自动从背景或描边获取,也可以手动设置
      • 阴影绘制算法取自 ShadowRenderer
    • 支持 描边[颜色/厚度/虚线长度/虚线间隙]
    • BKTextView 支持 图标[图标/尺寸/边距/着色/位置],类似 MaterialButton 的图标
  • tv - https://github.com/czy1121/tv
    一些实用的自定义TextView
    • CamelTextView - 可额外设置两个文本(prefix/suffix),可用于带单位的数值,比如:123.0
    • ThreeTextView
      • 可额外设置两个文本(text2/text3),text2 在 text 底下,text3 在右边
      • 可设置左右两个图标(leftIcon/rightIcon)
    • ExpandableTextView - 可展开收缩的的文本,点击切换状态,右下角显示状态图标(展开/收缩)
    • ReadMoreTextView - 可展开收缩的的文本,点击切换状态,尾部显示状态文本(展开/收缩)
  • rv - https://github.com/czy1121/rv
    RecyclerView 扩展:itemtype, loadmore, selection, decoration
    • rv-itemtype
      • 基于 ListAdapter 内置支持 AsyncListDiffer
      • 支持单类型列表(SingleTypeAdapter)和多类型列表(ItemTypeAdapter)
      • ItemType<Item, Holder> 表示列表里的一个类型
        • 通过 create 创建 Holder
        • 通过 matches 判断是否与数据(Item)关联
        • 通过 bind 将关联的数据(Item)呈现到 Holder
      • ItemSubtype 支持一个数据类型对应多个子类型布局
      • 内置的 ViewItemType 可以方便地将自定义视图(View)与数据(Item)关联组成一个ItemType
      • 内置的 LayoutItemType 可以方便地将布局(layoutResId)与数据(Item)关联组成一个ItemType
      • 内置的 bindingType 函数封装了 LayoutItemType 以支持 DataBinding
    • rv-loadmore,支持加载更多的多类型列表(LoadMoreAdapter)
      • 在 rv-itemtype, statelayout 的基础上实现了加载更多
      • 支持显示多种状态: loading, offline, empty, hasMore, ended, error
        • 开始加载:有网(loading), 无网(offline)
        • 完成加载:无数据(empty)
        • 完成加载/加载下一页:有数据有下一页(hasMore), 有数据无下一页(ended)
        • 加载下一页:出错(error)
    • rv-selection,基于 recyclerview-selection, ListAdapter 和 StringKey 的单选/多选库
      • selectionTracker 构造一个 SelectionTracker
      • SelectionViewModel 保存了当前的选择状态
    • rv-decoration
      • DividerDecoration 为列表项之间添加分隔线
      • SpaceDecoration 为列表项之间添加空白

Tool

Other

Demo

Pinned

  1. bk bk Public

    BKDrawable/BKFrameLayout/BKLinearLayout/BKTextView 可自定义 背景色/渐变/圆角/阴影/描边

    Kotlin 1

  2. router router Public

    一个 kotlin + ksp 实现的路由库,通过 uri 实现页面间跳转

    Kotlin 5 3

  3. flowbus flowbus Public

    事件总线(基于SharedFlow)

    Kotlin 3

  4. httpapi httpapi Public

    使用 Coroutine + Retrofit 打造的最简单HTTP请求库

    Kotlin 10 2

  5. jsbridge jsbridge Public

    简单易用的 Android WebView 和 Javascript 交互框架。

    Kotlin 1

  6. binding binding Public

    简化 DataBinding/ViewBinding 使用,提供生命周期感知能力,支持多种使用环境(ComponentActivity/Fragment/CustomDialog/ViewGroup)

    Kotlin 2