EasyPhotos
兼容android11、android 10,相机拍照,相册选择(单选/多选),文件夹图片选择(单选/多选),视频选择,视频图片多类型复杂选择,各界面根据状态栏颜色智能适配状态栏字体颜色变色为深色或浅色,根据使用场景智能适配沉浸式状态栏,内部处理运行时权限,支持Glide/Picasso/Imageloader等所有图片加载框架库的带默认勾选选中图片的能填充自定义广告的自定义Ui相机相册图片浏览选择器;更有拼图/文字贴纸/贴图/图片缩放/Bitmap图片添加水印/媒体文件更新到媒体库等众多Bitmap图片编辑功能的android Bitmap图片处理工具框架库。
Install / Use
/learn @HuanTanSheng/EasyPhotosREADME
EasyPhotos
QQ交流群:EasyPhotos开发交流群:288600953 (已满)
QQ交流群:EasyPhotos开发交流群二群:212324053
若无法下载demo,可以在QQ交流群的群文件下载,文件名为demo-release,下载最新的即可。
| 无选中状态(默认UI色调) | 选中状态( 自定义UI色调) | 其他功能(各功能可自选) |
|:-----------:|:--------:|:---------:|
|
|
|
|
| 专辑列表(默认UI色调) | 相册带广告( 自定义UI色调) | 专辑列表带广告 |
|:-------:|:---------:|:---------:|
|
|
|
|
| 预览页 | 预览页单击图片转全屏模式 | 预览页缩放图片 |
|:-------:|:---------:|:---------:|
|
|
|
|
|预览页单击缩放图片显示操作栏 | 拼图选择页| 拼图选择页 |
|:-------:|:---------:|:---------:|
|
|
|
|
|拼图页 | 拼图页拼图功能| 拼图页文字贴纸功能 |
|:-------:|:---------:|:---------:|
|
|
|
|
|文字贴纸编辑页 | 示例功能列表 | 示例功能列表 |
|:-------:|:---------:|:---------:|
|
|
|
|
产品特色
- 兼容android 11
- 兼容android 10
- 支持复杂选择情况,如当用户可选视频和图片多类型时,可以设定选择视频后不可以选择图片,反之亦然。也可以设定视频和图片各自类型的选择数。
- 支持绑定Glide、Picasso、Imageloader等所有图片加载库(fresco暂不支持),EasyPhotos并没有对他们进行依赖,不必担心冲突和体积问题。
- 状态栏字体颜色智能适配,当状态栏颜色趋近于白色时,字体颜色智能处理为深色
- 内部处理运行时权限,使用者无需考虑权限问题
- 清晰预览超大图和长图
- 拼一张功能(可配置开关,可独立作为拼图使用)
- 原图功能(可配置开关)
- 广告填充(可配置开关)
- 过滤图片(图片宽度、图片高度、文件大小三个维度任意选择和搭配)
- 默认勾选图片(可配置)
- 图片预览(可全屏,可缩放)
- 支持动图gif显示,并支持只显示动图gif
- 支持视频video显示,并支持只显示视频video
- UI色值高度浓缩,仅为7种,自定义超简单
- 对Gif动图的处理(可配置开关是否显示,列表中以静态图+动图标识显示,预览大图时自动播放)
- 自带Bitmap相关方法(如添加水印、把View画成Bitmap、保存Bitmap等)
- 自带媒体库相关方法(如媒体文件更新到媒体库)
关于EasyPhotos的SDK及相关版本公示(androidx版本)
compileSdkVersion 30
minSdkVersion 15
targetSdkVersion 30
关于EasyPhotos的SDK及相关版本公示(support版本)
compileSdkVersion 28
minSdkVersion 15
targetSdkVersion 28
buildToolsVersion '28.0.3'
获取EasyPhotos(通过Gradle方式)
首先,在项目的 build.gradle(project) 文件里面添加:
allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}
最后,在你需要用到EasyPhotos的module中的 build.gradle(module) 文件里面添加:
dependencies {
implementation 'com.github.HuanTanSheng:EasyPhotos:3.1.5' //androidx版本,支持android 10、11,永久维护
//implementation 'com.github.HuanTanSheng:EasyPhotos:2.4.5' //还没有升级到androidx的同学可以用这个版本,但不支持android 10,暂停维护
}
如果你的 android studio 版本低于3.4.2版,有可能会打不开我的Demo,只需要修改Demo里面 build.gradle(project) 文件中的:
dependencies {
classpath 'com.android.tools.build:gradle:3.4.2'
//把3.4.2改成你对应的版本即可,如果不清楚对应版本可以看看你其他正常项目的这里是怎么写的
}
关于混淆
EasyPhotos的混淆:
-keep class com.huantansheng.easyphotos.models.** { *; }
EasyPhotos文档总录
EasyPhotos文档总录
- 01-关于权限
- 02-相机与相册
- 03-拼图(单独使用)
- 04-图片添加水印
- 05-把View画成Bitmap
- 06-保存Bitmap到指定文件夹
- 07-Bitmap回收
- 08-更新媒体文件到媒体库
- 09-屏幕方向设置
- 10-自定义UI样式
- 11-多语言及修改文字信息
- 12-配置ImageEngine,支持所有图片加载库
QQ交流群:288600953 (已满) QQ交流群:EasyPhotos开发交流群二群:212324053
感谢
PhotoView:一个强大的图片缩放库,由chrisbanes 大神编写
PuzzleView:一个强大的拼图库,我的拼图功能是在此基础上实现,这个库由wuapnjie 编写。
编者语
EasyPhotos目前还在更新,欢迎各种Issues以及加群讨论,只是目前本人精力以及本职工作原因,更新不会频繁,只能保证不定期查看反馈统一修改,希望各位理解,感谢!
QQ交流群:288600953 (已满)
QQ交流群:EasyPhotos开发交流群二群:212324053
更新日志
3.1.5:
- 新增:public AlbumBuilder setSelectedPhotos(ArrayList<Photo> selectedPhotos,boolean isSequentialSelectedPhotos)
可自定义当传入已选中图片时,是否按照之前选中的顺序排序
3.1.4:
- 优化:多类型互斥选择时,最大选择数按照已选类型动态匹配
3.1.3:
- 优化:线程安全
- 优化:防止用户在外部多次点击重复打开相册页
3.1.1:
- 修复:在Q平台直接调用相机时的空指针问题
3.1.0:
- 适配:android 11
- 重要:createAlbum方法新增useWidth参数 意义:是否需要使用图片的宽高数据 true:会保证宽高数据的正确性,耗时,扫描图片慢 false:不需要,宽高数据返回为0 特别声明:如果使用到宽高限制,则useWidth会强制为true
- 重要:新增API:preLoad(Context cxt),预加载,不调用该方法也不影响程序使用。单类型选择建议不调用该方法,某些机型第一次扫描多类型文件可能会慢,可以在app主页面或调用EasyPhotos的上一页做一次预加载,若未授权读取权限该功能失效但不影响程序使用。
- 重要:start的链式回调模式,增加onCancel状态回调
- 重要:EasyPhotos.addWatermark方法,新增返回Bitmap(既加水印后的Bitmap),新增orientation参数,int类型,Bitmap的旋转角度。当useWidth为true时,Photo实体类中会有orientation,若bitmap不是用户手机内图片,填0即可。
- 重要:新增.complexSelector(boolean singleType,int videoCount,int pictureCount),支持复杂选择情况,singleType为是否只能选择一种文件类型,如用户选择视频后不可以选择图片,若false则可以同时选择。后面两个参数为视频和图片各自类型的最大选择数。
- 新增:内部新增加载框,可覆盖dialog_loading_easy_photos.xml文件进行自定义样式修改
- 优化:优化图片读取速度
- 优化:防止选择图片时多次点击完成按钮
- 修复:三星机型添加水印后的图片旋转问题
- 修复:部分机型取回uri为null的情况
- 修复:只选择视频时,若视频为空时的提示语
- 修复:android8的Only fullscreen opaque activities can request orientation 问题
- 修复:无法调用一加8t相机问题,由群友蜗牛贡献
- 修复:偶现的ANR情况
- 更新:subsampling-scale-image-view-androidx:3.10.0
- 更新:androidx.appcompat:appcompat:1.2.0
- 更新:androidx.constraintlayout:constraintlayout:2.0.4
3.0.6:
- 优化:优化超出选择最大数的提示信息
3.0.5:
- 修复:fix #112
- 感谢:该版本由XuQK贡献
3.0.4:
- 优化:saveBitmapToDir方法兼容android10
3.0.3:
- 修复:修复华为nova 5i pro 在相机页面点击返回时产生的崩溃问题 #87
3.0.2:
- 重要:拼图和加水印功能适配android 10
- 感谢:该版本由zhangshaobo87贡献
3.0.1:
- 重要:兼容android 10
- 重要:因为android 10 不支持用path路径显示图片,所以回调取消了单独获取path集合的回调,只保留获取Photo集合的回调,如需使用path,可以在Photo对象中获取
- 重要:ImageEngine接口(因为android 10 不支持用path路径显示图片,所以全部改为Uri的形式),望升级用户周知
2.5.2:
- 优化:修复ArrayList在多线程中addItem出现的角标越界问题
2.4.9:
- 重要:升级到gradle:3.4.2,低版本studio可能因为该项升级而产生错误,建议升级studio或手动修改classpath 'com.android.tools.build:gradle:3.4.2'到你的可用版本
- 优化:修复预览视频封面为黑色图片问题
2.4.8:
- 优化:修复预览页预览大图片和长图片时清晰度模糊问题
2.4.7:
- 优化:修复相册页在部分机型会闪现权限提醒UI问题
2.4.6:
- 优化:支持androidx
2.4.5:
- 修复:当相机按钮位置在图片第一张时,点击相册页底部中间的编辑按钮会导致右下角相机按钮也显示出来
- 修复:仅显示视频时,全部视频文件夹视频重复添加问题
- 修复:点击视频无法播放问题
- 感谢:该版本由SMask贡献
2.4.4:
- 修复:修复2.4.3版本引发的图片数据加载缓慢问题
- 感谢:该版本由joker-fu贡献
2.4.3:
- 新增:start(SelectCallback callback)启动方式,通过接口回调数据
- 新增:filter(String... types)方式控制只显示的文件类型,支持Type.GIF和Type.VIDEO,前提是已经选择显示了gif和video
- 新增:对显示视频的时长过滤api
- 新增:单独对图片和视频的最大选择数控制
- 新增:支持相机按钮位置设置,setCameraLocation(@Setting.Location int cLocation)//默认左下角,通过设置可设置为相册第一张图片的位置
- 优化:预览页
- 感谢:该版本由joker-fu、SMask贡献
- 提示:新的api详见wiki
2.4.1:
2.4.0:
- 感谢:该版本由joker-fu贡献
- 新增:视频选择功能
- 新增API:是否启动视频选择,setVideo(boolean shouldShow)
- 优化:默认不显示gif图,可通过setGif(boolean shouldShow)控制是否显示
2.3.6:
- 修复:2.3.5出现的拼图错误
- 优化:解决部分机型在全屏预览图片返回到相册选择界面时状态栏闪烁的问题(感谢@wqxcloud)
- 优化:相册UI(将原底部操作栏中间的设置按钮样式改为编辑样式)
- 新增:相册页底部操作栏中间的编辑按钮,会根据开发者配置的清空按钮、原图按钮、拼图按钮使用情况进行显示或隐藏。(当清空按钮、原图按钮、拼图按钮都不显示时,编辑按钮隐藏。其余条件均显示。)
- 新增:可配置相册页清空按钮是否显示(详见wiki)
2.3.5:
- 修复:修复文字贴纸自动生成日期错误
- 优化:AlbumModel类,更加节省内存 (感谢@ofexe)
- 升级:compileSdkVersion 升级为28,buildToolsVersion 升级为 '28.0.3'
**2
