Skip to content

Repository files navigation

PlatformLicenceAPIjitpack

TransformersLayout

🔥 APP金刚区导航布局,下方带横向滚动条,很多APP都有使用这种,效果还不错就封装了一下😄

整体结构是Recyclerview + 滚动条

Features

  • 每页行数、列数可配置
  • 滚动状态自动恢复
  • 支持数据重新排序,类似viewpager的分页模式
  • item布局样式自定义
  • scrollbar样式可配置

Preview

gif

点击下载APK体验

Install

📣项目基于AndroidX构建,参考迁移指南:AndroidX迁移

Step 1: 项目根目录的build.gradle添加如下配置:

allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}

Step 2: app添加依赖:

dependencies {
implementation 'com.github.zaaach:TransformersLayout:x.y.z'
}

记得把x.y.z替换为jitpack中的数字

How to use

Step 1: xml布局文件

<com.zaaach.transformerslayout.TransformersLayout android:layout_width="match_parent"android:layout_height="wrap_content"android:background="#ffffff"app:tl_spanCount="5"app:tl_lines="2"app:tl_pagingMode="true"app:tl_scrollbarWidth="72dp"app:tl_scrollbarHeight="4dp"app:tl_scrollbarRadius="2dp"app:tl_scrollbarMarginTop="6dp"app:tl_scrollbarMarginBottom="6dp"app:tl_scrollbarThumbFixedMode="true"app:tl_scrollbarThumbFixedWidth="12dp"app:tl_scrollbarTrackColor="#f0f0f0"app:tl_scrollbarThumbColor="#FFC107"/>

Step 2: 自定义ViewHolder,第三步需要用到

publicclassNavAdapterViewHolderextendsHolder<Nav> {
privateImageViewicon;
privateTextViewtext;
NavAdapterViewHolder(@NonNullViewitemView) {
super(itemView);
}
@OverrideprotectedvoidinitView(ViewitemView) {
icon = itemView.findViewById(R.id.iv_menu_icon);
text = itemView.findViewById(R.id.tv_menu_text);
}
@OverridepublicvoidonBind(Contextcontext, List<T> list, @NullableNavdata, intposition) {
text.setText(data.getText());
Glide.with(context)
.asBitmap()
.fitCenter()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.placeholder(R.drawable.default_place_holder)
.load(data.getUrl())
.into(icon);
}
}

Step 3: java代码中调用

List<Nav> navList = DataFactory.loadData();
TransformersLayout<Nav> header = findViewById();
//options可选配置,会覆盖xml里的属性TransformersOptionsoptions = newTransformersOptions.Builder()
.lines(2)
.spanCount(5)
.pagingMode(true)
.scrollBarWidth(Util.dp2px(this, 40))
.scrollBarHeight(Util.dp2px(this, 3))
.scrollBarRadius(Util.dp2px(this, 3) / 2f)
.scrollBarTopMargin(Util.dp2px(this, 6))
.scrollBarBottomMargin(Util.dp2px(this, 6))
.scrollBarTrackColor(Color.parseColor("#e5e5e5"))
.scrollBarThumbColor(Color.parseColor("#658421"))
.scrollBarThumbFixedMode(true)
.scrollBarThumbWidth(Util.dp2px(this, 12))
.build();
header.apply(options)//options可为null
.addOnTransformersItemClickListener(newOnTransformersItemClickListener() {
@OverridepublicvoidonItemClick(intposition) {
showToast();
}
})
.load(navList, newTransformersHolderCreator<Nav>() {
@OverridepublicHolder<Nav> createHolder(ViewitemView) {
returnnewNavAdapterViewHolder(itemView);
}
@OverridepublicintgetLayoutId() {
returnR.layout.item_nav_list;//第二步使用的布局
}
});

😏Good luck!!!

支持的attrs属性:

AttributesFormatDescription
tl_spanCountinteger每页列数,默认5
tl_linesinteger每页行数,默认2
tl_pagingModeboolean分页模式,数据会重新排序,默认false
tl_scrollbarWidthdimension | referencescrollbar宽度,默认48dp
tl_scrollbarHeightdimension | referencescrollbar高度,默认3dp
tl_scrollbarMarginTopdimension | referencescrollbar上间距
tl_scrollbarMarginBottomdimension | referencescrollbar下间距
tl_scrollbarRadiusdimension | referencescrollbar圆角,默认高度的一半
tl_scrollbarTrackColorcolor | referencescrollbar轨道颜色
tl_scrollbarThumbColorcolor | referencescrollbar滑块颜色
tl_scrollbarThumbFixedModebooleanscrollbar滑块宽度固定模式
tl_scrollbarThumbFixedWidthdimension |referencescrollbar滑块宽度

Change log

2021-8-30

  • 滚动条滑块宽度固定模式
  • 其他bug修复

2020-12-04

  • 增加scrollbar下间距属性

2020-02-01

  • 修复数据更新问题

2020-01-21

  • 新方法修复滚动条变长变短问题(很完美)
  • 支持数据重新排序
  • 回调方法变动

2020-01-05

  • 修复滚动条突然变长变短的问题
  • 优化默认圆角大小显示效果

2019-12-13

  • 修复滚动条颜色配置无效的问题

About me

掘金: https://juejin.im/user/56f3dfe8efa6310055ac719f

简书: https://www.jianshu.com/u/913a8bb93d12

淘宝店: LEON家居生活馆 (动漫摆件)

LEON

😉淘宝店求个关注😉

License

Copyright (c) 2020 zaaach
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

🔥🔥🔥 App金刚区导航菜单,类似淘宝、QQ音乐等APP导航,方格布局横向多行滑动翻页带滚动条

Topics

Resources

Stars

335 stars

Watchers

6 watching

Forks

Releases

Packages

Contributors

Languages