约束布局中的背景图像无法工作

4

我希望我的应用程序在注册和登录功能中使用背景图像。我正在使用Android Studio 2.3,到目前为止我可以看到自去年以来有很多变化。我们以前使用相对布局或线性布局,现在是约束布局。我包含了一个根布局的代码:

android:background="@drawable/wallpaper_2"
    android:orientation="vertical"

查看此图像以获取更多信息: 在此输入图片描述

enter image description here

当我在我的Nexus 5上测试这个应用程序时,它不显示任何东西,只是一个空白屏幕,但在预览屏幕上显示相同的图像。希望能得到帮助。

检查Logcat警告,如果显示位图太大。在Nexus 5上无法渲染大图像。 - Divyesh Patel
你确定图片不是正在加载中吗?这种方式设置背景会使你的应用程序变慢。 - Nirup Iyer
在您的主题中设置窗口背景并将其应用于相关活动。这样可以避免至少一次过度绘制。 - Raghunandan
app.example.com.signin W/OpenGLRenderer: 位图太大,无法上传到纹理中(3240x5760,最大=4096x4096)。这是错误。 - Karan Thakkar
5个回答

4
您的图片分辨率对于设备来说太大了,请使用resize工具将您的图片调整为更小的尺寸,并根据此放置到指定的drawable文件夹中。例如:如果图像大小为1280 x 720,请将其放入drawable-xxhdpi文件夹中。

那么,只需要创建drawable-xxhdpi文件夹并将图像复制到其中,它会自动缩小吗? - Karan Thakkar
不行!你必须先用我提供的链接调整大小,然后将其复制粘贴到drawable文件夹中。我在这里看不到drawable-xxhdpi文件夹,所以你可以将其复制到mipmap-xxhdpi文件夹中。这些文件夹用于不同的屏幕分辨率。 - Haris ali
如果您能提供图片链接,我可以将您的图像分辨率调整为更小。 - Haris ali

2
为了防止“位图太大”错误,您可以简单地使用像GlidePicasso这样的库。这些库会处理所有内存操作。

我不知道如何精确地使用它来实现我想要的目标,但无论如何还是谢谢。 - Karan Thakkar
他只是将一张图片作为背景。这些库的目的是为了缩小图像和处理多个图像。仅仅为了设置一个背景图像而使用Glide或Picasso有些过度了。 - Haris ali

2

工作的多种选择

1- 更改

   android:background="@drawable/wallpaper_2"

To

   android:background="@drawable/wallpaper"

在drawable名称中不允许使用数字。

2- 如果图像尺寸过大,请使用较小尺寸的图像替换它。

3- 如果图像分辨率较大,则可以在应用程序标记中添加android:largheap="true"

4- 在约束布局内添加相对布局或将约束布局替换为相对布局,然后应用背景。


如果按照答案中提供的4个步骤检查过后,我从未在应用背景时遇到过问题。测试一下,希望这次能行。 - Faheem Ahmad Khan
第三点,这将被添加到AndroidManifest.xml文件中。 - Faheem Ahmad Khan
似乎不起作用,我尝试了每一步。你有其他的替代方案吗? - Karan Thakkar
更改图片并重试。 - Faheem Ahmad Khan

1
首先为每个dpi大小创建所有可绘制文件版本
drawable-mdpi drawable-hdpi drawable-xhdpi drawable-xxhdpi drawable-xxxhdpi
然后通过右键单击res文件并选择图像资源来放置您的图像。完成此步骤后,应该可以正常工作。

0
在Ubuntu 16.04上,将图像粘贴到工作区 -> 项目名称 -> 应用程序 -> src -> main -> res -> drawable中。这对我有用,而不是直接粘贴到Android Studio 3.1.3应用程序 -> res -> drawable中。

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