如何在Android上创建突出显示范围的自定义形状进度条?

时间:2018-07-24 18:10:47

标签: android android-layout opengl-es android-canvas

我知道这对SO来说可能是一个广泛的问题,但是我将尝试定义一些初始思路来限制其范围,从而使其对其他在Android和其他平台上创建复杂UI的用户有用。

组件

我的目标是创建以下UI组件: desired component

它的形状由一个正方形和一个圆角的边缘组成,在12点钟之间有一个缝隙。高亮部分所在的背景为纯色。虽然突出显示的部分具有不同的颜色,但其形状与背景相同。所有突出显示的部分均应具有圆形边缘。

实施思路

Android画布默认形状

这是我最天真的想法,使用Canvas.draw {Circle,Line,Arc}调用来构造形状,如下所示。

enter image description here

但是,对于这样的解决方案并不满意,因为它不可重用,并且一旦我们可以有任意数量的突出显示部分,它将变得非常复杂。

蒙版层

该想法将使用Android画布绘制调用两次绘制基本形状,一个版本具有背景色,第二个版本具有两个不同位图中的突出显示的颜色,然后合并,然后使用遮罩选择突出显示的区域。就像下面的图片所示: enter image description here 此解决方案似乎更优雅,但是我无法获得带有圆角边缘的突出显示区域。

OpenGL颜色匹配

作为使用Android canvas绘制调用的替代解决方案,我们可以使用OpenGL。想法是在具有以下颜色属性的插图软件上绘制基本形状:

enter image description here

然后将其作为纹理上传到OpenGL,并使用着色器进行颜色和饱和度匹配,以绘制不同的突出显示部分。

到目前为止,这是我最喜欢的想法。它可以使用任何形状,我可以将工作外包给设计师;〜)但是,我找不到任何可以做这种事情的人。

既可以收到此问题中未提及的解决方案,也可以接收与上述想法相关的任何其他材料。

0 个答案:

没有答案