我正在创建一个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);
这是我的直觉,我只是想把它放在主屏幕的中间位置。
答案 0 :(得分:1)
屏幕密度由像素数量和物理尺寸决定。低密度屏幕意味着每个物理英寸屏幕的像素不是很多。因此,像平板电脑这样的物理尺寸较大,可能会有较低的像素密度。另一方面,新手机具有大量像素,而且屏幕尺寸相对较小,使其具有非常高的密度。
您需要将您的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?