<pre>
@Override
public void fillBannerItem(final BGABanner banner, final ImageView itemView, String model, int position) {
//設(shè)置圖片寬高比
float scale = (float) 750 / (float) 320;
//獲取屏幕的寬度
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Point size = new Point();
wm.getDefaultDisplay().getSize(size);
int screenWidth = size.x;
//計(jì)算BGABanner的應(yīng)有高度
int viewHeight = Math.round(screenWidth / scale);
//設(shè)置BGABanner的寬高屬性
ViewGroup.LayoutParams banner_params = banner.getLayoutParams(); banner_params.width = screenWidth;
banner_params.height = viewHeight;
banner.setLayoutParams(banner_params);
//此處使用的是glide的override函數(shù)直接設(shè)置圖片尺寸
Glide.with(context)
.load(model)
.placeholder(R.mipmap.banner_holder)
.override(banner_params.width,banner_params.height)
.into(itemView);
}
</pre>
此方法是直接設(shè)置banner圖片的寬高比,然后獲取屏幕的寬度,再通過(guò)計(jì)算得到BGABanner的應(yīng)有高度,但是在gilde加載的方式則不是使用方法1的listener方法,而是直接使用glide的override方法,這種方法優(yōu)點(diǎn)是不用等待網(wǎng)絡(luò)圖片加載完成,直接顯示應(yīng)有的高度,不足之處是還沒(méi)有實(shí)現(xiàn)讀取placeholder的圖片尺寸,所以要手動(dòng)設(shè)置banner的尺寸比例。此方法推薦使用。
ps:BGABanner的高度一定要設(shè)置為大于0dp,如:android:layout_height="150dp",設(shè)置為wrap_content BGABanner將無(wú)法運(yùn)行。