android 图片选择,可选择图片,视频,音频,文件,方便扩展
AndroidFilePicker
android file picker ,you can choose image,video,file,etc..
Image selector library for Android. Support single choice、multi-choice、cropping image and preview image.
Quick start
1) Add Library module as a dependency in your build.gradle file.
or
Step 1. Add the JitPack repository to your build file
Add it in your root build.gradle at the end of repositories:
allprojects { repositories { ... maven { url 'https://jitpack.io' } } }
Step 2. Add the dependency
dependencies { compile 'com.github.BrillantZhao:AndroidFilePicker:1.0.2' }
2) Declare permission in your AndroidManifest.xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
3) 图片选择
int mode = selectMode.getCheckedRadioButtonId() == R.id.mode_multiple ? ImagePickActivity.MODE_MULTIPLE : ImagePickActivity.MODE_SINGLE; boolean isShow = showCamera.getCheckedRadioButtonId() == R.id.camera_yes ? true : false; boolean isPreview = enablePreview.getCheckedRadioButtonId() == R.id.preview_enable ? true : false; boolean isCrop = enableCrop.getCheckedRadioButtonId() == R.id.crop_enable ? true : false; ImagePickActivity.start(ImageActivity.this, maxSelectNum, mode, isShow, isPreview, isCrop, ImagePickActivity.REQUEST_IMAGE);
same this
/** * 启动图片选择页面 * * @param activity * @param maxSelectNum 最大选择图片数量 * @param mode 单选or多选 * @param isShow 是否展示照相机 * @param enablePreview 是否允许预览 * @param enableCrop 是否允许裁剪 * @param requestCode 请求码 */ public static void start(Activity activity, int maxSelectNum, int mode, boolean isShow, boolean enablePreview, boolean enableCrop, int requestCode) { Intent intent = new Intent(activity, ImagePickActivity.class); intent.putExtra(EXTRA_MAX_SELECT_NUM, maxSelectNum); intent.putExtra(EXTRA_SELECT_MODE, mode); intent.putExtra(EXTRA_SHOW_CAMERA, isShow); intent.putExtra(EXTRA_ENABLE_PREVIEW, enablePreview); intent.putExtra(EXTRA_ENABLE_CROP, enableCrop); activity.startActivityForResult(intent, requestCode); }
Receive result in your onActivityResult Method
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK && requestCode == ImagePickActivity.REQUEST_IMAGE) { ArrayList<ImageFile> images = data.getParcelableArrayListExtra(Constant.RESULT_PICK_IMAGE); // do something ... } }
4) 视频选择
boolean isShow = showCamera.getCheckedRadioButtonId() == R.id.camera_yes ? true : false; VideoPickActivity.start(VideoActivity.this, maxSelectNum, isShow,VideoPickActivity.REQUEST_VIDEO);
same this
/** * 启动视频选择 * * @param activity * @param maxSelectNum 最大选择数量 * @param isShow 是否展示摄像头 * @param requestCode 请求码 */ public static void start(Activity activity, int maxSelectNum, boolean isShow, int requestCode) { Intent intent = new Intent(activity, VideoPickActivity.class); intent.putExtra(EXTRA_MAX_SELECT_NUM, maxSelectNum); intent.putExtra(EXTRA_SHOW_CAMERA, isShow); activity.startActivityForResult(intent, requestCode); }
Receive result in your onActivityResult Method
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK && requestCode == VideoPickActivity.REQUEST_VIDEO) { ArrayList<VideoFile> videoFiles = data.getParcelableArrayListExtra(Constant.RESULT_PICK_VIDEO); // do something... } }
5) 文件选择
String[] mSuffix = {"txt"}; NormalFilePickActivity.start(FileActivity.this, maxSelectNum, mSuffix, NormalFilePickActivity.REQUEST_FILE);
same this
/** * 启动文件选择 * * @param activity * @param maxSelectNum 最大选择数量 * @param mSuffix 文件格式集合 * @param requestCode 请求码 */ public static void start(Activity activity, int maxSelectNum, String[] mSuffix, int requestCode) { Intent intent = new Intent(activity, NormalFilePickActivity.class); intent.putExtra(EXTRA_MAX_SELECT_NUM, maxSelectNum); intent.putExtra(EXTRA_STUFFIX, mSuffix); activity.startActivityForResult(intent, requestCode); }
Receive result in your onActivityResult Method
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK && requestCode == NormalFilePickActivity.REQUEST_FILE) { ArrayList<NormalFile> normalFiles = data.getParcelableArrayListExtra(Constant.RESULT_PICK_FILE); // do something... } }
5) 音频选择
boolean isNeedRecorder = showCamera.getCheckedRadioButtonId() == R.id.camera_yes ? true : false; AudioPickActivity.start(AudioActivity.this, maxSelectNum, isNeedRecorder, AudioPickActivity.REQUEST_AUDIO);
same this
/** * 启动录音选择 * * @param activity * @param maxSelectNum 最大选择数量 * @param isNeedRecorder 是否需要录音 * @param requestCode 请求码 */ public static void start(Activity activity, int maxSelectNum, boolean isNeedRecorder, int requestCode) { Intent intent = new Intent(activity, AudioPickActivity.class); intent.putExtra(EXTRA_MAX_SELECT_NUM, maxSelectNum); intent.putExtra(IS_NEED_RECORDER, isNeedRecorder); activity.startActivityForResult(intent, requestCode); }
Receive result in your onActivityResult Method
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK && requestCode == AudioPickActivity.REQUEST_AUDIO) { ArrayList<AudioFile> audioFiles = data.getParcelableArrayListExtra(Constant.RESULT_PICK_VIDEO); // do something... } }
用到的第三方库
Glide
compile ‘com.github.bumptech.glide:glide:3.7.0’
PhotoView
compile ‘com.bm.photoview:library:1.4.1’
//===
compile ‘pub.devrel:easypermissions:0.2.1’
simplecropview
compile ‘com.isseiaoki:simplecropview:1.0.13’
项目地址(欢迎fork):https://github.com/BrillantZhao/AndroidFilePicker

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
android 快速开发框架,基于组件化的MVP结构
AndroidMouldProject2 android快速开发模板工程,组件化的MVP结构,方便快速开发和多人协作,减少代码耦合,同时方便自定义扩展,封装了一些常用 的模块,通过引用AndroidBaseModule基础工程的方式来实现持续更新,同时通过依赖库的方式,增强个性化定制,使工程更加 简洁,使开发者只需要关心自己的逻辑实现,便于维护。 项目结构: 使用方法: 复制代码,修改包名,按照自己的需求更改代码逻辑和依赖关系 新建activity,fragment,model,view,presenter等,复制粘贴baselibrary->src->main->java->com.example.baselibrary->demo目录下对应的文件模板, 保证严格按照统一的格式,方便代码阅读和维护 xxxmanager提供使用参考 第三方库的使用详见下方使用到的第三方库链接 项目构成: app: 主应用入口,最终完整的app打包运行模块 baselibrary: 基础的依赖包,提供基础服务,供各个library和manager调用 chartlibrar...
- 下一篇
android webview增强版,对原生webview的一些解决方案
MWebView 根据 Tamicer/JsWebView 修改定制 为什么要使用WebView 随着app业务的不断深入发展,只靠着原生代码来堆砌功能是不现实,毕竟开发的时长会增加,而且同时需要开发iOS和Android两套,并且,如果在UI上改变了一丁点,都需要提包(虽然Android现在可以进行热更新,但是热更新不是100%能生效的,其中的原理只要了解过的人都会知道的),最终我们会选择使用原生嵌套H5的方式进行开发,这样,既可以随时更改UI,也可以无限制的进行功能扩展,然后,我们就要使用到Android的WebView了,这个让我们痛并快乐着的控件。 Android基于JsBridge封装的高效带加载进度的WebView 可用作简单应用内置浏览器,帮你快速开发Hybrid APP 主要功能: 支持header 支持进度 支持自定义错误页面 支持h5和native的快速交互,简单易学 - 支持cookie同步 UI Dependencies Gradle: root: repositories { maven { url "https://jitpack.io" } jcenter...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Hadoop3单机部署,实现最简伪集群
- CentOS关闭SELinux安全模块
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7