PS:在开发中我们会遇到一些图片处理问题,比如说缓存图片了、限制图片大小了、查看图片了等。上一篇文章介绍了图片的全景效果查看,今天介绍一个图片缩放,我们如果有时间的话,可以自己写一个属于自己的库,里面会用到view的按压、事件分发、手势等一些知识,如果没有时间或者不会其他的方法,不妨来看看这个PhotoView。这是一个图片缩放库,对于这样的还有GitView等,下面我就介绍一些用法。
功能:
- 正常加载图片
- 双击放大
- 手势随意缩放
- 随意拖动查看图片每一个角落
- 结合其他设置可实现翻转
效果图
1:本地图片加载
1
2
3
4
5
6
7
8
9
10
11
|
<ImageView
android:layout_width= "match_parent"
android:layout_height= "300dp"
android:id= "@+id/id_loc"
android:scaleType= "fitXY"
/>
<uk.co.senab.photoview.PhotoView
android:layout_width= "match_parent"
android:layout_height= "400dp"
android:src= "@mipmap/ic_launcher"
android:id= "@+id/id_myimg" />
|
第一种方法:
1
2
3
4
5
6
7
|
//本地加载方法一
// 设置图片
Drawable bitmap = getResources().getDrawable(R.mipmap.ic_launcher);
loc.setImageDrawable(bitmap);
// 连接在photoview中
PhotoViewAttacher mAttacher = new PhotoViewAttacher(loc);
mAttacher.update(); //更新
|
第二种
1
2
3
4
5
6
|
//本地方法加载二
PhotoViewAttacher mAttacher;
mAttacher = new PhotoViewAttacher(loc);
iv.setImageBitmap(bitmap);
Glide.with( this ).load(R.mipmap.ic_launcher).asBitmap().into(loc);
mAttacher.update();
|
2:网络图片加载
对于网络也是可以用ImageView和PhotoView两种
把ImageView或者PhotoView的对象名直接添加到display中就OK 了。
1
2
3
4
|
//加载网络图片
ImageLoader loader= ImageLoader.getInstance();
loader.init(ImageLoaderConfiguration.createDefault(ImageTest. this )); //loader初始化
loader.displayImage( "https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1529211252&di=1414331e22239ecb5730cbbd0f3793eb&src=http://pic154.nipic.com/file/20180114/26629113_090329120799_2.jpg" ,loc);//展示图片
|
下面我们可以看一下源码,其实他也是继承了ImageView
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/**
* Adds display image task to execution pool. Image will be set to ImageView when it's turn. <br/>
* Default {@linkplain DisplayImageOptions display image options} from {@linkplain ImageLoaderConfiguration
* configuration} will be used.<br />
* <b>NOTE:</b> {@link #init(ImageLoaderConfiguration)} method must be called before this method call
*
* @param uri Image URI (i.e. "http://site.com/image.png", "file:///mnt/sdcard/image.png")
* @param imageView {@link ImageView} which should display image
* @throws IllegalStateException if {@link #init(ImageLoaderConfiguration)} method wasn't called before
* @throws IllegalArgumentException if passed <b>imageView</b> is null
*/
public void displayImage(String uri, ImageView imageView) {
displayImage(uri, new ImageViewAware(imageView), null , null , null );
}
|
总结
以上所述是小编给大家介绍的Android 图片处理缩放功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:https://www.cnblogs.com/cmusketeer/archive/2018/06/17/9192687.html