【问题标题】:Android : Multiple Screen Support for All DevicesAndroid:所有设备的多屏支持
【发布时间】:2016-04-03 12:36:59
【问题描述】:

我正在开发我的 android 项目,但不知道有一种叫做多屏幕支持的东西。我认为制定一种解决方案对其他人来说是一样的。但是我错了。目前,我已将我的应用程序设计为使用 1080*1920 分辨率。但我希望它至少支持下面提到的所有屏幕分辨率。

480*800, 1080*1920(支持), 720*1280,
480*854, 480*960, 320*480, 1440*2560

那么在这方面可以做些什么。我不知道在这里发布什么代码。请指导我完成这个。谢谢你

credits.xml

<?xml version="1.0" encoding="utf-8"?>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#f6f6f6">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="The Team"
        android:id="@+id/textView3"
        android:textSize="40sp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:textColor="#ff4a3b" />

    <ImageView
        android:layout_width="130dp"
        android:layout_height="130dp"
        android:layout_marginTop="8dp"
        android:layout_marginRight="20dp"
        android:id="@+id/imageView2"
        android:src="@mipmap/ic_launcher"
        android:layout_below="@+id/textView3"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="32dp"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="PRAVEEN"
        android:id="@+id/textView4"
        android:textSize="15sp"
        android:textColor="#010101"
        android:layout_below="@+id/imageView2"
        android:layout_alignRight="@+id/imageView2"
        android:layout_alignEnd="@+id/imageView2"
        android:typeface="monospace" />

    <ImageView
        android:layout_width="130dp"
        android:layout_height="130dp"
        android:layout_marginTop="8dp"
        android:layout_marginLeft="30dp"
        android:id="@+id/imageView"
        android:src="@mipmap/ic_launcher"
        android:layout_below="@+id/textView3"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="74dp"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="AKASH"
        android:id="@+id/textView5"
        android:textSize="15sp"
        android:textColor="#010101"
        android:typeface="monospace"
        android:layout_below="@+id/imageView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />


    <ImageView
        android:layout_width="130dp"
        android:layout_height="130dp"
        android:layout_marginTop="165dp"
        android:layout_marginRight="20dp"
        android:id="@+id/imageView3"
        android:src="@mipmap/ic_launcher"
        android:layout_below="@+id/textView3"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="32dp"
        android:layout_marginTop="157dp"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="PRANOTI"
        android:id="@+id/textView6"
        android:textSize="15sp"
        android:textColor="#010101"
        android:layout_below="@+id/imageView2"
        android:layout_alignRight="@+id/imageView2"
        android:layout_alignEnd="@+id/imageView2"
        android:typeface="monospace" />

    <ImageView
        android:layout_width="130dp"
        android:layout_height="130dp"
        android:layout_marginTop="165dp"
        android:layout_marginLeft="30dp"
        android:id="@+id/imageView6"
        android:src="@mipmap/ic_launcher"
        android:layout_below="@+id/textView3"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="72dp"
        android:layout_marginTop="157dp"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="SONAL"
        android:id="@+id/textView8"
        android:textSize="15sp"
        android:textColor="#010101"
        android:typeface="monospace"
        android:layout_below="@+id/imageView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="361dp"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="GUIDE"
        android:id="@+id/textView67"
        android:textSize="30sp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:textColor="#ff4a3b" />

    <ImageView
        android:layout_width="130dp"
        android:layout_height="130dp"
        android:id="@+id/imageView69"
        android:src="@mipmap/ic_launcher"
        android:layout_below="@+id/textView67"
        android:layout_centerHorizontal="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"

        android:text="Prof. M.G.Huddar"
        android:id="@+id/textView89"
        android:textSize="15sp"
        android:textColor="#010101"
        android:typeface="monospace"
        android:layout_below="@+id/imageView69"
        android:layout_toLeftOf="@+id/textView6"
        android:layout_toStartOf="@+id/textView6" />

</RelativeLayout>

    </ScrollView>

【问题讨论】:

标签: android


【解决方案1】:

您需要创建 5 个文件夹。

可绘制-mdpi

可绘制-hdpi

可绘制-xhdpi

可绘制-xxhdpi

可绘制-xxxhdpi

或者您也可以使用默认文件夹

mipmap-mdpi

mipmap-hdpi

mipmap-xhdpi

mipmap-xxhdpi

mipmap-xxxhdpi

在所有这些文件夹中,您需要以 1:1.5:2:3:4 的比例保存图像。

所有相似的图像都有相同的名称。

现在其他事情会自动完成,当有人使用 360*480(hdpi) 的设备时。然后它会自动从 hdpi 文件夹中获取图像。

图像示例。

如果我们为

100dp*100dp 的 mdpi。

然后对于 hdpi :- 150dp*150dp

xhdpi:200dp*200dp

xxhdpi: 300dp*300dp

xxxhdpi: 400dp*400dp

【讨论】:

  • 好的,我检查了我的 res 文件夹,它已经有一个名为 drawable 的文件夹,除此之外我还创建了你提到的 5 个文件夹。是的,我也有所有的 mip-map。所以我该怎么做?我是否应该删除可绘制文件夹并只保留您要求我制作的 5 个可绘制文件夹
  • 告诉我一件事,我的应用程序设计为 1080*1920 ok。我对其进行了测试,并且组件按照我想要的方式排列。即使我使用 hdpi、ldpi、mdpi。 480*800 中所有组件的位置都发生了变化。我刚刚测试了将 ic_launcher 放置在各种 mipmap 文件夹中。我在 1080*1920 看到的和 480*800 完全不同
  • 不,您不需要删除主要的可绘制文件夹。将它用于其他类型的文件,如选择器等。
  • 亲爱的。如果您使用边距和填充之类的东西来调整您的视图。那么它将仅适用于一种设备尺寸。
  • 但组件的位置会有所不同,我为 1080*1920 设计的以及精确但缩小的我希望它支持 480*800
【解决方案2】:

支持多种设备令人头疼。它曾经使用 hdpi、mdpi、xhdip、xxhdip 来指定不同的设备大小。现在,它使用 sw320dp、sw360dp、sw600dp 等。其中 sw 代表 最小宽度dp 代表 Density-independent Pixels 。所以,

如果您在 res/layout-sw360dp 文件夹中创建布局文件 activity_main.xml,它将用于屏幕宽度 >= 360dp 的设备。现在,如果您在文件夹 res/layout-sw600dp 中创建另一个名称相同的文件 activity_main.xml,那么该文件将用于屏幕宽度 > = 600dp。

这也适用于drawable、dimen和value文件。

res/drawable-sw360dp 适用于屏幕宽度 >= 360dp 的设备

res/drawable-sw600dp 适用于屏幕宽度 >= 600dp

res/drawable-sw720dp 适用于屏幕宽度 >= 720dp 的设备

等等

你懂的……

不久前,我为此写了一封postOfficial DocDevice Size Metrics

【讨论】:

  • 我已经发布了 logcat 看看
【解决方案3】:

Android 设备具有多种密度,分为 ldpi(低)、mdpi(中)、hdpi(高)和 xhdpi(超高)。通常,设备的分辨率越大,其密度就越高。所以低分辨率设备有 ldpi,中分辨率设备有 mdpi 等等。要实现这一点,请转到您的资源文件夹并创建一些名为 drawable-ldpi、drawable-mdpi、drawable-hdpi、drawable-xhdpi 的新文件夹,并将图像放入其中。 drawable-ldpi 中的图像应该具有较低的分辨率,并且将自动在具有低分辨率的设备上使用(您无需以编程方式实现这一点)。 drawable-mdpi 中的图像应该比 ldpi 具有更大的分辨率,依此类推。像这样,您可以确保每台设备都获得正确的图像。您可以将图像放置在所有这些文件夹中而无需重命名。例如,您可以在所有这些文件夹中放置一个名为 image.png 的文件,当通过 R.id.image 访问它时,系统会自动选择在哪个文件夹中查找它。希望这会有所帮助!

【讨论】:

  • 告诉我一件事,比如我有一个图像“x.jpg”我如何将其转换为 ldpi、mdpi、hdpi、xhdpi
  • 您的问题似乎不够清楚,您是想根据分辨率调整图像大小,还是希望所有布局和视图都缩放到不同的屏幕,保持相同的外观?
  • 将图像大小调整为每种分辨率是不切实际的。我使用 1080*1920 开发了我的应用程序,因为我不知道我的应用程序在其他分辨率下的外观,但是当我了解这一点时,我想我的应用程序将如何在每种分辨率下工作
  • 您必须创建不同版本的图像,在其中更改分辨率。 ldpi 是 mdpi 的 75%,hdpi 是 mdpi 的 150%,xhdpi 是 mdpi 的 200%。因此,如果您当前的设备屏幕为 1080x1900,则您的图像当前为 xhdpi 分辨率。将他们的分辨率减半以获取 mdpi,然后为其他版本创建其他版本。
  • 是否有任何网站或任何软件可以创建不同版本的图像,如 ldpi、hdpi、mdpi、xdpi、xxdpi
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-14
  • 2013-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多