多彩的 Android 滑块是否可以作为库提供? [已关闭]

问题描述 投票:0回答:3

我想创建这种类型的滑块

slider-image

我不需要代码,而是方向。这样做最好的办法是什么?

  • 有类似的图书馆项目吗?
  • 本机是否已有类似的视图。
  • 这在 Jetpack compose UI 中创建起来更容易吗?
android kotlin android-view
3个回答
0
投票

由于您将所需的视图称为“滑块”,我假设您正在考虑使用材料设计库中的某些内容。我对 Material Design 视图的个人经验是,它们主要执行 MD 指南,并且不是很灵活,尽管它们在这种情况下可能适合您。

有类似的图书馆项目可用吗?

至于图书馆,看起来其他答案指向了一些可能能够满足您正在寻找的功能的图书馆。

本机是否已有类似的视图。

我建议你看看使用 SeekBar 并不是因为我认为它一定更好,而是我相信你可以通过一点努力得到你想要的结果,除了标准库之外不会有外部依赖.

Here是我的另一个答案,解释了如何构建一个与您正在寻找的结构类似的SeekBar。您的背景将是带有渐变阴影的圆角矩形。背景颜色可以按照here的说明进行定义。您的搜索栏可以使用LayerList来构建。图层列表可以在 XML 中定义并在代码中修改。您还可以放弃图层列表并以编程方式绘制搜索栏或将所有内容放入一个可绘制对象中。您做什么取决于您的设计限制。

拇指可以轻松成为自定义拇指

您可能会得到大部分是 XML 的结果,但也有一些代码,但数量不多。我会考虑将代码放置在从标准 SeekBar 扩展的自定义视图中。



0
投票

我用 Jetpack Compose 构建了类似的东西,它不是使用带有间隔的不同颜色,而是根据颜色创建渐变,但您要求的是在当前构建上做一些工作,它可以将任何内容显示为拇指。您可以检查源代码并实现在轨道部分上绘制。如果工作量很大,我可以在有空时添加类似的功能。

在 Compose 中执行此操作的最简单方法

Canvas
,对于 View 来说,它是在内部绘制的自定义视图
onDraw

您基本上绘制一条具有宽度和圆角帽或圆角矩形的线,并在其周围绘制带有描边的边框。进行一些插值以从值范围更改为屏幕上的像素,并根据用户触摸位置获取当前值并将其插值到定义的范围。

假设您的滑块宽度为 1000 像素。您的范围在 0f 和 1f 之间,您将 600px 上的触摸转换为 0.6 值,反之亦然。对于不同的颜色,您可以传递一个 List 来根据基于浮动的停止点在颜色之间划分滑块。

对于绘制线条,您可以设置 3 种类型的高度,并使用模数为每个 1、5 和 20 值分配每个高度。我有类似的东西可以用 View 来构建 Compass here

https://github.com/SmartToolFactory/Compose-Colorful-Sliders

© www.soinside.com 2019 - 2024. All rights reserved.