package cn.finalteam.rxgalleryfinal.sample; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.RadioButton; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import com.yalantis.ucrop.model.AspectRatio; import java.util.List; import cn.finalteam.rxgalleryfinal.RxGalleryFinal; import cn.finalteam.rxgalleryfinal.RxGalleryFinalApi; import cn.finalteam.rxgalleryfinal.bean.MediaBean; import cn.finalteam.rxgalleryfinal.imageloader.ImageLoaderType; import cn.finalteam.rxgalleryfinal.rxbus.RxBusResultDisposable; import cn.finalteam.rxgalleryfinal.rxbus.event.ImageMultipleResultEvent; import cn.finalteam.rxgalleryfinal.rxbus.event.ImageRadioResultEvent; import cn.finalteam.rxgalleryfinal.sample.imageloader.ImageLoaderActivity; import cn.finalteam.rxgalleryfinal.ui.RxGalleryListener; import cn.finalteam.rxgalleryfinal.ui.activity.MediaActivity; import cn.finalteam.rxgalleryfinal.ui.base.IMultiImageCheckedListener; import cn.finalteam.rxgalleryfinal.ui.base.IRadioImageCheckedListener; import cn.finalteam.rxgalleryfinal.utils.Logger; import cn.finalteam.rxgalleryfinal.utils.PermissionCheckUtils; /** * 示例 * * @author KARL-dujinyang *
* openGallery 返回 void,如果想使用RxGalleryFinal对象,请在 openGallery() 之前返回 RxGalleryFinal 对象 *
*
* RxGalleryFinal radio = RxGalleryFinal
* with(MainActivity.this)
* image()
* radio();
*/
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
RadioButton mRbRadioIMG, mRbMutiIMG, mRbOpenC, mRbRadioVD, mRbMutiVD, mRbCropZD, mRbCropZVD;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn_image_loader).setOnClickListener(this);
findViewById(R.id.btn_open_def_radio).setOnClickListener(this);
findViewById(R.id.btn_open_def_multi).setOnClickListener(this);
findViewById(R.id.btn_open_img).setOnClickListener(this);
findViewById(R.id.btn_open_vd).setOnClickListener(this);
findViewById(R.id.btn_open_crop).setOnClickListener(this);
findViewById(R.id.btn_open_set_path).setOnClickListener(this);
mRbRadioIMG = findViewById(R.id.rb_radio_img);
mRbMutiIMG = findViewById(R.id.rb_muti_img);
mRbRadioVD = findViewById(R.id.rb_radio_vd);
mRbMutiVD = findViewById(R.id.rb_muti_vd);
mRbOpenC = findViewById(R.id.rb_openC);
mRbCropZD = findViewById(R.id.rb_radio_crop_z);
mRbCropZVD = findViewById(R.id.rb_radio_crop_vz);
//多选事件的回调
RxGalleryListener
.getInstance()
.setMultiImageCheckedListener(
new IMultiImageCheckedListener() {
@Override
public void selectedImg(Object t, boolean isChecked) {
Toast.makeText(getBaseContext(), isChecked ? "选中" : "取消选中", Toast.LENGTH_SHORT).show();
}
@Override
public void selectedImgMax(Object t, boolean isChecked, int maxSize) {
Toast.makeText(getBaseContext(), "你最多只能选择" + maxSize + "张图片", Toast.LENGTH_SHORT).show();
}
});
//裁剪图片的回调
RxGalleryListener
.getInstance()
.setRadioImageCheckedListener(
new IRadioImageCheckedListener() {
@Override
public void cropAfter(Object t) {
Toast.makeText(getBaseContext(), t.toString(), Toast.LENGTH_SHORT).show();
}
@Override
public boolean isActivityFinish() {
return false;
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_image_loader:
Intent intent = new Intent(v.getContext(), ImageLoaderActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
break;
case R.id.btn_open_def_radio:
openRadio();
break;
case R.id.btn_open_def_multi:
openMulti();
break;
case R.id.btn_open_img:
openImageSelect();
break;
case R.id.btn_open_vd:
openVideoSelect();
break;
case R.id.btn_open_crop:
openCrop();
break;
case R.id.btn_open_set_path:
setPath();
break;
}
}
/**
* 设置 照片路径 和 裁剪路径
*/
private void setPath() {
RxGalleryFinalApi.setImgSaveRxSDCard("dujinyang");
RxGalleryFinalApi.setImgSaveRxCropSDCard("dujinyang/crop");//裁剪会自动生成路径;也可以手动设置裁剪的路径;
}
/**
* 直接裁剪 or 拍照并裁剪( 查看 onActivityResult())
*/
private void openCrop() {
if (mRbCropZD.isChecked()) {
//直接裁剪
String inputImg = "";
Toast.makeText(MainActivity.this, "没有图片演示,请选择‘拍照裁剪’功能", Toast.LENGTH_SHORT).show();
// RxGalleryFinalApi.cropScannerForResult(MainActivity.this, RxGalleryFinalApi.getModelPath(), inputImg);//调用裁剪.RxGalleryFinalApi.getModelPath()为模拟的输出路径
} else {
// RxGalleryFinalApi.openZKCamera(MainActivity.this);
SimpleRxGalleryFinal.get().init(
new SimpleRxGalleryFinal.RxGalleryFinalCropListener() {
@NonNull
@Override
public AppCompatActivity getSimpleActivity() {
return MainActivity.this;
}
@Override
public void onCropCancel() {
Toast.makeText(getSimpleActivity(), "裁剪被取消", Toast.LENGTH_SHORT).show();
}
@Override
public void onCropSuccess(@Nullable Uri uri) {
Toast.makeText(getSimpleActivity(), "裁剪成功:" + uri, Toast.LENGTH_SHORT).show();
}
@Override
public void onCropError(@NonNull String errorMessage) {
Toast.makeText(getSimpleActivity(), errorMessage, Toast.LENGTH_SHORT).show();
}
}
).openCamera();
}
}
/**
* 视频
* 单选 多选
*/
private void openVideoSelect() {
if (mRbRadioVD.isChecked()) {
openVideoSelectRadioMethod();
} else if (mRbMutiVD.isChecked()) {
openVideoSelectMultiMethod(0);
}
}
/**
* 图片
* 单选,多选, 直接打开相机
*/
private void openImageSelect() {
if (mRbRadioIMG.isChecked()) {
openImageSelectRadioMethod(3);
} else if (mRbMutiIMG.isChecked()) {
openImageSelectMultiMethod(1);
} else {
if (PermissionCheckUtils.checkCameraPermission(this, "", MediaActivity.REQUEST_CAMERA_ACCESS_PERMISSION)) {
RxGalleryFinalApi.openZKCamera(MainActivity.this);
}
}
}
private List
* 默认使用 第三个 ,如果运行sample,可自行改变Type,运行Demo查看效果
*/
private void openImageSelectMultiMethod(int type) {
switch (type) {
case 0:
//使用默认的参数
RxGalleryFinalApi
.getInstance(MainActivity.this)
.setImageMultipleResultEvent(
new RxBusResultDisposable
* 默认使用 第三个 ,如果运行sample,可自行改变Type,运行Demo查看效果
*/
private void openImageSelectRadioMethod(int type) {
RxGalleryFinalApi instance = RxGalleryFinalApi.getInstance(MainActivity.this);
switch (type) {
case 0:
//打开单选图片,默认参数
instance
.setImageRadioResultEvent(new RxBusResultDisposable