zoukankan      html  css  js  c++  java
  • Android图片加载框架之Picasso

    相信做Android开发的对Square公司一定不会陌生,大名鼎鼎的网络请求框架Retrofit就来源于它,今天学习的是该公司出品的图片加载框架Picasso。

    项目地址

    https://github.com/square/picasso

    使用说明

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

    Gradle:

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

    ProGard混淆配置:

    -dontwarn com.squareup.okhttp.**

    简介

    图片为Android应用增加必要的背景和视觉,Picasso使得你可以在应用中轻而易举地实现图片加载,只需一行代码!

    Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);

    许多在Android上图片加载常见的的陷阱都被Picasso自动的处理了:

    • adaper中处理ImageView循环和取消下载
    • 对复杂图像进行转换,使其占用最小的内存
    • 自动的内存和磁盘缓存

    特性

    在Adapter中下载

    自动检测Adapter重用并取消之前的下载

    @Override 
    public void getView(int position, View convertView, ViewGroup parent) {
        SquaredImageView view = (SquaredImageView) convertView;
        if (view == null) {
            view = new SquaredImageView(context);
        }
        String url = getItem(position);
    
        Picasso.with(context).load(url).into(view);
    }

    图片转换

    转换图片以更好地适配布局并减少内存使用

    Picasso.with(context)
      .load(url)
      .resize(50, 50)
      .centerCrop()
      .into(imageView)

    你也可以指定定制的转换方式来实现更高级的效果

    public class CropSquareTransformation implements Transformation {
        @Override
        public Bitmap transform(Bitmap source) {
            int size = Math.min(source.getWidth(), source.getHeight());
            int x = (source.getWidth() - size) / 2;
            int y = (source.getHeight() - size) / 2;
            Bitmap result = Bitmap.createBitmap(source, x, y, size, size);
            if (result != source) {
                source.recycle();
            }
            return result;
        }
    
        @Override 
        public String key() {
            return "square()";
        }
    }

    传入该类的实例到transform方法

    占位图

    Picasso同时支持了下载和出错的占位图供用户选择

    Picasso.with(context)
        .load(url)
        .placeholder(R.drawable.user_placeholder)
        .error(R.drawable.user_placeholder_error)
        .into(imageView);

    出错占位图显示前一个请求会被重试三次

    资源加载

    支持Resourcesassetsfilescontent providers作为图片源

    Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);
    Picasso.with(context).load("file:///android_asset/DvpvklR.png").into(imageView2);
    Picasso.with(context).load(new File(...)).into(imageView3);

    调试指示

    开发时可以打开彩带显示来指示图片源,在Picasso实例调用setIndicatorsEnabled(true)即可

  • 相关阅读:
    linux 修改文件夹颜色 终端颜色
    每日更新FadeTop背景为必应图片
    odoo 去除动作菜单的删除按钮
    crontab详解
    odoo 创建初始数据库 切换当前数据库
    python for else
    lfi phpinfo
    python __dict__
    iscsi 开机自动挂载
    HP SSD smart path
  • 原文地址:https://www.cnblogs.com/simadi/p/6707491.html
Copyright © 2011-2022 走看看