安卓上仿制的Horion ArrayList界面
根据LGPL-v2.1许可证开源
工件和demo都在Releases中,demo源码在app模块下,由deepseek-v4-flash-release制作demo
在Releases中下载aar,或者从Maven仓库拉取:
build.gradle.kts:
repositories {
maven {
url = uri("https://maven.1503dev.top/")
}
}
dependencies {
implementation("dev1503.openhal4a:openhal4a:1.0.1")
}组件使用纯代码控制属性,文档以Kotlin为例,组件本身兼容Java
使用XML:
<dev1503.openhal4a.HorionArrayList
android:id="@+id/arrayList"
android:layout_width="match_parent"
android:layout_height="match_parent" />使用Kotlin:
val arrayList = HorionArrayList(context)项目使用id+ArrayListItem对象管理一条数据,id为数据的唯一标识符
ArrayListItem结构:
class ArrayListItem @JvmOverloads constructor(
var text: String,
var keybind: String? = null,
var modeText: String? = null,
var category: Int = 0
)设置数据集:
val data1 = ArrayListItem("功能名", "按键绑定字符串", "模式字符串", 分类数字ID)
val data2 = ArrayListItem("Killaura", "P", "Multi", 0)
val data3 = ArrayListItem("Reach", null, "3.50 Blocks", 1)
arrayList.setItem(0, data1)
arrayList.setItem(1, data2)
arrayList.setItem(2, data3)移除数据:
arrayList.removeItem(0)
arrayList.removeItem(1)
arrayList.removeItem(2)样式枚举:
enum class ArrayListMode {
NONE, // 无边框
OUTLINE, // 全边框(默认)
EDGE_LINE, // 仅边缘
ROUNDED // 圆角边框(有bug)
}arrayList.mode = ArrayListMode.OUTLINE这里的颜色影响功能名、按键绑定字符串和边框颜色
样式枚举:
enum class ArrayListColor {
RAINBOW, // 彩虹流动(默认)
CATEGORIZED, // 按分类
CUSTOM // 自定义颜色
}设置样式:
arrayList.color = ArrayListColor.RAINBOW设置自定义颜色(color = ArrayListColor.CUSTOM时生效):
arrayList.customColor = 0xFF123456.toInt()设置分类id对应的颜色(color = ArrayListColor.CATEGORIZED时生效):
arrayList.setCategoryColor(category, color)
arrayList.setCategoryColor(0, 0xFF00FF00.toInt())样式枚举:
enum class ArrayListRainbow {
PASTEL, // 轻彩(默认)
SATURATED // 饱和
}arrayList.rainbow = ArrayListRainbow.PASTELarrayList.backgroundColor = 0x9A000000.toInt()arrayList.textSize = 14farrayList.font = Typeface.DEFAULTarrayList.borderThickness = 1.4farrayList.rowPadding = 6farrayList.cornerRadius = 8farrayList.gravity = Gravity.RIGHT or Gravity.TOParrayList.touchModelEnabled = false // false为启用触摸穿透arrayList.itemClosingAnimationEnabled = true // 功能开关后的已有项目移动动画
arrayList.gravityChangingAnimationEnabled = false // 重力切换动画arrayList.showKeybinds = true // 显示按键绑定字符串
arrayList.showModes = true // 显示模式字符串
arrayList.textShadowEnabled = true // 显示文字阴影