android之Picasso加载图片用法以及Transformation自定义加载图片
2015-11-03 10:46
567 查看
需求:做项目的时候有一个需求:利用从网上加载图片到手机并且要调整成为自适应手机屏幕大小。
我用的是Picasso包来加载图片,picasso是一个非常优秀的图片处理包,下载地址如下:http://square.github.io/picasso/ 。用picasso来加载图片我们只需要一部就可以搞定:
ImageView imageView = (ImageView) view.findViewById(R.id.iv_image_browser);.
RequestCreator requestCreator= Picasso.with(view.getContext()).load(IPConfig.URL+orderUrlList.get(position));
requestCreator.resize(200,200).placeholder(R.drawable.image_loding).error(R.drawable.image_error).into(imageView);
通过这几个步骤我们就可以把我们的图片加载进我们的imageView中
方法说明 :with(Context context) : 告诉Picasso我们需要加载图片的页面是哪个context。 必须
load(String path):用于下载图片。必须
resize(int width,int height):用于设置图片的宽高。不必须
placeholder(int ResId):当图片正在加载的时候显示的图片。不必须
error(int ResId):图片加载失败时显示的图片。不必须
into(ImageView imageview): 把图片显示在指定控件上。必须
效果图:
楼主是把图片放在gradview中加载的。
之后又有一个需求就是我的每个item都设置了点击事件,当点击了会跳转进一个viewpager中浏览图片,浏览图片时我需要让其适应手机屏幕大小,显然 resize这方法现在不适用了,在网上找了一下发现有个transform方法他可以自定义显示图片,transform里面需要传一个实施了Transform接口的类,源码如下:
需要注意的是 screemWidth是屏幕宽度。 创建了一个新的bitmap的时候,之后以前的bitmap需要回收不然会报错,key()方法返回的必须是"square()"。
我用的是Picasso包来加载图片,picasso是一个非常优秀的图片处理包,下载地址如下:http://square.github.io/picasso/ 。用picasso来加载图片我们只需要一部就可以搞定:
ImageView imageView = (ImageView) view.findViewById(R.id.iv_image_browser);.
RequestCreator requestCreator= Picasso.with(view.getContext()).load(IPConfig.URL+orderUrlList.get(position));
requestCreator.resize(200,200).placeholder(R.drawable.image_loding).error(R.drawable.image_error).into(imageView);
通过这几个步骤我们就可以把我们的图片加载进我们的imageView中
方法说明 :with(Context context) : 告诉Picasso我们需要加载图片的页面是哪个context。 必须
load(String path):用于下载图片。必须
resize(int width,int height):用于设置图片的宽高。不必须
placeholder(int ResId):当图片正在加载的时候显示的图片。不必须
error(int ResId):图片加载失败时显示的图片。不必须
into(ImageView imageview): 把图片显示在指定控件上。必须
效果图:
楼主是把图片放在gradview中加载的。
之后又有一个需求就是我的每个item都设置了点击事件,当点击了会跳转进一个viewpager中浏览图片,浏览图片时我需要让其适应手机屏幕大小,显然 resize这方法现在不适用了,在网上找了一下发现有个transform方法他可以自定义显示图片,transform里面需要传一个实施了Transform接口的类,源码如下:
ImageView imageView = (ImageView) view.findViewById(R.id.iv_image_viewpager_browser); RequestCreator requestCreator = Picasso.with(view.getContext()).load(IPConfig.URL+arrayList.get(position)); requestCreator.transform(new MyTransfomation()).into(imageView);
private class MyTransfomation implements Transformation{ @Override public Bitmap transform(Bitmap bitmap) { double ratio = bitmap.getHeight()/ bitmap.getWidth(); screenHeight = (int)(screenWidth*ratio); Bitmap newBitMap = Bitmap.createScaledBitmap(bitmap, screenWidth, screenHeight, true); bitmap.recycle(); //这要回收一下 不然会抛出异常 return newBitMap; } @Override public String key() { return "square()"; } }
需要注意的是 screemWidth是屏幕宽度。 创建了一个新的bitmap的时候,之后以前的bitmap需要回收不然会报错,key()方法返回的必须是"square()"。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories