Android图片预览功能(可旋转、缩放、左右切换)
来源:互联网 发布:千牛怎么查买家淘宝号 编辑:程序博客网 时间:2024/05/21 14:54
我们要实现的效果
1、点击图片出现预览界面
2、可对图片进行旋转、缩放
3、能左右滑动,预览其他图片
4、单击预览界面后,回到上一界面
具体如下图:
使用到的第三方库
1、图片加载缓存库 Picasso:https://github.com/square/picasso
2、图片浏览缩放控件 PhotoView:https://github.com/bm-x/PhotoView
万事俱备,就差实现了, Let ' s go!!
一、创建一个图片预览 ImageBrowseActivity
布局文件如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ff171b19" android:orientation="vertical" > <android.support.v4.view.ViewPager android:id="@+id/imageBrowseViewPager" android:layout_width="match_parent" android:layout_height="match_parent" /></LinearLayout>
二、点击图片开始预览,需要通过 Intent 跳转到 ImageBrowseActivity
1、传递图片列表,因为用到Picasso,所以列表存储的是图片URL
2、传递要第一个显示的图片下标
private val imageList = ArrayList<String>() //图片列表
val intent = Intent(context, ImageBrowseActivity::class.java)intent.putStringArrayListExtra("imageList", imageList)intent.putExtra("index", position)context.startActivity(intent)
三、ImageBrowseActivity中的具体逻辑
1、拿到图片列表、第一个显示的图片下标
if(intent.extras != null){ index = intent.getIntExtra("index", 0) imageList = intent.getStringArrayListExtra("imageList")}
2、写一个图片适配器 ImageBrowseAdapter
图片加载使用 Picasso
需要注意的几点:
- 图片的 ScaleType 最好设置为 centerInside
- 不需要使用 PhotoView 的 animFrom()、animTo() 函数,会出现一些问题
- 可自己设置最大缩放倍数
private inner class ImageBrowseAdapter(var context: Context) : PagerAdapter() { override fun getCount(): Int { return imageList.size } override fun isViewFromObject(view: View, `object`: Any): Boolean { return view === `object` } override fun instantiateItem(container: ViewGroup, position: Int): View { val image = PhotoView(context) // 开启图片缩放功能 image.enable() // 设置缩放类型 image.scaleType = ImageView.ScaleType.CENTER_INSIDE // 设置最大缩放倍数 image.maxScale = 2.5f // 加载图片 Picasso.with(context) .load(imageList[position]) .into(image) // 单击图片,返回 image.onClick { image.disenable() finish() } container.addView(image) return image } override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { container.removeView(`object` as View) }}
3、初始化 ViewPager
fun initViewPager(){ imageBrowseViewPager.adapter = ImageBrowseAdapter(this) imageBrowseViewPager.currentItem = index}
到此,功能就实现了!!!!
0 0
- Android图片预览功能(可旋转、缩放、左右切换)
- Android左右图片切换(可自动)
- Android图片查看器(图片可移动、缩放、旋转)
- android图片预览功能-缩放、平移
- android图片的缩放和旋转功能
- Android图片预览效果,支持缩放、平移切换
- WPF图片预览之移动、旋转、缩放
- [Android View] 判断是否点中一个动态可旋转、可缩放、可移动的图片
- VS2010-MFC:用OpenGL在对话框中的PictureControl(图片控件)中绘制三维模型,可旋转、平移、缩放,可用于三维模型的预览
- php+croppic 图片裁剪,可缩放、旋转
- Android 图片缩放与旋转
- android图片缩放与旋转
- Android 图片旋转 缩放 平移
- Android ImageSwitcher左右切换图片
- Android 可平移,缩放,旋转的ImageView
- 图片左右循环切换功能的实现
- 多图片左右切换功能前端实现
- android listview的HeadView左右切换图片(图片广告)
- 最简洁完整的Java高级教程之一(数据结构、集合、网络编程、多线程)
- 用C++实现日期类
- 练习8
- 练习9
- 自学安卓之路:为什么选择学安卓开发?
- Android图片预览功能(可旋转、缩放、左右切换)
- 练习10
- 数据压缩实验一:YUV转RGB
- 立体匹配文献阅读笔记(一)《A non-local cost aggregation method for stereo matching》12年
- 电子电路基础知识——电阻,电容,电感
- 黑苹果引导工具 Clover 配置详解及Clover Configurator使用
- jdbc
- Zurmo(十一)Relation之n:n和1:n(二)
- 线段树2(带有乘法标记)