galleryfinal 实现Android图片单选/多选、拍照、裁剪、压缩。视频选择和录制。

本文主要是介绍galleryfinal 实现Android图片单选/多选、拍照、裁剪、压缩。视频选择和录制。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

RxGalleryFinal是一个android图片/视频文件选择器。其支持多选、单选、拍摄和裁剪,主题可自定义,无强制绑定第三方图片加载器。

1.首先加入权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

2.在module gradle中项目依赖代码:

compile 'cn.finalteam.rxgalleryfinal:library:0.0.1'

//支持以下主流图片加载器,开发者自行选择compile 'com.squareup.picasso:picasso:2.5.2'compile 'com.facebook.fresco:fresco:0.12.0'compile 'com.github.bumptech.glide:glide:3.7.0'compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'

3.在fest加入所需的activity

<application...android:theme="@style/Theme_Light"><activityandroid:name="cn.finalteam.rxgalleryfinal.ui.activity.MediaActivity"android:screenOrientation="portrait"android:exported="true"android:theme="@style/Theme_Light.Default"/><activityandroid:name="com.yalantis.ucrop.UCropActivity"android:screenOrientation="portrait"android:theme="@style/Theme_Light.Default"/>
</application

4.java代码

RxGalleryFinal.with(PhotoActivity.this).image().radio().crop().imageLoader(ImageLoaderType.FRESCO).subscribe(new RxBusResultSubscriber<ImageRadioResultEvent>() {@Overrideprotected void onEvent(ImageRadioResultEvent imageRadioResultEvent) throws Exception {//图片选择结果simpleDraweeView.setImageURI("file://" + imageRadioResultEvent.getResult().getCropPath());
//                        simpleDraweeView.setImageURI(imageRadioResultEvent.getResult().getOriginalPath());imageView.setImageURI(Uri.parse(imageRadioResultEvent.getResult().getOriginalPath()));}}).openGallery();


最后有混淆代码的请看下面

#1.support-v7-appcompat
-keep public class android.support.v7.widget.** { *; }
-keep public class android.support.v7.internal.widget.** { *; }
-keep public class android.support.v7.internal.view.menu.** { *; }-keep public class * extends android.support.v4.view.ActionProvider {public <init>(android.content.Context);
}#2.rxjava
-keep class rx.schedulers.Schedulers {public static <methods>;
}
-keep class rx.schedulers.ImmediateScheduler {public <methods>;
}
-keep class rx.schedulers.TestScheduler {public <methods>;
}
-keep class rx.schedulers.Schedulers {public static ** test();
}
-dontwarn sun.misc.**
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {long producerIndex;long consumerIndex;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {rx.internal.util.atomic.LinkedQueueNode producerNode;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {rx.internal.util.atomic.LinkedQueueNode consumerNode;
}#3.retrolambda
-dontwarn java.lang.invoke.*#4.support-v4
-keep class android.support.v4.** { *; }
-keep interface android.support.v4.** { *; }#5.ucrop
-dontwarn com.yalantis.ucrop**
-keep class com.yalantis.ucrop** { *; }
-keep interface com.yalantis.ucrop** { *; }#6.photoview
-keep class uk.co.senab.photoview** { *; }
-keep interface uk.co.senab.photoview** { *; }#7.rxgalleryfinal
-keep class cn.finalteam.rxgalleryfinal.ui.widget** { *; }-keepclassmembers class * extends android.app.Activity {public void *(android.view.View);
}
-keepclassmembers enum * {public static **[] values();public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {public static final android.os.Parcelable$Creator *;
}
-keepclassmembers class **.R$* {public static <fields>;
}-keepattributes *Annotation*
-keepclasseswithmembernames class * {native <methods>;
}
-keepclassmembers public class * extends android.view.View {void set*(***);*** get*();
}

另附上demo地址: https://github.com/meijius/RxGalleryFinal




这篇关于galleryfinal 实现Android图片单选/多选、拍照、裁剪、压缩。视频选择和录制。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/962275

相关文章

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

SpringBoot全局域名替换的实现

《SpringBoot全局域名替换的实现》本文主要介绍了SpringBoot全局域名替换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录 项目结构⚙️ 配置文件application.yml️ 配置类AppProperties.Ja

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、