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 android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.FileProvider; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseViewHolder; import com.google.gson.Gson; import com.hjq.permissions.OnPermissionCallback; import com.hjq.permissions.Permission; import com.hjq.permissions.XXPermissions; import com.hjx.parent.adapter.ErrorAdapter; import com.hjx.parent.bean.StudentBean; import com.hjx.parent.databinding.ActivityErrorBookBinding; import com.prws.common.base.BasePresenter; import com.prws.common.bean.ImageBean; import com.prws.common.bean.PageInfo; import com.prws.common.bean.ResponseResult; import com.prws.common.bean.TopicBean; import com.prws.common.net.NetWorks; import com.prws.common.utils.BitmapUtils; import com.prws.common.utils.CommonUtil; import com.prws.common.utils.SharedPreferencesUtil; import com.prws.common.utils.dialog.MyButtomDialog; import com.zhangteng.imagepicker.bean.ImageInfo; import com.zhangteng.imagepicker.callback.HandlerCallBack; 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.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; public class ErrorBookActivity extends BaseActivity { StudentBean studentBean; private int subject; private ErrorAdapter adapter; private int REQUEST_CODE_IMAGE = 123; private String filePath; @Override public void initView(Bundle savedInstanceState) { String student = (String) SharedPreferencesUtil.getData("student", ""); try { studentBean = new Gson().fromJson(student, StudentBean.class); } catch (Exception e) { } binding.ivBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); binding.rlTakePhoto.post(new Runnable() { @Override public void run() { LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) binding.rlTakePhoto.getLayoutParams(); layoutParams.width = CommonUtil.getScreenWidth(context); layoutParams.height = CommonUtil.getScreenWidth(context) * 20 / 37; binding.rlTakePhoto.setLayoutParams(layoutParams); } }); binding.rlTakePhoto.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!XXPermissions.isGranted(context, Permission.CAMERA, Permission.WRITE_EXTERNAL_STORAGE)) { XXPermissions.with(context) // 申请多个权限 .permission(Permission.CAMERA) .request(new OnPermissionCallback() { @Override public void onGranted(List permissions, boolean all) { if (all) { //开启扫码界面 showButtonDialog(); } else { Toast.makeText(context, "需要权限", Toast.LENGTH_SHORT).show(); } } @Override public void onDenied(List permissions, boolean never) { XXPermissions.startPermissionActivity(context, permissions); } }); } else { showButtonDialog(); } } }); BaseQuickAdapter adapter = new BaseQuickAdapter(R.layout.item_subject, Arrays.asList(getResources().getStringArray(R.array.filter_subject))) { @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { } @Override protected void convert(@NonNull BaseViewHolder item, Object o) { item.setText(R.id.tv_subject, getResources().getStringArray(R.array.filter_subject)[item.getAdapterPosition()]); switch (item.getAdapterPosition()) { case 0: item.setImageResource(R.id.iv_subject, R.mipmap.ic_chinese); break; case 1: item.setImageResource(R.id.iv_subject, R.mipmap.ic_math); break; case 2: item.setImageResource(R.id.iv_subject, R.mipmap.ic_english); break; case 3: item.setImageResource(R.id.iv_subject, R.mipmap.ic_physics); break; case 4: item.setImageResource(R.id.iv_subject, R.mipmap.ic_chemistry); break; } ViewGroup.LayoutParams layoutParams = item.getView(R.id.rl_subject).getLayoutParams(); layoutParams.width = (CommonUtil.getScreenWidth(context) - CommonUtil.dpToPx(context, 30)) / 4; item.getView(R.id.rl_subject).setLayoutParams(layoutParams); item.getConvertView().setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (subject != item.getAdapterPosition()) { subject = item.getAdapterPosition(); getError(getResources().getStringArray(R.array.filter_subject)[subject]); } } }); } }; binding.recycleSubject.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)); binding.recycleSubject.setAdapter(adapter); subject = 0; getError(getResources().getStringArray(R.array.filter_subject)[subject]); binding.llAll.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(context, ErrorListActivity.class); startActivity(intent); } }); } @Override protected ActivityErrorBookBinding getViewBinding() { return ActivityErrorBookBinding.inflate(getLayoutInflater()); } private void showButtonDialog() { 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(ErrorBookActivity.this); } }); bottomView.findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialog.dismiss(); } }); dialog.show(); } private void getError(String subject) { if (studentBean != null) { Map map = new HashMap(); map.put("subject", subject); map.put("stuId", studentBean.getStuId()); map.put("pageSize", 5); map.put("pageNum", 1); NetWorks.getError(map, new Observer>>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(ResponseResult> result) { if (result.getData() != null && result.getCode() == 200) { List topicBeans = result.getData().getList(); loadError(topicBeans); } } @Override public void onError(Throwable e) { e.toString(); } @Override public void onComplete() { } }); } } @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); } } private void loadError(List list) { if (list.size() > 0) { binding.recycleError.setVisibility(View.VISIBLE); binding.llEmpty.setVisibility(View.GONE); if (adapter != null) { adapter.refresh(list); } else { adapter = new ErrorAdapter(context, list, false); binding.recycleError.setLayoutManager(new LinearLayoutManager(context, RecyclerView.VERTICAL, false)); binding.recycleError.setAdapter(adapter); } } else { binding.recycleError.setVisibility(View.GONE); binding.llEmpty.setVisibility(View.VISIBLE); } } 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); } } @Override public void onError() { Log.i(TAG, "onError: 出错"); } } }