如何在 Android 中设计动态 UI 元素

How to design dynamic UI elements in Android

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

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

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

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

要获得动态 ui,您可以采用两种方法。

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

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

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

更新答案:

我在 Github here 上创建了一个演示项目。这个项目有温度计自定义视图,其中外部温度计是从图像文件中绘制的,温度计的内部 mercury 视图是从代码中绘制的。您可以查看用户 kofigyan 的项目,我在之前的回答中分享了其他自定义项。

上一个答案:

我认为您要找的是在 Android 中创建 Custom Views

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

我在 Github 上找到了 kofigyan.

用户的 this 项目