根据屏幕密度定义layout.xml文件(v.2.3.3 +)

时间:2012-04-18 08:23:10

标签: android android-layout

Afaik分辨率与密度有关(如果我错了,请纠正我),我的目标是根据设备的密度使用三种布局中的一种。 2.3.3(最流行的atm)sdk版本有哪些选择? 谢谢。

3 个答案:

答案 0 :(得分:1)

不是。

需要考虑两个主要方面:

  1. 屏幕密度。 ldpi,mdpi,hdpi,xhdpi。这是每英寸的像素数。它与像素的大小(而不是屏幕)有关。
  2. 屏幕尺寸。小,普通,大,x大 - 或由像素大小指定。这与实际物理尺寸有关。
  3. 您如何使用它们取决于您的项目需求。通常情况下,您会提供各种密度的图像(因此图标等在所有设备上看起来都很好),但如果您正在构建一个应用程序,以便在不同大小的设备上工作(小型手机到10英寸平板电脑),您还应提供布局适用于各种尺寸的屏幕 - 可能是一部用于手机,一部用于7英寸平板电脑,另一部用于10英寸平板电脑。

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

答案 1 :(得分:1)

看看the android documentation about supporting multiple screens - 要点是你可以拥有多个具有不同命名约定的文件夹,这些文件夹基于目标设备  在一系列事物(屏幕密度,屏幕尺寸,肖像/风景等)上,它们可以像你想要的那样模糊或详细。 例如,如果您想要定位所有xhdpi设备,则创建一个名为“layout-xhdpi”的布局文件夹,在其中创建一个布局,所有xhdpi设备将使用该文件夹而不是其他任何设备。如果你想更具体一些,例如专门定位Galaxy Nexus,你可以创建一个名为'layout-w360dp-port-xhdpi'的文件夹。

我更喜欢做的另一种方法是使用单个布局文件,并且具有针对不同屏幕尺寸的多个“值”xml文件,并且在值文件中更改填充/高度所采用的值并指向这些值你的布局。例如在'values / dimension.xml'

<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="webview_height">53dip</dimen>
<resources>

然后在你的布局中:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" android:orientation="vertical" >
<WebView 
    android:layout_height="@dimen/webview_height"
    android:id="@+id/mainWebViewMobile"
    android:layout_width="match_parent"
    ></WebView>
</LinearLayout>

您可以在针对不同设备的单独文件夹中创建多个dimension.xml(例如'values-xhdpi / dimensions.xml'或'values-w360dp-port-xhdpi / dimensions.xml')并更改'webview_height的值”。

答案 2 :(得分:0)

只需为每个密度创建不同的布局,并将其放在适当的文件夹中

从android docs看到这个: http://developer.android.com/guide/practices/screens_support.html#qualifiers

res/layout/my_layout.xml             // layout for normal screen size ("default")
res/layout-small/my_layout.xml       // layout for small screen size
res/layout-large/my_layout.xml       // layout for large screen size
res/layout-xlarge/my_layout.xml      // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation

res/drawable-mdpi/my_icon.png        // bitmap for medium density
res/drawable-hdpi/my_icon.png        // bitmap for high density
res/drawable-xhdpi/my_icon.png       // bitmap for extra high density