国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android實現(xiàn)從緩存中讀取圖片與異步加載功能類

2019-12-12 05:40:19
字體:
供稿:網(wǎng)友

本文實例講述了Android實現(xiàn)從緩存中讀取圖片與異步加載功能類。分享給大家供大家參考,具體如下:

在新浪微博的微博列表中的圖片,為了加速其顯示也為了加快程序的響應(yīng),可以參考該圖片異步加載類實現(xiàn)。

public class AsyncImageLoader {  //SoftReference是軟引用,是為了更好的為了系統(tǒng)回收變量  private HashMap<String, SoftReference<Drawable>> imageCache;  public AsyncImageLoader() {    imageCache = new HashMap<String, SoftReference<Drawable>>();  }  public Drawable loadDrawable(final String imageUrl,final ImageView imageView, final ImageCallback imageCallback){    if (imageCache.containsKey(imageUrl)) {      //從緩存中獲取      SoftReference<Drawable> softReference = imageCache.get(imageUrl);      Drawable drawable = softReference.get();      if (drawable != null) {        return drawable;      }    }    final Handler handler = new Handler() {      public void handleMessage(Message message) {        imageCallback.imageLoaded((Drawable) message.obj, imageView,imageUrl);      }    };    //建立新一個新的線程下載圖片    new Thread() {      @Override      public void run() {        Drawable drawable = loadImageFromUrl(imageUrl);        imageCache.put(imageUrl, new SoftReference<Drawable>(drawable));        Message message = handler.obtainMessage(0, drawable);        handler.sendMessage(message);      }    }.start();    return null;  }  public static Drawable loadImageFromUrl(String url){    URL m;    InputStream i = null;    try {      m = new URL(url);      i = (InputStream) m.getContent();    } catch (MalformedURLException e1) {      e1.printStackTrace();    } catch (IOException e) {      e.printStackTrace();    }    Drawable d = Drawable.createFromStream(i, "src");    return d;  }  //回調(diào)接口  public interface ImageCallback {    public void imageLoaded(Drawable imageDrawable,ImageView imageView, String imageUrl);  }}

在Adapter中使用的方法為:

public class WeiBoAdapater extends BaseAdapter{    private AsyncImageLoader asyncImageLoader;    @Override    public int getCount() {      // TODO Auto-generated method stub      return wbList.size();    }    @Override    public Object getItem(int position) {      // TODO Auto-generated method stub      return wbList.get(position);    }    @Override    public long getItemId(int position) {      // TODO Auto-generated method stub      return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {      // TODO Auto-generated method stub      convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.weibo, null);      WeiBoHolder wh = new WeiBoHolder();      wh.wbicon = (ImageView) convertView.findViewById(R.id.wbicon);      wh.wbtext = (TextView) convertView.findViewById(R.id.wbtext);      wh.wbtime = (TextView) convertView.findViewById(R.id.wbtime);      wh.wbuser = (TextView) convertView.findViewById(R.id.wbuser);      wh.wbimage=(ImageView) convertView.findViewById(R.id.wbimage);      WeiBoInfo wb = wbList.get(position);      if(wb != null)      {        convertView.setTag(wb.getId());        wh.wbuser.setText(wb.getUserName());        wh.wbtime.setText(wb.getTime());        wh.wbtext.setText(wb.getText(), TextView.BufferType.SPANNABLE);        Drawable cachedImage = asyncImageLoader.loadDrawable(wb.getUserIcon(), wh.wbicon, new ImageCallback(){          public void imageLoaded(Drawable imageDrawable,ImageView imageView,String imageUrl){            imageView.setImageDrawable(imageDrawable);          }        });        if (cachedImage == null)        {          wh.wbicon.setImageResource(R.drawable.usericon);        }else{          wh.wbicon.setImageDrawable(cachedImage);        }      }      return convertView;    }}

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android控件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android文件操作技巧匯總》、《Android操作SQLite數(shù)據(jù)庫技巧總結(jié)》、《Android操作json格式數(shù)據(jù)技巧總結(jié)》、《Android數(shù)據(jù)庫操作技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android編程開發(fā)之SD卡操作方法匯總》、《Android開發(fā)入門與進階教程》及《Android資源操作技巧匯總

希望本文所述對大家Android程序設(shè)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 鹿泉市| 甘南县| 汉川市| 西充县| 车致| 深泽县| 西和县| 大竹县| 信丰县| 肇源县| 安庆市| 四平市| 精河县| 河津市| 济阳县| 南澳县| 通榆县| 高雄市| 溆浦县| 留坝县| 大丰市| 惠水县| 台北市| 化德县| 林甸县| 同江市| 齐齐哈尔市| 惠来县| 南雄市| 栾川县| 卫辉市| 全椒县| 新巴尔虎右旗| 昌图县| 望都县| 图片| 邢台市| 祁门县| 绥棱县| 东乌珠穆沁旗| 南漳县|