diff --git a/app/src/main/java/com/hjx/parent/ImageActivity.java b/app/src/main/java/com/hjx/parent/ImageActivity.java index 0d4c55d..b861eb9 100644 --- a/app/src/main/java/com/hjx/parent/ImageActivity.java +++ b/app/src/main/java/com/hjx/parent/ImageActivity.java @@ -430,7 +430,11 @@ public class ImageActivity extends BaseRxActivity implemen private void save(List topicBeans) { if (type == 0) { ErrorInputDialog dialog = new ErrorInputDialog(this, topicBeans); - dialog.show(); + dialog.show(() -> { + Intent intent = new Intent(this, AddSuccessActivity.class); + startActivity(intent); + finish(); + }); } else { List paths = new ArrayList<>(); for (TopicBean it: topicBeans) { diff --git a/app/src/main/java/com/hjx/parent/JudgeActivity.java b/app/src/main/java/com/hjx/parent/JudgeActivity.java index 606f4ae..c9facb6 100644 --- a/app/src/main/java/com/hjx/parent/JudgeActivity.java +++ b/app/src/main/java/com/hjx/parent/JudgeActivity.java @@ -1,6 +1,7 @@ package com.hjx.parent; import android.annotation.SuppressLint; +import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Rect; import android.os.Bundle; @@ -10,12 +11,15 @@ import com.bumptech.glide.Glide; import com.hjx.parent.api.JudgeRepository; import com.hjx.parent.databinding.ActivityJudgeBinding; import com.hjx.parent.databinding.LayoutJudgeRectBinding; +import com.hjx.parent.dialog.ErrorInputDialog; import com.hjx.parent.rx.BaseRxActivity; import com.hjx.parent.utils.CutUtil; +import com.prws.common.bean.TopicBean; import java.io.File; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; import io.reactivex.Observable; import io.reactivex.Single; @@ -57,6 +61,23 @@ public class JudgeActivity extends BaseRxActivity { mList.forEach(it -> it.vb.getRoot().setSelected(true)); checkCount(); }); + binding.btnAdd.setOnClickListener(v -> { + if (mList.isEmpty()) return; + List selected = mList.stream() + .filter(it -> it.vb.getRoot().isSelected()) + .map(it -> { + TopicBean bean = new TopicBean(); + bean.setPath(it.getPath()); + return bean; + }) + .collect(Collectors.toList()); + + ErrorInputDialog dialog = new ErrorInputDialog(this, selected); + dialog.show(() -> { + showToast("已加入错题本"); + finish(); + }); + }); } private void prepareRects(List rects) { @@ -169,5 +190,13 @@ public class JudgeActivity extends BaseRxActivity { this.rect = rect; this.vb = vb; } + + private String path; + + public String getPath() { + if (path != null) return path; + path = CutUtil.saveBitmapToCache(bitmap, App.getInstance()); + return path; + } } } diff --git a/app/src/main/java/com/hjx/parent/dialog/ErrorInputDialog.java b/app/src/main/java/com/hjx/parent/dialog/ErrorInputDialog.java index 27765db..cfff265 100644 --- a/app/src/main/java/com/hjx/parent/dialog/ErrorInputDialog.java +++ b/app/src/main/java/com/hjx/parent/dialog/ErrorInputDialog.java @@ -17,6 +17,7 @@ import android.widget.RadioButton; import android.widget.RadioGroup; import androidx.annotation.NonNull; +import androidx.fragment.app.FragmentActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -30,6 +31,7 @@ import com.hjx.parent.ImageActivity; import com.hjx.parent.R; import com.hjx.parent.bean.StudentBean; import com.hjx.parent.databinding.DialogAddErrorBinding; +import com.hjx.parent.function.Function0; import com.prws.common.bean.Grade; import com.prws.common.bean.GradeAndSubject; import com.prws.common.bean.ResponseResult; @@ -54,7 +56,7 @@ import io.reactivex.disposables.Disposable; import okhttp3.ResponseBody; public class ErrorInputDialog extends Dialog { - private ImageActivity context; + private FragmentActivity context; private DialogAddErrorBinding binding; private List list; private int select = 0; @@ -65,7 +67,13 @@ public class ErrorInputDialog extends Dialog { private int type = 0; BaseQuickAdapter adapter; - public ErrorInputDialog(@NonNull ImageActivity context, List list) { + private Function0 function = () -> {}; + public void show(Function0 callback) { + this.function = callback; + super.show(); + } + + public ErrorInputDialog(@NonNull FragmentActivity context, List list) { super(context, R.style.MyAlertDialog); this.context = context; this.list = list; @@ -271,9 +279,10 @@ public class ErrorInputDialog extends Dialog { } if (isAllAdd) { dismiss(); - Intent intent = new Intent(context, AddSuccessActivity.class); - context.startActivity(intent); - context.finish(); + function.invoke(); +// Intent intent = new Intent(context, AddSuccessActivity.class); +// context.startActivity(intent); +// context.finish(); } } } diff --git a/app/src/main/java/com/hjx/parent/utils/CutUtil.java b/app/src/main/java/com/hjx/parent/utils/CutUtil.java index 2caa517..1e2ef0c 100644 --- a/app/src/main/java/com/hjx/parent/utils/CutUtil.java +++ b/app/src/main/java/com/hjx/parent/utils/CutUtil.java @@ -12,9 +12,11 @@ import android.view.ViewTreeObserver; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; import com.hjx.parent.function.Function1; +import com.prws.common.utils.CommonUtil; import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; import java.util.List; @@ -99,4 +101,29 @@ public class CutUtil { .load(originList) .get(); } + + public static String saveBitmapToCache(Bitmap bitmap, Context context) { + String fileName = System.currentTimeMillis() + CommonUtil.getStr() + ".jpg"; + String path = context.getExternalCacheDir().getPath() + "/images/" + fileName; + try { + File file = new File(path); + File parent = file.getParentFile(); + if (parent != null && !parent.exists()) { + parent.mkdirs(); + } + + FileOutputStream fos = new FileOutputStream(file); + boolean success = bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); + fos.flush(); + fos.close(); + + if (success) { + return path; + } + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + } diff --git a/app/src/main/res/drawable/bg_error_add_enabled.xml b/app/src/main/res/drawable/bg_error_add_enabled.xml new file mode 100644 index 0000000..32503fd --- /dev/null +++ b/app/src/main/res/drawable/bg_error_add_enabled.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_judge.xml b/app/src/main/res/layout/activity_judge.xml index 26f1399..df20695 100644 --- a/app/src/main/res/layout/activity_judge.xml +++ b/app/src/main/res/layout/activity_judge.xml @@ -60,12 +60,12 @@