1 package com.bumptech.glide.load.model; 2 3 import android.content.ContentResolver; 4 import android.content.Context; 5 import android.content.res.Resources; 6 import android.net.Uri; 7 8 import com.bumptech.glide.load.data.DataFetcher; 9 10 /** 11 * A model loader for handling Android resource files. Model must be an Android resource id in the package of the given 12 * context. 13 * 14 * @param <T> The type of data that will be loaded for the given android resource. 15 */ 16 public class ResourceLoader<T> implements ModelLoader<Integer, T> { 17 18 private final ModelLoader<Uri, T> uriLoader; 19 private final Resources resources; 20 21 public ResourceLoader(Context context, ModelLoader<Uri, T> uriLoader) { 22 this(context.getResources(), uriLoader); 23 } 24 25 public ResourceLoader(Resources resources, ModelLoader<Uri, T> uriLoader) { 26 this.resources = resources; 27 this.uriLoader = uriLoader; 28 } 29 30 @Override 31 public DataFetcher<T> getResourceFetcher(Integer model, int width, int height) { 32 Uri uri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" 33 + resources.getResourcePackageName(model) + '/' 34 + resources.getResourceTypeName(model) + '/' 35 + resources.getResourceEntryName(model)); 36 37 return uriLoader.getResourceFetcher(uri, width, height); 38 } 39 } 40