创建一个多屏幕Android应用程序

时间:2012-07-24 06:34:26

标签: android android-layout

我正在开发适用于所有Android手机或平板电脑设备的Android 2.3.3应用程序,它只支持人像

阅读Supporting Multiple Screens我看到一张包含大量屏幕尺寸和密度的表格。

我需要多少个布局?每个屏幕尺寸和密度一个?

我想我只需要四个:一个用于小型,普通型,大型和X大型。

4 个答案:

答案 0 :(得分:1)

你基本上需要四个。但是,如果您希望应用程序根据不同的屏幕大小 AND 不同的方向而表现不同,则应使用:

/layout-port         > for medium layout portrait
/layout-land         > for medium layout landscape
/layout-xlarge-port  > for xlarge layout portrait
/layout-xlarge-land  > for xlarge layout landscape

答案 1 :(得分:1)

从您提供的链接:

By default, Android resizes your application layout to fit the current device screen. 
In most cases, this works fine.

因此,一般规则是在布局xmls中使用密度无关像素(dips)进行大小定义,其余部分由操作系统处理。这样做您只需拥有适用于所有设备的唯一布局。

制作单独的布局并不是一种常见的做法。只有当您拥有无法拉伸的图像时才是真正推荐的方式。在这种情况下,根据屏幕的大小和密度分割图形无论如何都可以解决您的问题。

答案 2 :(得分:1)

对于高密度的设备,一个布局就足够了,如果你还想为x大屏幕尺寸实现布局,那么你需要进行另一个布局,  只需按照ldpi,mpdi和hdpi获取图像,将它们放在相关文件夹中, 使用适当的布局权重创建布局,为填充父级和按钮的确切大小等背景提供完整大小

<?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:background="@drawable/bg"
    android:gravity="center"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bar"
        android:orientation="horizontal" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:orientation="horizontal" >

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight=".55"
                android:gravity="left|center"
                android:orientation="vertical" >

                <Button
                    android:id="@+id/goBack"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_margin="2dp"
                    android:background="@drawable/back_btn" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight=".25"
                android:gravity="center"
                android:orientation="vertical" >

                <TextView
                    android:id="@+id/textView1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Forget Paaword"
                android:textColor="#ffffff"
                    android:textSize="18dp"
                    android:textStyle="italic" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight=".55"
                android:gravity="right|center"
                android:orientation="vertical" >

                <Button
                    android:id="@+id/hombutton"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_margin="2dp"
                    android:background="@drawable/home1" />
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight=".2"
        android:gravity="right|center"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight=".5"
            android:gravity="right|center"
            android:orientation="horizontal" >

            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight=".5"
                android:text="User Name"
                android:textColor="#ffffff" />

            <EditText
                android:id="@+id/usernametext"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight=".5" android:imeOptions="actionDone">

                <requestFocus />
            </EditText>
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight=".5"
            android:gravity="right|center"
            android:orientation="horizontal" >

            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight=".5"
                android:text="Email Id"
                android:textColor="#ffffff" />

            <EditText
                android:id="@+id/emailtextfp"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight=".5"
                android:inputType="textEmailSubject" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight=".5"
            android:gravity="center"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/loginbuttonfp"
                android:layout_width="75dp"
                android:layout_height="28dp"
                android:layout_margin="5dp"
                android:background="@drawable/btn" android:text="Ok" android:textColor="#ffffff"/>

            <Button
                android:id="@+id/cancelbutton"
                android:layout_width="75dp"
                android:layout_height="28dp"
                android:layout_margin="5dp"
                android:background="@drawable/btn" android:text="Cancel" android:textColor="#ffffff"/>
        </LinearLayout>
    </LinearLayout>

</LinearLayout> 

答案 3 :(得分:1)

我创建了一个工具,可以让您扩展/调整平板电脑和小屏幕设备的布局,并在此处发布了一篇博文:http://onemanmobile.blogspot.com/2012/04/how-to-scale-your-android-layouts-to.html

基本上,如果您希望自己的应用适合所有设备和平板电脑,那么以dp为单位定义一个尺寸的布局是不够的,因为有四种不同的“密度桶”。

此工具可以将您的布局转换为从默认基线开始拟合这些密度桶。

希望它有所帮助。