1. 程式人生 > >Android圖片載入框架Picasso最全使用教程 一

Android圖片載入框架Picasso最全使用教程 一

Picasso介紹

Picasso是Square公司開源的一個Android圖形快取庫

A powerful image downloading and caching library for Android
一個Android下強大的圖片下載快取庫

Picasso實現了圖片的非同步載入,並解決了Android中載入圖片時常見的一些問題,它有以下特點:

  • Adapter中取消了不在檢視範圍內的ImageView的資源載入,因為可能會產生圖片錯位;
  • 使用複雜的圖片轉換技術降低記憶體的使用
  • 自帶記憶體和硬碟的二級快取機制

為什麼要用Picasso

  Android系統作為圖片資源載入的主角,它是通過影象的畫素點來把影象載入到記憶體中的;現在一張500W的攝像頭拍出的照片(2592x1936),載入到記憶體中需要大約19M的記憶體;如果你加入了訊號強度不一的網路中進行了複雜的網路請求,並進行圖片的快取與其他處理,你會耗費大量的時間與精力來處理這些問題,但如果用了Picasso, 這些問題都一消而散;

將Picasso加入到你的專案中

 目前Picasso的最新版本是2.5.2,你可以下載對應的Jar包,將Jar包新增到你的專案中,或者在build.gradle配置檔案中加入

compile 'com.squareup.picasso:picasso:2.5.2'

注意如果你開啟了混淆,你需要將以下程式碼新增到混淆規則檔案中:

-dontwarn com.squareup.okhttp.**

小試牛刀:從網路載入一張圖片

Picasso使用簡單易用的介面,並有一個實現類Picasso,一個完整的功能請求至少需要三個引數;

  • with(Context context)
    - Context上下文在很多Android Api中都是必須的
  • load(String imageUrl) - 圖片網路載入地址
  • into(ImageView targetImageView) - 想進行圖片展示的ImageView

簡單用例:

ImageView targetImageView = (ImageView) findViewById(R.id.imageView);
String internetUrl = "http://www.jycoder.com/json/Image/1.jpg";

Picasso
    .with(context)
    .load(internetUrl)
    .into
(targetImageView);

  就是這麼簡單,如果你的 URL地址正確並且圖片存在,在幾秒中之內就能看到這張圖片了;如果圖片資源不存在,Picasso也會有錯誤的回撥,現在你已經看到了只需3行程式碼就能載入圖片了,當然這只是冰山一角,讓我們繼續揭開Picasso的神祕面紗;

圖片的其他載入方式

  Picasso的圖片不僅僅能載入網路資源,也能從本地檔案,Android專案資源,以及URI地址進行圖片載入,下面我們就對這三種方式進行例項說明;

從Android Resources 中載入

  程式碼也是三行,只需要將網路資源地址更改為一個int值地址即可,上程式碼:

ImageView targetImageView = (ImageView) findViewById(R.id.imageView);
int resourceId = R.mipmap.ic_launcher;

Picasso
    .with(context)
    .load(resourceId)
    .into(targetImageView);

注意: R.mipmapAndroid Studio中新的資源引用路徑,這個老司機都知道.

從本地File檔案中載入

  如果你讓使用者選擇本地的一張圖片進行展示的話,就需要用到這個載入方式了,當然,也是So Easy,只需要將地址更換為一個File即可,上程式碼:

ImageView targetImageView = (ImageView) findViewById(R.id.imageView);
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Running.jpg");

Picasso
    .with(context)
    .load(file)
    .into(targetImageView); 

注意:這個file並不一定非得是在你的裝置中,可以是任意的路徑,只要是File路徑即可;

URI地址中載入

  這個請求方式相比其他也並沒有什麼不同,上程式碼:

public static final String ANDROID_RESOURCE = "android.resource://";
public static final String FOREWARD_SLASH = "/";

private static Uri resourceIdToUri(Context context, int resourceId) {
    return Uri.parse(ANDROID_RESOURCE + context.getPackageName() + FOREWARD_SLASH + resourceId);
}

Uri uri = resourceIdToUri(context, R.mipmap.future_studio_launcher);
ImageView targetImageView = (ImageView) findViewById(R.id.imageView);

Picasso  
    .with(context)
    .load(uri)
    .into(targetImageView);

注意:為了示範,只能用資原始檔轉換為URI,並不僅僅是這種方式, 它可以支援任意的URI地址;

OK,到此我們已經對Picasso有一個基本的認識和了解了,跟著我的腳步,繼續發現Picasso更多好玩的功能,下面會介紹Picasso在ListViewGridView的用法,願大家都有美好的一天~~

相關推薦

Android圖片載入框架Picasso使用教程

Picasso介紹 Picasso是Square公司開源的一個Android圖形快取庫 A powerful image downloading and caching library for Android 一個Android下強大的圖片下載快

Android圖片載入框架Picasso使用教程

Picasso介紹 A powerful image downloading and caching library for Android 一個Android下強大的圖片下載快取庫 Picasso實現了圖片的非同步載入,並解決了Android中載入圖片時常見的一些問題,它有以下特點: 在Adap

Android圖片載入框架Picasso使用教程 (三)

前面我們對Picasso的用法有了一定得了解,下面就分析一下一些特殊情況下,Picasso的用法. 呼叫.noFade()   Picasso的預設圖片載入方式有一個淡入的效果,如果呼叫了noFade(),載入的圖片將直接顯示在ImageView上 <font

Android圖片載入框架Picasso使用教程 (四)

通過前幾篇的學習,我們已經對Picasso的載入圖片的用法有了很深的瞭解,接下來我們開始分析Picasso為我們提供的其他高階功能及記憶體分析,Let’s Go ! (ps:想要獲取更多學習資料可加qq1692250804!)      Picasso進行圖片的旋轉(Ro

Android圖片載入框架——Picasso和Glide

       首先說Picasso,Picasso 是 Square 公司的傑作,名字叫「畢加索,充滿文藝氣息,意為載入圖片就像畫畫一樣,是一門藝術。Picasso 不僅具備載入圖片的強大功能,還是如此的簡潔。 Picasso預設的快取分配大小特點:   LRU快取佔應用程

Android 圖片載入框架Picasso基本使用和原始碼完全解析

寫在之前 原本打算是每週更新一篇博文,同時記錄一週的生活狀態,但是稍微工作忙一點就顧不上寫部落格了。悲催 還是說下最近的狀況,最近兩週一直在接公司申請的計費點, 沃商店,銀貝殼,微信等等,然後就是不停的被人催促催促,真是一個頭兩個大。在這期間專案組還搞了個A

Android圖片載入框架解析(四),玩轉Glide的回撥與監聽(筆記)

參考原文:Android圖片載入框架最全解析(四),玩轉Glide的回撥與監聽 回撥的原始碼實現 的Target物件傳入到GenericRequest當中,而Glide在圖片載入完成之後又會回撥GenericRequest的onResourceReady()方法,onReso

Android圖片載入框架解析(五),Glide強大的圖片變換功能(筆記)

參考原文:Android圖片載入框架最全解析(五),Glide強大的圖片變換功能 一個問題 百度這張logo圖片的尺寸只有540258畫素,但是我的手機的解析度卻是10801920畫素,而我們將ImageView的寬高設定的都是wrap_content,那麼圖片的寬度應該只有

Android圖片載入框架解析(三),深入探究Glide的快取機制(筆記)

原文地址:Android圖片載入框架最全解析(三),深入探究Glide的快取機制 筆記: 1.Glide快取簡介 2.快取Key EngineKey 重寫了equals()和hashCode()方法,保證只有傳入EngineKey的所有引數都相同的情況下才認為是

Android圖片載入框架解析(七),實現帶進度的Glide圖片載入功能(筆記)

參考原文:Android圖片載入框架最全解析(七),實現帶進度的Glide圖片載入功能 擴充套件目標 對Glide進行功能擴充套件,使其支援監聽圖片下載進度的功能 開始 dependencies { compile 'com.github.bumptech.glid

Android圖片載入框架解析(六),探究Glide的自定義模組功能(筆記)

參考原文:Android圖片載入框架最全解析(六),探究Glide的自定義模組功能 自定義模組的基本用法 自定義模組功能可以將更改Glide配置,替換Glide元件等操作獨立出來,使得我們能輕鬆地對Glide的各種配置進行自定義,並且又和Glide的圖片載入邏輯沒有任何交集,

Android圖片載入框架解析(五),Glide強大的圖片變換功能

                       本文同步發表於我的微信公眾號,掃一掃文章底部的二維碼或在微信搜尋 郭霖 即可關注,每天都有文章更新。大家好,又到了學習Glide的時間了。前段時間由於專案開發緊張,再加上後來又生病了,所以停更了一個月,不過現在終於又可以恢復正常更新了。今天是這個系列的第五篇文章,

Android圖片載入框架解析(),Glide的基本用法

現在Android上的圖片載入框架非常成熟,從最早的老牌圖片載入框架UniversalImageLoader,到後來Google推出的Volley,再到後來的新興軍Glide和Picasso,當然還有Facebook的Fresco。每一個都非常穩定,功能也都十分強大。但是它們

Android圖片載入框架解析()Glide的基本用法

現在Android上的圖片載入框架非常成熟,從最早的老牌圖片載入框架UniversalImageLoader,到後來Google推出的Volley,再到後來的新興軍Glide和Picasso,當然還有Facebook的Fresco。每一個都非常穩定,功能也都

Android圖片載入框架解析(八),帶你全面瞭解Glide 4的用法

本文同步發表於我的微信公眾號,掃一掃文章底部的二維碼或在微信搜尋 郭霖 即可關注,每天都有文章更新。 本篇將是我們這個Glide系列的最後一篇文章。 其實在寫這個系列第一篇文章的時候,Glide就推出4.0.0的RC版了。那個時候因為我一直研究的

Android圖片載入框架解析(七),實現帶進度的Glide圖片載入功能

本文同步發表於我的微信公眾號,掃一掃文章底部的二維碼或在微信搜尋 郭霖 即可關注,每天都有文章更新。 我們的Glide系列文章終於要進入收尾篇了。從我開始寫這個系列的第一篇文章時,我就知道這會是一個很長的系列,只是沒有想到竟然會寫這麼久。 在前面

Android圖片載入框架解析(四),玩轉Glide的回撥與監聽

本文同步發表於我的微信公眾號,掃一掃文章底部的二維碼或在微信搜尋 郭霖 即可關注,每天都有文章更新。 大家好,今天我們繼續學習Glide。 在上一篇文章當中,我帶著大家一起深入探究了Glide的快取機制,我們不光掌握了Glide快取的使用方法,還

(郭霖)Android圖片載入框架解析(),Glide的基本用法

本文同步發表於我的微信公眾號,掃一掃文章底部的二維碼或在微信搜尋 郭霖 即可關注,每天都有文章更新。 現在Android上的圖片載入框架非常成熟,從最早的老牌圖片載入框架UniversalImageLoader,到後來Google推出的Volley,再到後來的新興軍Glide和Picas

Android 圖片載入框架 Volley框架原始碼 以及Picasso和Glide比較

首先了解一下,它是封裝了HTTPConnection和HTTPClient類的一個框架, 適用於資料量少但是通訊頻繁的情況,如載入圖片; 就拿StringRequest(用來請求字串的)舉例: Volley的順序是 :  Http請求-------再接受響應   只