外企网站建设公司,中企动力企业邮箱登陆首页,深圳品牌网站制作公司,wordpress本地后台打开卡住目录
一、Picasso介绍及其优势
二、Picasso的使用方法
1、添加依赖#xff1a;
2、Picasso常用方法#xff1a;
1、加载图像#xff1a; 2、图像显示#xff1a; 3、图像处理#xff1a;
4、图像占位符和错误处理#xff1a;
5、缓存控制#xff1a;
6、清除缓…目录
一、Picasso介绍及其优势
二、Picasso的使用方法
1、添加依赖
2、Picasso常用方法
1、加载图像 2、图像显示 3、图像处理
4、图像占位符和错误处理
5、缓存控制
6、清除缓存
调用Picasso库常用方法的示例
1、加载图像并显示到ImageView 2、图像处理
3、设置占位符和错误图像
4、缓存控制 5、自定义图像转换器 三、Picasso使用例子
MainActivity
activity_main 运行结果
一、Picasso介绍及其优势 Picasso是一个适用于Android的强大且易于使用的图片加载和显示库。它由Square开发并提供了许多功能和选项以帮助开发者更轻松地处理和展示图片。
以下是Picasso库的一些主要特点和优势
1. 简单易用Picasso提供了简洁而直观的API使得加载和显示图片变得非常简单。只需几行代码就可以实现网络或本地图片的加载和显示。
2. 自动管理图片下载和缓存Picasso会自动处理图片的下载和缓存无需手动管理。它会根据需要自动加载和缓存图片并在下次请求时从缓存中获取以提高性能和节省数据使用量。
3. 强大的图片处理功能Picasso支持各种常见的图片处理操作如裁剪、旋转、缩放等以满足不同的显示需求。可以根据ImageView的尺寸自动调整图片大小并提供了灵活的接口来进行自定义的图片转换操作。
4. 错误处理和占位符Picasso允许设置加载过程中的错误处理和占位符图片。当图片加载失败时可以指定显示一个错误图片或者使用占位符图片代替以提供更好的用户体验。
5. 请求优先级和标记Picasso允许为每个图片请求设置优先级并支持请求的取消和暂停。可以使用标记来管理和识别不同的图片请求方便后续操作和处理。
6. 内存和磁盘缓存Picasso会自动对已加载的图片进行内存和磁盘缓存以提高性能并减少网络数据的消耗。它使用LRU (Least Recently Used) 算法来管理内存缓存并使用磁盘缓存来避免重复下载图片。
7. 调试和日志记录Picasso提供了调试功能和详细的日志记录方便开发者在开发过程中定位和解决问题。可以开启调试标记显示图片加载来源并打印详细的日志信息查看每个图片请求的状态和事件。
二、Picasso的使用方法
1、添加依赖
implementation com.squareup.picasso:picasso:2.71828
2、Picasso常用方法
1、加载图像
load(String path)从指定路径加载图像可以是本地文件路径或网络URL。load(File file)从文件加载图像。load(Uri uri)从Uri加载图像。load(int resourceId)从资源ID加载图像。 2、图像显示
into(ImageView imageView)将图像显示到指定的ImageView中。into(Target target)将图像显示到自定义的Target对象中可以用于处理图像的进一步操作。into(BitmapTarget target)将图像显示到自定义的BitmapTarget对象中可以获取Bitmap对象进行进一步处理。 3、图像处理
resize(int width, int height)调整图像大小。centerCrop()居中裁剪图像以适应ImageView的尺寸。fit()按比例缩放图像使其完全适应ImageView的尺寸。rotate(float degrees)旋转图像指定角度。transform(Transformation transformation)应用自定义的图像转换器。
4、图像占位符和错误处理
placeholder(int resourceId)在加载图像之前显示的占位符。error(int resourceId)加载图像失败时显示的错误占位符。
5、缓存控制
memoryPolicy(MemoryPolicy memoryPolicy)设置内存缓存策略。networkPolicy(NetworkPolicy networkPolicy)设置网络缓存策略。
6、清除缓存
invalidate(String path)使指定路径的图像缓存失效。clearMemory()清除内存缓存。clearDiskCache()清除磁盘缓存。
调用Picasso库常用方法的示例
1、加载图像并显示到ImageView
ImageView imageView findViewById(R.id.imageView);
// 使用Picasso加载网络图片
String imageUrl https://img-home.csdnimg.cn/images/20201124032511.png; Picasso.get().load(imageUrl).into(imageView);2、图像处理
调整图像大小
Picasso.get().load(imageUrl).resize(200, 200).into(imageView);居中裁剪图像
Picasso.get().load(imageUrl).centerCrop().into(imageView);旋转图像
Picasso.get().load(imageUrl).rotate(90).into(imageView);3、设置占位符和错误图像
Picasso.get().load(imageUrl).placeholder(R.drawable.placeholder_image).error(R.drawable.error_image).into(imageView);4、缓存控制
禁用内存缓存
Picasso.get().load(imageUrl).memoryPolicy(MemoryPolicy.NO_CACHE).into(imageView);清除磁盘缓存
Picasso.get().clearDiskCache();5、自定义图像转换器
Transformation transformation new Transformation() {Overridepublic Bitmap transform(Bitmap source) {// 在此处对图像进行自定义转换return transformedBitmap;}Overridepublic String key() {return customTransformation;}
};Picasso.get().load(imageUrl).transform(transformation).into(imageView);三、Picasso使用例子
MainActivity
package com.example.picassodemo;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
import com.squareup.picasso.Picasso;public class MainActivity extends AppCompatActivity {private ImageView imageView;private Button load,rotate;String imageUrl https://img-home.csdnimg.cn/images/20201124032511.png; // 替换为实际的图片URLOverrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 获取ImageView控件的引用imageView findViewById(R.id.image_view);load findViewById(R.id.load);rotate findViewById(R.id.rotate);rotate.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {Picasso.get().load(imageUrl).rotate(90).fit().into(imageView);}});load.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {// 使用Picasso加载网络图片Picasso.get().load(imageUrl).placeholder(R.drawable.img).error(R.drawable.ic_launcher_background).fit().into(imageView);}});}
}activity_main
?xml version1.0 encodingutf-8?
androidx.constraintlayout.widget.ConstraintLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivityImageViewandroid:idid/image_viewandroid:layout_width200dpandroid:layout_height200dpapp:layout_constraintBottom_toBottomOfparentapp:layout_constraintEnd_toEndOfparentapp:layout_constraintHorizontal_bias0.498app:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfparentapp:layout_constraintVertical_bias0.482tools:srcCompattools:sample/avatars /Buttonandroid:idid/loadandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text加载图片app:layout_constraintBottom_toBottomOfparentapp:layout_constraintEnd_toEndOfparentapp:layout_constraintHorizontal_bias0.498app:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toBottomOfid/image_viewapp:layout_constraintVertical_bias0.193 /Buttonandroid:idid/rotateandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text旋转图片app:layout_constraintBottom_toBottomOfparentapp:layout_constraintEnd_toEndOfparentapp:layout_constraintHorizontal_bias0.498app:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfparentapp:layout_constraintVertical_bias0.796 //androidx.constraintlayout.widget.ConstraintLayout 运行结果 安卓图标库iconfont-阿里巴巴矢量图标库