1:fresco下载图片
ImageRequest imageRequest= ImageRequestBuilder.newBuilderWithSource(Uri.parse(url)).setProgressiveRenderingEnabled(true).build(); ImagePipeline imagePipeline = Fresco.getImagePipeline(); DataSource<CloseableReference<CloseableImage>> dataSource = imagePipeline.fetchDecodedImage(imageRequest, MainActivity.this); dataSource.subscribe(new BaseBitmapDataSubscriber() { @Override public void onNewResultImpl(@Nullable final Bitmap bitmap2) { // You can use the bitmap in only limited ways // No need to do any cleanup. Log.d(TAG, "onNewResultImpl: 1111"); Message message =handler.obtainMessage(); message.obj=bitmap2; message.what=0; handlerone.sendMessage(message); } @Override public void onFailureImpl(DataSource dataSource) { // No cleanup required here. Log.d(TAG, "onFailureImpl: "); } }, CallerThreadExecutor.getInstance()); 2:压缩图片 private void compressPic(int width , int height, Uri uri, SimpleDraweeView view){ ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri) .setResizeOptions(new ResizeOptions(width,height)) .build(); ControllerListener controllerListener = new BaseControllerListener<ImageInfo>() { @Override public void onFinalImageSet( String id, @Nullable ImageInfo imageInfo, @Nullable Animatable anim) { if (imageInfo == null) { return; } QualityInfo qualityInfo = imageInfo.getQualityInfo(); Log.e("logogetHeight===", "" + imageInfo.getHeight()); Log.e("logogetWidth===", "" + imageInfo.getWidth()); } @Override public void onIntermediateImageSet(String id, @Nullable ImageInfo imageInfo) { } @Override public void onFailure(String id, Throwable throwable) { Log.e("logo==","onFailure"); } }; DraweeController controller = Fresco.newDraweeControllerBuilder().setControllerListener(controllerListener).setImageRequest(request).build(); view.setController(controller); } 3:图片做圆形处理:
RoundingParams roundingParams=RoundingParams.fromCornersRadius(5f); roundingParams.setRoundAsCircle(true); draweeView.getHierarchy().setRoundingParams(roundingParams); 4:常见属性的设置
GenericDraweeHierarchyBuilder builder = new GenericDraweeHierarchyBuilder(getResources()); GenericDraweeHierarchy hierarchy = builder .setFadeDuration(300) .setPlaceholderImage(R.mipmap.ic_launcher) .setFailureImage(R.mipmap.abc) .setProgressBarImage(new ProgressBarDrawable()) .setActualImageScaleType(ScalingUtils.ScaleType.FIT_XY) .build(); draweeView = (SimpleDraweeView) findViewById(R.id.my_image_view); draweeView.setHierarchy(hierarchy); 5:
Postprocessor redMeshPostprocessor = new BasePostprocessor() { @Override public CloseableReference<Bitmap> process( Bitmap sourceBitmap, PlatformBitmapFactory bitmapFactory) { CloseableReference<Bitmap> bitmapRef = bitmapFactory.createBitmap( sourceBitmap.getWidth() / 2, sourceBitmap.getHeight() / 2); try { Bitmap destBitmap = bitmapRef.get(); for (int x = 0; x < destBitmap.getWidth(); x+=2) { for (int y = 0; y < destBitmap.getHeight(); y+=2) { destBitmap.setPixel(x, y, sourceBitmap.getPixel(x, y)); } } return CloseableReference.cloneOrNull(bitmapRef); } finally { CloseableReference.closeSafely(bitmapRef); } } }; ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri) .setPostprocessor(redMeshPostprocessor) .setResizeOptions(new ResizeOptions(300,300)) .build(); PipelineDraweeController controller = (PipelineDraweeController) Fresco.newDraweeControllerBuilder() .setImageRequest(request) .setOldController(draweeView.getController()) // other setters as you need .build(); draweeView.setController(controller);