0

有人可以帮我处理Android布局。我已经研究了一个星期了,我和以前一样困惑。这是我的问题。

假设我有一个按照此图像的布局(大致按比例)。

具有近似布局的任意电话

它是一个带有背景图像的简单视图(我拉伸以适应)。在这个观点上,我有一个:

  • 顶部:“欢迎”图像,占视图宽度的 80%,距视图左侧 10%,距视图右侧 10%
  • 中间:6 个导航按钮,再次填充视图宽度的 80%,距离视图左侧 10%,距离右侧 10%
  • 底部:填充 100% 屏幕宽度的页脚图像

我正在尝试创建用于顶部图像、导航按钮和页脚图像的图像(.png 文件),这就是问题的开始。我使用像素值来定义按钮的大小,但当然 Android 不能这样工作。我在网上找到了最流行的屏幕分辨率(ldpi、mdpi、hdpi 和 xhdpi)的粗略尺寸指南(以像素为单位),如下所示。决议。对不起,我忘记了来源在哪里。

“通常,我为 320x480 屏幕设计 mdpi 图像,然后根据规则将尺寸相乘以获得其他图像。基本上,设计图像的一般准则是:

mdpi - 320 x 480

  • ldpi 是 mdpi (240 x 360) 的 0.75 倍尺寸
  • hdpi 是 mdpi (480 x 720) 的 1.5 倍尺寸
  • xhdpi 是 mdpi (640 x 960) 的 2 倍尺寸"

我创建了一个导航按钮来测试和设置像素值的大小,如下所示(注意:这只是宽度,因为高度相应地缩放以保持透视)

  • ldpi - 160 像素
  • mdpi - 280 像素
  • hdpi - 420 像素
  • xhdpi - 680 像素

在 Eclipse 中的不同模拟器上查看时,这一切似乎都正常。但今晚我在 Android 开发者页面上遇到了这个问题。 http://developer.android.com/guide/practices/screens_support.html#testing

在页面底部,它将小、中、大和超大屏幕进一步细分为每个能够具有 ldpi、mdpi、hdpi 和 xhdpi 的屏幕。

现在我完全迷路了。因此,我是否应该为每个按钮创建 16 个不同的图像,每个图像的大小略有不同,然后让 Android 决定哪一个最适合?而且我还读到了根据屏幕分辨率定义不同布局的好习惯。我可以理解这一点,因为您可以在更大的尺寸上有不同的布局,但我认为在我的情况下不需要它。它只是一个非常基本的应用程序,我不需要针对不同屏幕尺寸的不同布局和功能。该应用程序必须支持所有/大多数手机屏幕尺寸,但不一定支持平板电脑

也许我把这一切弄错了,但这对我来说很困惑。

谁能帮我把它分解成最简单的形式?

4

2 回答 2

2

好的,您需要了解的第一件事是九补丁@RomanNurik这里有一个很棒的生成器,可以帮助您从源图像生成资产。

对于您的特定布局(您可能希望使其更适应更大的屏幕尺寸),布局的总体思路是这样的:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/root"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/footer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:layout_alignParentBottom="true"
        android:src="@drawable/my_footer"
        android:scaleType="centerCrop" />

    <LinearLayout
        android:id="upper_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/footer"
        android:orientation="horizontal"
        android:weightSum="10">

        <LinearLayout
            android:id="button_header_container"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="8"
            android:paddingTop="16dp"
            android:paddingBottom="16dp"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/header"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:adjustViewBounds="true"
                android:layout_marginBottom="16dp"
                android:src="@drawable/header"
                android:scaleType="centerCrop" />

            <Button
                android:id="@+id/button1"
                android:layout_width="match_parent"
                android:layout_height="44dp"
                android:layout_marginBottom="16dp"
                android:background="@drawable/my_button_nine_patch"
                android:gravity="center"
                android:text="Navigation Button" />

            <Button
                android:id="@+id/button2"
                android:layout_width="match_parent"
                android:layout_height="44dp"
                android:layout_marginBottom="16dp"
                android:background="@drawable/my_button_nine_patch"
                android:gravity="center"
                android:text="Navigation Button" />

            <!-- Etc. for other buttons -->

        </LinearLayout>

    </LinearLayout> 

</RelativeLayout>
于 2013-08-28T22:59:19.473 回答
0

dpi 只是告诉你每英寸的点数比率。静态显示尺寸的分辨率越大(例如 7"),dpi 就越高,因为与低分辨率屏幕相同的物理区域中必须有更多的点。这足以创建您的谷歌定义的组的图片。

于 2013-08-28T22:33:56.620 回答