本文實例講述了Android開發中ImageLoder加載網絡圖片時將圖片設置為ImageView背景的方法。分享給大家供大家參考,具體如下:
最近開始接觸到android的開發,在開發中使用ImageLoder加載網絡圖片,但是框架加載的圖片默認是通過ImageView的src屬性設置,所以在某些場合是不符合需求,比如通過設置src在某些場景下是不能填充滿整個ImageView,但是通過設置背景就可以實現,而框架并沒有提供將圖片設置為背景的方法,我在網上找了半天也看到了一些解決方案,但不是我想要的,于是我決定去看看源碼是怎么實現,果然在源碼中就找到了“新大陸”,壓抑不住內心的喜悅趕緊寫博客分享,也算做個筆記,希望對大家有幫助。
廢話到此為止 開始將進入主題(上代碼)
/*** 加載網絡圖片設置為ImageView背景** @param url* @param view*/public void loadImageToBackground(String url, ImageView view) { ImageLoader.getInstance().displayImage(url, new BgImageViewAware(view));}上面這個方法就是一個簡單的使用ImageLoder加載網絡圖片的例子,如果要將圖片設置為背景,其核心部分就在 BgImageViewAware這個類里面,BgImageViewAware是一個自定義的類,它繼承自ImageViewAware這個類,我在看源碼的時候發現ImageLoder就是通過 ImageViewAware這個類把加載的圖片設置到src屬性的(有興趣的小伙伴可以自己去看源碼,源碼我就不貼出來了),所以我只需要重寫這個類的方法將圖片設置到背景就解決了
下面是BgImageViewAware類的代碼:
/** * <pre>將圖片設置為ImageView的背景</pre> * Created by ZCM on 2016/8/5. version 1.0 */public class BgImageViewAware extends ImageViewAware { public BgImageViewAware(ImageView imageView) { this(imageView, true); } public BgImageViewAware(ImageView imageView, boolean checkActualViewSize) { super(imageView, checkActualViewSize); } @TargetApi(Build.VERSION_CODES.JELLY_BEAN) @Override public boolean setImageBitmap(Bitmap bitmap) { //重寫父類方法,將圖片設為背景 if(Looper.myLooper() == Looper.getMainLooper()) { ImageView imageView = (ImageView)this.imageViewRef.get(); if(imageView != null) { imageView.setBackground(new BitmapDrawable(bitmap)); return true; } } return false; } @Override public boolean setImageDrawable(Drawable drawable) { return super.setImageDrawable(drawable); }}到了這一步,將圖片設置為ImageView的背景的整個功能算是我完成了(其實很簡單^_^)
希望本文所述對大家Android程序設計有所幫助。
新聞熱點
疑難解答