我在drawable目录中有一个960x1440大小的图像文件。
当应用程序启动时,图像未作为背景加载,并且在logcat中,我看到了:
位图太大,无法上载到纹理中(2880x4320,max = 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">
最佳答案
/drawable/
文件夹中没有任何规范的图像被认为是“默认值”,即mpdi
的1dp = 1px,则因为您实际运行的设备是xxhdpi
,所以图像在运行时会按比例放大。
原始图像可能是960x1440,但是从mdpi
到xxhdpi
的转换是大小的3倍,因此您的960x1440变为(3 * 960)x(3 * 1440)= 2880x4320,该纹理太大而无法应用于硬件加快意见。
因此,要解决这一问题实际上很简单,您有两种选择:
/drawable-nodpi/
很简单,可以减小.apk大小,但是低端设备可能很难加载这么大的图像。 mdpi
,hdpi
,xhdpi
和xxhdpi
上创建缩放图像,以避免运行时过度缩放,并在较旧的设备上显示较小的图像。