我正在创建一个 Android 应用程序,想知道如何缩放图像、按钮等以适应屏幕尺寸。我正在使用 RectF 和 Canvas 绘制对象。我通过 View 类运行屏幕,并且不使用 XML。我已经在这里发帖了,但我仍然对这个问题很困惑,它使我无法发布我的应用程序。如果有人可以通过 Skype 或 teamview 给我一些快速指导,我会很高兴!
谢谢大家:)
编辑
titleBounds.set(screenWidth / 2 - screenWidth * 1/3 * density, 50 * density, screenWidth - titleBounds.left * density, titleBounds.top + screenHeight * 1/8 * density);
这是我的 rectF,我只想让它位于主屏幕的顶部中间。
最佳答案
屏幕的密度由像素数量和物理尺寸决定。低密度屏幕意味着每英寸物理屏幕上没有太多像素。因此,像平板电脑这样的东西,由于物理尺寸较大,可能具有较低的像素密度。另一方面,新手机的像素很高,但屏幕尺寸相对较小,因此密度非常高。
您需要将 RectF 值乘以屏幕密度,这将为您提供在所有屏幕上物理尺寸大致相同的按钮等。屏幕密度是一个浮点值,范围从 0.75(低密度)到 4(非常非常高的密度)。
因此,如果您的按钮在手机上约为 1 英寸宽,则使用密度乘数将使您在平板电脑上的按钮也约为 1 英寸宽。
您可以从 DisplayMetrics 类获取密度乘数: http://developer.android.com/reference/android/util/DisplayMetrics.html#density
您从上下文资源中获取 DisplayMetrics:
getResources().getDisplayMetrics()
因此您的 RectF 将被创建为:
float density=getResources().getDisplayMetrics().density;
RectF bounds=new RectF(left*density, top*density, right*density, bottom*density);
这里有很多关于密度的信息: getting the screen density programmatically in android?
关于Java - 我需要帮助理解 UI 缩放到不同的屏幕尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24232063/