壁画中的图像缩放后SimpleDraweeView不调整 [英] SimpleDraweeView not resizing after scaling image in fresco
问题描述
我用壁画,显示在列表视图中的图像。但是我有一个问题。
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的和图像的某些部分被砍掉,我不希望出现这种情况
问:我怎样才能缩小图像大小,并用它来调整我的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屋!