Picasso之图片缓存机制
来源:互联网 发布:中天证券软件下载 编辑:程序博客网 时间:2024/05/16 15:46
Picasso介绍
picasso是Square公司开源的一个Android图形缓存库 主要有以下一些特性: 在adapter中回收和取消当前的下载; 使用最少的内存完成复杂的图形转换操作; 自动的内存和硬盘缓存; 图形转换操作,如变换大小,旋转等,提供了接口来让用户可以自定义转换操作; 加载载网络或本地资源;
图像为Android应用程序添加了非常需要的上下文和视觉风格。 毕加索允许在您的应用程序无障碍图像加载 - 通常在一行代码!
Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);
废话不多说·~相信很多小伙伴已经迫不及待想要看到效果了哈哈!别急,我还在等待一个女孩,哈哈,不会让您们失望!
废话不多说下面直接上代码要分为三步
下载picasso.jar点击直接下载http://square.github.io/picasso/
然后放在libs目录下如下图所示
然后add to path ok就可以了!
一.idea小伙伴这样添加一.通过gradle上导入 eg:picasso
在支持Android studio的gradle第三方类库中,github上或类库项目readme会有说明
compile ‘com.squareup.picasso:picasso:2.5.2’
如何将其添加到项目中呢?
1.打开app下面的build.gradle.
2.在dependencies{},里面添加上面一句话
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.2.0' compile 'com.squareup.picasso:picasso:2.5.2'}
3.然后点击Sync Now,如果没有出现错误,就可以在项目中使用了
二.通过jar包加入项目
eg.picasso
1.下载picasso的jar包到本地
2.将picasso-x.x.x.jar放到app目录下的libs文件夹下面
3.右击libs下的picasso-x.x.x.jar选择add as library,选择moddle-》app
4.加入成功后,app下面的build.gradle会将jar加入进来
eg.
dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.2.0' compile files('libs/picasso-2.5.2.jar')}**三.导入第三方library**eg.Vitamo 1.点击application 2.选择File-》new-》Import Module 3.加入成功后,application下面的setting.gradle下面会出现 eg`include ':app', ':vitamio'`3.在app下面的build.gradle加入项目 eg.dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.2.0' compile 'com.loopj.android:android-async-http:1.4.9' compile project(':vitamio')}建PicassoActivity将上下文以及url加载进来,并在ImageView中显示> 然后创建activity_picasso布局> 监听事件代码> `private void initView() { // 初始化UI组件 iv_picasso=(ImageView) findViewById(R.id.imageView1); findViewById(R.id.btn_picasso).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { /** 加载网络排图片 * 第一个参数 上下文也可以是当前Activity * load(url)url是您要加载的图片缓存地址 * into就是把当前图片放进你要显示控件ImageView中 */ Picasso.with(PicassoActivity.this).load("http://img03.sogoucdn.com/app/a/100520093/508de2a2df69f20f-ad54974be9c2600f-01f80ad8e3e76b8fe0205b58d9e59649.jpg").into(iv_picasso); } });`布局文件activity_picasso<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" ><ImageView android:id="@+id/imageView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="84dp" android:layout_marginTop="68dp" android:src="@drawable/ic_launcher" /> <Button android:id="@+id/btn_picasso" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="下载Picasso图片" android:gravity="center" android:layout_below="@id/imageView1" /></RelativeLayout>效果图不错吧!Picasso自动处理Android上的图片加载的许多常见错误:> 1.在 适配器中处理ImageView回收和下载取消> 2.复杂的图像转换与最小的内存使用。> 3.自动内存和磁盘缓存。> 4.图形转换比如大小,旋转等> 5.加载网络资源和本地资源> <img>![这里写图片描述](http://img.blog.csdn.net/20161013181249560)> 下面是Picasso源码分析> ![这里写图片描述](http://img.blog.csdn.net/20161013181623316)
@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);
}
IMAGE TRANSFORMATIONSTransform images to better fit into layouts and to reduce memory size.
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.with(context) .load(url) .placeholder(R.drawable.user_placeholder) .error(R.drawable.user_placeholder_error) .into(imageView);`> > 源,资产,文件,内容提供程序都作为映像源支持。
代码如下
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);
MAVEN
com.squareup.picasso
picasso
(insert latest version)
GRADLE
compile ‘com.squareup.picasso:picasso:(insert latest version)’
“`
总结:
- 首先下载picasso.jar然后导入到工程中
2.创建一个PicassoActivity然后将url加载进行并显示在ImageView空间中
3.不要忘记添加网络权限千万注意:Android中UI线程不能有访问网络的操作,否则会报android.os.NetworkOnMainThreadException的异常如下
<uses-permission android:name="android.permission.INTERNET">
源码java.doc源码链接Picasso
扫码加群!
- Picasso之图片缓存机制
- Picasso之图片缓存机制<二>ListView篇
- Picasso之图片缓存机制<二>ListView篇
- Android 技术之Picasso图片缓存
- picasso图片缓存框架
- Android四大图片缓存框架之-Picasso和Glide
- Android开发之图片加载缓存框架Picasso的领教
- Picasso-Android图片缓存库
- picasso 图片缓存库介绍
- Android Picasso 图片缓存库
- Android中picasso图片缓存
- Picasso 加载图片 缓存小结
- Android Picasso不缓存图片
- 图片之Picasso
- 图片加载之Picasso
- Android图片加载框架之Picasso非常好的图片加载缓存库
- Picasso如何直接加载缓存中的图片
- Android图片框架Picasso LRU缓存详解
- apache lighttpd nginx 对比分析
- javaScript相等运算符==
- HDU 5135 Little Zu Chongzhi's Triangles(数学题)
- Spreading the Wealth(UVa 11300)
- set/multiset用法详解
- Picasso之图片缓存机制
- 虚析构函数的作用
- <<改善既有代码的设计>> 第2章
- Go基础语法(一)
- JS实现各种复制到剪贴板
- 高阶函数
- Java 16进制字符串转化成十六进制数字
- 虚函数和纯虚函数的作用与区别
- Python黑帽编程 3.5 DTP攻击