如何在Android中使图像支持不同的屏幕尺寸或密度?

时间:2016-09-27 05:21:21

标签: android image size screen

我制作了一个包含3张图片的XML文件。首先,我不清楚为什么图像尺寸在不同的屏幕尺寸上有所不同,即使我使用“dp”作为图像的尺寸。 接下来我做的是,我为不同的屏幕尺寸制作了不同的布局文件。还有一个问题我看到,从3.5英寸到5英寸的大多数屏幕都是由普通的\ something.xml处理的。并且3.5英寸屏幕中显示的图像大小与5英寸屏幕不同。

这是XML文件的正常\ something.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#add8e6"
android:orientation="vertical"
android:id="@+id/mood">

<TextView
    android:layout_width="match_parent"
    android:layout_height="15dp"
    />


<TextView android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColor="#000000"
    android:textSize="33sp"
    android:text="How's your Mood ?"
    android:gravity="center_horizontal"
    android:layout_marginTop="10dp"
    android:layout_marginBottom="30dp"
    />
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_marginTop="15dp"
    >


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="3"
        android:orientation="horizontal"
        android:id="@+id/happyLayout"
        android:background="#85a9b4">

        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:id="@+id/happyRadio"
            android:textSize="30sp"
            />
        <ImageView
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:src="@drawable/happy"
            android:layout_marginLeft="30dp"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="3"
        android:orientation="horizontal"
        android:id="@+id/sickLayout">

        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:id="@+id/sickRadio"/>
        <ImageView
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:src="@drawable/sick"
            android:layout_marginLeft="30dp"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="3"
        android:orientation="horizontal"
        android:id="@+id/sadLayout">

        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:id="@+id/sadRadio"/>
        <ImageView
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:src="@drawable/sad"
            android:layout_marginLeft="30dp"/>
    </LinearLayout>




    <Button
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:background="#f4880d"
        android:text="ADD MOOD"
        android:textColor="#ffffff"
        android:textSize="30sp"/>

</LinearLayout>

以上文件适用于普通屏幕尺寸。对于大屏幕和小屏幕,只需将图像尺寸更改为更低或更高的“dp”值(如果此方法不正确,请更正我)。

如果您可以建议我应该遵循的方法来处理不同屏幕尺寸和密度的图像大小,那将会很棒。

1 个答案:

答案 0 :(得分:0)

使用this之类的工具,您可以在其中生成所有屏幕的图像。另请参阅official docs以获取更多帮助。

对于图像,相应地放置图像

res/drawable-mdpi/graphic.png         // bitmap for medium-density
res/drawable-ldpi/graphic.png         // bitmap for large-density
res/drawable-hdpi/graphic.png         // bitmap for high-density
res/drawable-xhdpi/graphic.png        // bitmap for extra-high-density
res/drawable-xxhdpi/graphic.png       // bitmap for extra-extra-high-density

还要记住

xlarge screens are at least 960dp x 720dp
large screens are at least 640dp x 480dp
normal screens are at least 470dp x 320dp
small screens are at least 426dp x 320dp