我读了 http://developer.android.com/guide/practices/screens_support.html.com? 但是无法知道如何应用这个,有人能给我一些按钮和textview示例,它将如何适用于不同的设备?
答案 0 :(得分:2)
它并不像你想象的那么复杂。首先请记住,您的基本布局始终设计为mdpi
,适用于具有中等密度(约160 dpi)的正常屏幕尺寸。
因此,在设计布局时,重要的是在定义布局时不要将px用作单元。相反,始终使用dp
(与密度无关的像素)作为单位,因为它们会自动缩放为当前密度的正确数px
。
直到这一刻,您只有一个文件(例如myLayout.xml)用于所有不同的布局大小(小,普通,大和xlarge)。如果您认为在具有xlarge显示的设备(例如平板电脑)上的布局应该不同,那么您只需在与layout-xlarge
相同的级别创建另一个名为layout
的文件夹,并创建另一个名为{{1的布局文件}}。您现在可以对此文件进行更改,以使具有xlarge显示的设备上的布局看起来不同。也许你想要一个更大的文本框,你想要重新排列
按钮和文本框。
如你所见,这并不难。只需使用dp作为维度的单位,Android将为您完成剩下的工作。
答案 1 :(得分:0)
支持多个屏幕的最简单方法是将资源放在不同的密度文件夹中,并将布局放在不同的布局大小文件夹中。
例如,具有以下文件夹结构:
AppRoot/
res/
drawable/
drawable-hdpi/
layout/
layout-large/
您可以根据密度和大小将位图放在不同的可绘制目录中。这为不同的密度屏幕分类了不同的位图。
对于根据屏幕尺寸的不同布局,在布局和布局 - 大型目录中放置不同的布局以支持您希望如何显示屏幕。
让我们举一个小型设备的简单列表填充屏幕的简单示例,而不是大屏幕,您可能希望列表在40%的屏幕上,以及右侧的信息:
<强> layout/main_layout.xml
强>:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
>
<ListView
android:id="@+id/main_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
<强> layout-large/main_layout.xml
强>:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:weightSum="1.0"
>
<LinearLayout
android:orientation="horizontal"
android:layout_weight="0.4"
android:layout_width="0dp"
android:layout_height="fill_parent"
>
<ListView
android:id="@+id/main_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/details_large"
android:layout_weight="0.6"
android:layout_width="0dp"
android:layout_height="fill_parent"
>
<include layout="@layout/detail_information" />
</LinearLayout>
现在您的应用程序可以使用“main_layout”,设备将根据屏幕大小选择一个,这将为您提供多屏幕支持。
重要的一点是布局是相同的命名文件main_layout.xml
,而android从正确的文件夹本身中选择一个。按钮等位图也是如此;将相同的命名位图放在多个目录中,并根据屏幕密度排除要使用的位置。
我没有在这些示例中放置文本视图和按钮,因为它们只是您可以根据需要填写的布局元素。