ErrorBookActivity.java 13.3 KB
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 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.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<ActivityErrorBookBinding> {
    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) {
                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();
            }
        });
        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 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<ResponseResult<PageInfo<TopicBean>>>() {
                @Override
                public void onSubscribe(Disposable d) {

                }

                @Override
                public void onNext(ResponseResult<PageInfo<TopicBean>> result) {
                    if (result.getData() != null && result.getCode() == 200) {
                        List<TopicBean> 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<String> strings = new ArrayList<>();
            Intent intent = new Intent(context, ImageActivity.class);
            strings.add(path);
            intent.putStringArrayListExtra("images", (ArrayList<String>) strings);
            startActivity(intent);
        }
    }

    private void loadError(List<TopicBean> 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<ImageInfo> {
        private String TAG = "---ImagePicker---";
        List<ImageInfo> photoList = new ArrayList<>();

        @Override
        public void onStart() {
            Log.i(TAG, "onStart: 开启");
        }

        @Override
        public void onSuccess(List<ImageInfo> photoList) {
            this.photoList = photoList;
            Log.i(TAG, "onSuccess: 返回数据");
        }

        @Override
        public void onCancel() {
            Log.i(TAG, "onCancel: 取消");
        }

        @Override
        public void onFinish(List<ImageInfo> selectImage) {
            if (selectImage.size() == photoList.size()) {
                List<String> strings = new ArrayList<>();
                Intent intent = new Intent(context, ImageActivity.class);
                for (ImageInfo imageInfo : selectImage) {
                    strings.add(imageInfo.getPath());
                }
                intent.putStringArrayListExtra("images", (ArrayList<String>) strings);
                startActivity(intent);
            }
        }

        @Override
        public void onError() {
            Log.i(TAG, "onError: 出错");
        }
    }
}