我在drawable目录中有一个960x1440大小的图像文件。 当应用程序启动时,图像不会作为背景加载,我在logcat中看到:
位图太大而无法上传到纹理中(2880x4320,最大值= 4096x4096)
如果图像为960x1440,为什么会显示2880x4320?
通过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">
答案 0 :(得分:47)
/drawable/
文件夹中没有任何规格的图像被视为&#34;默认&#34;,即1dp = 1px即mpdi
,那么因为设备你&# 39;实际运行的是xxhdpi
图像在运行时放大。
原始图片可能是960x1440,但从mdpi
到xxhdpi
的转换次数是此尺寸的3倍,因此您的960x1440变为(3 * 960)x(3 * 1440)= 2880x4320,纹理太大,无法应用于硬件加速视图。
所以要解决这个问题实际上很简单,你有两个选择:
/drawable-nodpi/
,减小.apk的大小,但较低端的设备可能难以加载如此大的图片。mdpi
,hdpi
,xhdpi
,xxhdpi
上创建缩放图像,以避免运行时过度扩展,并在较旧的设备上显示较小的图像。