android中Picasso显示网络图片

14 篇文章 0 订阅
7 篇文章 0 订阅

使用之前导入jar包(picasso.jar网上搜搜都有)或者在android studio中添加依赖compile 'com.squareup.picasso:picasso:2.5.2'

使用方式:结合ViewPager实现首页轮播图。

主要核心代码:

ImageView imageView = new ImageView(getActivity());
//获取本地图片
//imageView.setBackgroundResource(imageIds[i]);
//获取网络图片
Picasso.with(getActivity()).load("url").into(imageView);
images.add(imageView);

注意:最新版使用get(),没有with()方法。

1. 简介
介绍:Picasso,可译为“毕加索”,是Android中一个图片加载开源库
大概是因为其使用使用方法简单、优雅所以这样取名

主要作用:实现图片加载
2. 功能特点
2.1 功能列表

功能列表
从上面可以看出,Picasso不仅实现了图片异步加载的功能,还解决了Android中加载图片时需要解决的一些常见问题
接下来,我会对Picasso的每个功能点进行详细的介绍
2.2 功能介绍
2.2.1 图片的异步加载(最基础功能)

ImageView targetImageView = (ImageView) findViewById(R.id.ImageView);
        String Url = "http://218.192.170.132/1.jpg";
 
//Picasso使用了流式接口的调用方式
//Picasso类是核心实现类。
//实现图片加载功能至少需要三个参数:
        Picasso
//with(Context context)
//Context对于很多Android API的调用都是必须的,这里就不多说了
                .with(context)
 
//load(String imageUrl):被加载图像的Url地址。
//大多情况下,一个字符串代表一个网络图片的URL。
                .load(Url)
 
//into(ImageView targetImageView):图片最终要展示的地方。
                .into(targetImageView);


2.2.2 图片转换
使用最少的内存完成复杂的图片转换,转换图片以适合所显示的ImageView,来减少内存消耗

Picasso.with(context)
  .load(url)
//裁剪图片尺寸
  .resize(50, 50)
//设置图片圆角
  .centerCrop()
  .into(imageView)


2.2.3 加载过重 & 错误处理
Picasso支持加载过程中和加载错误时显示对应图片

Picasso.with(context)
    .load(url)
//加载过程中的图片显示
    .placeholder(R.drawable.user_placeholder)
//加载失败中的图片显示
//如果重试3次(下载源代码可以根据需要修改)还是无法成功加载图片,则用错误占位符图片显示。
    .error(R.drawable.user_placeholder_error)
    .into(imageView);


2.2.4 在Adapter中的回收不在视野的ImageView和取消已经回收的ImageView下载进程

@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);
}


2.2.5 从不同资源源加载
支持多种数据源 网络、本地、资源、Assets 等

//加载资源文件
Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);
//加载本地文件
Picasso.with(context).load(new File("/images/oprah_bees.gif")).into(imageView2);


2.2.6 自动添加磁盘和内存二级缓存功能

2.2.7 支持优先级处理
每次任务调度前会选择优先级高的任务,比如 App 页面中 Banner 的优先级高于 Icon 时就很适用。

2.2.8 支持飞行模式、并发线程数根据网络类型而变
手机切换到飞行模式或网络类型变换时会自动调整线程池最大并发数,比如 wifi 最大并发为 4, 4g 为 3,3g 为 2

2.2.9 “无”本地缓存
无”本地缓存,不是说没有本地缓存,而是 Picasso 自己没有实现,交给了 Square 的另外一个网络库 okhttp 去实现,这样的好处是可以通过请求 Response Header 中的 Cache-Control 及 Expired 控制图片的过期时间。

3. Demo实例
没有Demo的代码讲解不是好文章,让我们来一步步学会使用Picasso。

步骤1:在gradle添加依赖

compile 'com.squareup.picasso:picasso:2.5.2'
步骤2:添加网络权限

<uses-permission android:name="android.permission.INTERNET"/>
步骤1和步骤2是Picasso使用的前提,千万别忘了!!!!

步骤3:在MainActivity中

ImageView targetImageView = (ImageView) findViewById(R.id.ImageView);
        String Url = "http://218.192.170.132/1.jpg";
 
        Picasso
                .with(this)
                .load(Url)
                .into(targetImageView);


还有具体其他功能需要配置的自己按照我上面写的进行配置就好了~

这里再贴上Picasso的Github地址:请点击这里

4. 特点
4.1 优点
使用简单、方便(一行代码的事情)
由于同样是出品自Square的,Square 公司的其他开源库如 Retrofit 或者 OkHttp和Picasso搭配使用兼容性会更好些,占用体积也会少些
所以,如果项目已经使用了 Square 公司的其他开源库(如 Retrofit 或者 OkHttp),在满足需求的前提下建议使用Picasso

4.2 缺点
功能较为简单-图片加载;
性能(加载速度等等)较其他图片加载库(Glide、Fresco)较差
自身无实现“本地缓存”
————————————————

原文链接:https://blog.csdn.net/qq_24349695/article/details/76184924

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Android 应用程序显示网络图片,可以使用 Picasso 或 Glide 这样的第三方库。而要将图片保存到 SQLite 数据库,可以将图片转换为 Base64 字符串,然后将其保存到 TEXT 类型的列。 以下是一个示例代码,用于从 SQLite 数据库读取 Base64 编码的图片并将其显示在 ImageView : 1. 添加依赖库 在 app/build.gradle 文件添加以下依赖库: ```groovy implementation 'com.squareup.picasso:picasso:2.71828' ``` 2. 读取 Base64 编码的图片 在 SQLite 数据库保存图片时,可以将其转换为 Base64 编码的字符串,然后将其保存到 TEXT 类型的列。例如: ```java String imageUrl = "https://example.com/image.png"; Bitmap bitmap = getBitmapFromUrl(imageUrl); String base64String = getBase64String(bitmap); // 将 base64String 保存到 SQLite 数据库 ``` 其,getBitmapFromUrl() 方法用于从 URL 获取 Bitmap 对象,getBase64String() 方法用于将 Bitmap 对象转换为 Base64 编码的字符串。 在从 SQLite 数据库读取图片时,可以使用以下代码: ```java String base64String = cursor.getString(cursor.getColumnIndexOrThrow("image_data")); byte[] decodedString = Base64.decode(base64String, Base64.DEFAULT); Bitmap bitmap = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); imageView.setImageBitmap(bitmap); ``` 其,cursor 是从 SQLite 数据库查询得到的结果集对象,"image_data" 是保存 Base64 编码图片的列名。 3. 使用 Picasso 显示图片 使用 Picasso 显示网络图片非常简单,只需要调用以下方法即可: ```java String imageUrl = "https://example.com/image.png"; Picasso.get().load(imageUrl).into(imageView); ``` 其,imageView 是要显示图片的 ImageView 对象。 因此,如果要将 Base64 编码的图片显示到 ImageView ,可以使用以下代码: ```java String base64String = cursor.getString(cursor.getColumnIndexOrThrow("image_data")); byte[] decodedString = Base64.decode(base64String, Base64.DEFAULT); Bitmap bitmap = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); imageView.setImageBitmap(bitmap); ``` 如果要显示网络图片,可以使用以下代码: ```java String imageUrl = "https://example.com/image.png"; Picasso.get().load(imageUrl).into(imageView); ``` 其,imageView 是要显示图片的 ImageView 对象,imageUrl 是要显示网络图片的 URL。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值