在这篇文章中,我们将为您详细介绍com.facebook.imagepipeline.image.ImageInfo的实例源码的内容,并且讨论关于facebook源代码的相关问题。此外,我们还会涉及一
在这篇文章中,我们将为您详细介绍com.facebook.imagepipeline.image.ImageInfo的实例源码的内容,并且讨论关于facebook源代码的相关问题。此外,我们还会涉及一些关于com.facebook.animated.webp.WebPImage的实例源码、com.facebook.imagepipeline.animated.base.AnimatedDrawable的实例源码、com.facebook.imagepipeline.animated.base.AnimatedImageFrame的实例源码、com.facebook.imagepipeline.animated.base.AnimatedImageResult的实例源码的知识,以帮助您更全面地了解这个主题。
本文目录一览:- com.facebook.imagepipeline.image.ImageInfo的实例源码(facebook源代码)
- com.facebook.animated.webp.WebPImage的实例源码
- com.facebook.imagepipeline.animated.base.AnimatedDrawable的实例源码
- com.facebook.imagepipeline.animated.base.AnimatedImageFrame的实例源码
- com.facebook.imagepipeline.animated.base.AnimatedImageResult的实例源码
com.facebook.imagepipeline.image.ImageInfo的实例源码(facebook源代码)
@Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash); ButterKnife.bind(this); Uri uri = Uri.parse("asset:///splash.webp"); mSplashPresenter = new SplashPresenterImpl(this); DraweeController controller = Fresco.newDraweeControllerBuilder() .setUri(uri) .setAutoplayAnimations(true) .setControllerListener(new BaseControllerListener<ImageInfo>(){ @Override public void onFinalimageset(String id,@Nullable ImageInfo imageInfo,@Nullable Animatable animatable) { super.onFinalimageset(id,imageInfo,animatable); mSplashPresenter.startCountDown(1); } }) .build(); splashDraweee.setController(controller); }
public static void loadImage(final PhotoDraweeView mPhotoDraweeView,Uri uri) { PipelineDraweeControllerBuilder controller = Fresco.newDraweeControllerBuilder(); controller.setUri(uri); controller.setAutoplayAnimations(true); controller.setoldController(mPhotoDraweeView.getController()); controller.setControllerListener(new BaseControllerListener<ImageInfo>() { @Override public void onFinalimageset(String id,ImageInfo imageInfo,Animatable animatable) { super.onFinalimageset(id,animatable); if (imageInfo == null || mPhotoDraweeView == null) { return; } mPhotoDraweeView.update(imageInfo.getWidth(),imageInfo.getHeight()); } }); mPhotoDraweeView.setController(controller.build()); }
public void loadImage(String url,String lowurl,int placeHolderResId,int errorResId,ScalingUtils.ScaleType scaleType){ final boolean isHttp = url.startsWith("http"); Uri uri = isHttp ? Uri.parse(url) : Uri.fromFile(new File(url)); PipelineDraweeControllerBuilder controller = Fresco.newDraweeControllerBuilder() .setimageRequest(ImageRequest.fromUri(uri)); if(lowurl!=null && lowurl.startsWith("http")) { controller .setLowResImageRequest(ImageRequest.fromUri(lowurl)); } getHierarchy().setActualImageScaleType(scaleType); // controller.setUri(URI); getHierarchy().setPlaceholderImage(getResources().getDrawable( placeHolderResId ),scaleType); getHierarchy().setFailureImage(getResources().getDrawable(errorResId),scaleType); controller.setoldController(this.getController()) .setControllerListener(new BaseControllerListener<ImageInfo>() { @Override public void onFinalimageset(String id,Animatable animatable) { if (imageInfo == null) { return; } PhotoDraweeView.this.update(imageInfo.getWidth(),imageInfo.getHeight()); } }); this.setController(controller.build()); }
/** * 图像选项类 * @param uri 图片路径 * @param oldController DraweeView.getoldcontroller * @param controllerListener 监听 * @return */ public static DraweeController getimageViewController(String uri,DraweeController oldController,ControllerListener<ImageInfo> controllerListener) { PipelineDraweeControllerBuilder builder = Fresco.newDraweeControllerBuilder(); if (!TextUtils.isEmpty(uri)) { // Logger.d("StringUtils.utf8Encode(uri)"+StringUtils.utf8Encode(uri)); builder.setUri(Uri.parse(uri)); } if (oldController != null) { builder.setoldController(oldController); } if (controllerListener != null) { builder.setControllerListener(controllerListener); } return builder.build(); }
/** * showThumb * * @param draweeView draweeView * @param url url * @param resizeWidthDp resizeWidth * @param resizeHeightDp resizeHeight */ public static void showThumb(SimpleDraweeView draweeView,String url,int resizeWidthDp,int resizeHeightDp) { try { if (!isInit) return; if (url == null || "".equals(url)) return; if (draweeView == null) return; initialize(draweeView.getContext()); ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(url)) .setResizeOptions(new ResizeOptions(DimenUtils.dip2px(draweeView.getContext(),resizeWidthDp),DimenUtils.dip2px(draweeView.getContext(),resizeHeightDp))) .build(); DraweeController controller = Fresco.newDraweeControllerBuilder() .setimageRequest(request) .setoldController(draweeView.getController()) .setControllerListener(new BaseControllerListener<ImageInfo>()) .build(); draweeView.setController(controller); } catch (Exception e) { } }
public static DraweeController showResgif(int resourceId,SimpleDraweeView simpleDraweeView) { ControllerListener controllerListener = new BaseControllerListener<ImageInfo>() { @Override public void onFinalimageset( String id,@Nullable Animatable anim) { if (anim != null) { anim.start(); } } }; Uri uri = Uri.parse("res://com.blinnnk.gaia/" + resourceId); DraweeController draweeController = Fresco.newDraweeControllerBuilder() .setUri(uri) .setControllerListener(controllerListener) .build(); simpleDraweeView.setController(draweeController); return draweeController; }
@Override public void initLoad() { super.initLoad(); if (!TextUtils.isEmpty(mImageUrl)) { PipelineDraweeControllerBuilder controller = Fresco.newDraweeControllerBuilder(); controller.setUri(mImageUrl); controller.setoldController(mPhotoIv.getController()); controller.setControllerListener(new BaseControllerListener<ImageInfo>() { @Override public void onFinalimageset(String id,Animatable animatable) { super.onFinalimageset(id,animatable); if (imageInfo == null || mPhotoIv == null) { return; } mPhotoIv.update(imageInfo.getWidth(),imageInfo.getHeight()); } }); mPhotoIv.setController(controller.build()); } }
private DraweeController createDraweeController( DraweeView draweeView,Uri uri,ControllerListener<ImageInfo> listener) { JungleSize size = ImageLoaderUtils.getAppropriateSize(draweeView); ImageRequest request = ImageRequestBuilder .newBuilderWithSource(uri) .setResizeOptions(new ResizeOptions(size.mWidth,size.mHeight)) .setAutoRotateEnabled(true) .build(); return Fresco.newDraweeControllerBuilder() .setUri(uri) .setimageRequest(request) .setControllerListener(listener) .setAutoplayAnimations(true) .setoldController(draweeView.getController()) .build(); }
private void loadByFresco(String url) { Uri uri = Uri.parse(url); ControllerListener listener = new BaseControllerListener<ImageInfo>() { @Override public void onFinalimageset(String id,animatable); Log.d(TAG,"Fresco----->onFinalimageset: " + LogTime.getElapsedMillis(startTimeFresco) + "ms"); textFresco.setText(getString(R.string.text_load_time,"Fresco",String.format("%.6f",LogTime.getElapsedMillis(startTimeFresco)))); } }; DraweeController controller = Fresco.newDraweeControllerBuilder() .setControllerListener(listener) .setUri(uri) .build(); imgFresco.setController(controller); }
public static void display(final PhotoDraweeView draweeView,Uri uri) { PipelineDraweeControllerBuilder controller = Fresco.newDraweeControllerBuilder(); controller.setUri(uri); controller.setoldController(draweeView.getController()); controller.setControllerListener(new BaseControllerListener<ImageInfo>() { @Override public void onFinalimageset(String id,animatable); if (imageInfo == null || draweeView == null) { return; } draweeView.update(imageInfo.getWidth(),imageInfo.getHeight()); } }); draweeView.setController(controller.build()); }
/** * 更新图片的尺寸 * @param imageView * @param imageInfo */ private void updateImageSize(SimpleDraweeView imageView,ImageInfo imageInfo){ if(imageInfo != null){ Log.d(TAG,"ImageInfo: width=" + imageInfo.getWidth() + ",height=" + imageInfo.getHeight()); ViewGroup.LayoutParams lp = imageView.getLayoutParams(); final int imageWidth = imageView.getMeasuredWidth(); final int imageHeight = imageView.getMeasuredHeight(); lp.width = imageWidth; lp.height = imageWidth * imageInfo.getHeight() / imageInfo.getWidth(); imageView.setLayoutParams(lp); imageView.setAspectRatio((float)imageInfo.getWidth() / imageInfo.getHeight()); } }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String imageUrl = getIntent().getStringExtra(IMAGE_URL); if (!TextUtils.isEmpty(imageUrl)) { PipelineDraweeControllerBuilder builder = Fresco.newDraweeControllerBuilder(); builder.setUri(Uri.parse(imageUrl)); builder.setoldController(photoView.getController()); builder.setControllerListener(new BaseControllerListener<ImageInfo>() { @Override public void onFinalimageset(String id,animatable); if (imageInfo == null || photoView == null) { return; } photoView.update(imageInfo.getWidth(),imageInfo.getHeight()); } }); photoView.setController(builder.build()); } }
@Override public void onBindItemViewHolder(final ViewHolder holder,final int position) { MediaEntity entity = getItem(position); holder.mImageViewCover.setonClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onItemClickListener.onItemClick(getItem(position)); } }); holder.mTextViewLikesCount.setTextimageStart(18,R.mipmap.ic_thumb_up_gray_18dp," " + entity.getLikes_count()); holder.mTextViewRecommendCaption.setText(entity.getCaption()); String url = entity.getCover_pic().replace("!thumb320",""); DraweeController controller = Fresco.newDraweeControllerBuilder() .setControllerListener(new BaseControllerListener<ImageInfo>() { @Override public void onFinalimageset(String id,Animatable animatable) { float aspectRatio = (float)imageInfo.getWidth() / (float)imageInfo.getHeight(); holder.mImageViewCover.setAspectRatio(aspectRatio); } }) .setUri(Uri.parse(url)) .build(); holder.mImageViewCover.setController(controller); AppUtils.loadSmallUserAvata(getItem(position).getUser(),holder.mImageViewAvatar); }
@Override public void onFinalimageset( String id,Animatable animatable) { if (mEnableResizing && imageInfo != null && mDraweeSpan.getDraweeHolder().getTopLevelDrawable() != null) { Drawable topLevelDrawable = mDraweeSpan.getDraweeHolder().getTopLevelDrawable(); Rect topLevelDrawableBounds = topLevelDrawable.getBounds(); if (mFixedHeight != UNSET_SIZE) { float imageWidth = ((float) mFixedHeight / imageInfo.getHeight()) * imageInfo.getWidth(); int imageWidthPx = (int) imageWidth; if (topLevelDrawableBounds.width() != imageWidthPx || topLevelDrawableBounds.height() != mFixedHeight) { topLevelDrawable.setBounds(0,imageWidthPx,mFixedHeight); if (mDraweeSpanChangedListener != null) { mDraweeSpanChangedListener.onDraweeSpanChanged(DraweeSpanStringBuilder.this); } } } else if (topLevelDrawableBounds.width() != imageInfo.getWidth() || topLevelDrawableBounds.height() != imageInfo.getHeight()) { topLevelDrawable.setBounds(0,imageInfo.getWidth(),imageInfo.getHeight()); if (mDraweeSpanChangedListener != null) { mDraweeSpanChangedListener.onDraweeSpanChanged(DraweeSpanStringBuilder.this); } } } }
@Override protected void init() { super.init(); transparentStatusBar(); ButterKnife.bind(this); url = getIntent().getStringExtra("url"); PipelineDraweeControllerBuilder controller = Fresco.newDraweeControllerBuilder(); controller.setUri(Uri.parse(url)); controller.setAutoplayAnimations(true); controller.setoldController(photoDraweeView.getController()); controller.setControllerListener(new BaseControllerListener<ImageInfo>() { @Override public void onFinalimageset(String id,animatable); if (imageInfo == null || photoDraweeView == null) { return; } photoDraweeView.update(imageInfo.getWidth(),imageInfo.getHeight()); normalScale = photoDraweeView.getScale(); } }); photoDraweeView.setController(controller.build()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ String name = getIntent().getStringExtra("transition_name"); photoDraweeView.setTransitionName(name); getwindow().setSharedElementEnterTransition(DraweeTransition.createTransitionSet( ScalingUtils.ScaleType.CENTER_CROP,ScalingUtils.ScaleType.FIT_CENTER)); getwindow().setSharedElementReturnTransition(DraweeTransition.createTransitionSet( ScalingUtils.ScaleType.FIT_CENTER,ScalingUtils.ScaleType.CENTER_CROP)); } }
/** * 改变图片的尺寸 * * @param imageInfo 获取的图片信息 * @param maxWidth 可显示的最大宽度 * @param view 图片对象 */ private static void changeImageSize(ImageInfo imageInfo,int maxWidth,SimpleDraweeView view) { int height = imageInfo.getHeight(); int width = imageInfo.getWidth(); float scaleWidth = (float) maxWidth / width; int realHeight = (int) (height * scaleWidth); int realWidth = (int) (width * scaleWidth); ViewGroup.LayoutParams params = view.getLayoutParams(); params.height = realHeight; params.width = realWidth; view.setLayoutParams(params); }
@Override public void onFinalimageset(String id,@Nullable Animatable animatable) { super.onFinalimageset(id,animatable); final ImageInfo info = mIconImageInfo != null ? mIconImageInfo : imageInfo; setDrawable(new DrawableWithIntrinsicSize(mHolder.getTopLevelDrawable(),info)); }
public static void loadFileFromSdcard(final Context context,final SimpleDraweeView draweeView,Uri loackUri,final int reqWidth,final int reqHeight) { ImageRequest request = ImageRequestBuilder.newBuilderWithSource(loackUri) .setRotationoptions(Rotationoptions.autoRotate()) .setLocalThumbnailPreviewsEnabled(true) .setResizeOptions(new ResizeOptions(dip2px(context,140),dip2px(context,220))) .build(); DraweeController controller = Fresco.newDraweeControllerBuilder() .setimageRequest(request) .setoldController(draweeView.getController()) .setTapToRetryEnabled(true) .setControllerListener(new BaseControllerListener<ImageInfo>() { @Override public void onFinalimageset(String id,Animatable anim) { if (imageInfo == null) { return; } ViewGroup.LayoutParams layoutParams = draweeView.getLayoutParams(); int width = reqWidth; int height = reqHeight; int imgWidth = dip2px(context,140); int imgHight = dip2px(context,220); int bitScalew = getRatioSize(width,height,imgHight,imgWidth); layoutParams.height = height / bitScalew; layoutParams.width = width / bitScalew; draweeView.requestLayout(); } }) .setAutoplayAnimations(true) .build(); draweeView.setController(controller); }
@Override public void onFinalimageset(String id,@Nullable Animatable animatable) { super.onFinalimageset(id,animatable); final ImageInfo info = mIconImageInfo != null ? mIconImageInfo : imageInfo; setDrawable(new DrawableWithIntrinsicSize(mHolder.getTopLevelDrawable(),info)); }
public void setShouldNotifyLoadEvents(boolean shouldNotify) { if (!shouldNotify) { mControllerListener = null; } else { final Eventdispatcher mEventdispatcher = ((ReactContext) getContext()). getNativeModule(UIManagerModule.class).getEventdispatcher(); mControllerListener = new BaseControllerListener<ImageInfo>() { @Override public void onSubmit(String id,Object callerContext) { mEventdispatcher.dispatchEvent( new ImageLoadEvent(getId(),ImageLoadEvent.ON_LOAD_START)); } @Override public void onFinalimageset( String id,@Nullable final ImageInfo imageInfo,@Nullable Animatable animatable) { if (imageInfo != null) { mEventdispatcher.dispatchEvent( new ImageLoadEvent(getId(),ImageLoadEvent.ON_LOAD,mImageSource.getSource(),imageInfo.getHeight())); mEventdispatcher.dispatchEvent( new ImageLoadEvent(getId(),ImageLoadEvent.ON_LOAD_END)); } } @Override public void onFailure(String id,Throwable throwable) { mEventdispatcher.dispatchEvent( new ImageLoadEvent(getId(),ImageLoadEvent.ON_ERROR)); mEventdispatcher.dispatchEvent( new ImageLoadEvent(getId(),ImageLoadEvent.ON_LOAD_END)); } }; } mIsDirty = true; }
@Override public void onFinalimageset(String id,info)); }
@Override public void onFinalimageset(String id,Animatable animatable) { super.onFinalimageset(id,info)); }
@Override public void onFinalimageset(String id,info)); }
/*** * load net work image. * @param url the main url of image,from net * @param lowUrl the low url,from net or local image file name,can be null. * @param placeHolder the place holder. 0 with no place holder * @param errorResId error res id,0 with no error res. * @param width the width you want * @param height the height you want * @param scaleType scale type * @param l BaseControllerListener,can be null */ public void loadImage(String url,String lowUrl,int placeHolder,ScalingUtils.ScaleType scaleType,int width,int height,final BaseControllerListener<ImageInfo> l){ ImageRequest request = ImageRequestBuilder .newBuilderWithSource(Uri.parse(url)) //.setLowestPermittedRequestLevel(ImageRequest.RequestLevel.FULL_FETCH) .setResizeOptions(new ResizeOptions(width,height)) .build(); getHierarchy().setActualImageScaleType(scaleType); if(placeHolder!=0) { getHierarchy().setPlaceholderImage(getResources().getDrawable( placeHolder ),scaleType); } if(errorResId!=0){ getHierarchy().setFailureImage(getResources().getDrawable( errorResId ),scaleType); } PipelineDraweeControllerBuilder controller = Fresco.newDraweeControllerBuilder() .setControllerListener(l) .setimageRequest(request) .setoldController(getController()); if(lowUrl!=null){ Uri lowUri = lowUrl.startsWith("http") ? Uri.parse(lowUrl) : Uri.fromFile(new File(lowUrl)); controller.setLowResImageRequest(ImageRequestBuilder.newBuilderWithSource(lowUri) .setResizeOptions(new ResizeOptions(width,height)) .build() ); } setController(controller.build()); }
private void loadImageURI(Uri uri,@Nullable Object callerContext,int height) { // 对URL做格式转换、尺寸限制等处理 uri = Uri.parse(ImageUtils.format(uri.toString(),displayInfo.getWidthPixels())); ImageRequestBuilder imageRequestBuilder = ImageRequestBuilder.newBuilderWithSource(uri); imageRequestBuilder.setProgressiveRenderingEnabled(true); imageRequestBuilder.setRotationoptions(Rotationoptions.autoRotateAtRenderTime()); if (width > 0 && height > 0) { imageRequestBuilder.setResizeOptions(new ResizeOptions(width,height)); } PipelineDraweeControllerBuilder controller = Fresco.newDraweeControllerBuilder() .setCallerContext(callerContext) .setimageRequest(imageRequestBuilder.build()) .setoldController(getController()) .setAutoplayAnimations(true) // 自动播放动态图 .setTapToRetryEnabled(true) // 在加载失败时,可以点击重新加载 .setControllerListener(new BaseControllerListener<ImageInfo>() { @Override public void onFinalimageset(String id,Animatable animatable) { super.onFinalimageset(id,animatable); onUpdateImage(imageInfo); } }); if (AppUtils.isMainThread()) { setController(controller.build()); } else { Observable.just(0) .observeOn(AndroidSchedulers.mainThread()) .subscribe(it -> setController(controller.build())); } }
/** * 加载远程图片 * * @param url * @param imageSize */ private void displayImage(Uri url,ResizeOptions imageSize,final ImageView imageView,final DraweeHolder<GenericDraweeHierarchy> draweeHolder) { ImageRequest imageRequest = ImageRequestBuilder .newBuilderWithSource(url) .setResizeOptions(imageSize)//图片目标大小 .build(); ImagePipeline imagePipeline = Fresco.getimagePipeline(); final DataSource<CloseableReference<CloseableImage>> dataSource = imagePipeline.fetchDecodedImage(imageRequest,this); DraweeController controller = Fresco.newDraweeControllerBuilder() .setoldController(draweeHolder.getController()) .setimageRequest(imageRequest) .setControllerListener(new BaseControllerListener<ImageInfo>() { @Override public void onFinalimageset(String s,Animatable animatable) { CloseableReference<CloseableImage> imageReference = null; try { imageReference = dataSource.getResult(); if (imageReference != null) { CloseableImage image = imageReference.get(); if (image != null && image instanceof CloseableStaticBitmap) { CloseableStaticBitmap closeableStaticBitmap = (CloseableStaticBitmap) image; Bitmap bitmap = closeableStaticBitmap.getUnderlyingBitmap(); if (bitmap != null && imageView != null) { imageView.setimageBitmap(bitmap); } } } } finally { dataSource.close(); CloseableReference.closeSafely(imageReference); } } }) .setTapToRetryEnabled(true) .build(); draweeHolder.setController(controller); }
@Override public void onFinalimageset(String id,info)); }
@Override public void onFinalimageset( String id,@Nullable Animatable animatable) { CloseableReference<CloseableImage> imageReference = null; try { imageReference = dataSource.getResult(); if (imageReference != null) { CloseableImage image = imageReference.get(); if (image != null && image instanceof CloseableStaticBitmap) { CloseableStaticBitmap closeableStaticBitmap = (CloseableStaticBitmap) image; Bitmap bitmap = closeableStaticBitmap.getUnderlyingBitmap(); if (bitmap != null) { bitmap = bitmap.copy(Bitmap.Config.ARGB_8888,true); iconBitmap = bitmap; iconBitmapDescriptor = BitmapDescriptorFactory.fromBitmap(bitmap); } } } } finally { dataSource.close(); if (imageReference != null) { CloseableReference.closeSafely(imageReference); } } update(); }
void updateViewSize(@NonNull SimpleDraweeView draweeView,@Nullable ImageInfo imageInfo) { if (imageInfo != null) { // draweeView.getLayoutParams().width = imageInfo.getWidth(); draweeView.getLayoutParams().width = ContextUtils.getMetrics(mContext).widthPixels/2; draweeView.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT; draweeView.setAspectRatio((float) imageInfo.getWidth() / imageInfo.getHeight()); } }
public void setController(@NonNull SimpleDraweeView draweeView,@Nullable String uri,@Nullable ControllerListener<ImageInfo> controllerListener){ DraweeController draweeController = initControllerBuilder() .setoldController(draweeView.getController()) .setUri(uri) .setControllerListener(controllerListener) .build(); draweeView.setController(draweeController); }
public void setimageRequest(@NonNull SimpleDraweeView draweeView,@Nullable ImageRequest imageRequest,@Nullable ControllerListener<ImageInfo> controllerListener){ DraweeController draweeController = initControllerBuilder() .setoldController(draweeView.getController()) .setimageRequest(imageRequest) .setControllerListener(controllerListener) .build(); draweeView.setController(draweeController); }
private static void updateViewSize(@NonNull SimpleDraweeView draweeView,int width) { if (imageInfo != null) { draweeView.getLayoutParams().width = width; draweeView.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT; draweeView.setAspectRatio((float) imageInfo.getWidth() / imageInfo.getHeight()); } }
public void setimageUri(String url) { ImageRequest imageRequest = ImageRequestBuilder.newBuilderWithSource(Uri.parse(url)).build(); ImagePipeline imagePipeline = Fresco.getimagePipeline(); final DataSource<CloseableReference<CloseableImage>> dataSource = imagePipeline.fetchDecodedImage(imageRequest,this); DraweeController controller = Fresco.newDraweeControllerBuilder() .setoldController(mDraweeHolder.getController()) .setimageRequest(imageRequest) .setControllerListener(new BaseControllerListener<ImageInfo>() { @Override public void onFinalimageset(String s,@Nullable Animatable animatable) { try { imageReference = dataSource.getResult(); if (imageReference != null) { CloseableImage image = imageReference.get(); // do something with the image if (image != null && image instanceof CloseableStaticBitmap) { CloseableStaticBitmap closeableStaticBitmap = (CloseableStaticBitmap) image; Bitmap bitmap = closeableStaticBitmap.getUnderlyingBitmap(); if (bitmap != null) { setimageBitmap(bitmap); } } } } finally { dataSource.close(); CloseableReference.closeSafely(imageReference); } } }) .setTapToRetryEnabled(true) .build(); mDraweeHolder.setController(controller); }
public void setimageUri(String uri,int height) { ImageRequest imageRequest = ImageRequestBuilder.newBuilderWithSource(Uri.parse(uri)) .setAutoRotateEnabled(true) .setResizeOptions(new ResizeOptions(width,height)) .build(); ImagePipeline imagePipeline = Fresco.getimagePipeline(); final DataSource<CloseableReference<CloseableImage>> dataSource = imagePipeline.fetchDecodedImage(imageRequest,@Nullable Animatable animatable) { try { imageReference = dataSource.getResult(); if (imageReference != null) { CloseableImage image = imageReference.get(); if (image != null && image instanceof CloseableStaticBitmap) { CloseableStaticBitmap closeableStaticBitmap = (CloseableStaticBitmap) image; Bitmap bitmap = closeableStaticBitmap.getUnderlyingBitmap(); if (bitmap != null) { setimageBitmap(bitmap); } } } } finally { dataSource.close(); CloseableReference.closeSafely(imageReference); } } }) .setTapToRetryEnabled(true) .build(); mDraweeHolder.setController(controller); }
/** * 获取DraweeController * * @param imageRequest 设置单个图片请求~~~不可与setFirstAvailableImageRequests共用,配合setLowResImageRequest为高分辨率的图 * @param lowResImageRequest 先下载显示低分辨率的图 * @param firstAvailableImageRequests 本地图片复用,可加入ImageRequest数组 * @param controllerListener 监听图片下载完毕等 * @param tapToRetryEnabled 点击重新加载图 */ public static PipelineDraweeControllerBuilder getDraweeController(SimpleDraweeView view,ImageRequest lowResImageRequest,@Nullable ImageRequest[] firstAvailableImageRequests,@Nullable ControllerListener<ImageInfo> controllerListener,boolean tapToRetryEnabled) { PipelineDraweeControllerBuilder builder = Fresco .newDraweeControllerBuilder(); //自动播放图片动画 builder.setAutoplayAnimations(true); //点击重新加载图 builder.setTapToRetryEnabled(tapToRetryEnabled); if (firstAvailableImageRequests != null && firstAvailableImageRequests.length > 0) { //本地图片复用,可加入ImageRequest数组 builder.setFirstAvailableImageRequests(firstAvailableImageRequests); } else if (imageRequest != null) { //设置单个图片请求~~~不可与setFirstAvailableImageRequests共用,配合setLowResImageRequest为高分辨率的图 builder.setimageRequest(imageRequest); if (lowResImageRequest != null) { //先下载显示低分辨率的图 builder.setLowResImageRequest(lowResImageRequest); } } if (controllerListener != null) { //监听图片下载完毕等 builder.setControllerListener(controllerListener); } //DraweeController复用 builder.setoldController(view.getController()); return builder; }
@Override public void onFinalimageset(String id,info)); }
@Override public void onFinalimageset(String id,Animatable animatable) { super.onFinalimageset(id,animatable); if(FPFetchCallback ==null || imageInfo == null) return; FrescoLogger.getLogger().log("Bitmap:[height="+imageInfo.getHeight()+",width="+imageInfo.getWidth()+"]"); FPFetchCallback.onSuccess(imageInfo); }
com.facebook.animated.webp.WebPImage的实例源码
@Before public void setup() { powermockito.mockStatic(WebPImage.class); mWebPImageMock = mock(WebPImage.class); mMockAnimatedDrawableBackendProvider = mock(AnimatedDrawableBackendProvider.class); mMockBitmapFactory = mock(PlatformBitmapFactory.class); mAnimatedImageFactory = new AnimatedImageFactoryImpl( mMockAnimatedDrawableBackendProvider,mMockBitmapFactory); ((AnimatedImageFactoryImpl) mAnimatedImageFactory).sWebpAnimatedimagedecoder = mWebPImageMock; }
@Test public void testCreateDefaults() { WebPImage mockWebPImage = mock(WebPImage.class); // Expect a call to WebPImage.create TrivialPooledByteBuffer byteBuffer = createByteBuffer(); when(mWebPImageMock.decode(byteBuffer.getNativePtr(),byteBuffer.size())) .thenReturn(mockWebPImage); EncodedImage encodedImage = new EncodedImage( CloseableReference.of(byteBuffer,FAKE_RESOURCE_RELEASER)); encodedImage.setimageFormat(ImageFormat.UNKNowN); CloseableAnimatedImage closeableImage = (CloseableAnimatedImage) mAnimatedImageFactory.decodeWebP( encodedImage,ImageDecodeOptions.defaults(),DEFAULT_BITMAP_CONfig); // Verify we got the right result AnimatedImageResult imageResult = closeableImage.getimageResult(); assertSame(mockWebPImage,imageResult.getimage()); assertNull(imageResult.getPreviewBitmap()); assertFalse(imageResult.hasDecodedFrame(0)); // Should not have interacted with these. verifyZeroInteractions(mMockAnimatedDrawableBackendProvider); verifyZeroInteractions(mMockBitmapFactory); }
@Before public void setup() { powermockito.mockStatic(WebPImage.class); mWebPImageMock = mock(WebPImage.class); mMockAnimatedDrawableBackendProvider = mock(AnimatedDrawableBackendProvider.class); mMockBitmapFactory = mock(PlatformBitmapFactory.class); mAnimatedImageFactory = new AnimatedImageFactoryImpl( mMockAnimatedDrawableBackendProvider,mMockBitmapFactory); ((AnimatedImageFactoryImpl) mAnimatedImageFactory).sWebpAnimatedimagedecoder = mWebPImageMock; }
@Test public void testCreateDefaults() { WebPImage mockWebPImage = mock(WebPImage.class); // Expect a call to WebPImage.create TrivialPooledByteBuffer byteBuffer = createByteBuffer(); when(mWebPImageMock.decode(byteBuffer.getNativePtr(),imageResult.getimage()); assertNull(imageResult.getPreviewBitmap()); assertFalse(imageResult.hasDecodedFrame(0)); // Should not have interacted with these. verifyZeroInteractions(mMockAnimatedDrawableBackendProvider); verifyZeroInteractions(mMockBitmapFactory); }
@Test public void testCreateWithPreviewBitmap() throws Exception { WebPImage mockWebPImage = mock(WebPImage.class); Bitmap mockBitmap = MockBitmapFactory.create(50,50,DEFAULT_BITMAP_CONfig); // Expect a call to WebPImage.create TrivialPooledByteBuffer byteBuffer = createByteBuffer(); when(mWebPImageMock.decode(byteBuffer.getNativePtr(),byteBuffer.size())) .thenReturn(mockWebPImage); when(mockWebPImage.getWidth()).thenReturn(50); when(mockWebPImage.getHeight()).thenReturn(50); // For decoding preview frame,expect some calls. final AnimatedDrawableBackend mockAnimatedDrawableBackend = createAnimatedDrawableBackendMock(1); when(mMockAnimatedDrawableBackendProvider.get( any(AnimatedImageResult.class),isNull(Rect.class))) .thenReturn(mockAnimatedDrawableBackend); when(mMockBitmapFactory.createBitmapInternal(50,DEFAULT_BITMAP_CONfig)) .thenReturn(CloseableReference.of(mockBitmap,FAKE_BITMAP_RESOURCE_RELEASER)); AnimatedImageCompositor mockCompositor = mock(AnimatedImageCompositor.class); powermockito.whenNew(AnimatedImageCompositor.class) .withAnyArguments() .thenReturn(mockCompositor); ImageDecodeOptions imageDecodeOptions = ImageDecodeOptions.newBuilder() .setDecodePreviewFrame(true) .build(); EncodedImage encodedImage = new EncodedImage( CloseableReference.of(byteBuffer,FAKE_RESOURCE_RELEASER)); encodedImage.setimageFormat(ImageFormat.UNKNowN); CloseableAnimatedImage closeableImage = (CloseableAnimatedImage) mAnimatedImageFactory.decodeWebP( encodedImage,imageDecodeOptions,imageResult.getimage()); assertNotNull(imageResult.getPreviewBitmap()); assertFalse(imageResult.hasDecodedFrame(0)); // Should not have interacted with these. verify(mMockAnimatedDrawableBackendProvider).get( any(AnimatedImageResult.class),isNull(Rect.class)); verifyNoMoreInteractions(mMockAnimatedDrawableBackendProvider); verify(mMockBitmapFactory).createBitmapInternal(50,DEFAULT_BITMAP_CONfig); verifyNoMoreInteractions(mMockBitmapFactory); verify(mockCompositor).renderFrame(0,mockBitmap); }
@Test public void testCreateWithDecodeAlFrames() throws Exception { WebPImage mockWebPImage = mock(WebPImage.class); Bitmap mockBitmap1 = MockBitmapFactory.create(50,DEFAULT_BITMAP_CONfig); Bitmap mockBitmap2 = MockBitmapFactory.create(50,expect some calls. final AnimatedDrawableBackend mockAnimatedDrawableBackend = createAnimatedDrawableBackendMock(2); when( mMockAnimatedDrawableBackendProvider.get( any(AnimatedImageResult.class),isNull(Rect.class))) .thenReturn(mockAnimatedDrawableBackend); when(mMockBitmapFactory.createBitmapInternal(50,DEFAULT_BITMAP_CONfig)) .thenReturn(CloseableReference.of(mockBitmap1,FAKE_BITMAP_RESOURCE_RELEASER)) .thenReturn(CloseableReference.of(mockBitmap2,FAKE_BITMAP_RESOURCE_RELEASER)); AnimatedImageCompositor mockCompositor = mock(AnimatedImageCompositor.class); powermockito.whenNew(AnimatedImageCompositor.class) .withAnyArguments() .thenReturn(mockCompositor); ImageDecodeOptions imageDecodeOptions = ImageDecodeOptions.newBuilder() .setDecodePreviewFrame(true) .setDecodeAllFrames(true) .build(); EncodedImage encodedImage = new EncodedImage( CloseableReference.of(byteBuffer,imageResult.getimage()); assertNotNull(imageResult.getDecodedFrame(0)); assertNotNull(imageResult.getDecodedFrame(1)); assertNotNull(imageResult.getPreviewBitmap()); // Should not have interacted with these. verify(mMockAnimatedDrawableBackendProvider).get( any(AnimatedImageResult.class),isNull(Rect.class)); verifyNoMoreInteractions(mMockAnimatedDrawableBackendProvider); verify(mMockBitmapFactory,times(2)).createBitmapInternal(50,mockBitmap1); verify(mockCompositor).renderFrame(1,mockBitmap2); }
@Test public void testCreateWithPreviewBitmap() throws Exception { WebPImage mockWebPImage = mock(WebPImage.class); Bitmap mockBitmap = MockBitmapFactory.create(50,mockBitmap); }
@Test public void testCreateWithDecodeAlFrames() throws Exception { WebPImage mockWebPImage = mock(WebPImage.class); Bitmap mockBitmap1 = MockBitmapFactory.create(50,mockBitmap2); }
com.facebook.imagepipeline.animated.base.AnimatedDrawable的实例源码
private Drawable createDrawableFromFetchedResult(Context context,CloseableImage image) { if (image instanceof CloseableStaticBitmap) { CloseableStaticBitmap closeableStaticBitmap = (CloseableStaticBitmap) image; BitmapDrawable bitmapDrawable = createBitmapDrawable(context,closeableStaticBitmap.getUnderlyingBitmap()); return (closeableStaticBitmap.getRotationAngle() != 0 && closeableStaticBitmap.getRotationAngle() != -1 ? new OrientedDrawable(bitmapDrawable,closeableStaticBitmap.getRotationAngle()) : bitmapDrawable); } else if (image instanceof CloseableAnimatedImage) { AnimatedDrawableFactory animatedDrawableFactory = Fresco.getimagePipelineFactory().getAnimatedFactory().getAnimatedDrawableFactory(context); if (animatedDrawableFactory != null) { AnimatedDrawable animatedDrawable = (AnimatedDrawable) animatedDrawableFactory.create(image); if (animatedDrawable != null) { return animatedDrawable; } } } throw new UnsupportedOperationException("Unrecognized image class: " + image); }
private Drawable createDrawableFromFetchedResult(Context context,closeableStaticBitmap.getRotationAngle()) : bitmapDrawable); } else if (image instanceof CloseableAnimatedImage) { AnimatedDrawableFactory animatedDrawableFactory = Fresco.getimagePipelineFactory().getAnimatedFactory().getAnimatedDrawableFactory(context); if (animatedDrawableFactory != null) { AnimatedDrawable animatedDrawable = (AnimatedDrawable) animatedDrawableFactory.create(image); if (animatedDrawable != null) { return animatedDrawable; } } } throw new UnsupportedOperationException("Unrecognized image class: " + image); }
private void handleAnimateBitmap(CloseableAnimatedImage animatedImage,int position) { AnimatedDrawableFactory animatedDrawableFactory = Fresco.getimagePipelineFactory().getAnimatedDrawableFactory(); AnimatedDrawable drawable = animatedDrawableFactory.create(animatedImage.getimageResult()); Bitmap bitmap = drawable2Bitmap(drawable); map.put(position,bitmap); }
com.facebook.imagepipeline.animated.base.AnimatedImageFrame的实例源码
private void renderImageSupportsScaling(Canvas canvas,AnimatedImageFrame frame) { double xScale = (double) mRenderedBounds.width() / (double) mAnimatedImage.getWidth(); double yScale = (double) mRenderedBounds.height() / (double) mAnimatedImage.getHeight(); int frameWidth = (int) Math.round(frame.getWidth() * xScale); int frameHeight = (int) Math.round(frame.getHeight() * yScale); int xOffset = (int) (frame.getXOffset() * xScale); int yOffset = (int) (frame.getYOffset() * yScale); synchronized (this) { prepareTempBitmapForThisSize(mRenderedBounds.width(),mRenderedBounds.height()); frame.renderFrame(frameWidth,frameHeight,mTempBitmap); // Temporary bitmap can be bigger than frame,so we should draw only rendered area of bitmap mRenderSrcRect.set(0,mRenderedBounds.width(),mRenderedBounds.height()); mRenderDstRect.set(xOffset,yOffset,mRenderedBounds.height()); canvas.drawBitmap(mTempBitmap,mRenderSrcRect,mRenderDstRect,null); } }
private void renderImageDoesNotSupportScaling(Canvas canvas,AnimatedImageFrame frame) { int frameWidth = frame.getWidth(); int frameHeight = frame.getHeight(); int xOffset = frame.getXOffset(); int yOffset = frame.getYOffset(); synchronized (this) { prepareTempBitmapForThisSize(frameWidth,frameHeight); frame.renderFrame(frameWidth,frameWidth,frameHeight); mRenderDstRect.set(0,frameHeight); float xScale = (float) mRenderedBounds.width() / (float) mAnimatedImage.getWidth(); float yScale = (float) mRenderedBounds.height() / (float) mAnimatedImage.getHeight(); canvas.save(); canvas.scale(xScale,yScale); canvas.translate(xOffset,yOffset); canvas.drawBitmap(mTempBitmap,null); canvas.restore(); } }
private void renderImageSupportsScaling(Canvas canvas,AnimatedImageFrame frame) { double xScale = (double) mRenderedBounds.width() / (double) mAnimatedImage.getWidth(); double yScale = (double) mRenderedBounds.height() / (double) mAnimatedImage.getHeight(); int frameWidth = (int) Math.round(frame.getWidth() * xScale); int frameHeight = (int) Math.round(frame.getHeight() * yScale); int xOffset = (int) (frame.getXOffset() * xScale); int yOffset = (int) (frame.getYOffset() * yScale); synchronized (this) { int renderedWidth = mRenderedBounds.width(); int renderedHeight = mRenderedBounds.height(); // Update the temp bitmap to be >= rendered dimensions prepareTempBitmapForThisSize(renderedWidth,renderedHeight); frame.renderFrame(frameWidth,mTempBitmap); // Temporary bitmap can be bigger than frame,renderedWidth,renderedHeight); mRenderDstRect.set(xOffset,xOffset + renderedWidth,yOffset + renderedHeight); canvas.drawBitmap(mTempBitmap,null); } }
private void renderImageDoesNotSupportScaling(Canvas canvas,null); canvas.restore(); } }
@Override public void renderFrame(int frameNumber,Canvas canvas) { AnimatedImageFrame frame = mAnimatedImage.getFrame(frameNumber); try { if (mAnimatedImage.doesRenderSupportScaling()) { renderImageSupportsScaling(canvas,frame); } else { renderImageDoesNotSupportScaling(canvas,frame); } } finally { frame.dispose(); } }
@Override public void renderFrame(int frameNumber,frame); } } finally { frame.dispose(); } }
com.facebook.imagepipeline.animated.base.AnimatedImageResult的实例源码
public AnimatedDrawableBackendImpl( AnimatedDrawableutil animatedDrawableutil,AnimatedImageResult animatedImageResult,Rect bounds) { mAnimatedDrawableutil = animatedDrawableutil; mAnimatedImageResult = animatedImageResult; mAnimatedImage = animatedImageResult.getimage(); mFrameDurationsMs = mAnimatedImage.getFrameDurations(); mAnimatedDrawableutil.fixFrameDurations(mFrameDurationsMs); mDurationMs = mAnimatedDrawableutil.getTotalDurationFromFrameDurations(mFrameDurationsMs); mFrameTimestampsMs = mAnimatedDrawableutil.getFrameTimeStampsFromDurations(mFrameDurationsMs); mRenderedBounds = getBoundsToUse(mAnimatedImage,bounds); mFrameInfos = new AnimatedDrawableFrameInfo[mAnimatedImage.getFrameCount()]; for (int i = 0; i < mAnimatedImage.getFrameCount(); i++) { mFrameInfos[i] = mAnimatedImage.getFrameInfo(i); } }
public AnimatedDrawableBackendImpl( AnimatedDrawableutil animatedDrawableutil,bounds); mFrameInfos = new AnimatedDrawableFrameInfo[mAnimatedImage.getFrameCount()]; for (int i = 0; i < mAnimatedImage.getFrameCount(); i++) { mFrameInfos[i] = mAnimatedImage.getFrameInfo(i); } }
private AnimationBackend createAnimationBackend(AnimatedImageResult animatedImageResult) { AnimatedDrawableBackend animatedDrawableBackend = createAnimatedDrawableBackend(animatedImageResult); BitmapFrameCache bitmapFrameCache = createBitmapFrameCache(animatedImageResult); BitmapFrameRenderer bitmapFrameRenderer = new AnimatedDrawableBackendFrameRenderer(bitmapFrameCache,animatedDrawableBackend); int numberOfFramesToPrefetch = mNumberOfFramesToPreparesupplier.get(); BitmapFramePreparationStrategy bitmapFramePreparationStrategy = null; BitmapFramePreparer bitmapFramePreparer = null; if (numberOfFramesToPrefetch > 0) { bitmapFramePreparationStrategy = new FixednumberBitmapFramePreparationStrategy(); bitmapFramePreparer = createBitmapFramePreparer(bitmapFrameRenderer); } BitmapAnimationBackend bitmapAnimationBackend = new BitmapAnimationBackend( mPlatformBitmapFactory,bitmapFrameCache,new AnimatedDrawableBackendAnimationinformation(animatedDrawableBackend),bitmapFrameRenderer,bitmapFramePreparationStrategy,bitmapFramePreparer); return AnimationBackendDelegateWithInactivityCheck.createForBackend( bitmapAnimationBackend,mMonotonicclock,mscheduledexecutorserviceForUiThread); }
private BitmapFrameCache createBitmapFrameCache(AnimatedImageResult animatedImageResult) { switch (mCachingStrategysupplier.get()) { case CACHING_STRATEGY_FRESCO_CACHE: return new FrescoFrameCache(createAnimatedFrameCache(animatedImageResult),true); case CACHING_STRATEGY_FRESCO_CACHE_NO_REUSING: return new FrescoFrameCache(createAnimatedFrameCache(animatedImageResult),false); case CACHING_STRATEGY_KEEP_LAST_CACHE: return new KeepLastFrameCache(); case CACHING_STRATEGY_NO_CACHE: default: return new NoOpCache(); } }
private AnimatedDrawableBackendProvider getAnimatedDrawableBackendProvider() { if (mAnimatedDrawableBackendProvider == null) { mAnimatedDrawableBackendProvider = new AnimatedDrawableBackendProvider() { @Override public AnimatedDrawableBackend get(AnimatedImageResult animatedImageResult,Rect bounds) { return new AnimatedDrawableBackendImpl( getAnimatedDrawableutil(),animatedImageResult,bounds); } }; } return mAnimatedDrawableBackendProvider; }
private AnimatedImageFactory buildAnimatedImageFactory() { AnimatedDrawableBackendProvider animatedDrawableBackendProvider = new AnimatedDrawableBackendProvider() { @Override public AnimatedDrawableBackend get(AnimatedImageResult imageResult,Rect bounds) { return new AnimatedDrawableBackendImpl(getAnimatedDrawableutil(),imageResult,bounds); } }; return new AnimatedImageFactoryImpl(animatedDrawableBackendProvider,mPlatformBitmapFactory); }
@Override public void close() { AnimatedImageResult imageResult; synchronized (this) { if (mImageResult == null) { return; } imageResult = mImageResult; mImageResult = null; } imageResult.dispose(); }
private CloseableImage getCloseableImage( ImageDecodeOptions options,AnimatedImage image,Bitmap.Config bitmapConfig) { List<CloseableReference<Bitmap>> decodedFrames = null; CloseableReference<Bitmap> previewBitmap = null; try { final int frameForPreview = options.useLastFrameForPreview ? image.getFrameCount() - 1 : 0; if (options.forceStaticImage) { return new CloseableStaticBitmap( createPreviewBitmap(image,bitmapConfig,frameForPreview),ImmutableQualityInfo.FULL_QUALITY,0); } if (options.decodeAllFrames) { decodedFrames = decodeAllFrames(image,bitmapConfig); previewBitmap = CloseableReference.cloneOrNull(decodedFrames.get(frameForPreview)); } if (options.decodePreviewFrame && previewBitmap == null) { previewBitmap = createPreviewBitmap(image,frameForPreview); } AnimatedImageResult animatedImageResult = AnimatedImageResult.newBuilder(image) .setPreviewBitmap(previewBitmap) .setFrameForPreview(frameForPreview) .setDecodedFrames(decodedFrames) .build(); return new CloseableAnimatedImage(animatedImageResult); } finally { CloseableReference.closeSafely(previewBitmap); CloseableReference.closeSafely(decodedFrames); } }
@Test public void testCreateDefaults() { WebPImage mockWebPImage = mock(WebPImage.class); // Expect a call to WebPImage.create TrivialPooledByteBuffer byteBuffer = createByteBuffer(); when(mWebPImageMock.decode(byteBuffer.getNativePtr(),byteBuffer.size())) .thenReturn(mockWebPImage); EncodedImage encodedImage = new EncodedImage( CloseableReference.of(byteBuffer,FAKE_RESOURCE_RELEASER)); encodedImage.setimageFormat(ImageFormat.UNKNowN); CloseableAnimatedImage closeableImage = (CloseableAnimatedImage) mAnimatedImageFactory.decodeWebP( encodedImage,ImageDecodeOptions.defaults(),DEFAULT_BITMAP_CONfig); // Verify we got the right result AnimatedImageResult imageResult = closeableImage.getimageResult(); assertSame(mockWebPImage,imageResult.getimage()); assertNull(imageResult.getPreviewBitmap()); assertFalse(imageResult.hasDecodedFrame(0)); // Should not have interacted with these. verifyZeroInteractions(mMockAnimatedDrawableBackendProvider); verifyZeroInteractions(mMockBitmapFactory); }
@Test public void testCreateDefaults() { GifImage mockGifImage = mock(GifImage.class); // Expect a call to GifImage.create TrivialPooledByteBuffer byteBuffer = createByteBuffer(); when(mGifImageMock.decode(byteBuffer.getNativePtr(),byteBuffer.size())) .thenReturn(mockGifImage); EncodedImage encodedImage = new EncodedImage( CloseableReference.of(byteBuffer,FAKE_RESOURCE_RELEASER)); encodedImage.setimageFormat(ImageFormat.UNKNowN); CloseableAnimatedImage closeableImage = (CloseableAnimatedImage) mAnimatedImageFactory.decodeGif( encodedImage,DEFAULT_BITMAP_CONfig); // Verify we got the right result AnimatedImageResult imageResult = closeableImage.getimageResult(); assertSame(mockGifImage,imageResult.getimage()); assertNull(imageResult.getPreviewBitmap()); assertFalse(imageResult.hasDecodedFrame(0)); // Should not have interacted with these. verifyZeroInteractions(mMockAnimatedDrawableBackendProvider); verifyZeroInteractions(mMockBitmapFactory); }
private AnimationBackend createAnimationBackend(AnimatedImageResult animatedImageResult) { AnimatedDrawableBackend animatedDrawableBackend = createAnimatedDrawableBackend(animatedImageResult); BitmapFrameCache bitmapFrameCache = createBitmapFrameCache(animatedImageResult); BitmapFrameRenderer bitmapFrameRenderer = new AnimatedDrawableBackendFrameRenderer(bitmapFrameCache,animatedDrawableBackend); int numberOfFramesToPrefetch = mNumberOfFramesToPreparesupplier.get(); BitmapFramePreparationStrategy bitmapFramePreparationStrategy = null; BitmapFramePreparer bitmapFramePreparer = null; if (numberOfFramesToPrefetch > 0) { bitmapFramePreparationStrategy = new FixednumberBitmapFramePreparationStrategy(numberOfFramesToPrefetch); bitmapFramePreparer = createBitmapFramePreparer(bitmapFrameRenderer); } BitmapAnimationBackend bitmapAnimationBackend = new BitmapAnimationBackend( mPlatformBitmapFactory,mscheduledexecutorserviceForUiThread); }
private BitmapFrameCache createBitmapFrameCache(AnimatedImageResult animatedImageResult) { switch (mCachingStrategysupplier.get()) { case CACHING_STRATEGY_FRESCO_CACHE: return new FrescoFrameCache(createAnimatedFrameCache(animatedImageResult),false); case CACHING_STRATEGY_KEEP_LAST_CACHE: return new KeepLastFrameCache(); case CACHING_STRATEGY_NO_CACHE: default: return new NoOpCache(); } }
private AnimatedDrawableBackendProvider getAnimatedDrawableBackendProvider() { if (mAnimatedDrawableBackendProvider == null) { mAnimatedDrawableBackendProvider = new AnimatedDrawableBackendProvider() { @Override public AnimatedDrawableBackend get(AnimatedImageResult animatedImageResult,bounds); } }; } return mAnimatedDrawableBackendProvider; }
private AnimatedImageFactory buildAnimatedImageFactory() { AnimatedDrawableBackendProvider animatedDrawableBackendProvider = new AnimatedDrawableBackendProvider() { @Override public AnimatedDrawableBackend get(AnimatedImageResult imageResult,mPlatformBitmapFactory); }
@Override public void close() { AnimatedImageResult imageResult; synchronized (this) { if (mImageResult == null) { return; } imageResult = mImageResult; mImageResult = null; } imageResult.dispose(); }
private CloseableImage getCloseableImage( ImageDecodeOptions options,frameForPreview); } AnimatedImageResult animatedImageResult = AnimatedImageResult.newBuilder(image) .setPreviewBitmap(previewBitmap) .setFrameForPreview(frameForPreview) .setDecodedFrames(decodedFrames) .build(); return new CloseableAnimatedImage(animatedImageResult); } finally { CloseableReference.closeSafely(previewBitmap); CloseableReference.closeSafely(decodedFrames); } }
@Test public void testCreateDefaults() { WebPImage mockWebPImage = mock(WebPImage.class); // Expect a call to WebPImage.create TrivialPooledByteBuffer byteBuffer = createByteBuffer(); when(mWebPImageMock.decode(byteBuffer.getNativePtr(),imageResult.getimage()); assertNull(imageResult.getPreviewBitmap()); assertFalse(imageResult.hasDecodedFrame(0)); // Should not have interacted with these. verifyZeroInteractions(mMockAnimatedDrawableBackendProvider); verifyZeroInteractions(mMockBitmapFactory); }
@Test public void testCreateDefaults() { GifImage mockGifImage = mock(GifImage.class); // Expect a call to GifImage.create TrivialPooledByteBuffer byteBuffer = createByteBuffer(); when(mGifImageMock.decode(byteBuffer.getNativePtr(),imageResult.getimage()); assertNull(imageResult.getPreviewBitmap()); assertFalse(imageResult.hasDecodedFrame(0)); // Should not have interacted with these. verifyZeroInteractions(mMockAnimatedDrawableBackendProvider); verifyZeroInteractions(mMockBitmapFactory); }
private AnimatedDrawableBackend createAnimatedDrawableBackend( AnimatedImageResult animatedImageResult) { AnimatedImage animatedImage = animatedImageResult.getimage(); Rect initialBounds = new Rect(0,animatedImage.getWidth(),animatedImage.getHeight()); return mAnimatedDrawableBackendProvider.get(animatedImageResult,initialBounds); }
private AnimatedFrameCache createAnimatedFrameCache( final AnimatedImageResult animatedImageResult) { return new AnimatedFrameCache( new AnimationFrameCacheKey(animatedImageResult.hashCode()),mbackingCache); }
public CloseableAnimatedImage(AnimatedImageResult imageResult) { mImageResult = imageResult; }
public synchronized AnimatedImageResult getimageResult() { return mImageResult; }
@Override public AnimatedImageResult getAnimatedImageResult() { return mAnimatedImageResult; }
@Override public AnimatedImageResult getAnimatedImageResult() { return null; }
@Test public void testCreateWithPreviewBitmap() throws Exception { WebPImage mockWebPImage = mock(WebPImage.class); Bitmap mockBitmap = MockBitmapFactory.create(50,50,DEFAULT_BITMAP_CONfig); // Expect a call to WebPImage.create TrivialPooledByteBuffer byteBuffer = createByteBuffer(); when(mWebPImageMock.decode(byteBuffer.getNativePtr(),byteBuffer.size())) .thenReturn(mockWebPImage); when(mockWebPImage.getWidth()).thenReturn(50); when(mockWebPImage.getHeight()).thenReturn(50); // For decoding preview frame,expect some calls. final AnimatedDrawableBackend mockAnimatedDrawableBackend = createAnimatedDrawableBackendMock(1); when(mMockAnimatedDrawableBackendProvider.get( any(AnimatedImageResult.class),isNull(Rect.class))) .thenReturn(mockAnimatedDrawableBackend); when(mMockBitmapFactory.createBitmapInternal(50,DEFAULT_BITMAP_CONfig)) .thenReturn(CloseableReference.of(mockBitmap,FAKE_BITMAP_RESOURCE_RELEASER)); AnimatedImageCompositor mockCompositor = mock(AnimatedImageCompositor.class); powermockito.whenNew(AnimatedImageCompositor.class) .withAnyArguments() .thenReturn(mockCompositor); ImageDecodeOptions imageDecodeOptions = ImageDecodeOptions.newBuilder() .setDecodePreviewFrame(true) .build(); EncodedImage encodedImage = new EncodedImage( CloseableReference.of(byteBuffer,FAKE_RESOURCE_RELEASER)); encodedImage.setimageFormat(ImageFormat.UNKNowN); CloseableAnimatedImage closeableImage = (CloseableAnimatedImage) mAnimatedImageFactory.decodeWebP( encodedImage,imageDecodeOptions,imageResult.getimage()); assertNotNull(imageResult.getPreviewBitmap()); assertFalse(imageResult.hasDecodedFrame(0)); // Should not have interacted with these. verify(mMockAnimatedDrawableBackendProvider).get( any(AnimatedImageResult.class),isNull(Rect.class)); verifyNoMoreInteractions(mMockAnimatedDrawableBackendProvider); verify(mMockBitmapFactory).createBitmapInternal(50,DEFAULT_BITMAP_CONfig); verifyNoMoreInteractions(mMockBitmapFactory); verify(mockCompositor).renderFrame(0,mockBitmap); }
@Test public void testCreateWithDecodeAlFrames() throws Exception { WebPImage mockWebPImage = mock(WebPImage.class); Bitmap mockBitmap1 = MockBitmapFactory.create(50,DEFAULT_BITMAP_CONfig); Bitmap mockBitmap2 = MockBitmapFactory.create(50,expect some calls. final AnimatedDrawableBackend mockAnimatedDrawableBackend = createAnimatedDrawableBackendMock(2); when( mMockAnimatedDrawableBackendProvider.get( any(AnimatedImageResult.class),isNull(Rect.class))) .thenReturn(mockAnimatedDrawableBackend); when(mMockBitmapFactory.createBitmapInternal(50,DEFAULT_BITMAP_CONfig)) .thenReturn(CloseableReference.of(mockBitmap1,FAKE_BITMAP_RESOURCE_RELEASER)) .thenReturn(CloseableReference.of(mockBitmap2,FAKE_BITMAP_RESOURCE_RELEASER)); AnimatedImageCompositor mockCompositor = mock(AnimatedImageCompositor.class); powermockito.whenNew(AnimatedImageCompositor.class) .withAnyArguments() .thenReturn(mockCompositor); ImageDecodeOptions imageDecodeOptions = ImageDecodeOptions.newBuilder() .setDecodePreviewFrame(true) .setDecodeAllFrames(true) .build(); EncodedImage encodedImage = new EncodedImage( CloseableReference.of(byteBuffer,imageResult.getimage()); assertNotNull(imageResult.getDecodedFrame(0)); assertNotNull(imageResult.getDecodedFrame(1)); assertNotNull(imageResult.getPreviewBitmap()); // Should not have interacted with these. verify(mMockAnimatedDrawableBackendProvider).get( any(AnimatedImageResult.class),isNull(Rect.class)); verifyNoMoreInteractions(mMockAnimatedDrawableBackendProvider); verify(mMockBitmapFactory,times(2)).createBitmapInternal(50,mockBitmap1); verify(mockCompositor).renderFrame(1,mockBitmap2); }
@Test public void testCreateWithPreviewBitmap() throws Exception { GifImage mockGifImage = mock(GifImage.class); Bitmap mockBitmap = MockBitmapFactory.create(50,DEFAULT_BITMAP_CONfig); // Expect a call to WebPImage.create TrivialPooledByteBuffer byteBuffer = createByteBuffer(); when(mGifImageMock.decode(byteBuffer.getNativePtr(),byteBuffer.size())) .thenReturn(mockGifImage); when(mockGifImage.getWidth()).thenReturn(50); when(mockGifImage.getHeight()).thenReturn(50); // For decoding preview frame,expect some calls. final AnimatedDrawableBackend mockAnimatedDrawableBackend = createAnimatedDrawableBackendMock(1); when(mMockAnimatedDrawableBackendProvider.get( any(AnimatedImageResult.class),FAKE_RESOURCE_RELEASER)); encodedImage.setimageFormat(ImageFormat.UNKNowN); CloseableAnimatedImage closeableImage = (CloseableAnimatedImage) mAnimatedImageFactory.decodeGif( encodedImage,mockBitmap); }
@Test public void testCreateWithDecodeAlFrames() throws Exception { GifImage mockGifImage = mock(GifImage.class); Bitmap mockBitmap1 = MockBitmapFactory.create(50,DEFAULT_BITMAP_CONfig); // Expect a call to GifImage.create TrivialPooledByteBuffer byteBuffer = createByteBuffer(); when(mGifImageMock.decode(byteBuffer.getNativePtr(),expect some calls. final AnimatedDrawableBackend mockAnimatedDrawableBackend = createAnimatedDrawableBackendMock(2); when( mMockAnimatedDrawableBackendProvider.get( any(AnimatedImageResult.class),mockBitmap2); }
private AnimatedDrawableBackend createAnimatedDrawableBackend( AnimatedImageResult animatedImageResult) { AnimatedImage animatedImage = animatedImageResult.getimage(); Rect initialBounds = new Rect(0,initialBounds); }
private AnimatedFrameCache createAnimatedFrameCache( final AnimatedImageResult animatedImageResult) { return new AnimatedFrameCache( new AnimationFrameCacheKey(animatedImageResult.hashCode()),mbackingCache); }
public CloseableAnimatedImage(AnimatedImageResult imageResult) { mImageResult = imageResult; }
public synchronized AnimatedImageResult getimageResult() { return mImageResult; }
@Override public AnimatedImageResult getAnimatedImageResult() { return mAnimatedImageResult; }
@Override public AnimatedImageResult getAnimatedImageResult() { return null; }
@Test public void testCreateWithPreviewBitmap() throws Exception { WebPImage mockWebPImage = mock(WebPImage.class); Bitmap mockBitmap = MockBitmapFactory.create(50,mockBitmap); }
@Test public void testCreateWithDecodeAlFrames() throws Exception { WebPImage mockWebPImage = mock(WebPImage.class); Bitmap mockBitmap1 = MockBitmapFactory.create(50,mockBitmap2); }
@Test public void testCreateWithPreviewBitmap() throws Exception { GifImage mockGifImage = mock(GifImage.class); Bitmap mockBitmap = MockBitmapFactory.create(50,mockBitmap); }
@Test public void testCreateWithDecodeAlFrames() throws Exception { GifImage mockGifImage = mock(GifImage.class); Bitmap mockBitmap1 = MockBitmapFactory.create(50,mockBitmap2); }
/** * Creates a new {@link AnimatedDrawableBackend}. * * @param animatedImageResult the image result. * @param bounds the initial bounds for the drawable * @return a new {@link AnimatedDrawableBackend} */ AnimatedDrawableBackend get(AnimatedImageResult animatedImageResult,Rect bounds);
/** * Creates a new {@link AnimatedDrawableBackend}. * * @param animatedImageResult the image result. * @param bounds the initial bounds for the drawable * @return a new {@link AnimatedDrawableBackend} */ AnimatedDrawableBackend get(AnimatedImageResult animatedImageResult,Rect bounds);
关于com.facebook.imagepipeline.image.ImageInfo的实例源码和facebook源代码的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于com.facebook.animated.webp.WebPImage的实例源码、com.facebook.imagepipeline.animated.base.AnimatedDrawable的实例源码、com.facebook.imagepipeline.animated.base.AnimatedImageFrame的实例源码、com.facebook.imagepipeline.animated.base.AnimatedImageResult的实例源码等相关内容,可以在本站寻找。
本文标签: