AndroidアプリをJavaで実装しております。
あるActivityの起動時に下記の部分で背景画像を変更した際、OutOfMemoryとなってしまうことがあるようです。
layout.setBackgroundResource(R.drawable.bachground);
このActivityはいわゆるLINEのようなチャット画面で、その背景を変更したいのです。
OutOfMemoryをcatchした際は、背景画像を設定しない、という対応を考えているのですが、実際、皆さんどのように対応されているのか、また他にアイディアがあれば教えていただきたく質問させていただいた次第です。
画像は下記の通り用意してあります。
hdpi : 540 x 960
xhdpi : 720 x 1280
xxhdpi : 1080 x 1920
###その他考えたこと
XMLに指定すればメモリの取られ方が変わったりますか?
画像を1/4にするなどしてtileMode=repeatで繰り返し表示しても
背景としてのメモリは変わらないですよね?。。。。
オリジナルの画像をサンプリングしてから描画に渡す、という方法も考えたのですが、そもそも背景画像であり、拡大縮小する必要なしです。
エラーメッセージ
Fatal Exception: java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeAsset(BitmapFactory.java)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:502)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:355)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:785)
at android.content.res.Resources.loadDrawable(Resources.java:2008)
at android.content.res.Resources.getDrawable(Resources.java:681)
at android.view.View.setBackgroundResource(View.java:14468).....
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。