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

<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的尺寸还没有自适应。

第二个方式:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容