欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2016年08月15日 10:14:09   作者:llyofdream  
這篇文章主要介紹了Android實現(xiàn)從緩存中讀取圖片與異步加載功能類,涉及Android針對緩存的操作及圖片異步加載相關實現(xiàn)技巧,需要的朋友可以參考下

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

在新浪微博的微博列表中的圖片,為了加速其顯示也為了加快程序的響應,可以參考該圖片異步加載類實現(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;
    }
}

更多關于Android相關內(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程序設計有所幫助。

相關文章

  • Android粒子線條效果實現(xiàn)過程與代碼

    Android粒子線條效果實現(xiàn)過程與代碼

    這篇文章主要介紹了Android粒子線條效果的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-02-02
  • Android自定義View過程解析

    Android自定義View過程解析

    這篇文章主要針對Android自定義View過程進行解析,Android創(chuàng)建自定義的view,感興趣的小伙伴們可以參考一下
    2016-01-01
  • Android購物車項目快速開發(fā)

    Android購物車項目快速開發(fā)

    這篇文章主要為大家詳細介紹了Android購物車項目快速開發(fā),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Android?MaterialButton使用實例詳解(告別shape、selector)

    Android?MaterialButton使用實例詳解(告別shape、selector)

    我們平時寫布局,當遇到按鈕需要圓角、或者描邊等,通常的方法是新建一個xml文件,在shape標簽下寫,然后通過android:background或setBackground(drawable)設置,這篇文章主要給大家介紹了關于Android?MaterialButton使用詳解的相關資料,需要的朋友可以參考下
    2022-09-09
  • Android自定義View實現(xiàn)圓環(huán)交替效果

    Android自定義View實現(xiàn)圓環(huán)交替效果

    這篇文章給大家介紹如何基于Android自定義View實現(xiàn)圓環(huán)交替的效果,實現(xiàn)后效果很贊,有需要的小伙伴們可以參考借鑒。
    2016-08-08
  • Android使用線程獲取網(wǎng)絡圖片的方法

    Android使用線程獲取網(wǎng)絡圖片的方法

    這篇文章主要為大家詳細介紹了Android使用線程獲取網(wǎng)絡圖片的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • flutter實現(xiàn)帶刪除動畫的listview功能

    flutter實現(xiàn)帶刪除動畫的listview功能

    最近接了一個新項目,需要開發(fā)帶有刪除動畫效果的listview功能,在實現(xiàn)過程中列表滾動效果用listview實現(xiàn)的,本文通過實例代碼給大家分享實現(xiàn)過程,感興趣的朋友跟隨小編一起學習下吧
    2021-05-05
  • android中intent傳遞list或者對象的方法

    android中intent傳遞list或者對象的方法

    這篇文章主要介紹了android中intent傳遞list或者對象的方法,分析羅列了常用的幾種方法,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • Android Studio中的Gradle依賴深入講解

    Android Studio中的Gradle依賴深入講解

    Android Studio由于使用了gradle的進行項目構(gòu)建,使我們開發(fā)app方便很多,下面這篇文章主要給大家介紹了關于Android Studio中Gradle依賴的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-09-09
  • View中如何進行手勢識別onFling動作實現(xiàn)介紹

    View中如何進行手勢識別onFling動作實現(xiàn)介紹

    下面我們就以實現(xiàn)手勢識別的onFling動作,在CwjView中我們從View類繼承,當然大家可以從TextView等更高層的界面中實現(xiàn)觸控,感興趣的朋友可以了解下哈
    2013-06-06

最新評論