在android中计算屏幕大小

时间:2011-05-04 19:39:08

标签: android math button screen scaling

我走遍了互联网,寻找一种方法来做一些我认为非常基本的事情。底线是:我有一个我设计的Android UI。它由沿屏幕中间放置的按钮组成。这是一种菜单屏幕。这些按钮需要位于相同的位置,但是应该相对于屏幕的物理尺寸增大或减小。基本上,如果我在屏幕上有一个1px的按钮(或倾角; dip是我目前在我的应用程序中使用的)X 1px,那么,如果我将屏幕尺寸加倍,按钮应该自动格式化为2px X 2px。我已经对我的申请进行了数学计算。我的按钮在屏幕下方约为225/854(从顶部开始约为26.44%。)我想做的就是让按钮降低相同的量。假设我将屏幕尺寸缩小到500,比例应该保持不变。

示例数学工作:

(225 dip / 854 px)* 100 = 26.44%

因此,如果我将屏幕尺寸减小到500px,则倾角应如下所示。

(225dip / 854px)* 500px = 131.733021077283372 dip

这是扩展按钮的最佳方法吗?如果是这样,我如何告诉我的应用程序计算按钮应放在哪个正确的倾角?

如果你仍然感到困惑(对不起!),这是查看这项工作的关键。

225dip =按钮从屏幕顶部向下移动了多远。 854px =屏幕的物理大小(以像素为单位) 131.733021077283372 dip =如果屏幕减小到500px物理尺寸,则新的倾角数

3 个答案:

答案 0 :(得分:1)

您可以使用WindowManager获取屏幕大小。在您的活动中:

getWindow().getWindowManager().getDefaultDisplay().getWidth();
在您的情况下

或getHeight()。一旦你有了,那就做你的数学,然后:

ViewGroup.LayoutParams buttonLayout = yourButton.getLayoutParams();

buttonLayout.height = 42; // Set your height

buttonLayout.y = 42; //Set distance from top of the screen

等等。完成后:

yourButton.setLayoutParams(buttonLayout);

让我知道这是否有效。

答案 1 :(得分:0)

我对android有点新,但是,在我创建的游戏中,我发现允许android确定屏幕的dpi(每英寸点数)并相应地选择我的图像是最容易的。

例如,我的游戏资源文件夹中有文件夹列为drawable,drawable-hdpi等。这些文件夹可供您将相应的图像放入屏幕类型。

在Android清单中,您可以列出您支持的dpi屏幕,这些文件夹将被正确使用。

希望这有帮助!

编辑:我肯定会查看此文档页面

http://developer.android.com/guide/practices/screens_support.html

答案 2 :(得分:0)

如果使用dip(或dp)和sp单位(字体)设计界面,可以让Android为您进行缩放。虽然在每台设备上可能不是像素完美,但您的应用程序在许多设备上看起来肯定是正确的。

Supporting multiple screens上的

http://d.android.com描述了这个......