package com.hjx.parent; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import androidx.annotation.Nullable; import androidx.core.content.FileProvider; import com.hjx.parent.databinding.ActivityAddSuccessBinding; import com.prws.common.utils.BitmapUtils; import com.prws.common.utils.CommonUtil; import com.prws.common.utils.dialog.MyButtomDialog; import com.zhangteng.imagepicker.bean.ImageInfo; import com.zhangteng.imagepicker.config.ImagePickerConfig; import com.zhangteng.imagepicker.config.ImagePickerEnum; import com.zhangteng.imagepicker.config.ImagePickerOpen; import com.zhangteng.imagepicker.imageloader.GlideImageLoader; import com.zhangteng.utils.IHandlerCallBack; import java.io.File; import java.util.ArrayList; import java.util.List; public class AddSuccessActivity extends BaseActivity { private int REQUEST_CODE_IMAGE = 123; private String filePath; @Override public void initView(Bundle savedInstanceState) { binding.ivBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); binding.tvAdd.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { MyButtomDialog dialog = new MyButtomDialog(context, R.style.BottomSheetDialog); View bottomView = LayoutInflater.from(context).inflate(R.layout.bottom_sheet_layout, null); dialog.setContentView(bottomView); bottomView.findViewById(R.id.take_photo).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialog.dismiss(); Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //确保有相机来处理Intent filePath = context.getExternalFilesDir("images").getPath() + "/" + String.valueOf(System.currentTimeMillis()) + CommonUtil.getStr() + ".jpg"; File photoFile = new File(filePath); if (photoFile != null) { //适配Android 7.0文件权限,通过FileProvider创建一个content类型的Uri Uri photoUri = FileProvider.getUriForFile(activity, "com.hjx.parent.fileprovider", photoFile); takePictureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri); activity.startActivityForResult(takePictureIntent, REQUEST_CODE_IMAGE); } } }); bottomView.findViewById(R.id.choose_photo).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialog.dismiss(); ImagePickerConfig imagePickerConfig = new ImagePickerConfig.Builder().provider(getPackageName() + ".fileprovider").imageLoader(new GlideImageLoader()) //图片加载器 .iHandlerCallBack(new HandlerCallBack()) //图片选择器生命周期监听(直接打开摄像头时无效) .multiSelect(true) //是否多选 .isShowCamera(false).isVideoPicker(false) //是否选择视频 默认false .isImagePicker(true).imagePickerType(ImagePickerEnum.PHOTO_PICKER) //选择器打开类型 .maxImageSelectable(9) //图片可选择数 .maxHeight(1920) //图片最大高度 .maxWidth(1920) //图片最大宽度 .maxImageSize(10) //图片最大大小Mb .isCrop(false).pathList(new ArrayList<>()).pickerThemeColorRes(R.color.image_picker_white).pickerTitleColorRes(R.color.image_picker_text_black).cropThemeColorRes(R.color.image_picker_white).cropTitleColorRes(R.color.image_picker_text_black).pickerBackRes(R.mipmap.image_picker_back_black).pickerFolderRes(R.mipmap.image_picker_folder_black).build(); ImagePickerOpen.getInstance().setImagePickerConfig(imagePickerConfig).pathList(new ArrayList<>()).open(AddSuccessActivity.this); } }); bottomView.findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialog.dismiss(); } }); dialog.show(); } }); } @Override protected ActivityAddSuccessBinding getViewBinding() { return ActivityAddSuccessBinding.inflate(getLayoutInflater()); } @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_IMAGE && resultCode == RESULT_OK && !TextUtils.isEmpty(filePath)) { Bitmap b = BitmapUtils.compress(BitmapFactory.decodeFile(filePath)); String path = context.getExternalFilesDir("images").getPath() + "/" + String.valueOf(System.currentTimeMillis()) + CommonUtil.getStr() + ".jpg"; CommonUtil.saveBitmapToUri(b, path); List strings = new ArrayList<>(); Intent intent = new Intent(context, ImageActivity.class); strings.add(path); intent.putStringArrayListExtra("images", (ArrayList) strings); startActivity(intent); finish(); } } public class HandlerCallBack implements IHandlerCallBack { private String TAG = "---ImagePicker---"; List photoList = new ArrayList<>(); @Override public void onStart() { Log.i(TAG, "onStart: 开启"); } @Override public void onSuccess(List photoList) { this.photoList = photoList; Log.i(TAG, "onSuccess: 返回数据"); } @Override public void onCancel() { Log.i(TAG, "onCancel: 取消"); } @Override public void onFinish(List selectImage) { if (selectImage.size() == photoList.size()) { List strings = new ArrayList<>(); Intent intent = new Intent(context, ImageActivity.class); for (ImageInfo imageInfo : selectImage) { strings.add(imageInfo.getPath()); } intent.putStringArrayListExtra("images", (ArrayList) strings); startActivity(intent); finish(); } } @Override public void onError() { Log.i(TAG, "onError: 出错"); } } }