java接口的隐藏实现_谈谈Java接口与实现的分离以及隐藏实现

class FrescoImageLoader implements ImageLoader {

private Context mAppContext;

@Override

public void init(@NonNull Context appContext) {

if(Fresco.hasBeenInitialized()) return;

// hold appContext

mAppContext = appContext;

// init fresco

OkHttpClient client = new OkHttpClient.Builder()

.addNetworkInterceptor(chain -> {

DevUtil.d("ImageLoader", "request-url: " + chain.request().url().toString());

return chain.proceed(chain.request());

})

.build();

ImagePipelineConfig config = OkHttpImagePipelineConfigFactory

.newBuilder(appContext, client)

.build();

Fresco.initialize(appContext, config);

}

@Override

public void displayImage(@NonNull ImageView targetView, @NonNull Uri uri, @Nullable LoadListener listener) {

// Fresco

if (targetView instanceof DraweeView) {

DraweeView realView = (DraweeView) targetView;

realView.setController(getDraweeController(realView, uri, listener));

return;

}

// Generic ImageView

targetView.setImageURI(uri);

}

private DraweeController getDraweeController(DraweeView targetView, Uri uri, LoadListener listener) {

DraweeController controller = Fresco.newDraweeControllerBuilder()

.setOldController(targetView.getController())

.setUri(uri)

.setControllerListener(listener == null ? null : new BaseControllerListener() {

@Override

public void onFailure(String id, Throwable throwable) {

super.onFailure(id, throwable);

if (listener != null) {

listener.onFailed(targetView);

}

}

@Override

public void onFinalImageSet(String id, ImageInfo imageInfo, Animatable animatable) {

super.onFinalImageSet(id, imageInfo, animatable);

if (imageInfo instanceof CloseableBitmap) {

CloseableBitmap image = (CloseableBitmap) imageInfo;

Bitmap resultBitmap = image.getUnderlyingBitmap();

if (listener != null) {

listener.onSuccess(targetView, resultBitmap);

}

}

}

})

.build();

return controller;

}

@Override

public void cancelDisplay(ImageView targetView) {

}

@Override

public void destroy() {

Fresco.shutDown();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值