部分展示用户ID的页面增加复制ID功能

This commit is contained in:
huangjian
2023-02-06 14:59:22 +08:00
parent 064807470b
commit 67dad1004d
11 changed files with 68 additions and 36 deletions

View File

@@ -33,6 +33,7 @@ import com.mango.core.user.bean.UserInfo
import com.mango.core.user.event.LoginUserInfoUpdateEvent import com.mango.core.user.event.LoginUserInfoUpdateEvent
import com.mango.core.utils.CurrentTimeUtils import com.mango.core.utils.CurrentTimeUtils
import com.mango.core.utils.StarUtils import com.mango.core.utils.StarUtils
import com.mango.core.utils.toast
import com.mango.moshen.R import com.mango.moshen.R
import com.mango.moshen.UIHelper import com.mango.moshen.UIHelper
import com.mango.moshen.avroom.activity.AVRoomActivity import com.mango.moshen.avroom.activity.AVRoomActivity
@@ -64,6 +65,7 @@ import com.mango.moshen.utils.UserUtils
import com.mango.moshen.vip.VipMainActivity import com.mango.moshen.vip.VipMainActivity
import com.mango.moshen.vip.VipMainViewModel import com.mango.moshen.vip.VipMainViewModel
import com.mango.xchat_android_library.utils.FormatUtils import com.mango.xchat_android_library.utils.FormatUtils
import com.netease.nim.uikit.common.util.sys.ClipboardUtil
import com.netease.nim.uikit.common.util.sys.TimeUtil import com.netease.nim.uikit.common.util.sys.TimeUtil
import com.trello.rxlifecycle3.android.FragmentEvent import com.trello.rxlifecycle3.android.FragmentEvent
import io.reactivex.Observable import io.reactivex.Observable
@@ -543,6 +545,13 @@ class MeFragment : BaseFragment(), View.OnClickListener {
) )
} }
R.id.ll_pm_mode -> PatriarchModeActivity.start(mContext) R.id.ll_pm_mode -> PatriarchModeActivity.start(mContext)
R.id.tv_user_id -> {
mUserInfo?.let {
ClipboardUtil.clipboardCopyText(it.erbanNo.toString())
} ?: run {
"数据加载中,请稍后再试!".toast()
}
}
else -> {} else -> {}
} }
} }

View File

@@ -1115,7 +1115,7 @@ public class MessageListPanelEx {
} }
private void onCopyMessageItem(IMMessage item) { private void onCopyMessageItem(IMMessage item) {
ClipboardUtil.clipboardCopyText(container.activity, item.getContent()); ClipboardUtil.clipboardCopyText(item.getContent());
} }
// 长按菜单项--删除 // 长按菜单项--删除

View File

@@ -20,6 +20,7 @@ import androidx.viewpager.widget.ViewPager;
import com.google.android.material.appbar.AppBarLayout; import com.google.android.material.appbar.AppBarLayout;
import com.netease.nim.uikit.StatusBarUtil; import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.common.util.sys.ClipboardUtil;
import com.netease.nim.uikit.impl.cache.NimUserInfoCache; import com.netease.nim.uikit.impl.cache.NimUserInfoCache;
import com.netease.nimlib.sdk.RequestCallbackWrapper; import com.netease.nimlib.sdk.RequestCallbackWrapper;
import com.netease.nimlib.sdk.uinfo.model.NimUserInfo; import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
@@ -179,6 +180,7 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
mBinding.ivEdit.setOnClickListener(this); mBinding.ivEdit.setOnClickListener(this);
mBinding.tvEdit.setOnClickListener(this); mBinding.tvEdit.setOnClickListener(this);
mBinding.ivWhere.setOnClickListener(this); mBinding.ivWhere.setOnClickListener(this);
mBinding.tvErbanId.setOnClickListener(this);
} }
/** /**
@@ -540,6 +542,13 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
AVRoomActivity.FROM_TYPE_USER, userInfo.getNick(), String.valueOf(userInfo.getUid())); AVRoomActivity.FROM_TYPE_USER, userInfo.getNick(), String.valueOf(userInfo.getUid()));
} }
break; break;
case R.id.tv_erban_id:
if (userInfo == null) {
toast("数据加载中,请稍后再试!");
return;
}
ClipboardUtil.clipboardCopyText(String.valueOf(userInfo.getErbanNo()));
break;
} }
} }

View File

@@ -18,6 +18,7 @@ import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatDialog; import androidx.appcompat.app.AppCompatDialog;
import androidx.appcompat.widget.AppCompatImageView; import androidx.appcompat.widget.AppCompatImageView;
import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.GridLayoutManager;
@@ -83,6 +84,7 @@ import com.mango.xchat_android_library.net.rxnet.callback.CallBack;
import com.mango.xchat_android_library.utils.ListUtils; import com.mango.xchat_android_library.utils.ListUtils;
import com.mango.xchat_android_library.utils.SingleToastUtil; import com.mango.xchat_android_library.utils.SingleToastUtil;
import com.mango.xchat_android_library.utils.config.BasicConfig; import com.mango.xchat_android_library.utils.config.BasicConfig;
import com.netease.nim.uikit.common.util.sys.ClipboardUtil;
import com.netease.nim.uikit.common.util.sys.ScreenUtil; import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder; import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomKickOutEvent; import com.netease.nimlib.sdk.chatroom.model.ChatRoomKickOutEvent;
@@ -110,10 +112,11 @@ import io.reactivex.disposables.Disposable;
*/ */
public class UserInfoDialog extends AppCompatDialog implements View.OnClickListener { public class UserInfoDialog extends AppCompatDialog implements View.OnClickListener {
@NonNull
private final UserInfo userInfo;
private Context context; private Context context;
private long uid; private long uid;
private boolean isAttention; private boolean isAttention;
private UserInfo userInfo;
private ImageView closeImage; private ImageView closeImage;
private FrameLayout avatarLayout; private FrameLayout avatarLayout;
private ImageView ivAvatarHeadWear; private ImageView ivAvatarHeadWear;
@@ -230,6 +233,7 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe
ivAvatarBg = findViewById(R.id.iv_avatar_bg); ivAvatarBg = findViewById(R.id.iv_avatar_bg);
nick = findViewById(R.id.nick); nick = findViewById(R.id.nick);
erbanId = findViewById(R.id.tv_erban_id); erbanId = findViewById(R.id.tv_erban_id);
erbanId.setOnClickListener(this);
ivGender = findViewById(R.id.iv_gender); ivGender = findViewById(R.id.iv_gender);
ivVipIcon = findViewById(R.id.iv_vip_icon); ivVipIcon = findViewById(R.id.iv_vip_icon);
fansNumber = findViewById(R.id.fans_number); fansNumber = findViewById(R.id.fans_number);
@@ -680,8 +684,8 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe
private void loadSimpleFamilyInfo(String familyId) { private void loadSimpleFamilyInfo(String familyId) {
FamilyModel.Instance().loadFamilySimpleInfo( FamilyModel.Instance().loadFamilySimpleInfo(
familyId familyId
) )
.subscribe(new SingleObserver<FamilyInfo>() { .subscribe(new SingleObserver<FamilyInfo>() {
@Override @Override
public void onSubscribe(Disposable d) { public void onSubscribe(Disposable d) {
@@ -772,7 +776,11 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe
UserInfoActivity.Companion.start(context, uid); UserInfoActivity.Companion.start(context, uid);
dismiss(); dismiss();
break; break;
case R.id.tv_erban_id:
ClipboardUtil.clipboardCopyText(String.valueOf(userInfo.getErbanNo()));
break;
default: default:
break;
} }
} }
@@ -1107,7 +1115,7 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe
return; return;
} }
if (AvRoomDataManager.get().haveStartDragon) { if (AvRoomDataManager.get().haveStartDragon) {
new DialogManager(context).showOkCancelDialog("你正在交友匹配中,此操作代表你放弃本局匹配展示,确定进行此操作?", false, new DialogManager.OkCancelDialogListener() { new DialogManager(context).showOkCancelDialog("你正在交友匹配中,此操作代表你放弃本局匹配展示,确定进行此操作?", false, new DialogManager.OkCancelDialogListener() {
@Override @Override
public void onCancel() { public void onCancel() {

Binary file not shown.

After

Width:  |  Height:  |  Size: 648 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 B

View File

@@ -177,6 +177,7 @@
android:gravity="center_vertical" android:gravity="center_vertical"
android:includeFontPadding="false" android:includeFontPadding="false"
android:maxLines="1" android:maxLines="1"
android:drawableEnd="@drawable/ic_copy_id_white"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="11dp" android:textSize="11dp"
tools:text="ID:7958626" /> tools:text="ID:7958626" />

View File

@@ -246,6 +246,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@color/white_transparent_50" android:textColor="@color/white_transparent_50"
android:textSize="@dimen/sp_12" android:textSize="@dimen/sp_12"
android:drawableEnd="@drawable/ic_copy_id_white"
tools:text="ID123456" /> tools:text="ID123456" />
</LinearLayout> </LinearLayout>

View File

@@ -47,8 +47,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:onClick="@{click}" android:onClick="@{click}"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/me_item_setting"> app:layout_constraintTop_toTopOf="@id/me_item_setting">
<com.mango.moshen.common.widget.CircleImageView <com.mango.moshen.common.widget.CircleImageView
@@ -90,8 +90,8 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:layout_marginEnd="30dp" android:layout_marginEnd="30dp"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toEndOf="@id/iv_head_wear" app:layout_constraintStart_toEndOf="@id/iv_head_wear"
app:layout_constraintTop_toTopOf="@id/iv_head_wear"> app:layout_constraintTop_toTopOf="@id/iv_head_wear">
@@ -101,8 +101,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:drawablePadding="5dp" android:drawablePadding="5dp"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1"
android:maxLength="10" android:maxLength="10"
android:maxLines="1"
android:text="@{userInfo.nick}" android:text="@{userInfo.nick}"
android:textColor="@color/text_title_white" android:textColor="@color/text_title_white"
android:textSize="@dimen/sp_16" android:textSize="@dimen/sp_16"
@@ -129,9 +129,10 @@
android:id="@+id/tv_user_id" android:id="@+id/tv_user_id"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:drawablePadding="4dp" android:drawableEnd="@drawable/ic_copy_id"
android:gravity="center" android:gravity="center"
android:maxLines="1" android:maxLines="1"
android:onClick="@{click}"
android:textColor="@color/text_secondary_4f516a" android:textColor="@color/text_secondary_4f516a"
android:textSize="@dimen/dp_13" android:textSize="@dimen/dp_13"
tools:ignore="SpUsage" tools:ignore="SpUsage"
@@ -152,20 +153,6 @@
tools:ignore="ContentDescription" tools:ignore="ContentDescription"
tools:src="@drawable/ic_gender_female" /> tools:src="@drawable/ic_gender_female" />
<TextView
android:id="@+id/tv_constellation"
android:layout_width="42dp"
android:layout_height="15dp"
android:layout_marginStart="5dp"
android:background="@drawable/bg_me_sign"
android:gravity="center"
android:textColor="@color/color_FFFFFF"
android:textSize="10sp"
app:layout_constraintBottom_toBottomOf="@id/iv_sex"
app:layout_constraintStart_toEndOf="@id/iv_sex"
app:layout_constraintTop_toTopOf="@id/iv_sex"
tools:ignore="SmallSp"
tools:text="摩羯座" />
<LinearLayout <LinearLayout
android:id="@+id/ll_icon" android:id="@+id/ll_icon"
@@ -215,6 +202,19 @@
android:visibility="gone" android:visibility="gone"
tools:ignore="SmallSp" /> tools:ignore="SmallSp" />
<TextView
android:id="@+id/tv_constellation"
android:layout_width="42dp"
android:layout_height="15dp"
android:layout_marginStart="5dp"
android:background="@drawable/bg_me_sign"
android:gravity="center"
android:textColor="@color/color_FFFFFF"
android:textSize="10sp"
tools:ignore="SmallSp"
tools:text="摩羯座" />
</LinearLayout> </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -1093,7 +1093,7 @@ public class MessageListPanelEx {
} }
private void onCopyMessageItem(IMMessage item) { private void onCopyMessageItem(IMMessage item) {
ClipboardUtil.clipboardCopyText(container.activity, item.getContent()); ClipboardUtil.clipboardCopyText(item.getContent());
} }
// 长按菜单项--删除 // 长按菜单项--删除

View File

@@ -1,19 +1,23 @@
package com.netease.nim.uikit.common.util.sys; package com.netease.nim.uikit.common.util.sys;
import android.content.Context; import static android.content.Context.CLIPBOARD_SERVICE;
import android.text.ClipboardManager;
import android.content.ClipData;
import android.content.ClipboardManager;
import com.mango.xchat_android_library.utils.SingleToastUtil;
import com.mango.xchat_android_library.utils.config.BasicConfig;
public class ClipboardUtil { public class ClipboardUtil {
public static final void clipboardCopyText(Context context, CharSequence text) {
ClipboardManager cm = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); public static void clipboardCopyText(CharSequence text) {
if (cm != null) { ClipboardManager myClipboard;
cm.setText(text); myClipboard = (android.content.ClipboardManager) BasicConfig.INSTANCE.getAppContext().getSystemService(CLIPBOARD_SERVICE);
} ClipData myClip;
myClip = ClipData.newPlainText("text", text);
if (myClipboard != null)
myClipboard.setPrimaryClip(myClip);
SingleToastUtil.showToast("复制成功");
} }
public static final int clipboardTextLength(Context context) {
ClipboardManager cm = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
CharSequence text = cm != null ? cm.getText() : null;
return text != null ? text.length() : 0;
}
} }