如何处理不同的2屏幕分辨率android的xml UI

时间:2011-09-17 09:17:55

标签: android

我已经在xml中制作用于在视图中显示的UI在480 * 800分辨率大小的屏幕上看起来很好但是对于小尺寸320 * 480或中等屏幕,看起来失真的UI意味着按钮不在它的真实位置.i save ldpi,hdpi和mdpi文件夹中的所有图像,并且还允许屏幕支持

下面的

是我的xml

  <?xml version="1.0" encoding="utf-8"?>

   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:background="@drawable/mainmenuimage" 
 >

<Button android:layout_marginTop="230dip" 
android:text="currentloc" 
android:focusable="true"
android:background="@drawable/mainmenubtn" 
android:id="@+id/btn" android:layout_height="50dip"
 android:layout_width="110dip" 
 android:layout_marginLeft="100dip"/>


<Button 

     android:text="Filter"
     android:id="@+id/filter" 
     android:layout_height="50dip"
     android:layout_width="110dip"
     android:layout_marginLeft="100dip"
     android:layout_marginTop="6dip" 
     android:background="@drawable/mainmenubtn"/>

 <Button 
     android:text="keyword search"
     android:id="@+id/keysearch" 
     android:layout_height="50dip"
     android:layout_width="110dip"
     android:layout_marginLeft="100dip"
     android:layout_marginTop="6dip" 
     android:background="@drawable/mainmenubtn"/>

    </LinearLayout>

和清单是:

        <supports-screens
             android:anyDensity = "false"
              android:resizeable="true"
              android:smallScreens="true"
              android:normalScreens="true" 
              android:largeScreens="true" 


            />

所以如何处理不同屏幕的布局,我已经阅读了alreday android开发者方面的所有内容....但没有得到任何...请帮忙谢谢

2 个答案:

答案 0 :(得分:1)

本文描述了该做什么: http://developer.android.com/guide/practices/screens_support.html

  

例如,以下是一个资源目录列表   为不同的应用程序提供不同的布局设计   屏幕尺寸和不同的位图drawables适用于中,高和   超高密度屏幕。

     

res / 布局 /my_layout.xml //正常屏幕尺寸的布局

     

res / layout-small /my_layout.xml //小布局

     

res / layout-large /my_layout.xml //大型布局

     

res / layout-xlarge /my_layout.xml //额外布局

     

res / layout-xlarge-land /my_layout.xml //布局   横向超大

     

res / drawable-mdpi /my_icon.png //中等密度的位图

     

res / drawable-hdpi /my_icon.png //高密度位图

     

res / drawable-xhdpi /my_icon.png //用于超高密度的位图

答案 1 :(得分:1)

理想情况下,按钮的hdpi版本应该是mdpi(基线)版本的1.5倍。

illustration of different screen sizes for the same image at different densities

换句话说,如果背景mainmenubtn图像的高度为50像素(mdpi),则hdpi版本需要为75像素。

  

RES /抽拉-MDPI / mainmenubtn.png

     

RES /抽拉-HDPI / mainmenubtn.png

如果您使用的是Windows,只需在资源管理器中右键单击这两个图像文件中的每一个,然后选择属性即可查看其尺寸。

此外,对于Android中的高度,50像素是一个糟糕的选择。尽可能地坚持标准高度。首先选择这些尺寸是有充分理由的。看一下标准图标的following尺寸(我知道你的按钮不是正方形,它们是矩形的,但是请耐心等待一下)。

你不必将你的按钮变成正方形,绝对不是,但如果你想在特定高度上使用50像素和75像素的尺寸,你可以使用48像素和72像素相反(分别为mdpi和hdpi版本)。

如果你试图使用110像素和165像素的宽度(再次分别对于mdpi和hdpi),你应该选择104像素和158像素(或类似的东西)。换句话说,您应该尝试保持您想到的矩形的原始高宽比,同时确保结果尺寸可以被4整除。

请注意,任何手机的所有屏幕尺寸和几乎所有标准图标尺寸都可以被4整除(除了一些像素非常珍贵的最小图标)。这不是巧合。这是因为维度通常更容易扩展,并且当它们被4整除时也可以进行操作。还要注意,ldpi版本是基线mdpi版本的3/4,这是你确保它的另一个原因。基线mdpi维度至少可以被4整除(即使你选择不使ldpi版本本身可被4整除)。

顺便说一句,在你解决这个密度问题之前,不要搞乱制作不同的布局文件。如果你很幸运,你的问题可能只是不同的密度,你的应用程序看起来很好,只有一个普通的布局文件,适用于所有不同的屏幕尺寸。

另外还有另外一点,请注意,截至2011年9月2日,小屏幕尺寸仅为Android手机市场的3.4%,并且该比例可能会随着时间的推移而减少,因此请记住如果您想花费太多时间使布局在小尺寸模拟屏幕上看起来恰到好处。