今天小组开会,听组长提到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. android中自定义控件的属性
  2. android 标题栏下拉选择控件(下拉菜单宽度全屏显示spinner)
  3. Android开发之基本控件和详解四种布局方式
  4. 解决FLIR One Android Demo项目加载问题
  5. android 上实现 控件平滑移动(smooth move) 研究
  6. Android 利用控件显示HTML样式

随机推荐

  1. Android(安卓)锁屏后handler计时失效
  2. android导入外部数据库到项目中的使用方
  3. 揭开Android神秘面纱之Activity
  4. Android最佳实践 为响应灵敏性设计
  5. Android之Binder和AIDL原理
  6. cocos2dx 3.x系列之Mac环境编译Android(
  7. Android中微信支付的调用方法
  8. Android之音频开发基础入门
  9. Android开发-从硬件到APP(一) : 单独编内核
  10. Android布局方式(FrameLayout)学习