Java - 我需要帮助理解 UI 缩放到不同的屏幕尺寸

标签 java android image screen scaling

我正在创建一个 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/

相关文章:

android - 为我的自定义 DialogPreference 设置主题?

java - 带有 base64 图像的 HTML 到 PDF 抛出 FileNotFoundException

java - Jackson 使用类型信息进行反序列化

java - android.R.layout.simple_spinner_dropdown_item 和 android.R.layout.simple_spinner_item 的区别

android - AIDL 输入输出参数

android - 格式化从 ExifInterface.TAG_DATETIME 获取的时间和日期

java - Matlab to Java-如何像在MATLAB中那样在Java中绘制数据并显示图像?

.net 在 IE 和 FF 中生成损坏的 jpeg

java - 从起点开始的深度优先算法

Java 线程 - 内存一致性错误