同等调整小部件(仅限xml方法)

时间:2014-02-24 11:29:03

标签: android dpi

我有一个UI小部件大小调整的问题,请参阅下面的2个设备作为示例,

1.) Samsung Galaxy Tab 2 7"
- Pixels : 1024x600 (mdpi)
- DPI : 160
- Density : 1.0
2.) Samsung Nexus 10 2013
- Pixels : 2560x1600 (xhdpi)
- DPI : 320
- Density : 2.0

如果我使用px = dp(DPI / 160)放置50dp的小部件,对于Tab 7" 50px,对于Nexus 10 100px 。但就百分比而言,50px等于Tab 7" 的屏幕宽度的 4.88%,而Nexus 10的100px 屏幕宽度的3.9%

但是,我需要这个小部件以相同的宽度百分比显示。所以,我想出了两个选择。

一个。通过获取物理像素并应用百分比来计算运行时,然后调整窗口小部件的大小。

B中。计算尺寸和位置< “尺寸”>在不同的xml文件中(对于我的情况,sw600dp和sw700dp)。

截至目前,我使用选项A来计算大小并在运行时设置。它运作良好,但我担心计算会影响性能。如果我选择选项B,我将需要计算每个屏幕中每个小部件的大小(对于Tab 7和#34, 50dp;对于Nexus 10,62.5dp将导致两者为4.8%)。但是,如果我想稍后更改此值或某些制造商推出具有差异DPI或像素的新设备(想象一下,7"平板电脑具有hdpi分辨率,1.5密度,240 DPI),我将不得不重做所有计算和更新或者再次提供新的xml。

所以,我的问题是,是否有一个选项C,它不会减慢性能,也不会在将来考虑大量的人工计算?

P.S。对不起,我忘了提到我还使用了我的静态小部件的权重方法,但我的问题是关于动态生成小部件。例如,

  • 在Landscape Tablet上显示5列的gridlayout
  • 一个滚动视图,在电话上显示每页4行
  • 具有5%填充的ImageView
  • 每个设备上都有宽高比的ImageView。

1 个答案:

答案 0 :(得分:1)

dp在所有设备上的大小几乎相等,而不是在屏幕%

如果您需要相同的屏幕%,那么只需获得显示尺寸&计算所需的百分比。然后动态应用于您的小部件