1. 程式人生 > >利用Bmob + ImageLoader 載入網路圖片

利用Bmob + ImageLoader 載入網路圖片

這次說一下如何將Bmob後臺資料表裡儲存的圖片加載出來,顯示到ListView中。其實做法不難,就是一個載入網路圖片的方法,但是Bmob官網對圖片載入上傳介紹的很模糊,官網的例子基本上都是以前版本的SDK,現在已經不能用了,所以對於如何載入圖片是我們主要介紹的。

大體思路是這樣的:

1.首先將需要的圖片上傳到Bmob後臺,這時你會得到一個圖片的URL,這個圖片也一起上傳到後臺伺服器了

2.在Android工程中根據圖片的URL,載入到控制元件上,這樣就顯示出來圖片了。

因為Bmob對於圖片載入的介面並不好用,所以我們放棄了直接使用Bmob的API載入圖片,而是根據這個圖片的URL,利用其他方法載入。這裡我們使用的是一個開源框架:ImageLoader。

先來介紹一下什麼是ImageLoader,顧名思義它就是跟影象載入有關的。我們先下載它的jar包,匯入到工程,配置好環境,這裡給出一個對ImageLoader的介紹,按照他的介紹做就可以了(也可以直接下載我的例子)

說明一下我們使用ImageLoader這樣做的好處:

1.首先可以達到你的目的,載入Bmob裡儲存的圖片

2.支援大批量圖片的非同步載入,採用多執行緒提高效率

3.支援圖片本地快取,也可以自己設定快取策略

4.減少普通載入時記憶體的使用

......

而且ImageLoader非常好用,因為Bmob後臺裡存的每個圖片都有URL,就相當於一個網路圖片,介面引數傳入其URL,就可以載入網路圖片了,這樣我們就相當於利用ImageLoader載入Bmob的圖片。

然後這裡舉出一個小例子:

在Bmob裡我們建立一個英雄表,叫做Hero

Hero是一個英雄類,每個英雄有ID、Name、Icon欄位,其中ID唯一,Icon是每個英雄的頭像。注意Icon的型別是File。表結構如下圖


其中每一個圖片他都有一個URL,可以點進去看看


然後再看一下我們的Hero類是如何宣告的:

public class Hero extends BmobObject {
    private String name;
    private String id;
    private BmobFile icon;

    public Hero( String id, String name, BmobFile icon ) {
        this.id = id;
        this.name = name;
        this.icon = icon;
    }

    public String getName() { return name; }
    public String getId() { return id; }
    public String getIconUrl() { return icon.getFileUrl(); }
}

其中需要注意的是getIconUrl()函式,它呼叫了BmobFile.getFileUrl()方法,它返回的就是圖片的URL。可以看官方文件的介紹



這樣我們基本上就完成了,然後看一下我們的工程(下方有下載地址)


ImageLoaderApplication是一個全域性類,程式一開始先進入這裡。這個類做的就是對ImageLoader框架初始化工作(設定執行緒數量、快取目錄等)

Hero是我們的類

MainActivity包括了ImageLoader載入圖片的設定,還有從Bmob獲取資料的過程

Constans裡定義了一個ArrayList,用於儲存從Bmob獲取的物件。

注意一點,因為我們是從Bmob獲取圖片URL,再根據URL載入圖片,所以這裡不做快取。你可以在Constans類裡定義一個String Image陣列,把圖片的URL寫到裡邊,這樣可以做到快取圖片。

執行一下看看效果: