位图太大而无法上传到纹理中

我在绘图目录中有一个960×1440大小的图像文件。 当应用程序启动时,图像不会作为背景加载,在logcat中我看到:

位图太大而无法上传到纹理(2880×4320,最大= 4096×4096)

为什么说2880×4320如果图像是960×1440?

位图通过xml加载:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/launcher_bg" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"> 

Solutions Collecting From Web of "位图太大而无法上传到纹理中"

没有任何规范的/drawable/文件夹中的图像被认为是“默认”,即1dp = 1px是mpdi ,那么因为你实际运行的设备是xxhdpi ,图像get在运行时被放大。

原始图像可能是960×1440,但是从mdpixxhdpi的转换大小是3倍,所以您的960×1440变成(3 * 960)x(3 * 1440)= 2880×4320,这对于应用于硬件的纹理来说太大加速的观点。

所以要解决这个问题其实很简单,你有两个select:

  1. 将你的图像移动到/drawable-nodpi/这很简单,减小.apk大小,但是低端设备可能很难加载如此大的图像。
  2. 在所有密度mdpihdpixhdpixxhdpi上创build缩放图像,以避免运行时过度缩放,并在较旧的设备上显示较小的图像。