0

我有一个关于如何在 Android(使用 Java)中设计动态 UI 元素的一般性问题。

我想在我的应用程序中有一个温度计,它会根据一些外部信息增加或减少一个红色条(如下所示)。 在此处输入图像描述. 我如何在 Android 中设计这样的东西?

例如,我可以将没有红色条的温度计设计为带有一些绘图程序的 jpeg,然后以某种方式将 Android 中的红色条实现为可以通过编程方式更改的对象,而温度计的“边缘”不会改变。我看到这种方法的问题是,对于不同的屏幕尺寸和分辨率,我认为很难将温度计的边缘与红条相匹配。你对我如何做这样的事情有其他建议吗?可能有一个图书馆吗?

我会很感激每一条评论,因为我通常没有设计这种动态 UI 对象的经验。

4

2 回答 2

2

更新答案:

我在这里在 Github 上创建了一个演示项目。该项目具有温度计自定义视图,其中外部温度计是从图像文件中绘制的,而温度计的内部水银视图是从代码中绘制的。您可以查看我在之前的答案中共享的用户kofigyan的项目以进行其他自定义。

上一个答案:

我认为您正在寻找的是在 Android中创建自定义视图。

您可以扩展Android View类并创建您的自定义视图。View有一个对象,您可以在其Canvas上绘制温度计的形状,并且可以构建功能来更改子类本身中形状的状态。此外,Paint您可以使用对象绘制绘制的形状。

我在Github上由用户kofigyan找到了这个项目。

于 2021-04-15T17:44:08.473 回答
1

为了拥有动态用户界面,您可以采用两种方法。

  1. Jetpack Compose(尚未讨论,因为它仍处于测试阶段)
  2. LiveData 和观察者模式

在 LiveData 和观察者模式中。将温度作为 LiveData 变量(在您的 ViewModel 中)并在您的 MainActivity 中实现一个观察者,当温度实时数据的值发生变化时,它会自动触发。

要获得输出图形,您可以使用画布,然后在其上绘制并将其与温度变量联系起来。例如,您可以使用 Canvas.drawRect 函数根据温度创建一个短矩形或长矩形。(从圆圈到温度计顶部的部分可以是矩形)

于 2021-04-15T17:11:15.883 回答