利用Bmob + ImageLoader 加载网络图片

本文介绍了如何使用Bmob后台结合ImageLoader框架加载并显示存储在Bmob数据表中的图片到ListView。首先将图片上传到Bmob获取URL,然后在Android应用中通过ImageLoader根据URL异步加载图片,支持批量加载、多线程和本地缓存,降低内存使用。文章提供了一个Hero类示例,展示如何从Bmob获取图片URL并加载。
摘要由CSDN通过智能技术生成


这次说一下如何将Bmob后台数据表里存储的图片加载出来,显示到ListView中。其实做法不难,就是一个加载网络图片的方法,但是Bmob官网对图片加载上传介绍的很模糊,官网的例子基本上都是以前版本的SDK,现在已经不能用了,所以对于如何加载图片是我们主要介绍的。


大体思路是这样的:

1.首先将需要的图片上传到Bmob后台,这时你会得到一个图片的URL,这个图片也一起上传到后台服务器了

2.在Android工程中根据图片的URL,加载到控件上,这样就显示出来图片了。


因为Bmob对于图片加载的接口并不好用,所以我们放弃了直接使用Bmob的API加载图片,而是根据这个图片的URL,利用其他方法加载。这里我们使用的是一个开源框架:ImageLoader。

先来介绍一下什么是ImageLoader,顾名思义它就是跟图像加载有关的。我们先下载它的jar包,导入到工程,配置好环境,这里给出一个对ImageLoader的介绍,按照他的介绍做就可以了(也可以直接下载我的例子)

http://blog.csdn.net/xiaanming/article/details/26810303/


说明一下我们使用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写到里边,这样可以做到缓存图片。

运行一下看看效果:




另外也可以参考一下这个文章,很有参考价值:http://blog.csdn.net/lj779323436/article/details/52563362


点击下载工程


评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值