扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Picasso是个什么鬼?有什么作用?
防城网站建设公司创新互联,防城网站设计制作,有大型网站制作公司丰富经验。已为防城超过千家提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的防城做网站的公司定做!
Picasso 其实是 Android 系统的图片下载和缓存类库,是Square开源的一个用于Android系统下载和缓存图片的项目。下面我们就来讲讲在Android开发中,Picasso有哪些特性及如何使用。
Picasso的特性
1、处理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、使用最少的内存完成复杂的图片转换,比如把下载的图片转换为圆角。
部分示例代码:
Picasso.with(context)
.load(url)
.resize(50, 50)
.centerCrop()
.into(imageView)
3、支持本地资源加载
从 Resources, assets, files, content providers 加载图片都支持
Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);
Picasso.with(context).load(new File("/images/oprah_bees.gif")).into(imageView2);
4、支持调试
调用函数 Picasso.setDebug(true) 可以在加载的图片左上角显示一个三角形 ,不同的颜色代表不同的加载来源,比如:
红色:代表从网络下载的图片
黄色:代表从磁盘缓存加载的图片
绿色:代表从内存中加载的图片
如要了解更多的Picasso特性,可查阅《Android开发实战教程》
Picasso的使用
直接说,有点空,且不易明白,举个例子说明吧:Picasso.with(context).load("");
上面就是对Android 系统的图片下载和缓存类库Picasso的相关特性及使用的简要介绍,篇幅有限,可能有些地方讲的不是很详细,欢迎大家继续分享。
在Android类库中,各种包写成android.*的方式,重要包的描述如下所示:
android.app :提供高层的程序模型、提供基本的运行环境
android.content 包含各种的对设备上的数据进行访问和发布的类
android.database :通过内容提供者浏览和操作数据库
android.graphics :底层的图形库,包含画布,颜色过滤,点,矩形,可以将他们直接绘制到屏幕上.
android.location :定位和相关服务的类
android.media :提供一些类管理多种音频、视频的媒体接口
android.net :提供帮助网络访问的类,超过通常的java.net.* 接口
android.os :提供了系统服务、消息传输、IPC机制
android.opengl :提供OpenGL的工具,3D加速
android.provider :提供类访问Android的内容提供者
android.telephony :提供与拨打电话相关的API交互
android.view :提供基础的用户界面接口框架
android.util :涉及工具性的方法,例如时间日期的操作
android.webkit:默认浏览器操作接口
android.widget:包含各种UI元素(大部分是可见的)在应用程序的屏幕中使用
首先是项目工程有两个,第一个是做为类库(library),第二个是主工程,这里说一下如何导入,这里使用的是eclipse:
第一步:和导入正常工程是一样的,导入以后对项目右键—属性,有一个Is Library选项,打上勾即可。
如下图:
第二步:导入主工程,然后也是对项目右键——属性,有一个add按钮,添加前面导入的类库就可以了》
如下图:
Android 类库中,各种包写成android.*的方式,重要包的介绍如下:
android.app:提供高层的程序模型、提供基本的运行环境。
android.content:包含各种的对设备上的数据进行访问和发布的类。
android.database:通过内容提供者浏览和操作数据库。
android.graphics:底层的图形库,包含画布,颜色过滤,点,矩形,可以将他们直接绘制到屏幕上。
android.location:定位和相关服务的类。
android.media:提供一些类管理多种音频、视频的媒体接口。
android.net:提供帮助网络访问的类,超过通常的java.net.*接口。
android.os:提供了系统服务、消息传输、IPC 机制。
android.opengl:提供OpenGL 的工具,3D 加速。
android.provider:提供类访问Android 的内容提供者。
android.telephony:提供与拨打电话相关的API交互。
android.view :提供基础的用户界面接口框架。
android.util:工具性的方法,例如时间日期的操作。
android.webkit:默认浏览器操作接口。 android.widget:包含各种UI 元素(大部分是可见的)在应用程序的屏幕中使用。
假如你的项目中有这样一个image类库, 打开image类库下的build.gradle文件,查看里面有哪些 引用包 ,如果lib里面也有包, lib中的也需要查看
假如现在,让 最后一个" compile'com.blankj:utilcode:1.9.8 '" 不被混淆
打开图中的 External Libraries 文件, 我们导入的所有的第三方jar包都在里面
找到" compile'com.blankj:utilcode:1.9.8 '"
查看包名,在混淆文件中添加
所有的jar包都依次写上 -keep class "jar包名" ,就ok了
--注意事项--
1.保证实体类不被混淆
2.保证第三方的jar包不被混淆,类似于,友盟,地图,等等,配置的时候,就把混淆文件也copy过来,免得再回去找
3.添加基础混淆配置,网上有很多的实例
################ 以下直接copy到 proguard-rules.pro文件中,实体类,第三方部分,需修改####################
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流