【问题标题】:Set background image for all screen size为所有屏幕尺寸设置背景图像
【发布时间】:2017-01-24 06:07:17
【问题描述】:

我正在使用一个项目来为具有相同图像的所有屏幕尺寸设置背景图像。这怎么可能?如何在android studio中为所有屏幕尺寸设置背景图像?我们如何将文件夹放入drawable?

【问题讨论】:

  • SO 用户需要什么?
  • 如果您的意思是在不同的屏幕尺寸下进行不同的缩放,只需将具有相同图像内容的不同尺寸的图像放入可绘制或带有尾部名为“hdpi”“xhdpi”“mdpi”“ldpi”等的mipmap中。跨度>

标签: android android-studio background android-xml


【解决方案1】:

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

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

是应用在所有设备上运行的最佳尺寸。

Reference

【讨论】:

  • 但是在我的android studio中,drawable中没有文件夹。
  • @Jincy 只需简单地创建一个文件夹即可解决它
  • 人像还可以,但是横向的图像被拉伸了很多。
  • @Jincy 对于横向,您可以将图像放入 drawable-land-mdpi 等中。
  • @Jincy 更新您的 Android Studio,然后在创建相关活动时获得可绘制文件夹
【解决方案2】:

放置简单的可绘制文件夹,然后将您的图像粘贴到那里。然后打开你的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>

通过使用它,您不必在每个布局中都放置背景图像。

【讨论】:

  • 但它会在不同的屏幕尺寸上拉伸吗?所以对所有屏幕尺寸使用不同的尺寸。
  • 有时会产生 outOfMemoryError
  • ​​@drawable/yourImage 这仅适用于窗口背景。它不像完全背景图片那样工作
【解决方案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>

【讨论】:

    【解决方案4】:

    我的项目需要同样的功能,所以在这种情况下,我们有两个选择

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

    另一种解决方案是

    2) 使响应式 html 在所有屏幕上都经过测试兼容,并将原始文件夹放入资产中,并在 webview 中加载与图像视图相同的 url,如果您需要图像视图单击事件,则可以使用 webview 触摸事件。

    我们使用方法 1 之前两种解决方案都运行良好,但现在由于减少了一些内存和处理问题,我们继续使用第二种解决方案。如果还有什么疑惑请追问...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-29
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 2012-03-27
      相关资源
      最近更新 更多