图片/视频的选择,编辑和压缩是业务中的常见需求,Phoenix完整的实现了这些功能,并提供了优雅的调用方式。Phoenix的核心功能基于Kotlin实现,外层接口基于Java实现,方便Kotlin与Java双方的调用。
特点
功能相互独立,各个功能的实现依赖于约定的接口,彼此互不依赖,开发者不必为了引入某一个功能而带入一堆依赖。
高度的UI定制性,内置四种配色方案,开发者也可以通过简单的style文件的简单配置来定制自己的UI。
调用的便利性,开启某个功能只需要调用enableXXX(true)方法,结果统一在MediaEntity里获取。
RxJava良好的支持性,每个功能都提供了同步与异步两种实现,便于开发者利用RxJava进行功能的组合与嵌套。
良好的版本兼容性,运行时权限等内容都做了兼容性处理。
功能
拍照
图片选择
图片预览
图片压缩
图片标记、贴图、涂抹与裁剪
视频选择
视频预览
视频压缩
主题
默认主题
橙色主图
红色主题
蓝色主题
在项目根目录build.gradle文件里添加
allprojects { repositories { ... maven { url 'https://jitpack.io' } } }
添加依赖
//图片/视频选择、拍照、图片/视频预览 compile 'com.github.guoxiaoxing.phoenix:phoenix-ui:0.0.11' //选填 - 图片压缩,开启功能:Phoenix.with().enableCompress(true),获取结果:MediaEntity.getCompressPath() compile 'com.github.guoxiaoxing.phoenix:phoenix-compress-picture:0.0.11' //选填 - 视频压缩,开启功能:Phoenix.with().enableCompress(true),获取结果:MediaEntity.getCompressPath() compile 'com.github.guoxiaoxing.phoenix:phoenix-compress-video:0.0.11'
Phoenix.with() .theme(PhoenixOption.THEME_DEFAULT)// 主题 .fileType(MimeType.ofAll())//显示的文件类型图片、视频、图片和视频 .maxPickNumber(10)// 最大选择数量 .minPickNumber(0)// 最小选择数量 .spanCount(4)// 每行显示个数 .pickMode(PhoenixConstant.MULTIPLE)// 多选/单选 .enablePreview(true)// 是否开启预览 .enableCamera(true)// 是否开启拍照 .enableAnimation(true)// 选择界面图片点击效果 .enableCompress(true)// 是否开启压缩 .thumbnailHeight(160)// 选择界面图片高度 .thumbnailWidth(160)// 选择界面图片宽度 .enableClickSound(true)//ƒ 是否开启点击声音 .pickedMediaList(pickList)// 已选图片数据 .videoSecond(0)//显示多少秒以内的视频 .onPickerListener(new OnPickerListener() { @Override public void onPickSuccess(List<MediaEntity> pickList) { adapter.setList(pickList); adapter.notifyDataSetChanged(); } @Override public void onPickFailed(String errorMessage) { } }).start(MainActivity.this, PhoenixOption.TYPE_PICK_MEDIA);
最后的start()方法用来完成启动某项功能,根据type不同启动不同的功能,具体含义如下:
//功能 - 选择图片/视频/音频 public static final int TYPE_PICK_MEDIA = 0x000001; //功能 - 拍照 public static final int TYPE_TAKE_PICTURE = 0x000002; //功能 - 预览 public static final int TYPE_BROWSER_PICTURE = 0x000003;