そこにクラスPicasso
が存在しRequestHandler
ます。RequestHandlers
にカスタムを追加できますPicasso
。
これは でどのように行うことができGlide
ますか?
たとえば、次の URI をカスタムで処理できるようにしますRequestHandler
。"appicon:custom_data_to_interprete_manually"
編集 - 私がこれまでに持っているもの
public class GlideConfiguration implements GlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
// Apply options to the builder here.
builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);
}
@Override
public void registerComponents(Context context, Glide glide) {
glide.register(CustomModelParams.class, CustomModelParams.class, new CustomFactory());
}
class CustomModelParams
{
final String data;
public CustomModelParams(String data)
{
this.data = data;
}
public String getId()
{
return data;
}
}
class CustomFactory implements ModelLoaderFactory<CustomModelParams, CustomModelParams>
{
@Override
public ModelLoader<CustomModelParams, CustomModelParams> build(Context context, GenericLoaderFactory loaderFactory) {
return new CustomModelLoader();
}
@Override
public void teardown() {
}
}
class CustomModelLoader implements ModelLoader<CustomModelParams, CustomModelParams>
{
public CustomModelLoader() {
super();
}
@Override
public DataFetcher<CustomModelParams> getResourceFetcher(final CustomModelParams model, int width, int height)
{
return new DataFetcher<CustomModelParams>()
{
@Override
public CustomModelParams loadData(Priority priority) throws Exception { return model; }
@Override
public void cleanup() { }
@Override
public String getId() { return model.getId(); }
@Override
public void cancel() { }
};
}
}
class CustomBitmapDecoder implements ResourceDecoder<CustomModelParams, Bitmap>
{
private final Context context;
public CustomBitmapDecoder(Context context)
{
this.context = context;
}
@Override
public Resource<Bitmap> decode(CustomModelParams source, int width, int height) throws IOException
{
BitmapPool pool = Glide.get(context).getBitmapPool();
Bitmap bitmap = pool.getDirty(width, height, Bitmap.Config.ARGB_8888);
if (bitmap == null) {
bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
}
// TODO
// create custom bitmap from CustomModelParams!!!
return BitmapResource.obtain(bitmap, pool);
}
@Override
public String getId()
{
return CustomBitmapDecoder.class.getName();
}
}
}
質問
- これらのクラスを一緒にリンクするにはどうすればよいですか? デコーダーは何らかの方法で新しいモデルにリンクする必要があります
- カスタム ローダーがリクエストを処理できるように定義するにはどうすればよいですか? 取得したURLがこのローダーで処理できるかどうかをどうにかして判断する必要があります...