踩过坑的朋友都知道,要实现自适应又需要圆角,大部分框架都有毛病,包括这个也是有的.
 解决方法如下
 xml设置:
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/iv_banner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/young_author_page_margin_left_right"
android:scaleType="centerCrop"
app:actualImageScaleType="centerCrop"
app:radiusX="@{@dimen/young_theme_radius}"
app:ratioimage="@{model.image}" />
databind代码如下
@BindingAdapter({"ratioimage", "radiusX"})
    public static void imageloaderxx(final SimpleDraweeView imageView, final String image,
                                     final float radius) {
        if (image == null) {
            return;
        }
/*
        if (TextUtils.isEmpty(image)) {
            return;
        }
*/
        final ViewGroup.LayoutParams layoutParams = imageView.getLayoutParams();
        final int viewWidth = imageView.getWidth();
        if (viewWidth == 0) {
            imageView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                        imageView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                    } else {
                        imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                    }
                    if (imageView.getWidth() == 0) {
                        return;
                    }
                    imageloaderxx(imageView, image, radius);
                }
            });
            return;
        }
        ControllerListener controllerListener = new BaseControllerListener<ImageInfo>() {
            @Override
            public void onFinalImageSet(String id, @Nullable ImageInfo imageInfo, @Nullable Animatable anim) {
                if (imageInfo == null) {
                    return;
                }
                int height = imageInfo.getHeight();
                int width = imageInfo.getWidth();
                layoutParams.width = imageView.getWidth();
                int heightScale = (int) ((float) (viewWidth * height) / (float) width);
                layoutParams.height = heightScale;
                imageView.setLayoutParams(layoutParams);
                setImageRadius(imageView, radius);
//                imageView.setAspectRatio(height / width);
            }
            @Override
            public void onIntermediateImageSet(String id, @Nullable ImageInfo imageInfo) {
                Log.d("TAG", "Intermediate image received");
            }
            @Override
            public void onFailure(String id, Throwable throwable) {
                throwable.printStackTrace();
            }
        };
        DraweeController controller = Fresco.newDraweeControllerBuilder().setControllerListener(controllerListener).setUri(Uri.parse(image)).build();
        imageView.setController(controller);
    }切忌不要写死宽度,否则会导致圆角又失效了。










