android图片视频图片封装,Android图片、视频资源选择库(支持图片/视频/仿微信拍照、拍视频)...

简介

Android媒体资源选择库(支持图片/视频/仿微信拍照、拍视频),非常简单使用,支持图库多选、单选、仿微信拍照拍视频、系统照相机拍照拍视频(v1.1.2)。如需使用美颜滤镜、简单图片编辑,ffmpeg视频编辑等,可使用v2.0.1。

PS:只需要普通拍照选图,用v1.1.2即可。v2.0.1会使项目增加10M左右。

预览

707125503f71

选择文件夹

707125503f71

多选

707125503f71

预览

707125503f71

单选

707125503f71

拍摄

707125503f71

视频剪辑

707125503f71

视频裁剪

707125503f71

图片编辑

依赖

根bulid.gradle添加

allprojects {

repositories {

...

maven { url 'https://jitpack.io' }

}

}

在项目bulid.gradle添加

dependencies {

implementation 'com.github.Devil-Chen:DVMediaSelector:1.1.2'

}

使用(v1.1.2)

使用之前先自定义一个ImageLoader,必须在调用选择文件之前调用此方法

//可使用Glide、Picasso等方式加载,由调用者自己决定

//设置加载器

MediaSelectorManager.getInstance().initImageLoader(new ImageLoader() {

@Override

public void displayImage(Context context, String path, ImageView imageView) {

Glide.with(context).load(path).into(imageView);

}

});

多选

//最简单的调用

MediaSelectorManager.openSelectMediaWithConfig(this, MediaSelectorManager.getDefaultListConfigBuilder().build(), new OnSelectMediaListener() {

@Override

public void onSelectMedia(List li_path) {

for (String path : li_path) {

tvResult.append(path + "\n");

}

}

});

//自定义配置调用

DVListConfig config = MediaSelectorManager.getDefaultListConfigBuilder()

//是否多选

.multiSelect(true)

//最大选择数量

.maxNum(9)

//最小选择数量

.minNum(2)

//设置选中图标

.checkIconResource(R.mipmap.icon_dv_checked)

//设置非选中图标

.unCheckIconResource(R.mipmap.icon_dv_unchecked)

// 使用沉浸式状态栏

.statusBarColor(Color.BLUE)

//每行显示的数量

.listSpanCount(3)

//状态栏的mode

.statusBarLightMode(true)

//.statusBarDrakMode(true)

//设置选择资源的类型

.mediaType(DVMediaType.ALL)

//设置返回图标

//.backResourceId(R.mipmap.icon_back)

//设置右边标题

.rigntTitleText("所有图片")

//设置右边标题文字颜色

.rightTitleTextColor(Color.WHITE)

//是否显示右边标题

.rightTitleVisibility(View.VISIBLE)

//设置标题文字

.title("资源选择")

//设置标题文字颜色

.titleTextColor(Color.WHITE)

//设置标题背景颜色

.titleBgColor(Color.BLUE)

//确定按钮文字

.sureBtnText("确定")

//确定按钮文字颜色

.sureBtnTextColor(Color.WHITE)

//确定按钮背景色(与Resource只能选择一种)

//.sureBtnBgColor(Color.BLUE)

//确定按钮所在布局背景色(与color只能选择一种)

.sureBtnBgResource(R.drawable.shape_btn_default)

//设置文件临时缓存路径

.fileCachePath(FileUtils.createRootPath(this))

//设置是否包含预览

.hasPreview(true)

//是否需要快速加载视频缩略图(默认为true从系统直接获取,获取不到使用加载图片框架获取首帧。为false,直接使用加载图片框架获取首帧)

.quickLoadVideoThumb(true)

.build();

//打开界面

MediaSelectorManager.openSelectMediaWithConfig(this, config, new OnSelectMediaListener() {

@Override

public void onSelectMedia(List li_path) {

for (String path : li_path) {

tvResult.append(path + "\n");

}

}

});

单选

DVListConfig config = MediaSelectorManager.getDefaultListConfigBuilder()

// 是否多选

.multiSelect(false)

//第一个菜单是否显示照相机

.needCamera(true)

//第一个菜单显示照相机的图标

.cameraIconResource(R.mipmap.ic_launcher)

//每行显示的数量

.listSpanCount(4)

// 确定按钮文字颜色

.sureBtnTextColor(Color.WHITE)

// 使用沉浸式状态栏

.statusBarColor(Color.parseColor("#3F51B5"))

// 返回图标ResId

.backResourceId(R.mipmap.icon_back2)

//标题背景

.titleBgColor(Color.parseColor("#3F51B5"))

//是否需要裁剪

.needCrop(true)

//裁剪大小

.cropSize(1, 1, 200, 200)

.build();

MediaSelectorManager.openSelectMediaWithConfig(this, config, new OnSelectMediaListener() {

@Override

public void onSelectMedia(List li_path) {

for (String path : li_path) {

tvResult.append(path + "\n");

}

}

});

照相机

DVCameraConfig config = MediaSelectorManager.getDefaultCameraConfigBuild()

//是否使用系统照相机(默认使用仿微信照相机)

.isUseSystemCamera(false)

//是否需要裁剪

.needCrop(true)

//裁剪大小

.cropSize(1, 1, 200, 200)

//媒体类型(如果是使用系统照相机,必须指定DVMediaType.PHOTO或DVMediaType.VIDEO)

.mediaType(DVMediaType.ALL)

//设置最大录制时长

.maxDuration(10)

.build();

MediaSelectorManager.openCameraWithConfig(this, config, new OnSelectMediaListener() {

@Override

public void onSelectMedia(List li_path) {

for (String path : li_path) {

tvResult.append(path + "\n");

}

}

});

v2.0.1使用(美颜滤镜、图片视频编辑)

照相机

DVCameraConfig config = MediaSelectorManager.getDefaultCameraConfigBuilder()

//相机的类型(系统照相机、普通照相机、美颜相机)默认普通照相机

.cameraType(DVCameraType.NORMAL)

//是否需要裁剪

.needCrop(true)

//裁剪大小

.cropSize(1, 1, 200, 200)

//媒体类型(如果是使用系统照相机,必须指定DVMediaType.PHOTO或DVMediaType.VIDEO)

.mediaType(DVMediaType.ALL)

//设置录制时长

.maxDuration(10)

//闪光灯是否启用

.flashLightEnable(true)

.build();

MediaSelectorManager.openCameraWithConfig(this, config, new OnSelectMediaListener() {

@Override

public void onSelectMedia(List li_path) {

for (String path : li_path) {

tvResult.append(path + "\n");

}

}

});

图片编辑

String photoPath = "图片地址";

MediaSelectorManager.openEditPhoto(mActivity, photoPath, config, new OnSelectMediaListener() {

@Override

public void onSelectMedia(List li_path) {

//编辑后的图片地址

for (String path : li_path) {

tvResult.append(path + "\n");

}

}

});

视频剪辑

String videoPath = "视频路径";

String savePath = "保存路径(目录或者全路径都行)";

VideoMediaManager.getInstance().setMediaPlayer(new ExoMediaPlayer(mActivity));

VideoMediaManager.openVideoTrimActivity(mActivity, videoPath, savePath, new OnVideoTrimListener() {

@Override

public void onVideoTrimSuccess(String savePath) {

Toast.makeText(mActivity,"剪辑成功-->"+savePath,Toast.LENGTH_SHORT).show();

}

@Override

public void onVideoTrimError(String msg) {

Toast.makeText(mActivity,"剪辑失败-->"+msg,Toast.LENGTH_SHORT).show();

}

@Override

public void onVideoTrimCancel() {

Toast.makeText(mActivity,"取消剪辑",Toast.LENGTH_SHORT).show();

}

@Override

public void onVideoTrimProgress(float progress) {

}

});

视频裁剪

String videoPath = "视频路径";

String savePath = "保存路径(目录或者全路径都行)";

VideoMediaManager.getInstance().setMediaPlayer(new ExoMediaPlayer(mActivity));

VideoMediaManager.openVideoCropActivity(mActivity, videoPath, savePath, new OnVideoTrimListener() {

@Override

public void onVideoTrimSuccess(String savePath) {

Toast.makeText(mActivity,"裁剪成功-->"+savePath,Toast.LENGTH_SHORT).show();

}

@Override

public void onVideoTrimError(String msg) {

Toast.makeText(mActivity,"裁剪失败-->"+msg,Toast.LENGTH_SHORT).show();

}

@Override

public void onVideoTrimCancel() {

Toast.makeText(mActivity,"取消裁剪",Toast.LENGTH_SHORT).show();

}

@Override

public void onVideoTrimProgress(float progress) {

}

});

项目的GitHub地址

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值