壁画中的图像缩放后SimpleDraweeView不调整 [英] SimpleDraweeView not resizing after scaling image in fresco

查看:3037
本文介绍了壁画中的图像缩放后SimpleDraweeView不调整的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用壁画,显示在列表视图中的图像。但是我有一个问题。

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

当我缩放使用保持纵横比像CENTER_CROP方法我的形象,和缩放图像高度比我simpledraweeview的高度较小,简单付款人 - 视图不会自动调整大小以匹配缩放图像的大小。

when i scale my image using methods that maintain aspect ratio like CENTER_CROP, and the scaled image height becomes smaller than my simpledraweeview's height, simple-Drawee-View isn't automatically resized to match size of scaled image.


  • 我曾尝试使用的android:adjustViewBounds = TRUE 不过,这并不正常工作

  • 我也曾尝试下面的方法,但的scaleY的我想用它来计算比例高度返回 1 ,即使图像高度低于simpe,付款人小-view的身高

  • I have tried to use android:adjustViewBounds = true But it doesn't work.
  • i have also tried the method below but scaleY which i wanted to use to calculate scaled height returns 1 even when image height is smaller than simpe-drawee-view's height

float[] f = new float[9]
draweeView.getImageMatrix().getValues(f);
float scaleY = f[Matrix.MSCALE_Y];
Log.d("App","scale y is "+ scaleY);


上面的海鰗鳅科中的方法中使用以下

The above codlet is used in the method below

private void loadImage(Uri fileUri,final SimpleDraweeView draweeView,int myImageHeight){

    draweeView.getLayoutParams().width = displayWidth;

    int selectedSize = (myImageHeight > displayWidth)? displayWidth : myImageHeight;

    draweeView.getLayoutParams().height= selectedSize;


    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();

    //ImagePipeline imagePipeline = Fresco.getImagePipeline();

    DraweeController controller = Fresco.newDraweeControllerBuilder()
            .setOldController(draweeView.getController())
            .setImageRequest(requestBuilder)
            .build();
    draweeView.setHierarchy(hierarchy);
    draweeView.setController(controller);

     float[] f = new float[9]
     draweeView.getImageMatrix().getValues(f);
     float scaleY = f[Matrix.MSCALE_Y];
     Log.d("App","scale y is "+ scaleY);
}

结果:红色象征着不填充图像简单付款人视图的一部分。这是规模型FIT_CENTER。当我使用CENTER_CROP,图像填充整个ImageView的和图像的某些部分被砍掉,我不希望出现这种情况

壁画simpe付款人视图不调整大小

问:我怎样才能缩小图像大小,并用它来调整我的simpleDraweeView或者换句话说,我怎样才能让我的simpleDraweeView调整它的大小

Q: How can i get scaled image size and use it to resize my simpleDraweeView or in other words, how can i make my simpleDraweeView adjust it size ?

我将AP preciate任何帮助。

i will appreciate any help.

推荐答案

为了使simpledraweeview调整大小,这就是我实现了一个 ControllerListener ,改变了简单的付款人视图高度根据需要。

In order to make simpledraweeview resize, this is what i implemented a ControllerListener and changed simple drawee view 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<ImageInfo> contollerListener = new BaseContollerListener<ImageInfo>(){

  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.

   simpleDraveeView.requestLayout()
}

这篇关于壁画中的图像缩放后SimpleDraweeView不调整的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆