1:添加权限说明
2:聊天添加举报按钮
This commit is contained in:
@@ -0,0 +1,129 @@
|
|||||||
|
package com.xscm.moduleutil.utils;
|
||||||
|
|
||||||
|
import android.Manifest;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.text.Spannable;
|
||||||
|
import android.text.SpannableStringBuilder;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
import android.text.style.AbsoluteSizeSpan;
|
||||||
|
import android.text.style.ForegroundColorSpan;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.RelativeLayout;
|
||||||
|
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||||
|
import androidx.constraintlayout.widget.ConstraintSet;
|
||||||
|
import androidx.core.content.ContextCompat;
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
import com.luck.picture.lib.interfaces.OnPermissionDescriptionListener;
|
||||||
|
import com.luck.picture.lib.permissions.PermissionConfig;
|
||||||
|
import com.luck.picture.lib.utils.DensityUtil;
|
||||||
|
import com.luck.picture.lib.widget.MediumBoldTextView;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* com.xscm.moduleutil.utils
|
||||||
|
* qx
|
||||||
|
* 2025/10/30
|
||||||
|
*/
|
||||||
|
// PermissionDescriptionHelper.java
|
||||||
|
public class PermissionDescriptionHelper {
|
||||||
|
private static final String TAG_EXPLAIN_VIEW = "TAG_EXPLAIN_VIEW";
|
||||||
|
|
||||||
|
public static class PermissionDescriptionListener implements OnPermissionDescriptionListener {
|
||||||
|
@Override
|
||||||
|
public void onPermissionDescription(Fragment fragment, String[] permissionArray) {
|
||||||
|
View rootView = fragment.requireView();
|
||||||
|
if (rootView instanceof ViewGroup) {
|
||||||
|
addPermissionDescription(false, (ViewGroup) rootView, permissionArray);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDismiss(Fragment fragment) {
|
||||||
|
removePermissionDescription((ViewGroup) fragment.requireView());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static OnPermissionDescriptionListener createListener() {
|
||||||
|
return new PermissionDescriptionListener();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void addPermissionDescription(boolean isHasSimpleXCamera, ViewGroup viewGroup, String[] permissionArray) {
|
||||||
|
int dp10 = DensityUtil.dip2px(viewGroup.getContext(), 10);
|
||||||
|
int dp15 = DensityUtil.dip2px(viewGroup.getContext(), 15);
|
||||||
|
MediumBoldTextView view = new MediumBoldTextView(viewGroup.getContext());
|
||||||
|
view.setTag(TAG_EXPLAIN_VIEW);
|
||||||
|
view.setTextSize(14);
|
||||||
|
view.setTextColor(Color.parseColor("#333333"));
|
||||||
|
view.setPadding(dp10, dp15, dp10, dp15);
|
||||||
|
view.setBackgroundColor(Color.WHITE); // 添加背景色确保可见
|
||||||
|
|
||||||
|
String title;
|
||||||
|
String explain;
|
||||||
|
|
||||||
|
if (TextUtils.equals(permissionArray[0], PermissionConfig.CAMERA[0])) {
|
||||||
|
title = "相机权限使用说明";
|
||||||
|
explain = "相机权限使用说明\n用户app用于拍照/录视频";
|
||||||
|
} else if (TextUtils.equals(permissionArray[0], Manifest.permission.RECORD_AUDIO)) {
|
||||||
|
if (isHasSimpleXCamera) {
|
||||||
|
title = "麦克风权限使用说明";
|
||||||
|
explain = "麦克风权限使用说明\n用户app用于录视频时采集声音";
|
||||||
|
} else {
|
||||||
|
title = "录音权限使用说明";
|
||||||
|
explain = "录音权限使用说明\n用户app用于采集声音";
|
||||||
|
}
|
||||||
|
}else if (TextUtils.equals(permissionArray[0], Manifest.permission.ACCESS_FINE_LOCATION)){
|
||||||
|
title = "定位权限";
|
||||||
|
explain = "定位权限使用说明\n用户app获取当前位置,方便更好的推荐附近玩乐";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
title = "存储权限使用说明";
|
||||||
|
explain = "存储权限使用说明\n用户app写入/下载/保存/读取/修改/删除图片、视频、文件等信息";
|
||||||
|
}
|
||||||
|
int startIndex = 0;
|
||||||
|
int endOf = startIndex + title.length();
|
||||||
|
SpannableStringBuilder builder = new SpannableStringBuilder(explain);
|
||||||
|
builder.setSpan(new AbsoluteSizeSpan(DensityUtil.dip2px(viewGroup.getContext(), 16)), startIndex, endOf, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||||
|
builder.setSpan(new ForegroundColorSpan(0xFF333333), startIndex, endOf, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||||
|
view.setText(builder);
|
||||||
|
view.setBackground(ContextCompat.getDrawable(viewGroup.getContext(), com.xscm.moduleutil.R.drawable.ps_demo_permission_desc_bg));
|
||||||
|
|
||||||
|
// 确保视图可见
|
||||||
|
view.setVisibility(View.VISIBLE);
|
||||||
|
view.setZ(9999); // 提高Z轴确保在最上层
|
||||||
|
|
||||||
|
if (isHasSimpleXCamera) {
|
||||||
|
RelativeLayout.LayoutParams layoutParams =
|
||||||
|
new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
|
||||||
|
layoutParams.topMargin = DensityUtil.getStatusBarHeight(viewGroup.getContext());
|
||||||
|
layoutParams.leftMargin = dp10;
|
||||||
|
layoutParams.rightMargin = dp10;
|
||||||
|
viewGroup.addView(view, layoutParams);
|
||||||
|
} else {
|
||||||
|
ConstraintLayout.LayoutParams layoutParams =
|
||||||
|
new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.WRAP_CONTENT);
|
||||||
|
// 修改约束设置,确保视图位置正确
|
||||||
|
layoutParams.topToTop = ConstraintSet.PARENT_ID;
|
||||||
|
layoutParams.leftToLeft = ConstraintSet.PARENT_ID;
|
||||||
|
layoutParams.rightToRight = ConstraintSet.PARENT_ID;
|
||||||
|
layoutParams.leftMargin = dp10;
|
||||||
|
layoutParams.rightMargin = dp10;
|
||||||
|
layoutParams.topMargin = DensityUtil.dip2px(viewGroup.getContext(), 50);
|
||||||
|
viewGroup.addView(view, layoutParams);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 强制刷新布局
|
||||||
|
viewGroup.requestLayout();
|
||||||
|
viewGroup.postInvalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void removePermissionDescription(ViewGroup viewGroup) {
|
||||||
|
if (viewGroup != null) {
|
||||||
|
View tagExplainView = viewGroup.findViewWithTag(TAG_EXPLAIN_VIEW);
|
||||||
|
if (tagExplainView != null) {
|
||||||
|
viewGroup.removeView(tagExplainView);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user