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)即可

  • 相关阅读:
    WEB测试(2)--WEB核心技术之WEB工作过程---URL
    WEB测试(1)---WEB系统架构
    linux随笔1
    .Net 下 百度 富文本框 Ueditor 的 使用
    那些年出现的遇到的 错误 VS (长期)
    C# 基础 学习 之 数据类型转换
    C# 基础 学习 之 数据类型
    C# 基础学习 之 深复制和浅复制
    设计模式 学习 之 原形模式
    设计模式学习 之 单例模式
  • 原文地址:https://www.cnblogs.com/simadi/p/6707491.html
Copyright © 2011-2022 走看看