如何在 Android 中设计动态 UI 元素
How to design dynamic UI elements in Android
我有一个关于如何在 Android(使用 Java)中设计动态 UI 元素的一般性问题。
我想在我的应用程序中有一个温度计,它根据一些外部信息增加或减少红色条(如下所示)。
。我如何在 Android 中设计这样的东西?
例如,我可以将没有红色条的温度计设计为带有某些绘图程序的 jpeg,然后以某种方式将 Android 中的红色条实现为可以通过编程方式更改的对象,而 'rim' 的温度计不会改变。
我看到这种方法的问题是,我认为对于不同的屏幕尺寸和分辨率,很难将温度计的边缘与红色条匹配。关于我如何做这样的事情,您还有其他建议吗?可能有图书馆吗?
我很感激每条评论,因为我通常没有设计此类动态 UI 对象的经验。
要获得动态 ui,您可以采用两种方法。
- Jetpack Compose(未讨论,因为它仍处于 Beta 阶段)
- 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 项目
我有一个关于如何在 Android(使用 Java)中设计动态 UI 元素的一般性问题。
我想在我的应用程序中有一个温度计,它根据一些外部信息增加或减少红色条(如下所示)。
例如,我可以将没有红色条的温度计设计为带有某些绘图程序的 jpeg,然后以某种方式将 Android 中的红色条实现为可以通过编程方式更改的对象,而 'rim' 的温度计不会改变。 我看到这种方法的问题是,我认为对于不同的屏幕尺寸和分辨率,很难将温度计的边缘与红色条匹配。关于我如何做这样的事情,您还有其他建议吗?可能有图书馆吗?
我很感激每条评论,因为我通常没有设计此类动态 UI 对象的经验。
要获得动态 ui,您可以采用两种方法。
- Jetpack Compose(未讨论,因为它仍处于 Beta 阶段)
- 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 项目