android app -- Picasso 二级缓存加载图片,可控制加载图片大小(附小demo)


今天小组开会,听组长提到Picasso 加载图片,之前一直用的都是imageLoader加载图片,刚好这几天临近过年,项目比较松,下午抽了一段时间学习了一下这个加载图片的神器。

Picasso 官网:

http://square.github.io/picasso/

很好很强大,但是英语太烂看不懂,瞬间就醉了。开始从网上搜集资料,发现有个翻译的不错的网站,并且有对源码进行分析:

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0731/1639.html


如果想快速用一下,那么就别看上面的了,篇幅太长,讲到源码部分还不定看得懂。

整个的Picasso 使用,其实简单到一行代码调用就可以完成

Picasso.with(mcontext).load(list.get(i)).placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).resize(100,100).centerCrop().into(viewHolder.imagelist);

将jar包copy进项目中,直接调用,其中 load(图片地址,可url,可本地),placeholder(当图片正在加载过程的占位图),error(图片加载失败时候显示的图片),resize(将图片剪切缩放到长宽),centerCrop()显示的scaleType ,into(将图片放进哪个控件)。

并且自带二级缓存


这是最简单的加载图片的方式了。

自己写了个小demo,可以参考下。

package demo.tdotapp.com.picassodemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ListView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    private ListView imagelist;
    private ImagelistAdapter adapter;
    //放图片资源的集合
    private ArrayList<String> list =new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imagelist= (ListView) findViewById(R.id.imagelist);
        list.add("http://h.hiphotos.baidu.com/image/w%3D310/sign=53d5f82103e9390156028b3f4bec54f9/574e9258d109b3deb38ea469cebf6c81800a4cf9.jpg");
        list.add("http://c.hiphotos.baidu.com/image/w%3D310/sign=1214242166380cd7e61ea4ec9145ad14/ae51f3deb48f8c5436841ebe39292df5e1fe7fc8.jpg");
        list.add("http://c.hiphotos.baidu.com/image/w%3D310/sign=4bebf5c06e81800a6ee58f0f813433d6/7c1ed21b0ef41bd537dde4bb53da81cb38db3df6.jpg");
        
        adapter=new ImagelistAdapter(MainActivity.this,list);
        imagelist.setAdapter(adapter);
    }
}



package demo.tdotapp.com.picassodemo;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;

import com.squareup.picasso.Picasso;

import java.util.ArrayList;

/**
 * Created by GT on 2016/1/29.
 */
public class ImagelistAdapter extends BaseAdapter {
    private Context mcontext;
    ArrayList<String> list = new ArrayList<>();

    public ImagelistAdapter(Context context, ArrayList<String> getlist) {
        this.mcontext = context;
        this.list = getlist;
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int i) {
        return list.get(i);
    }

    @Override
    public long getItemId(int i) {
        return 0;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        ViewHolder viewHolder = null;
        if (view == null) {
            viewHolder =new ViewHolder();
            view = LayoutInflater.from(mcontext).inflate(R.layout.list_item, null);
            viewHolder.imagelist = (ImageView) view.findViewById(R.id.item_img);
            view.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) view.getTag();
        }
        //最简单的加载方式,load里面为图片的url(当然也可以是本地资源啊什么的),into进image控件里面去。
        Picasso.with(mcontext).load(list.get(i)).into(viewHolder.imagelist);
        //将图片切成长宽都是100 加载到控件上,适合确定控件长宽
        Picasso.with(mcontext).load(list.get(i)).resize(100, 100).centerCrop().into(viewHolder.imagelist);
        //添加空白和占位图片。加载图片中有一个占位图片,加载失败错误显示另一张图片
        Picasso.with(mcontext).load(list.get(i)).placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).into(viewHolder.imagelist);
        //汇总常用的方法,直接拿这个用就行了
        Picasso.with(mcontext).load(list.get(i)).placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).resize(100,100).centerCrop().into(viewHolder.imagelist);
        return view;
    }
    class ViewHolder {
        ImageView imagelist;
    }
}


关键地方注释很清晰了,这里就不再做解释了。


原创文章,转载请注明出处:
http://blog.csdn.net/qq_33078541?viewmode=contents

Demo地址(不需要积分,android studio版):

http://download.csdn.net/detail/qq_33078541/9422534

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值