GitHub地址:https://github.com/FinalTeam/RxGalleryFinal.
添加依赖
implementation 'cn.finalteam.rxgalleryfinal:library:1.0.9'
implementation 'com.android.support:recyclerview-v7:28.0.0'
compile 'com.github.bumptech.glide:glide:3.7.0'
要添加的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA"/>
AndroidManifest.xml
<application
android:theme="@style/Theme_Light">
...
<activity
android:name="cn.finalteam.rxgalleryfinal.ui.activity.MediaActivity"
android:exported="true"
android:theme="@style/Theme_Light.Test" />
<activity
android:name="com.yalantis.ucrop.UCropActivity"
android:screenOrientation="portrait" />
</application>
styles.xml 设置主题
<style name="Theme_Light" parent="Theme.AppCompat.Light.NoActionBar">
<!--<item name="gallery_ucrop_title_text">@string/gallery_ucrop_menu_crop</item>-->
</style>
<style name="Theme_Light.Test">
<!--<item name="gallery_toolbar_bg">#233</item>-->
<!--<item name="gallery_toolbar_close_image">@mipmap/ic_launcher</item>-->
<!--<item name="gallery_toolbar_close_color">#223</item>-->
<!--<item name="gallery_toolbar_widget_color">#2A2A2F</item>-->
<!--<item name="gallery_toolbar_text_color">#fff</item>-->
<!--<item name="gallery_toolbar_text_size">@dimen/column_width</item>-->
<!--<item name="gallery_toolbar_divider_height">@dimen/activity_vertical_margin</item>-->
<!--<item name="gallery_toolbar_divider_bg">@color/theme_blue_dark</item>-->
<!--<item name="gallery_toolbar_bottom_margin">@dimen/column_width</item>-->
<!--<item name="gallery_toolbar_text_gravity">right</item>-->
<!--<item name="gallery_toolbar_height">@dimen/activity_horizontal_margin</item>-->
<!--<item name="gallery_toolbar_over_button_bg">@mipmap/ic_launcher</item>-->
<!--<item name="gallery_toolbar_over_button_text_size">@dimen/column_width</item>-->
<!--<item name="gallery_toolbar_over_button_text_color">#446</item>-->
<!--<item name="gallery_toolbar_over_button_pressed_color">@color/theme_blue_dark</item>-->
<!--<item name="gallery_toolbar_over_button_normal_color">@color/theme_blue_dark</item>-->
<!--<item name="gallery_color_statusbar">@color/theme_blue_dark</item>-->
<!--<item name="gallery_color_active_widget">@color/theme_blue_dark</item>-->
<!--<item name="gallery_checkbox_button_tint_color">@color/theme_blue_dark</item>-->
<!--<item name="gallery_checkbox_text_color">@color/theme_blue_dark</item>-->
<!--<item name="gallery_page_bg">#FFFFFF</item>-->
<!--<item name="gallery_default_image">@mipmap/ic_launcher</item>-->
<!--<item name="gallery_camera_image">@mipmap/ic_launcher</item>-->
<!--<item name="gallery_camera_bg">@color/theme_blue_dark</item>-->
<!--<item name="gallery_take_image_text_color">@color/theme_blue_dark</item>-->
<!--<item name="gallery_default_image">@mipmap/ic_launcher</item>-->
<!--<item name="gallery_default_image">@mipmap/ic_launcher</item>-->
<!--<item name="gallery_default_image">@mipmap/ic_launcher</item>-->
<!--<item name="gallery_default_image">@mipmap/ic_launcher</item>-->
<!--<item name="gallery_ucrop_status_bar_color">@color/theme_blue_dark</item>-->
<!--<item name="gallery_ucrop_toolbar_color">@color/theme_blue_dark</item>-->
<!--<item name="gallery_ucrop_toolbar_widget_color">@color/theme_blue_dark</item>-->
<!--<item name="gallery_ucrop_activity_widget_color">@color/theme_blue_dark</item>-->
<!--<item name="gallery_ucrop_toolbar_title">@string/app_name</item>-->
</style>
xml布局
<Button
android:id="@+id/camera"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="相机" />
<Button
android:id="@+id/photo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="相册" />
<Button
android:id="@+id/More_photo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="相册,多选" />
<Button
android:id="@+id/tailor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="裁剪" />
<Button
android:id="@+id/video"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="视频" />
打开相机
camera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RxGalleryFinalApi.openZKCamera(MainActivity.this);
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
System.out.println(requestCode);
System.out.println(resultCode);
if (requestCode == RxGalleryFinalApi.TAKE_IMAGE_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
Toast.makeText(this, "拍照后,图片路径:" + RxGalleryFinalApi.fileImagePath.getPath(), Toast.LENGTH_SHORT).show();
}
}
打开相册
photo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RxGalleryFinalApi instance = RxGalleryFinalApi.getInstance(MainActivity.this);
RxGalleryFinalApi
.openRadioSelectImage(MainActivity.this, new RxBusResultDisposable<ImageRadioResultEvent>() {
@Override
protected void onEvent(ImageRadioResultEvent o) throws Exception {
//显示图片地址
Toast.makeText(MainActivity.this, "选择图片的路径" + o.getResult().getOriginalPath(), Toast.LENGTH_SHORT).show();
}
}, true);
}
});
打开相册多选,多选默认9张图
More_photo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RxGalleryFinalApi
.getInstance(MainActivity.this)
.setType(RxGalleryFinalApi.SelectRXType.TYPE_IMAGE, RxGalleryFinalApi.SelectRXType.TYPE_SELECT_MULTI)
.setImageMultipleResultEvent(new RxBusResultDisposable<ImageMultipleResultEvent>() {
@Override
protected void onEvent(ImageMultipleResultEvent imageMultipleResultEvent) throws Exception {
List<MediaBean> result = imageMultipleResultEvent.getResult();
for (int i = 0; i < result.size(); i++) {
System.out.println("多选图片的回调" + result.get(i).getOriginalPath());
Toast.makeText(MainActivity.this, "多选图片的回调" + result.get(i).getOriginalPath(), Toast.LENGTH_SHORT).show();
}
}
}).open();
}
});
打开相册多选,自定义多选设置最多能选择5张
More_photo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RxGalleryFinal.with(MainActivity.this)
.image()
.multiple()
.maxSize(5)//设置最大选择几张
.imageLoader(ImageLoaderType.GLIDE)
.subscribe(new RxBusResultDisposable<ImageMultipleResultEvent>() {
@Override
protected void onEvent(ImageMultipleResultEvent imageMultipleResultEvent) throws Exception {
List<MediaBean> result = imageMultipleResultEvent.getResult();
for (int i = 0; i < result.size(); i++) {
Toast.makeText(MainActivity.this, ""+result.get(i).getOriginalPath(), Toast.LENGTH_SHORT).show();
}
}
@Override
public void onComplete() {
super.onComplete();
Toast.makeText(getBaseContext(), "OVER", Toast.LENGTH_SHORT).show();
}
}).openGallery();
}
});
打开裁剪,打开相册选择图片进行裁剪
RxGalleryFinalApi instance = RxGalleryFinalApi.getInstance(MainActivity.this);
instance.openGalleryRadioImgDefault(
new RxBusResultDisposable<ImageRadioResultEvent>() {
@Override
protected void onEvent(ImageRadioResultEvent imageRadioResultEvent) throws Exception {
Toast.makeText(MainActivity.this, "只要选择图片地址" + imageRadioResultEvent.getResult().getOriginalPath(), Toast.LENGTH_SHORT).show();
}
})
.onCropImageResult(
new IRadioImageCheckedListener() {
@Override
public void cropAfter(Object t) {
Toast.makeText(MainActivity.this, "裁剪完成" + t, Toast.LENGTH_SHORT).show();
}
@Override
public boolean isActivityFinish() {
//返回false不关闭,返回true则为关闭
return true;
}
});
打开视频,获取某个视频的本地地址
video.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RxGalleryFinalApi
.getInstance(MainActivity.this)
.setType(RxGalleryFinalApi.SelectRXType.TYPE_VIDEO, RxGalleryFinalApi.SelectRXType.TYPE_SELECT_RADIO)
.setVDRadioResultEvent(new RxBusResultDisposable<ImageRadioResultEvent>() {
@Override
protected void onEvent(ImageRadioResultEvent imageRadioResultEvent) throws Exception {
Toast.makeText(getApplicationContext(), imageRadioResultEvent.getResult().getOriginalPath(), Toast.LENGTH_SHORT).show();
}
})
.open();
}
});
打开视频,获取多个视频的本地地址,默认能选择9个
More_video.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//使用默认的参数
RxGalleryFinalApi
.getInstance(MainActivity.this)
.setType(RxGalleryFinalApi.SelectRXType.TYPE_VIDEO, RxGalleryFinalApi.SelectRXType.TYPE_SELECT_MULTI)
.setVDMultipleResultEvent(
new RxBusResultDisposable<ImageMultipleResultEvent>() {
@Override
protected void onEvent(ImageMultipleResultEvent imageMultipleResultEvent) throws Exception {
List<MediaBean> result = imageMultipleResultEvent.getResult();
for (int i = 0; i < result.size(); i++) {
Toast.makeText(MainActivity.this, ""+result.get(i).getOriginalPath(), Toast.LENGTH_SHORT).show();
}
}
}).open();
}
});