Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android Picasso 獲取遠程圖片並顯示,

Android Picasso 獲取遠程圖片並顯示,

編輯:關於android開發

Android Picasso 獲取遠程圖片並顯示,


 Picasso是Square公司開源的一個Android圖形緩存庫,地址http://square.github.io/picasso/,可以實現圖片下載和緩存功能。

它的使用及其的簡單,僅僅只需要一行代碼就能完全實現圖片的異步加載:

        Picasso.with(view.getContext()).load(newsItems.get(position).getThumb()).into(holder.ivHeader);//Picasso異步加載預覽圖

完全不需要任何其他操作便可以加載圖片,而且自帶緩存功能,還優化了在RecyclerView中的圖片重復利用等問題,而且使用了復雜的圖片壓縮算法來減少內存消耗以及自帶二級緩存

下面是博主在Adapter中寫的范例:

 1 package socialnews.linccy.com.socialnews.adapter;
 2 
 3 import android.support.v7.widget.RecyclerView;
 4 import android.view.LayoutInflater;
 5 import android.view.View;
 6 import android.view.ViewGroup;
 7 import android.widget.ImageView;
 8 import android.widget.TextView;
 9 
10 import com.squareup.picasso.Picasso;
11 
12 import java.util.List;
13 
14 import butterknife.BindView;
15 import butterknife.ButterKnife;
16 import socialnews.linccy.com.socialnews.utils.NewsItem;
17 import socialnews.linccy.com.socialnews.R;
18 
19 /**
20  * Created by Lcc on 2016/7/9.
21  */
22 
23 public class NewsItemAdapter extends RecyclerView.Adapter<NewsItemAdapter.ViewHolder> {
24 
25     private static List<NewsItem> newsItems;
26     private View view;
27 
28     public NewsItemAdapter(List<NewsItem> newsItems) {
29         this.newsItems = newsItems;
30     }
31 
32     @Override
33     public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
34         view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_cardview_item, parent, false);
35         ViewHolder holder = new ViewHolder(view);
36         return holder;
37     }
38 
39     @Override
40     public void onBindViewHolder(ViewHolder holder, int position) {
41         holder.tvTitle.setText(newsItems.get(position).getTitle());
42         holder.tvDetail.setText(newsItems.get(position).getDescr());
43         holder.tvTime.setText(newsItems.get(position).getTime());
44         Picasso.with(view.getContext()).load(newsItems.get(position).getThumb()).into(holder.ivHeader);//Picasso異步加載預覽圖
45     }
46 
47     @Override
48     public int getItemCount() {
49         return newsItems.size();
50     }
51 
52 
53     public class ViewHolder extends RecyclerView.ViewHolder {
54         @BindView(R.id.iv_header)
55         ImageView ivHeader;
56 
57         @BindView(R.id.tv_title)
58         TextView tvTitle;
59         @BindView(R.id.tv_detail)
60         TextView tvDetail;
61         @BindView(R.id.tv_time)
62         TextView tvTime;
63 
64         public ViewHolder(View itemView) {
65             super(itemView);
66             ButterKnife.bind(this, itemView);
67         }
68     }
69 }

 

效果圖:

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved