GestureImageView を使用して、選択したテーマのカスタム レイヤーを含むマップを表示しています。テーマに応じて、GestureImageView に LayerDrawable をロードしています。
私がそれを使用する方法では、ビットマップは私のメモリを殺し、OutOfMemoryException をスローします。Glide を使用してこれらのビットマップをロードしたいのですが、Glide で LayerDrawable を使用する方法がわかりません。
編集:グライドなしの私の元のコード:
private void loadImageFromStorage(String path, String name)
{
try {
File f=new File(path, name);
BitmapFactory.Options options=new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.RGB_565;
options.inSampleSize=2;
// options.inJustDecodeBounds = true;
Bitmap b = BitmapFactory.decodeStream(new FileInputStream(f),null,options);
BitmapFactory.Options options2=new BitmapFactory.Options();
options2.inPreferredConfig = Bitmap.Config.RGB_565;
Drawable laag = new BitmapDrawable(b);
Bitmap back = BitmapFactory.decodeResource(getResources(), R.drawable.bgverkenning, options2);
Drawable bg = new BitmapDrawable(back);
Drawable [] lagen = {bg,laag};
LayerDrawable ld = new LayerDrawable(lagen);
map.setImageDrawable(ld);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
}
Glide では、次のような基本的なコードのみを使用しました。
Glide.with(this).load(ld).into(map);
ただし、Glide は LayerDrawable を認識しないため、何らかのモデルを使用する必要があります。