-
Notifications
You must be signed in to change notification settings - Fork 513
RxGalleryFinal MainActivity
KARL--dujinyang edited this page May 16, 2017
·
1 revision
/**
* 示例 * @author KARL-dujinyang */
public class MainActivity extends AppCompatActivity {
RadioButton mRbRadioIMG, mRbMutiIMG, mRbOpenC,mRbRadioVD,mRbMutiVD,mRbCropZD,mRbCropZVD; Button mBtnOpenSetDir,mBtnOpenDefRadio,mBtnOpenDefMulti,mBtnOpenIMG,mBtnOpenVD,mBtnOpenCrop; boolean mFlagOpenCrop =false ; //是否拍照并裁剪 //ID private void initView() { mBtnOpenSetDir = (Button) findViewById(R.id.btn_open_set_path); mBtnOpenIMG = (Button) findViewById(R.id.btn_open_img); mBtnOpenVD = (Button) findViewById(R.id.btn_open_vd); mBtnOpenDefRadio = (Button) findViewById(R.id.btn_open_def_radio); mBtnOpenDefMulti = (Button) findViewById(R.id.btn_open_def_multi); mBtnOpenCrop = (Button) findViewById(R.id.btn_open_crop); mRbRadioIMG = (RadioButton) findViewById(R.id.rb_radio_img); mRbMutiIMG = (RadioButton) findViewById(R.id.rb_muti_img); mRbRadioVD = (RadioButton) findViewById(R.id.rb_radio_vd); mRbMutiVD = (RadioButton) findViewById(R.id.rb_muti_vd); mRbOpenC = (RadioButton) findViewById(R.id.rb_openC); mRbCropZD = (RadioButton) findViewById(R.id.rb_radio_crop_z); mRbCropZVD = (RadioButton) findViewById(R.id.rb_radio_crop_vz); } //ImageLoaderConfiguration private void initImageLoader() { ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(this); config.threadPriority(Thread.NORM_PRIORITY - 2); config.denyCacheImageMultipleSizesInMemory(); config.diskCacheFileNameGenerator(new Md5FileNameGenerator()); config.diskCacheSize(50 * 1024 * 1024); // 50 MiB config.tasksProcessingOrder(QueueProcessingType.LIFO); ImageLoader.getInstance().init(config.build()); } //Fresco private void initFresco() { Fresco.initialize(this); } //*************************************************************************// @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //手动打开日志。 ModelUtils.setDebugModel(true); initView(); initImageLoader(); initFresco(); //自定义使用 onClickZDListener(); //调用图片选择器Api onClickSelImgListener(); //调用视频选择器Api onClickSelVDListener(); //调用裁剪 onClickImgCropListener(); //多选事件的回调 getMultiListener(); } //*********************************************************** //** 以下为调用方法 onClick * //*********************************************************** /** * 调用裁剪 */ private void onClickImgCropListener() { mBtnOpenCrop.setOnClickListener(view -> { if(mRbCropZD.isChecked()){ //直接裁剪 String inputImg = ""; Toast.makeText(MainActivity.this, "没有图片演示,请选择‘拍照裁剪’功能", Toast.LENGTH_SHORT).show(); // RxGalleryFinalApi.cropScannerForResult(MainActivity.this, RxGalleryFinalApi.getModelPath(), inputImg);//调用裁剪.RxGalleryFinalApi.getModelPath()为模拟的输出路径 }else{ //拍照并裁剪 mFlagOpenCrop = true; //然后直接打开相机 - onActivityResult 回调里面处理裁剪 RxGalleryFinalApi.openZKCamera(MainActivity.this); } }); } /** * 调用视频选择器Api */ private void onClickSelVDListener() { mBtnOpenVD.setOnClickListener(view -> { if (mRbRadioVD.isChecked()) { RxGalleryFinalApi.getInstance(this) .setType(RxGalleryFinalApi.SelectRXType.TYPE_VIDEO, RxGalleryFinalApi.SelectRXType.TYPE_SELECT_RADIO) .setVDRadioResultEvent(new RxBusResultSubscriber<ImageRadioResultEvent>() { @Override protected void onEvent(ImageRadioResultEvent imageRadioResultEvent) throws Exception { //回调还没 } }) .open(); } else if (mRbMutiVD.isChecked()) { //多选图片的方式 //1.使用默认的参数 /* RxGalleryFinalApi.getInstance(this).setVDMultipleResultEvent(new RxBusResultSubscriber<ImageMultipleResultEvent>() { @Override protected void onEvent(ImageMultipleResultEvent imageMultipleResultEvent) throws Exception { Logger.i("多选视频的回调"); } }).open();
*/
//2.使用自定义的参数 RxGalleryFinalApi.getInstance(this) .setType(RxGalleryFinalApi.SelectRXType.TYPE_VIDEO, RxGalleryFinalApi.SelectRXType.TYPE_SELECT_MULTI) .setVDMultipleResultEvent(new RxBusResultSubscriber<ImageMultipleResultEvent>() { @Override protected void onEvent(ImageMultipleResultEvent imageMultipleResultEvent) throws Exception { Logger.i("多选视频的回调"); } }).open();; //3.直接打开 /* RxGalleryFinalApi.openMultiSelectVD(this, new RxBusResultSubscriber() { @Override protected void onEvent(Object o) throws Exception { Logger.i("多选视频的回调"); } });*/ } }); } /** * 调用图片选择器Api */ private void onClickSelImgListener() { mBtnOpenIMG.setOnClickListener(view -> { if (mRbRadioIMG.isChecked()) { //以下方式 -- 可选其一: //1.打开单选图片,默认参数 /* RxGalleryFinalApi.getInstance(this).setImageRadioResultEvent(new RxBusResultSubscriber<ImageRadioResultEvent>() { @Override protected void onEvent(ImageRadioResultEvent imageRadioResultEvent) throws Exception { Logger.i("单选图片的回调"); } }).open(); //2.设置自定义的参数 RxGalleryFinalApi.getInstance(this).setType(RxGalleryFinalApi.SelectRXType.TYPE_IMAGE, RxGalleryFinalApi.SelectRXType.TYPE_SELECT_RADIO) .setImageRadioResultEvent(new RxBusResultSubscriber<ImageRadioResultEvent>() { @Override protected void onEvent(ImageRadioResultEvent imageRadioResultEvent) throws Exception { Logger.i("单选图片的回调"); } }).open();
*/
//3. 快速打开单选图片,flag使用true不裁剪 /* RxGalleryFinalApi.openRadioSelectImage(this, new RxBusResultSubscriber<ImageRadioResultEvent>() { @Override protected void onEvent(ImageRadioResultEvent o) throws Exception { Logger.i("单选图片的回调"); } }, true);*/ //4.演示 单选裁剪 并且增加回掉 (裁剪必须在open之前) RxGalleryFinalApi.getInstance(this) .onCrop(true)//是否裁剪 .openGalleryRadioImgDefault(new RxBusResultSubscriber() { @Override protected void onEvent(Object o) throws Exception { Logger.i("只要选择图片就会触发"); } }) .onCropImageResult(new IRadioImageCheckedListener() { @Override public void selectedImgResult(Object t, boolean isChecked) { Logger.i("没有裁剪只选择图片的时候产生回调"); } @Override public void selectedCropImgResult(String path, String imgType) { Logger.i("裁剪之后的回调"); Toast.makeText(MainActivity.this, "啊啊啊 我被剪了,地址是:" + path, Toast.LENGTH_SHORT).show(); } }); } else if (mRbMutiIMG.isChecked()) { //多选图片的方式 //1.使用默认的参数 RxGalleryFinalApi.getInstance(this).setImageMultipleResultEvent(new RxBusResultSubscriber<ImageMultipleResultEvent>() { @Override protected void onEvent(ImageMultipleResultEvent imageMultipleResultEvent) throws Exception { Logger.i("多选图片的回调"); } }).open();
/*
//2.使用自定义的参数 RxGalleryFinalApi.getInstance(this) .setType(RxGalleryFinalApi.SelectRXType.TYPE_IMAGE, RxGalleryFinalApi.SelectRXType.TYPE_SELECT_MULTI) .setImageMultipleResultEvent(new RxBusResultSubscriber<ImageMultipleResultEvent>() { @Override protected void onEvent(ImageMultipleResultEvent imageMultipleResultEvent) throws Exception { Logger.i("多选图片的回调"); } }).open(); ; //3.直接打开 RxGalleryFinalApi.openMultiSelectImage(this, new RxBusResultSubscriber() { @Override protected void onEvent(Object o) throws Exception { Logger.i("多选图片的回调"); } });*/ } else { mFlagOpenCrop = false; //直接打开相机 RxGalleryFinalApi.openZKCamera(MainActivity.this); } }); } /** * 如果不使用api定义好的,则自己定义使用 * ImageLoaderType :自己选择使用 */ private void onClickZDListener() { mBtnOpenSetDir.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //图片会自动会存储到下面路径 RxGalleryFinalApi.setImgSaveRxSDCard("dujinyang"); RxGalleryFinalApi.setImgSaveRxCropSDCard("dujinyang/crop");//裁剪会自动生成路径;也可以手动设置裁剪的路径; } }); mBtnOpenDefRadio.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //单选图片 RxGalleryFinal rx = RxGalleryFinal .with(MainActivity.this) .image() .radio() .imageLoader(ImageLoaderType.PICASSO) .subscribe(new RxBusResultSubscriber<ImageRadioResultEvent>() { @Override protected void onEvent(ImageRadioResultEvent imageRadioResultEvent) throws Exception { Toast.makeText(getBaseContext(), "选中了图片路径:"+imageRadioResultEvent.getResult().getOriginalPath(), Toast.LENGTH_SHORT).show(); } }); //自定义裁剪 rx.cropAspectRatioOptions(0, new AspectRatio("3:3",30, 10)).crop() .openGallery(); } }); mBtnOpenDefMulti.setOnClickListener(view -> { //多选图片 RxGalleryFinal .with(MainActivity.this) .image() .multiple() .maxSize(8) .imageLoader(ImageLoaderType.UNIVERSAL) .subscribe(new RxBusResultSubscriber<ImageMultipleResultEvent>() { @Override protected void onEvent(ImageMultipleResultEvent imageMultipleResultEvent) throws Exception { Toast.makeText(getBaseContext(), "已选择" + imageMultipleResultEvent.getResult().size() + "张图片", Toast.LENGTH_SHORT).show(); } @Override public void onCompleted() { super.onCompleted(); Toast.makeText(getBaseContext(), "OVER", Toast.LENGTH_SHORT).show(); } }) .openGallery(); }); } /** * 自定义的多选事件都会在这里执行 */ public void getMultiListener(){ //得到多选的事件 RxGalleryListener.getInstance().setMultiImageCheckedListener(new IMultiImageCheckedListener() { @Override public void selectedImg(Object t, boolean isChecked) { //这个主要点击或者按到就会触发,所以不建议在这里进行Toast } @Override public void selectedImgMax(Object t, boolean isChecked, int maxSize) { Toast.makeText(getBaseContext(), "你最多只能选择" + maxSize + "张图片", Toast.LENGTH_SHORT).show(); } }); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); Logger.i("onActivityResult: requestCode=" + requestCode + ", resultCode=" + resultCode + " data:" + data); if (requestCode == RxGalleryFinalApi.TAKE_IMAGE_REQUEST_CODE && resultCode == Activity.RESULT_OK) { Logger.i("拍照OK,图片路径:"+RxGalleryFinalApi.fileImagePath.getPath().toString()); //刷新相册数据库 RxGalleryFinalApi.openZKCameraForResult(MainActivity.this, new MediaScanner.ScanCallback() { @Override public void onScanCompleted(String[] strings) { Logger.i(String.format("拍照成功,图片存储路径:%s", strings[0])); if (mFlagOpenCrop) { Logger.d("演示拍照后进行图片裁剪,根据实际开发需求可去掉上面的判断"); RxGalleryFinalApi.cropScannerForResult(MainActivity.this, RxGalleryFinalApi.getModelPath(), strings[0]);//调用裁剪.RxGalleryFinalApi.getModelPath()为默认的输出路径 } } }); } else { Logger.i("失敗"); } } @Override protected void onResume() { super.onResume(); //选择调用:裁剪图片的回调 RxGalleryFinalApi.cropActivityForResult(this, new MediaScanner.ScanCallback() { @Override public void onScanCompleted(String[] images) { Logger.i(String.format("裁剪图片成功,图片裁剪后存储路径:%s", images[0])); } }); } @Override protected void onRestart() { super.onRestart(); }
}