Commit af63de48989d310ae10b6076ee5e12e32988167b

Authored by shixianjie
1 parent 73452e26df
Exists in master

图片页面布局调整

app/src/main/java/com/hjx/parent/ImageActivity.java
1 package com.hjx.parent; 1 package com.hjx.parent;
2 2
3 import android.annotation.SuppressLint; 3 import android.annotation.SuppressLint;
4 import android.app.Dialog; 4 import android.app.Dialog;
5 import android.content.Intent; 5 import android.content.Intent;
6 import android.graphics.Bitmap; 6 import android.graphics.Bitmap;
7 import android.graphics.BitmapFactory; 7 import android.graphics.BitmapFactory;
8 import android.graphics.Rect; 8 import android.graphics.Rect;
9 import android.net.Uri; 9 import android.net.Uri;
10 import android.os.Bundle; 10 import android.os.Bundle;
11 import android.os.Handler; 11 import android.os.Handler;
12 import android.provider.MediaStore; 12 import android.provider.MediaStore;
13 import android.text.TextUtils; 13 import android.text.TextUtils;
14 import android.util.Log; 14 import android.util.Log;
15 import android.view.KeyEvent; 15 import android.view.KeyEvent;
16 import android.view.View; 16 import android.view.View;
17 17
18 18
19 import androidx.annotation.Nullable; 19 import androidx.annotation.Nullable;
20 import androidx.core.content.FileProvider; 20 import androidx.core.content.FileProvider;
21 import androidx.viewpager2.widget.ViewPager2; 21 import androidx.viewpager2.widget.ViewPager2;
22 22
23 import com.google.gson.Gson; 23 import com.google.gson.Gson;
24 import com.google.gson.JsonObject; 24 import com.google.gson.JsonObject;
25 import com.hjx.parent.adapter.ImageAdapter; 25 import com.hjx.parent.adapter.ImageAdapter;
26 import com.hjx.parent.databinding.ActivityImageBinding; 26 import com.hjx.parent.databinding.ActivityImageBinding;
27 import com.hjx.parent.dialog.AddHomeworkDialog; 27 import com.hjx.parent.dialog.AddHomeworkDialog;
28 import com.hjx.parent.dialog.ErrorInputDialog; 28 import com.hjx.parent.dialog.ErrorInputDialog;
29 import com.hjx.parent.dialog.PhotoViewDialog; 29 import com.hjx.parent.dialog.PhotoViewDialog;
30 import com.hjx.parent.dialog.TipDialog; 30 import com.hjx.parent.dialog.TipDialog;
31 import com.hjx.parent.rx.BaseRxActivity; 31 import com.hjx.parent.rx.BaseRxActivity;
32 import com.prws.common.bean.CutPicBean; 32 import com.prws.common.bean.CutPicBean;
33 import com.prws.common.bean.ImageBean; 33 import com.prws.common.bean.ImageBean;
34 import com.prws.common.bean.TopicBean; 34 import com.prws.common.bean.TopicBean;
35 import com.prws.common.net.NetWorks; 35 import com.prws.common.net.NetWorks;
36 import com.prws.common.utils.BitmapUtils; 36 import com.prws.common.utils.BitmapUtils;
37 import com.prws.common.utils.CommonUtil; 37 import com.prws.common.utils.CommonUtil;
38 import com.xiasuhuei321.loadingdialog.view.LoadingDialog; 38 import com.xiasuhuei321.loadingdialog.view.LoadingDialog;
39 39
40 import java.io.File; 40 import java.io.File;
41 import java.util.ArrayList; 41 import java.util.ArrayList;
42 import java.util.List; 42 import java.util.List;
43 43
44 import io.reactivex.Observer; 44 import io.reactivex.Observer;
45 import io.reactivex.disposables.Disposable; 45 import io.reactivex.disposables.Disposable;
46 import retrofit2.Call; 46 import retrofit2.Call;
47 import retrofit2.Callback; 47 import retrofit2.Callback;
48 import retrofit2.Response; 48 import retrofit2.Response;
49 49
50 public class ImageActivity extends BaseRxActivity<ActivityImageBinding> implements View.OnClickListener { 50 public class ImageActivity extends BaseRxActivity<ActivityImageBinding> implements View.OnClickListener {
51 51
52 private List<String> images = new ArrayList<>(); 52 private List<String> images = new ArrayList<>();
53 private ImageAdapter imageAdapter; 53 private ImageAdapter imageAdapter;
54 private List<ImageBean> list = new ArrayList<>(); 54 private List<ImageBean> list = new ArrayList<>();
55 private String filePath; 55 private String filePath;
56 56
57 private int type = 0; 57 private int type = 0;
58 private AddHomeworkDialog addHomeworkDialog; 58 private AddHomeworkDialog addHomeworkDialog;
59 59
60 @Override 60 @Override
61 public void initView(Bundle savedInstanceState) { 61 public void initView(Bundle savedInstanceState) {
62 type = getIntent().getIntExtra("type", 0); 62 type = getIntent().getIntExtra("type", 0);
63 binding.tvSave.setText(type == 0 ? "保存错题" : "录入题目"); 63 binding.tvSave.setText(type == 0 ? "保存错题" : "录入题目");
64 64
65 images = getIntent().getStringArrayListExtra("images"); 65 images = getIntent().getStringArrayListExtra("images");
66 if (images == null || images.size() <= 1) {
67 binding.rlPrevious.setVisibility(View.GONE);
68 binding.rlNext.setVisibility(View.GONE);
69 }
66 for (String s : images) { 70 for (String s : images) {
67 String filepath = context.getExternalFilesDir("images").getPath() + "/" + System.currentTimeMillis() + CommonUtil.getStr() + ".jpg"; 71 String filepath = context.getExternalFilesDir("images").getPath() + "/" + System.currentTimeMillis() + CommonUtil.getStr() + ".jpg";
68 ImageBean imageBean = new ImageBean(); 72 ImageBean imageBean = new ImageBean();
69 Bitmap bitmap = BitmapUtils.getimage(s); 73 Bitmap bitmap = BitmapUtils.getimage(s);
70 CommonUtil.saveBitmapToUri(bitmap, filepath); 74 CommonUtil.saveBitmapToUri(bitmap, filepath);
71 imageBean.setPath(filepath); 75 imageBean.setPath(filepath);
72 imageBean.source = filepath; 76 imageBean.source = filepath;
73 list.add(imageBean); 77 list.add(imageBean);
74 } 78 }
75 imageAdapter = new ImageAdapter(this, list); 79 imageAdapter = new ImageAdapter(this, list);
76 binding.viewPager.setAdapter(imageAdapter); 80 binding.viewPager.setAdapter(imageAdapter);
77 binding.viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { 81 binding.viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
78 @Override 82 @Override
79 public void onPageSelected(int position) { 83 public void onPageSelected(int position) {
80 if (list.get(position).getCuts() == null) { 84 if (list.get(position).getCuts() == null) {
81 // binding.ivPrevious.setEnabled(false); 85 // binding.ivPrevious.setEnabled(false);
82 // binding.ivNext.setEnabled(false); 86 // binding.ivNext.setEnabled(false);
83 clearText(); 87 clearText();
84 } 88 }
85 binding.tvTitle.setText((binding.viewPager.getCurrentItem() + 1) + "/" + list.size()); 89 binding.tvTitle.setText((binding.viewPager.getCurrentItem() + 1) + "/" + list.size());
86 if (position == 0) { 90 if (position == 0) {
87 binding.ivPrevious.setImageResource(R.mipmap.ic_previous_gray); 91 binding.ivPrevious.setImageResource(R.mipmap.ic_previous_gray);
88 // binding.ivPrevious.setEnabled(true); 92 // binding.ivPrevious.setEnabled(true);
89 } else { 93 } else {
90 binding.ivPrevious.setImageResource(R.mipmap.ic_previous); 94 binding.ivPrevious.setImageResource(R.mipmap.ic_previous);
91 // binding.ivPrevious.setEnabled(false); 95 // binding.ivPrevious.setEnabled(false);
92 } 96 }
93 if (position == list.size() - 1) { 97 if (position == list.size() - 1) {
94 binding.ivNext.setImageResource(R.mipmap.ic_next_gray); 98 binding.ivNext.setImageResource(R.mipmap.ic_next_gray);
95 // binding.ivNext.setEnabled(true); 99 // binding.ivNext.setEnabled(true);
96 } else { 100 } else {
97 binding.ivNext.setImageResource(R.mipmap.ic_next); 101 binding.ivNext.setImageResource(R.mipmap.ic_next);
98 // binding.ivNext.setEnabled(false); 102 // binding.ivNext.setEnabled(false);
99 } 103 }
100 super.onPageSelected(position); 104 super.onPageSelected(position);
101 } 105 }
102 }); 106 });
103 binding.rlNext.setOnClickListener(this); 107 binding.rlNext.setOnClickListener(this);
104 binding.rlPrevious.setOnClickListener(this); 108 binding.rlPrevious.setOnClickListener(this);
105 binding.ivBack.setOnClickListener(this); 109 binding.ivBack.setOnClickListener(this);
106 binding.tvPhoto.setOnClickListener(this); 110 binding.tvPhoto.setOnClickListener(this);
107 binding.tvAdd.setOnClickListener(this); 111 binding.tvAdd.setOnClickListener(this);
108 binding.llEdit.setOnClickListener(this); 112 binding.llEdit.setOnClickListener(this);
109 binding.tvSave.setOnClickListener(this); 113 binding.tvSave.setOnClickListener(this);
110 binding.btnShowSource.setOnClickListener(v -> { 114 binding.btnShowSource.setOnClickListener(v -> {
111 if (list.isEmpty()) return; 115 if (list.isEmpty()) return;
112 ImageBean data = list.get(binding.viewPager.getCurrentItem()); 116 ImageBean data = list.get(binding.viewPager.getCurrentItem());
113 new PhotoViewDialog(this).show(data.source); 117 new PhotoViewDialog(this).show(data.source);
114 }); 118 });
115 } 119 }
116 120
117 public void clearText() { 121 public void clearText() {
118 int index = binding.viewPager.getCurrentItem(); 122 int index = binding.viewPager.getCurrentItem();
119 showLoadingDialog(getString(R.string.loading_text), new LoadingDialog.DismissListener() { 123 showLoadingDialog(getString(R.string.loading_text), new LoadingDialog.DismissListener() {
120 @Override 124 @Override
121 public void dimiss() { 125 public void dimiss() {
122 // binding.ivPrevious.setEnabled(index != 0); 126 // binding.ivPrevious.setEnabled(index != 0);
123 // binding.ivNext.setEnabled(index != list.size() - 1); 127 // binding.ivNext.setEnabled(index != list.size() - 1);
124 } 128 }
125 }); 129 });
126 Log.i("clearText", list.get(index).getPath()); 130 Log.i("clearText", list.get(index).getPath());
127 String base64 = BitmapUtils.imageToBase64(list.get(index).getPath()); 131 String base64 = BitmapUtils.imageToBase64(list.get(index).getPath());
128 NetWorks.removeWriting(base64, new Observer<JsonObject>() { 132 NetWorks.removeWriting(base64, new Observer<JsonObject>() {
129 @Override 133 @Override
130 public void onSubscribe(Disposable d) { 134 public void onSubscribe(Disposable d) {
131 135
132 } 136 }
133 137
134 @Override 138 @Override
135 public void onNext(JsonObject jsonObject) { 139 public void onNext(JsonObject jsonObject) {
136 if (jsonObject != null && jsonObject.get("image_processed") != null) { 140 if (jsonObject != null && jsonObject.get("image_processed") != null) {
137 String image = jsonObject.get("image_processed").getAsString(); 141 String image = jsonObject.get("image_processed").getAsString();
138 if (image != null) { 142 if (image != null) {
139 String filepath = context.getExternalFilesDir("images").getPath() + "/" + String.valueOf(System.currentTimeMillis()) + CommonUtil.getStr() + ".jpg"; 143 String filepath = context.getExternalFilesDir("images").getPath() + "/" + String.valueOf(System.currentTimeMillis()) + CommonUtil.getStr() + ".jpg";
140 CommonUtil.saveBitmapToUri(BitmapUtils.stringToBitmap(image), filepath); 144 CommonUtil.saveBitmapToUri(BitmapUtils.stringToBitmap(image), filepath);
141 list.get(index).setPath(filepath); 145 list.get(index).setPath(filepath);
142 if (list.get(index).getCuts() == null) { 146 if (list.get(index).getCuts() == null) {
143 list.get(index).setCuts(new ArrayList<>()); 147 list.get(index).setCuts(new ArrayList<>());
144 } 148 }
145 imageAdapter.notifyItemChanged(index); 149 imageAdapter.notifyItemChanged(index);
146 cut(filepath); 150 cut(filepath);
147 } else { 151 } else {
148 loadFail("去除字迹失败"); 152 loadFail("去除字迹失败");
149 } 153 }
150 } else { 154 } else {
151 loadFail("去除字迹失败"); 155 loadFail("去除字迹失败");
152 } 156 }
153 } 157 }
154 158
155 @Override 159 @Override
156 public void onError(Throwable e) { 160 public void onError(Throwable e) {
157 loadFail("去除字迹失败"); 161 loadFail("去除字迹失败");
158 } 162 }
159 163
160 @Override 164 @Override
161 public void onComplete() { 165 public void onComplete() {
162 166
163 } 167 }
164 }); 168 });
165 } 169 }
166 170
167 public void cut(String path) { 171 public void cut(String path) {
168 String base64 = BitmapUtils.imageToBase64(path); 172 String base64 = BitmapUtils.imageToBase64(path);
169 Log.i("figLoaction", path); 173 Log.i("figLoaction", path);
170 NetWorks.cut(base64, new Observer<CutPicBean>() { 174 NetWorks.cut(base64, new Observer<CutPicBean>() {
171 @Override 175 @Override
172 public void onSubscribe(Disposable d) { 176 public void onSubscribe(Disposable d) {
173 177
174 } 178 }
175 179
176 @Override 180 @Override
177 public void onNext(CutPicBean cutPicBean) { 181 public void onNext(CutPicBean cutPicBean) {
178 if (cutPicBean != null) { 182 if (cutPicBean != null) {
179 if (cutPicBean.getDirection() != 0) { 183 if (cutPicBean.getDirection() != 0) {
180 rotatingImage(cutPicBean); 184 rotatingImage(cutPicBean);
181 } else { 185 } else {
182 if (cutPicBean.getQus_figure() != null && cutPicBean.getQus_figure().size() > 0) { 186 if (cutPicBean.getQus_figure() != null && cutPicBean.getQus_figure().size() > 0) {
183 List<CutPicBean.FigLoaction> figLoactions = new ArrayList<>(); 187 List<CutPicBean.FigLoaction> figLoactions = new ArrayList<>();
184 for (CutPicBean.CutLocation cutLocation : cutPicBean.getQus_figure()) { 188 for (CutPicBean.CutLocation cutLocation : cutPicBean.getQus_figure()) {
185 figLoactions.add(cutLocation.getFig_location()); 189 figLoactions.add(cutLocation.getFig_location());
186 } 190 }
187 new Handler().postDelayed(new Runnable() { 191 new Handler().postDelayed(new Runnable() {
188 @Override 192 @Override
189 public void run() { 193 public void run() {
190 getRects(figLoactions); 194 getRects(figLoactions);
191 } 195 }
192 }, 1000); 196 }, 1000);
193 } else { 197 } else {
194 cancelLoadingDialog(); 198 cancelLoadingDialog();
195 } 199 }
196 } 200 }
197 } else { 201 } else {
198 loadFail("自动切题失败"); 202 loadFail("自动切题失败");
199 } 203 }
200 } 204 }
201 205
202 @Override 206 @Override
203 public void onError(Throwable e) { 207 public void onError(Throwable e) {
204 loadFail("自动切题失败"); 208 loadFail("自动切题失败");
205 } 209 }
206 210
207 @Override 211 @Override
208 public void onComplete() { 212 public void onComplete() {
209 213
210 } 214 }
211 }); 215 });
212 } 216 }
213 217
214 private void getRects(List<CutPicBean.FigLoaction> figLoactions) { 218 private void getRects(List<CutPicBean.FigLoaction> figLoactions) {
215 Log.i("figLoaction", new Gson().toJson(figLoactions)); 219 Log.i("figLoaction", new Gson().toJson(figLoactions));
216 int index = binding.viewPager.getCurrentItem(); 220 int index = binding.viewPager.getCurrentItem();
217 List<ImageBean.Cut> cuts = new ArrayList<>(); 221 List<ImageBean.Cut> cuts = new ArrayList<>();
218 for (CutPicBean.FigLoaction figLoaction : figLoactions) { 222 for (CutPicBean.FigLoaction figLoaction : figLoactions) {
219 ImageBean.Cut cut = new ImageBean.Cut(); 223 ImageBean.Cut cut = new ImageBean.Cut();
220 cut.setRect(figLoaction); 224 cut.setRect(figLoaction);
221 cut.setSelect(false); 225 cut.setSelect(false);
222 cuts.add(cut); 226 cuts.add(cut);
223 } 227 }
224 list.get(index).setCuts(cuts); 228 list.get(index).setCuts(cuts);
225 imageAdapter.notifyItemChanged(index); 229 imageAdapter.notifyItemChanged(index);
226 cancelLoadingDialog(); 230 cancelLoadingDialog();
227 } 231 }
228 232
229 private void rotatingImage(CutPicBean cutPicBean) { 233 private void rotatingImage(CutPicBean cutPicBean) {
230 int index = binding.viewPager.getCurrentItem(); 234 int index = binding.viewPager.getCurrentItem();
231 Bitmap bitmap = BitmapFactory.decodeFile(list.get(index).getPath()); 235 Bitmap bitmap = BitmapFactory.decodeFile(list.get(index).getPath());
232 int angle = 0; 236 int angle = 0;
233 switch (cutPicBean.getDirection()) { 237 switch (cutPicBean.getDirection()) {
234 case 1: 238 case 1:
235 angle = 90; 239 angle = 90;
236 break; 240 break;
237 case 2: 241 case 2:
238 angle = 180; 242 angle = 180;
239 break; 243 break;
240 case 3: 244 case 3:
241 angle = 270; 245 angle = 270;
242 break; 246 break;
243 } 247 }
244 if (cutPicBean.getQus_figure() != null && cutPicBean.getQus_figure().size() > 0) { 248 if (cutPicBean.getQus_figure() != null && cutPicBean.getQus_figure().size() > 0) {
245 List<CutPicBean.FigLoaction> figLoactions = new ArrayList<>(); 249 List<CutPicBean.FigLoaction> figLoactions = new ArrayList<>();
246 for (CutPicBean.CutLocation cutLocation : cutPicBean.getQus_figure()) { 250 for (CutPicBean.CutLocation cutLocation : cutPicBean.getQus_figure()) {
247 figLoactions.add(cutLocation.getFig_location()); 251 figLoactions.add(cutLocation.getFig_location());
248 } 252 }
249 figLoactions = CommonUtil.rotaingLocation(angle, figLoactions, bitmap.getWidth(), bitmap.getHeight()); 253 figLoactions = CommonUtil.rotaingLocation(angle, figLoactions, bitmap.getWidth(), bitmap.getHeight());
250 bitmap = CommonUtil.rotaingImageView(angle, bitmap); 254 bitmap = CommonUtil.rotaingImageView(angle, bitmap);
251 String filepath = context.getExternalFilesDir("images").getPath() + "/" + String.valueOf(System.currentTimeMillis()) + CommonUtil.getStr() + ".jpg"; 255 String filepath = context.getExternalFilesDir("images").getPath() + "/" + String.valueOf(System.currentTimeMillis()) + CommonUtil.getStr() + ".jpg";
252 CommonUtil.saveBitmapToUri(bitmap, filepath); 256 CommonUtil.saveBitmapToUri(bitmap, filepath);
253 list.get(index).setPath(filepath); 257 list.get(index).setPath(filepath);
254 imageAdapter.notifyItemChanged(index); 258 imageAdapter.notifyItemChanged(index);
255 List<CutPicBean.FigLoaction> finalFigLoactions = figLoactions; 259 List<CutPicBean.FigLoaction> finalFigLoactions = figLoactions;
256 new Handler().postDelayed(new Runnable() { 260 new Handler().postDelayed(new Runnable() {
257 @Override 261 @Override
258 public void run() { 262 public void run() {
259 getRects(finalFigLoactions); 263 getRects(finalFigLoactions);
260 } 264 }
261 }, 500); 265 }, 500);
262 } else { 266 } else {
263 cancelLoadingDialog(); 267 cancelLoadingDialog();
264 } 268 }
265 } 269 }
266 270
267 @Override 271 @Override
268 protected ActivityImageBinding getViewBinding() { 272 protected ActivityImageBinding getViewBinding() {
269 return ActivityImageBinding.inflate(getLayoutInflater()); 273 return ActivityImageBinding.inflate(getLayoutInflater());
270 } 274 }
271 275
272 @SuppressLint("SetTextI18n") 276 @SuppressLint("SetTextI18n")
273 public void refreshNum() { 277 public void refreshNum() {
274 int num = 0; 278 int num = 0;
275 for (ImageBean imageBean : list) { 279 for (ImageBean imageBean : list) {
276 if (imageBean.getCuts() != null && imageBean.getCuts().size() > 0) { 280 if (imageBean.getCuts() != null && imageBean.getCuts().size() > 0) {
277 for (ImageBean.Cut cut : imageBean.getCuts()) { 281 for (ImageBean.Cut cut : imageBean.getCuts()) {
278 if (cut.isSelect()) { 282 if (cut.isSelect()) {
279 num++; 283 num++;
280 } 284 }
281 } 285 }
282 } 286 }
283 } 287 }
284 String btnText = type == 0 ? "保存错题" : "录入题目"; 288 String btnText = type == 0 ? "保存错题" : "录入题目";
285 if (num > 0) { 289 if (num > 0) {
286 binding.tvSave.setEnabled(true); 290 binding.tvSave.setEnabled(true);
287 binding.tvSave.setBackgroundResource(R.drawable.bg_soild_blue_5); 291 binding.tvSave.setBackgroundResource(R.drawable.bg_soild_blue_5);
288 binding.tvSave.setText(btnText + "(" + num + ")"); 292 binding.tvSave.setText(btnText + "(" + num + ")");
289 } else { 293 } else {
290 binding.tvSave.setEnabled(false); 294 binding.tvSave.setEnabled(false);
291 binding.tvSave.setBackgroundResource(R.drawable.bg_soild_blue_light_5); 295 binding.tvSave.setBackgroundResource(R.drawable.bg_soild_blue_light_5);
292 binding.tvSave.setText(btnText); 296 binding.tvSave.setText(btnText);
293 } 297 }
294 } 298 }
295 299
296 @Override 300 @Override
297 public void onClick(View v) { 301 public void onClick(View v) {
298 switch (v.getId()) { 302 switch (v.getId()) {
299 case R.id.iv_back: 303 case R.id.iv_back:
300 back(); 304 back();
301 break; 305 break;
302 case R.id.rl_next: 306 case R.id.rl_next:
303 if (binding.viewPager.getCurrentItem() + 1 < list.size()) { 307 if (binding.viewPager.getCurrentItem() + 1 < list.size()) {
304 binding.viewPager.setCurrentItem(binding.viewPager.getCurrentItem() + 1); 308 binding.viewPager.setCurrentItem(binding.viewPager.getCurrentItem() + 1);
305 } 309 }
306 break; 310 break;
307 case R.id.rl_previous: 311 case R.id.rl_previous:
308 if (binding.viewPager.getCurrentItem() != 0) { 312 if (binding.viewPager.getCurrentItem() != 0) {
309 binding.viewPager.setCurrentItem(binding.viewPager.getCurrentItem() - 1); 313 binding.viewPager.setCurrentItem(binding.viewPager.getCurrentItem() - 1);
310 } 314 }
311 break; 315 break;
312 case R.id.ll_edit: 316 case R.id.ll_edit:
313 Intent intent = new Intent(context, ImageEditActivity.class); 317 Intent intent = new Intent(context, ImageEditActivity.class);
314 intent.putExtra("path", list.get(binding.viewPager.getCurrentItem()).getPath()); 318 intent.putExtra("path", list.get(binding.viewPager.getCurrentItem()).getPath());
315 startActivityForResult(intent, 1001); 319 startActivityForResult(intent, 1001);
316 break; 320 break;
317 case R.id.tv_photo: 321 case R.id.tv_photo:
318 Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 322 Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
319 //确保有相机来处理Intent 323 //确保有相机来处理Intent
320 filePath = context.getExternalFilesDir("images").getPath() + "/" + String.valueOf(System.currentTimeMillis()) + CommonUtil.getStr() + ".jpg"; 324 filePath = context.getExternalFilesDir("images").getPath() + "/" + String.valueOf(System.currentTimeMillis()) + CommonUtil.getStr() + ".jpg";
321 File photoFile = new File(filePath); 325 File photoFile = new File(filePath);
322 if (photoFile != null) { 326 if (photoFile != null) {
323 //适配Android 7.0文件权限,通过FileProvider创建一个content类型的Uri 327 //适配Android 7.0文件权限,通过FileProvider创建一个content类型的Uri
324 Uri photoUri = FileProvider.getUriForFile(activity, "com.hjx.parent.fileprovider", photoFile); 328 Uri photoUri = FileProvider.getUriForFile(activity, "com.hjx.parent.fileprovider", photoFile);
325 takePictureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 329 takePictureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
326 takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri); 330 takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
327 activity.startActivityForResult(takePictureIntent, 1002); 331 activity.startActivityForResult(takePictureIntent, 1002);
328 } 332 }
329 break; 333 break;
330 case R.id.tv_add: 334 case R.id.tv_add:
331 Intent intent1 = new Intent(context, ImageSelectActivity.class); 335 Intent intent1 = new Intent(context, ImageSelectActivity.class);
332 intent1.putExtra("path", list.get(binding.viewPager.getCurrentItem()).getPath()); 336 intent1.putExtra("path", list.get(binding.viewPager.getCurrentItem()).getPath());
333 intent1.putExtra("source", list.get(binding.viewPager.getCurrentItem()).source); 337 intent1.putExtra("source", list.get(binding.viewPager.getCurrentItem()).source);
334 startActivityForResult(intent1, 1001); 338 startActivityForResult(intent1, 1001);
335 break; 339 break;
336 case R.id.tv_save: 340 case R.id.tv_save:
337 List<TopicBean> topicBeans = new ArrayList<>(); 341 List<TopicBean> topicBeans = new ArrayList<>();
338 for (ImageBean imageBean : list) { 342 for (ImageBean imageBean : list) {
339 if (imageBean.getCuts() != null && imageBean.getCuts().size() > 0) { 343 if (imageBean.getCuts() != null && imageBean.getCuts().size() > 0) {
340 for (ImageBean.Cut cut : imageBean.getCuts()) { 344 for (ImageBean.Cut cut : imageBean.getCuts()) {
341 if (cut.isSelect()) { 345 if (cut.isSelect()) {
342 TopicBean bean = new TopicBean(); 346 TopicBean bean = new TopicBean();
343 String path = context.getExternalFilesDir("images").getPath() + "/" + String.valueOf(System.currentTimeMillis()) + CommonUtil.getStr() + ".jpg"; 347 String path = context.getExternalFilesDir("images").getPath() + "/" + String.valueOf(System.currentTimeMillis()) + CommonUtil.getStr() + ".jpg";
344 BitmapUtils.saveBitmap(cut.getBitmap(), path); 348 BitmapUtils.saveBitmap(cut.getBitmap(), path);
345 bean.setPath(path); 349 bean.setPath(path);
346 topicBeans.add(bean); 350 topicBeans.add(bean);
347 } 351 }
348 } 352 }
349 } 353 }
350 } 354 }
351 save(topicBeans); 355 save(topicBeans);
352 break; 356 break;
353 } 357 }
354 } 358 }
355 359
356 private void save(List<TopicBean> topicBeans) { 360 private void save(List<TopicBean> topicBeans) {
357 if (type == 0) { 361 if (type == 0) {
358 ErrorInputDialog dialog = new ErrorInputDialog(this, topicBeans); 362 ErrorInputDialog dialog = new ErrorInputDialog(this, topicBeans);
359 dialog.show(); 363 dialog.show();
360 } else { 364 } else {
361 List<String> paths = new ArrayList<>(); 365 List<String> paths = new ArrayList<>();
362 for (TopicBean it: topicBeans) { 366 for (TopicBean it: topicBeans) {
363 paths.add(it.getPath()); 367 paths.add(it.getPath());
364 } 368 }
365 if (addHomeworkDialog == null) { 369 if (addHomeworkDialog == null) {
366 addHomeworkDialog = new AddHomeworkDialog(this); 370 addHomeworkDialog = new AddHomeworkDialog(this);
367 } 371 }
368 addHomeworkDialog.show(paths, student -> { 372 addHomeworkDialog.show(paths, student -> {
369 Intent intent = new Intent(context, AddSuccessActivity.class); 373 Intent intent = new Intent(context, AddSuccessActivity.class);
370 intent.putExtra("type", type); 374 intent.putExtra("type", type);
371 intent.putExtra("studentJson", new Gson().toJson(student)); 375 intent.putExtra("studentJson", new Gson().toJson(student));
372 startActivity(intent); 376 startActivity(intent);
373 finish(); 377 finish();
374 }); 378 });
375 } 379 }
376 } 380 }
377 381
378 @Override 382 @Override
379 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { 383 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
380 super.onActivityResult(requestCode, resultCode, data); 384 super.onActivityResult(requestCode, resultCode, data);
381 if (requestCode == 1001) { 385 if (requestCode == 1001) {
382 if (resultCode == 1002) { 386 if (resultCode == 1002) {
383 if (list.size() > 1) { 387 if (list.size() > 1) {
384 list.remove(binding.viewPager.getCurrentItem()); 388 list.remove(binding.viewPager.getCurrentItem());
389 if (list.size() <= 1) {
390 binding.rlPrevious.setVisibility(View.GONE);
391 binding.rlNext.setVisibility(View.GONE);
392 }
385 imageAdapter.notifyItemRemoved(binding.viewPager.getCurrentItem()); 393 imageAdapter.notifyItemRemoved(binding.viewPager.getCurrentItem());
386 binding.tvTitle.setText((binding.viewPager.getCurrentItem() + 1) + "/" + list.size()); 394 binding.tvTitle.setText((binding.viewPager.getCurrentItem() + 1) + "/" + list.size());
387 refreshNum(); 395 refreshNum();
388 } else { 396 } else {
389 finish(); 397 finish();
390 } 398 }
391 } else if (resultCode == 1003) { 399 } else if (resultCode == 1003) {
392 int position = binding.viewPager.getCurrentItem(); 400 int position = binding.viewPager.getCurrentItem();
393 String src = list.get(position).source; 401 String src = list.get(position).source;
394 list.remove(position); 402 list.remove(position);
395 String path = data.getStringExtra("path"); 403 String path = data.getStringExtra("path");
396 ImageBean imageBean = new ImageBean(); 404 ImageBean imageBean = new ImageBean();
397 imageBean.setPath(path); 405 imageBean.setPath(path);
398 imageBean.source = src; 406 imageBean.source = src;
399 list.add(position, imageBean); 407 list.add(position, imageBean);
400 imageAdapter.notifyItemChanged(position); 408 imageAdapter.notifyItemChanged(position);
401 clearText(); 409 clearText();
402 refreshNum(); 410 refreshNum();
403 } else if (resultCode == 1004) { 411 } else if (resultCode == 1004) {
404 Rect rect = data.getParcelableExtra("cut"); 412 Rect rect = data.getParcelableExtra("cut");
405 if (rect != null) { 413 if (rect != null) {
406 int position = binding.viewPager.getCurrentItem(); 414 int position = binding.viewPager.getCurrentItem();
407 ImageBean.Cut cut = new ImageBean.Cut(); 415 ImageBean.Cut cut = new ImageBean.Cut();
408 cut.setRect1(rect); 416 cut.setRect1(rect);
409 cut.setSelect(false); 417 cut.setSelect(false);
410 if (list.get(position).getCuts() != null) { 418 if (list.get(position).getCuts() != null) {
411 list.get(position).getCuts().add(cut); 419 list.get(position).getCuts().add(cut);
412 } else { 420 } else {
413 List<ImageBean.Cut> cuts =new ArrayList<>(); 421 List<ImageBean.Cut> cuts =new ArrayList<>();
414 cuts.add(cut); 422 cuts.add(cut);
415 list.get(position).setCuts(cuts); 423 list.get(position).setCuts(cuts);
416 } 424 }
417 imageAdapter.notifyItemChanged(position); 425 imageAdapter.notifyItemChanged(position);
418 refreshNum(); 426 refreshNum();
419 } 427 }
420 } else if (resultCode == 1005) { 428 } else if (resultCode == 1005) {
421 int i = data.getIntExtra("position", 0); 429 int i = data.getIntExtra("position", 0);
422 int position = binding.viewPager.getCurrentItem(); 430 int position = binding.viewPager.getCurrentItem();
423 Rect rect = data.getParcelableExtra("cut"); 431 Rect rect = data.getParcelableExtra("cut");
424 if (rect != null) { 432 if (rect != null) {
425 ImageBean.Cut cut = new ImageBean.Cut(); 433 ImageBean.Cut cut = new ImageBean.Cut();
426 cut.setRect1(rect); 434 cut.setRect1(rect);
427 cut.setSelect(false); 435 cut.setSelect(false);
428 list.get(position).getCuts().remove(i); 436 list.get(position).getCuts().remove(i);
429 list.get(position).getCuts().add(i, cut); 437 list.get(position).getCuts().add(i, cut);
430 imageAdapter.notifyItemChanged(position); 438 imageAdapter.notifyItemChanged(position);
431 refreshNum(); 439 refreshNum();
432 } else { 440 } else {
433 list.get(position).getCuts().remove(i); 441 list.get(position).getCuts().remove(i);
434 imageAdapter.notifyItemChanged(position); 442 imageAdapter.notifyItemChanged(position);
435 refreshNum(); 443 refreshNum();
436 } 444 }
437 } 445 }
438 } else if (requestCode == 1002 && resultCode == RESULT_OK && !TextUtils.isEmpty(filePath)) { 446 } else if (requestCode == 1002 && resultCode == RESULT_OK && !TextUtils.isEmpty(filePath)) {
439 Bitmap b = BitmapUtils.compress(BitmapFactory.decodeFile(filePath)); 447 Bitmap b = BitmapUtils.compress(BitmapFactory.decodeFile(filePath));
440 String path = context.getExternalFilesDir("images").getPath() + "/" + String.valueOf(System.currentTimeMillis()) + CommonUtil.getStr() + ".jpg"; 448 String path = context.getExternalFilesDir("images").getPath() + "/" + String.valueOf(System.currentTimeMillis()) + CommonUtil.getStr() + ".jpg";
441 CommonUtil.saveBitmapToUri(b, path); 449 CommonUtil.saveBitmapToUri(b, path);
442 int position = binding.viewPager.getCurrentItem(); 450 int position = binding.viewPager.getCurrentItem();
443 list.remove(position); 451 list.remove(position);
444 ImageBean imageBean = new ImageBean(); 452 ImageBean imageBean = new ImageBean();
445 imageBean.setPath(path); 453 imageBean.setPath(path);
446 imageBean.source = path; 454 imageBean.source = path;
447 list.add(position, imageBean); 455 list.add(position, imageBean);
448 imageAdapter.notifyItemChanged(position); 456 imageAdapter.notifyItemChanged(position);
449 clearText(); 457 clearText();
450 refreshNum(); 458 refreshNum();
451 } 459 }
452 } 460 }
453 461
454 private void back() { 462 private void back() {
455 showTipDialog("温馨提示", "是否确认退出?", "取消", "确定", new TipDialog.TipDialogInterface() { 463 showTipDialog("温馨提示", "是否确认退出?", "取消", "确定", new TipDialog.TipDialogInterface() {
456 @Override 464 @Override
457 public void onConfirm(Dialog dialog) { 465 public void onConfirm(Dialog dialog) {
458 dialog.dismiss(); 466 dialog.dismiss();
459 finish(); 467 finish();
460 } 468 }
461 469
462 @Override 470 @Override
463 public void onCancel(Dialog dialog) { 471 public void onCancel(Dialog dialog) {
464 dialog.dismiss(); 472 dialog.dismiss();
465 } 473 }
466 }); 474 });
467 } 475 }
468 476
469 @Override 477 @Override
470 public boolean onKeyDown(int keyCode, KeyEvent event) { 478 public boolean onKeyDown(int keyCode, KeyEvent event) {
471 if (keyCode == KeyEvent.KEYCODE_BACK) { 479 if (keyCode == KeyEvent.KEYCODE_BACK) {
472 back(); 480 back();
473 return true; 481 return true;
474 } 482 }
475 return super.onKeyDown(keyCode, event); 483 return super.onKeyDown(keyCode, event);
476 } 484 }
477 } 485 }
478 486