From 4caa142484b016643905be2020a0bbd19b0cfe7c Mon Sep 17 00:00:00 2001 From: adam Date: Wed, 20 Apr 2022 10:40:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=9D=E5=AD=98=E4=BC=9A=E8=AE=AE=E7=AD=BE?= =?UTF-8?q?=E5=88=B0=E7=A0=81=E8=87=B3=E7=9B=B8=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../baselib/core/widget/views/QrDialog.java | 40 +++++++++--- .../src/main/res/layout/dialog_meeting_qr.xml | 41 +++++++++++-- .../meeting/MeetingDetailActivity.java | 61 +++++++++++++++++++ .../oamodule/fragments/EmailFragment.java | 13 ++++ .../src/main/res/layout/fragment_oa_email.xml | 1 + 5 files changed, 141 insertions(+), 15 deletions(-) diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/QrDialog.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/QrDialog.java index 5710ba7..480c77b 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/QrDialog.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/QrDialog.java @@ -3,6 +3,7 @@ package com.tenlionsoft.baselib.core.widget.views; import android.app.Activity; import android.app.Dialog; import android.content.Context; +import android.graphics.Bitmap; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.util.DisplayMetrics; @@ -51,7 +52,14 @@ public class QrDialog extends Dialog { Glide.with(context) .load(BaseUrlApi.BASE_IMG_URL + mQr) .into(mIvQr); + View content = view.findViewById(R.id.ll_content); view.findViewById(R.id.tv_confirm).setOnClickListener(v -> this.dismiss()); + view.findViewById(R.id.tv_save).setOnClickListener(v -> { + if (mChangeListener != null) { + Bitmap viewBitmap = getViewBitmap(content); + mChangeListener.doChange(viewBitmap); + } + }); DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); Window window = this.getWindow(); window.setGravity(Gravity.CENTER); @@ -63,14 +71,6 @@ public class QrDialog extends Dialog { window.setBackgroundDrawable(new ColorDrawable()); } - private void doConfirm() { - if (checkParams()) { - if (mChangeListener != null) { - String content = mEtContent.getText().toString().trim(); - mChangeListener.doChange(content, level); - } - } - } public void HideSoftKeyBoardDialog(Activity activity) { try { @@ -85,7 +85,29 @@ public class QrDialog extends Dialog { } public interface OnChangeListener { - void doChange(String org, float level); + void doChange(Bitmap b); + } + + private Bitmap getViewBitmap(View v) { + v.clearFocus(); + v.setPressed(false); + boolean b = v.willNotCacheDrawing(); + v.setWillNotCacheDrawing(false); + int color = v.getDrawingCacheBackgroundColor(); + v.setDrawingCacheBackgroundColor(0); + if (color != 0) { + v.destroyDrawingCache(); + } + v.buildDrawingCache(); + Bitmap drawingCache = v.getDrawingCache(); + if (drawingCache == null) { + return null; + } + Bitmap bitmap = Bitmap.createBitmap(drawingCache); + v.destroyDrawingCache(); + v.setWillNotCacheDrawing(b); + v.setDrawingCacheBackgroundColor(color); + return bitmap; } /** diff --git a/baselib/src/main/res/layout/dialog_meeting_qr.xml b/baselib/src/main/res/layout/dialog_meeting_qr.xml index b879593..b0d3bcd 100644 --- a/baselib/src/main/res/layout/dialog_meeting_qr.xml +++ b/baselib/src/main/res/layout/dialog_meeting_qr.xml @@ -15,12 +15,30 @@ android:textSize="18sp" /> - + + + + + + + + mJoinPerson; private BasePersonShowAdapter mPersonShowAdapter; private String mQr; + private String mQrName; @Override protected int setLayoutId() { @@ -185,10 +196,59 @@ public class MeetingDetailActivity extends BaseActivity { QrDialog dialog = new QrDialog.DialogBuilder(mActivity) .setQr(mQr) .build(); + dialog.addOnChangeListener(b -> { + if (null != b) { + dialog.dismiss(); + doSaveBitMapToMedia(b); + } else { + ToastUtils.show("保存失败"); + } + }); dialog.show(); } } + /** + * 保存图片到相册 + * + * @param b + */ + private void doSaveBitMapToMedia(Bitmap b) { + ProgressDialog dialog = UIUtil.initDialog(mActivity, "保存中..."); + dialog.show(); + String imageName = mQrName + "code.png"; + File f = getExternalFilesDir(Environment.DIRECTORY_PICTURES); + File file = new File(f.getPath() + "/" + imageName); + try { + FileOutputStream fileOutputStream = new FileOutputStream(file); + b.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream); + fileOutputStream.flush(); + fileOutputStream.close(); + Log.e("写入成功!位置目录", f.getPath() + "/" + imageName); + } catch (FileNotFoundException e) { + e.printStackTrace(); + if (dialog.isShowing()) dialog.dismiss(); + ToastUtils.show("保存失败"); + } catch (IOException e) { + e.printStackTrace(); + if (dialog.isShowing()) dialog.dismiss(); + ToastUtils.show("保存失败"); + } + try { + MediaStore.Images.Media.insertImage(getContentResolver(), + file.getAbsolutePath(), imageName, null); + if (dialog.isShowing()) dialog.dismiss(); + ToastUtils.show("保存成功"); + } catch (FileNotFoundException e) { + if (dialog.isShowing()) dialog.dismiss(); + ToastUtils.show("保存失败"); + e.printStackTrace(); + } + // 最后通知图库更新 + sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, + Uri.fromFile(new File(file.getPath())))); + } + private void doGetQr() { ProgressDialog dialog = UIUtil.initDialog(mActivity, "获取中..."); dialog.show(); @@ -209,6 +269,7 @@ public class MeetingDetailActivity extends BaseActivity { ToastUtils.show("未获取到签到码,请稍后重试"); } else { mQr = meetingQrBean.getQrId(); + mQrName = meetingQrBean.getQrName(); onShowQr(); } } diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/fragments/EmailFragment.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/fragments/EmailFragment.java index 138ef2b..79de204 100644 --- a/oamodule/src/main/java/com/tenlionsoft/oamodule/fragments/EmailFragment.java +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/fragments/EmailFragment.java @@ -8,9 +8,14 @@ import android.widget.RelativeLayout; import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; +import com.bumptech.glide.Glide; +import com.bumptech.glide.load.resource.bitmap.CircleCrop; +import com.bumptech.glide.request.RequestOptions; import com.tenlionsoft.baselib.constant.PathConfig; +import com.tenlionsoft.baselib.core.retrofit_net.BaseUrlApi; import com.tenlionsoft.baselib.core.widget.base.BaseFragment; import com.tenlionsoft.baselib.utils.LogUtils; +import com.tenlionsoft.baselib.utils.UserLgUtils; import com.tenlionsoft.oamodule.R; import com.tenlionsoft.oamodule.R2; @@ -47,6 +52,8 @@ public class EmailFragment extends BaseFragment { TextView mTvRecycleBox; @BindView(R2.id.ll_content) LinearLayout mLlContent; + @BindView(R2.id.iv_user_icon) + ImageView mIvUserIcon; @Override protected int getContentViewId() { @@ -67,6 +74,12 @@ public class EmailFragment extends BaseFragment { super.onResume(); //获取焦点 LogUtils.e("email获取了焦点"); + Glide.with(mActivity) + .load(BaseUrlApi.BASE_IMG_URL + UserLgUtils.getAvatar()) + .apply(RequestOptions.bitmapTransform(new CircleCrop()) + .error(R.drawable.ic_user_default) + .placeholder(R.drawable.ic_user_default)) + .into(mIvUserIcon); } @Override diff --git a/oamodule/src/main/res/layout/fragment_oa_email.xml b/oamodule/src/main/res/layout/fragment_oa_email.xml index 7e2fda8..4d28346 100644 --- a/oamodule/src/main/res/layout/fragment_oa_email.xml +++ b/oamodule/src/main/res/layout/fragment_oa_email.xml @@ -14,6 +14,7 @@ android:paddingRight="10dp">