解決圖片自適應高度的問題
阿新 • • 發佈:2018-12-08
自適應的載入方法
public static void loadImgBySize(Context context, ImageView imageView, String imgUrl, int w, int h) { Glide.with(context).load(imgUrl).override(w, h).placeholder(R.mipmap.placeholder) .error(R.mipmap.placeholder) .crossFade()//設定淡入淡出效果 .priority(Priority.NORMAL) //下載的優先順序 //all:快取源資源和轉換後的資源 none:不作任何磁碟快取 //source:快取源資源 result:快取轉換後的資源 .diskCacheStrategy(DiskCacheStrategy.ALL) //快取策略 .into(imageView); }
用法: w等於螢幕寬 h等於Integer.MAX_VALUE ,這樣可以解決圖片自適應高度的問題,剛開始我也有點不理解
下面是解釋:
ImageView這個控制元件只配置
<ImageView
android:id="@+id/wg_dynamic_list_item_bg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
預設按圖片比例縮放顯示的
上面控制元件因為設定了寬度是match_parent,高度是自適應
下圖是在載入圖片的時候設定 override 的寬高都一樣,都是螢幕的寬度大小,此時ImageView的大小是按override設定時的寬高顯示,但是圖片的實際寬高是 高比寬大, 即使設定了圖片的寬為螢幕的寬,也不會平鋪顯示,因為等比例縮放,因為ImageView的高 沒有滿足 圖片的高 進行等比例縮放,所以只能在ImageView的高 裡面縮放到滿足等比例縮放的原則
下圖是ImageView的高度是螢幕寬的一半的,ImageView的寬度依舊是螢幕寬
但是,如果設定了override 的 高度足夠大,此時就可以忽略高度的存在了,等比例完全可以由寬度決定了
這就證明了可以解決圖片自適應高度的問題了
Glide常用的幾個方法:
1.將圖片載入成Bitmap
public static void loadImgBitmap(Context context,String imgUrl){
Glide.with(context)
.load(imgUrl)
.asBitmap()//強制Glide返回一個Bitmap物件
.placeholder(R.mipmap.placeholder)
.error(R.mipmap.placeholder)
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap bitmap, GlideAnimation<? super Bitmap> glideAnimation) {
int width = bitmap.getWidth();
int height = bitmap.getHeight();
LogUtils.e("width___" + width);
LogUtils.e("height___" + height);
}
});
}
2.載入成圓形
/**
* 載入圓圖
*
* @param context
* @param imageView
* @param imgUrl
*/
public static void loadCircleImage(final Context context, final ImageView imageView, String imgUrl, int resourceId) {
Glide.with(context)
.load(imgUrl != null ? imgUrl.trim() : imgUrl)
.asBitmap()
.centerCrop()
.placeholder(resourceId)
.error(resourceId)
.diskCacheStrategy(DiskCacheStrategy.ALL) //快取策略
.priority(Priority.NORMAL) //下載的優先順序
.into(new BitmapImageViewTarget(imageView) {
@Override
protected void setResource(Bitmap resource) {
RoundedBitmapDrawable circularBitmapDrawable =
RoundedBitmapDrawableFactory.create(context.getResources(), resource);
circularBitmapDrawable.setCircular(true);
imageView.setImageDrawable(circularBitmapDrawable);
}
});
}
3.自定義角度顯示
/**
* 載入自定義圓角
*
* @param context
* @param imageView
* @param imgUrl
*/
public static void loadRoundImage(final Context context, final ImageView imageView, String imgUrl, final float cornerRadius, int resourceId) {
Glide.with(context)
.load(imgUrl != null ? imgUrl.trim() : imgUrl)
.asBitmap()
.centerCrop()
.placeholder(resourceId)
.error(resourceId)
.diskCacheStrategy(DiskCacheStrategy.ALL) //快取策略
.priority(Priority.NORMAL) //下載的優先順序
.into(new BitmapImageViewTarget(imageView) {
@Override
protected void setResource(Bitmap resource) {
RoundedBitmapDrawable circularBitmapDrawable =
RoundedBitmapDrawableFactory.create(context.getResources(), resource);
circularBitmapDrawable.setCornerRadius(cornerRadius);
imageView.setImageDrawable(circularBitmapDrawable);
}
});
}