gpt4 book ai didi

Android:在 SurfaceView 上完成所有绘图;确保我的绘图符合任何屏幕尺寸的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-29 01:42:13 25 4
gpt4 key购买 nike

我正在制作一个应用程序(准确地说是一个游戏),其中每个 Activity 都使用 SurfaceView 作为 UI。所有的绘图都是通过onDraw完成的。我还将其设计为不使用位图资源,因此绘制的所有内容均由应用程序直接生成。我正在尝试以一种可以在任何屏幕尺寸上轻松查看的方式设计应用程序。

我是这样实现的:我在屏幕尺寸为 1080x1920 的 Galaxy S4 上进行测试。在每个 Activity 的构造函数中,当前屏幕的宽度和高度被计算并存储为整数“w”和“h”(应用程序已经锁定为纵向)。然后,每当需要在屏幕上绘制任何东西时,我将所需的尺寸(如我的 1080x1920 屏幕上所见)乘以 w 或 h,然后除以 1080 或 1920。由于我没有使用任何位图资源,我永远不需要担心像素化图像或任何这种方式。

这样可以完成工作,但似乎有点迂回。我认为会有更好的框架来完成这项工作,而且我担心这些大型计算会占用我的绘图时间(以 30FPS 运行可能会有点不稳定)。

这是常规做法,还是有更好的方法?

最佳答案

有一种非常简单但有效的方法可以做到这一点,您可以在 dimen 文件中为每个特定的密度/尺寸声明所有尺寸,就像您通常对布局所做的那样,例如:

values/dimens.xml <--- With default sizes

values-sw600dp/dimens.xml <-- Tablets sizes

(etc...)

现在,在开始绘图之前,只加载程序中的所有值一次,也许是在绘图 Activity 的 onCreate 上,使用以下命令:

float someItemSize = Context.getResources().getDimension(R.dimen.some_itemSize)

etc...

那样的话,你让操作系统为你做像素转换,你应该只做一次而且最重要的是,这会给你的代码带来很大的灵 active ,因为你甚至不需要改变 xml 文件的大小接触你的实际代码,因此,定制应该更容易以及 future 的变化......

希望对您有所帮助!

问候!

关于Android:在 SurfaceView 上完成所有绘图;确保我的绘图符合任何屏幕尺寸的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23788544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com