ドローアブルディレクトリに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/
フォルダー内の画像は、「デフォルト」と見なされます。つまり、1dp = 1pxの場合はmpdi
であり、実際に実行しているデバイスはxxhdpi
その画像は実行時にスケールアップされます。
元の画像は960x1440である可能性がありますが、mdpi
からxxhdpi
への変換はサイズの3倍であるため、960x1440は(3 * 960)x(3 * 1440)= 2880x4320になります。テクスチャが大きすぎて、ハードウェアアクセラレーションビューに適用できません。
したがって、実際には非常に簡単に修正するには、2つの選択肢があります。
/drawable-nodpi/
に移動します。これは簡単で、.apkサイズを小さくしますが、ローエンドデバイスはそのような大きな画像を読み込むのに苦労する可能性があります。mdpi
、hdpi
、xhdpi
、xxhdpi
でスケーリングされた画像を作成して、実行時のオーバースケーリングを回避し、古いデバイスでより小さな画像を作成します。