SimpleDraweeView not resizing after scaling image in fresco

后端 未结 2 1376
傲寒
傲寒 2020-12-21 05:07

I\'m using fresco to display images in a list view. however i have an issue.

when i scale my image using methods that maintain aspect ratio like CENTER_CROP, and the

2条回答
  •  [愿得一人]
    2020-12-21 05:41

    In order to make simpledraweeview resize, this is what i implemented a ControllerListener and changed simpleDraweeView height as desired.

    private void loadImage(Uri fileUri,final SimpleDraweeView simpeDraweeView) {
    
        GenericDraweeHierarchyBuilder builder = new GenericDraweeHierarchyBuilder(context.getResources());
    
        GenericDraweeHierarchy hierarchy = builder
                .setProgressBarImage(new CircleProgressBarDrawable())
                .setActualImageScaleType(ScalingUtils.ScaleType.CENTER_CROP)
                .build();
    
    
        ImageRequest requestBuilder = ImageRequestBuilder.newBuilderWithSource(fileUri)
                .setProgressiveRenderingEnabled(true)
                .build();
    
    
        ControllerListener contollerListener = new BaseContollerListener() {
    
        public void onFinalImageSet(String id, ImageInfo imageinfo,Animatable animatable) {
    
            if(imageinfo != null) {
               updateViewSize(imageinfo)
             }
        }
    
        DraweeContoller contoller = Fresco.newDraweeContollerBuilder()
                     .setContollerListener(contollerListener)
                     .setImageRequest(requestBuilder)
                     .build();
    
        simpleDraweeView.setHierarchy(hierarchy);
        simpleDraweeView.setController(contoller);
    
    }
    
    private void updateViewSize(ImageInfo imageinfo){
     //this is my own implementation of changing simple-drawee-view height
     // you canhave yours using imageinfo.getHeight() or imageinfo.getWidth();
     simpleDraweeView.getLayoutParams().height = imageinfo.getHeight();
    
       // don't forget to call this method. thanks to @plamenko for reminding me.
    
       simpleDraweeView.requestLayout()
    }
    

提交回复
热议问题