为所有屏幕尺寸设置背景图片

7

我正在处理一个项目,需要为所有屏幕尺寸设置相同的背景图片。如何实现?如何在Android Studio中为所有屏幕尺寸设置背景图片?我们如何将文件夹放入drawable文件夹中?


你需要从SO用户那里得到什么信息? - Amy
如果您的意思是在不同的屏幕尺寸上使用不同的缩放比例,那么只需将相同图像内容的不同大小图像放置在drawable或mipmap中,并以“hdpi”、“xhdpi”、“mdpi”、“ldpi”等命名。 - S.W.
4个回答

9

将您的图像转换为以下所有尺寸,并粘贴到特定文件夹中。

xxxhdpi: 1280x1920 px
xxhdpi: 960x1600 px
xhdpi: 640x960 px
hdpi: 480x800 px
mdpi: 320x480 px
ldpi: 240x320 px

这个应用程序在所有设备上运行的最佳尺寸是什么?

参考


但是在我的Android Studio中,没有drawable文件夹。 - Jincy
@Jincy 只需简单创建一个文件夹即可解决此问题。 - S.W.
肖像模式还可以,但是横向模式下图片被拉伸得很厉害。 - Jincy
1
@Jincy 对于横屏模式,你可以将图片放在drawable-land-mdpi等文件夹中。 - S.W.
@Jincy 更新你的Android Studio,然后在相关活动创建时就会得到drawable文件夹。 - Dinith

7

将简单的可绘制文件夹放置在那里,并将您的图像粘贴到那里。然后打开styles.xml,粘贴此行代码。

 <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorOrange</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowBackground">@drawable/yourImage</item>
    </style>

通过使用这种方法,您不必在每个布局中放置背景图像。

2
但它会在不同的屏幕尺寸上拉伸吗?因此,对于所有屏幕尺寸使用不同的尺寸。 - Sohail Zahid
有时会出现 OutOfMemoryError。 - SadeQ digitALLife
<item name="android:windowBackground">@drawable/yourImage</item> 这只是用于窗口背景的,它不能像完整的背景图片那样工作。 - Dinith

3

使用ImageView而不是将图像添加到某个视图的背景中。

使用ImageView不会拉伸您的图像,而只会裁剪图像中不适合的部分。这项工作由scaleType="centerCrop"标签完成。

以下是示例代码:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_class"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="lpt.com.attendance.ActivityClass.Activity_Class">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:adjustViewBounds="true"
            android:scaleType="centerCrop"
            android:src="@drawable/background" />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            //Now this is your main layout to put everything.

        </RelativeLayout>
</FrameLayout>

0

我在我的项目中也需要这个功能,我们有两个选项:

1)将图像放置在相应的res文件夹hdpi至xxxhdpi中并进行加载,但在这种情况下,我们必须为单个项目维护7-8个图像。

另一个解决方案是

2)使用已经过测试的响应式HTML,并将其放置在资产的原始文件夹中,然后在WebView中加载URL,该WebView应与ImageView相同。如果您需要ImageView的单击事件,则可以使用WebView的触摸事件。

这两种解决方案都能很好地工作。我们以前使用方法1,但现在转向第二种方法以减少一些内存和处理问题。如果仍然有任何疑问,请随时提问...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接