【问题标题】:how to handle xml UI for diffrent-2 screen resolution android如何处理 diffrent-2 屏幕分辨率 android 的 xml UI
【发布时间】:2011-09-18 12:28:02
【问题描述】:

嗨,我已经在 xml 中制作了 UI,以便在视图中显示它在 480*800 分辨率大小的屏幕上看起来不错,但对于小尺寸 320*480 或中等屏幕,UI 看起来扭曲意味着按钮不在其真实位置。我保存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" 


            />

那么如何处理不同屏幕的布局,我已经阅读了 android 开发人员方面的所有 tuts....但没有得到任何...请帮助谢谢

【问题讨论】:

  • 我将所有图像保存在 ldpi、hdpi 和 mdpi 文件夹中。意味着您将相同的图像保存在不同的目录中。对吗?
  • User37,不,不是。这是相同的图像,但比例不同。所以从技术上讲,它们根本不是相同的图像。请参阅下面我更长的答案,它解释了一切。

标签: android


【解决方案1】:

这篇文章描述了如何做: http://developer.android.com/guide/practices/screens_support.html

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

res/layout/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 // 超高密度位图

【讨论】:

  • 嗨 copa 我在发布我的 qus 后已经阅读了这个答案..我不明白这个..你为 diffrent-2 分辨率屏幕做了什么?请用你的风格告诉我
  • 意味着我为每个屏幕尺寸制作不同的 2 xml 布局?
  • Android 将不同的分辨率分成组。组例如:small、large、xlarge、xlarge-land 等等。 Android 自己决定将使用哪种布局。如果您想要智能手机的布局,请将其存储在 layout 文件夹中,如果您想要平板电脑的布局,请将其存储在 xlarge 文件夹中。同样适用于您的图像。因此,您不会为每个屏幕尺寸制作布局,而是为每个组制作布局。希望现在清楚。
【解决方案2】:

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

换句话说,如果您的背景主菜单图像的高度在 mdpi 中为 50 px,则 hdpi 版本需要为 75 px。

res/drawable-mdpi/mainmenubtn.png

res/drawable-hdpi/mainmenubtn.png

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

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

您不必将按钮变成正方形,当然不是,但如果您尝试使用 50 px 和 75 px 等特定高度的尺寸,您不妨使用 48 px 和 72 px相反(分别适用于 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%,而且该比例可能会随着时间的推移而减少,因此请记住这一点,以防万一您'试图花费太多时间使布局在小尺寸模拟屏幕上看起来恰到好处。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多