美文网首页
BGABanner实现图片自适应屏幕宽度且保持原有图片比例-方法

BGABanner实现图片自适应屏幕宽度且保持原有图片比例-方法

作者: HaRun | 来源:发表于2017-01-06 23:22 被阅读0次

    <pre>
    @Override
    public void fillBannerItem(final BGABanner banner, final ImageView itemView, String model, int position) {
    Glide.with(context)
    .load(model)
    .placeholder(R.mipmap.banner_holder)
    .listener(new RequestListener<String, GlideDrawable>() {
    @Override
    public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
    return false;
    }
    @Override
    public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
    if (itemView == null) {
    return false;
    }
    if (itemView.getScaleType() != ImageView.ScaleType.FIT_XY) {
    itemView.setScaleType(ImageView.ScaleType.FIT_XY);
    }
    ViewGroup.LayoutParams params = itemView.getLayoutParams();

    int vw = itemView.getWidth() - itemView.getPaddingLeft() - itemView.getPaddingRight();
    float scale = (float) vw / (float) resource.getIntrinsicWidth();
    int vh = Math.round(resource.getIntrinsicHeight() * scale);
    params.height = vh + itemView.getPaddingTop() + itemView.getPaddingBottom();
    System.out.println("image height:" + params.height);
    System.out.println("image width:" + params.width);
    itemView.setLayoutParams(params);
    ViewGroup.LayoutParams banner_params = banner.getLayoutParams();
    banner_params.width = params.width;
    banner_params.height = params.height;
    banner.setLayoutParams(banner_params);
    return false;
    }
    })
    .into(itemView);
    }
    </pre>

    上面使用了读取网络图片尺寸的方式实现,缺点就是还没加载完图片时BGABanner的尺寸还没有自适应。

    第二个方式:

    相关文章

      网友评论

          本文标题:BGABanner实现图片自适应屏幕宽度且保持原有图片比例-方法

          本文链接:https://www.haomeiwen.com/subject/bxwxbttx.html