管理添加

显示管理尾巴
多选转发
This commit is contained in:
guozhen
2025-02-06 17:36:44 +08:00
committed by xuhuixiang
parent 9d1e398c58
commit 425bc1475e
39 changed files with 594 additions and 186 deletions

View File

@@ -47,12 +47,12 @@ android {
applicationId = "com.dskj.rbchat"
minSdk = 24
targetSdk = 34
versionCode = 202
versionName = "2.0.2"
versionCode = 203
versionName = "2.0.3"
multiDexEnabled = true
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
manifestPlaceholders["IMAPPKEY"] = "c38c8bbebf7d12992d2a361bfceb6c6f" //正式
// manifestPlaceholders["IMAPPKEY"] = "4cb6b0998f9e7af9d7673963e429959a" //测试
// manifestPlaceholders["IMAPPKEY"] = "c38c8bbebf7d12992d2a361bfceb6c6f" //正式
manifestPlaceholders["IMAPPKEY"] = "4cb6b0998f9e7af9d7673963e429959a" //测试
manifestPlaceholders["JPUSH_PKGNAME"] = "com.dskj.rbchat"
manifestPlaceholders["JPUSH_APPKEY"] = "9041bc22de91e3d9af3cfd23"
@@ -101,8 +101,8 @@ android {
"\"AIzaSyB7P1o1EIA02eWoNP_7QJ9XwWe3WkSZb9k\""
)
//正式服
manifestPlaceholders["IMAPPKEY"] = "c38c8bbebf7d12992d2a361bfceb6c6f" //正式
// manifestPlaceholders["IMAPPKEY"] = "4cb6b0998f9e7af9d7673963e429959a"
// manifestPlaceholders["IMAPPKEY"] = "c38c8bbebf7d12992d2a361bfceb6c6f" //正式
manifestPlaceholders["IMAPPKEY"] = "4cb6b0998f9e7af9d7673963e429959a"
}
@@ -126,8 +126,8 @@ android {
"\"AIzaSyB7P1o1EIA02eWoNP_7QJ9XwWe3WkSZb9k\""
)
//测试APPKEY
// manifestPlaceholders["IMAPPKEY"] = "4cb6b0998f9e7af9d7673963e429959a"
manifestPlaceholders["IMAPPKEY"] = "c38c8bbebf7d12992d2a361bfceb6c6f"
manifestPlaceholders["IMAPPKEY"] = "4cb6b0998f9e7af9d7673963e429959a"
// manifestPlaceholders["IMAPPKEY"] = "c38c8bbebf7d12992d2a361bfceb6c6f"
}

View File

@@ -1009,7 +1009,7 @@ public class UserInfoActivity extends BaseActivity {
.skipMemoryCache(false)
.diskCacheStrategy(DiskCacheStrategy.RESOURCE);
try {
// LogUtils.i("头像地址:"+u.getUserAvatarFileName());
Glide.with(UserInfoActivity.this)
.load(u.getUserAvatarFileName())

View File

@@ -105,11 +105,24 @@ public class FunContactSelectorActivity extends BaseContactSelectorActivity {
public void updateView() {
super.updateView();
if (type == 1) { //转发 这ui 修改的....
shoeSignOne(true);
}
}
private void shoeSignOne(boolean b) {
if (b) {
rvSelected.setVisibility(View.GONE);
updateListView(contactListView);
updateListView(lastContactView);
updateListView(loveContactView);
updateListView(searchContactView);
} else {
rvSelected.setVisibility(View.VISIBLE);
updateListView1(contactListView);
updateListView1(lastContactView);
updateListView1(loveContactView);
updateListView1(searchContactView);
}
}
@@ -120,6 +133,12 @@ public class FunContactSelectorActivity extends BaseContactSelectorActivity {
contactListView.setLayoutParams(params1);
}
public void updateListView1(ContactListView contactListView) {
contactListView.showSelector(true);
LinearLayout.LayoutParams params1 = (LinearLayout.LayoutParams) contactListView.getLayoutParams();
params1.setMarginStart(SizeUtils.dp2px(15));
contactListView.setLayoutParams(params1);
}
public void setViewHolderFactory(ContactListView contactView) {
contactView
.getDecoration()
@@ -212,23 +231,43 @@ public class FunContactSelectorActivity extends BaseContactSelectorActivity {
}
protected void configTitle(BackTitleBar titleBar) {
if (type == 1) {
titleBar
.setOnBackIconClickListener(v -> onBackPressed())
.setTitle(R.string.select);
} else {
// if (type == 1) {
// titleBar
// .setOnBackIconClickListener(v -> onBackPressed())
// .setTitle(R.string.select);
// } else {
titleBar
.setOnBackIconClickListener(v -> onBackPressed())
.setTitle(R.string.select)
.setActionText(R.string.selector_sure_without_num)
.setActionText(type==1?getString(com.dskj.rbchat.R.string.chat_message_action_multi_select):getString(R.string.selector_sure_without_num))
.setActionTextColor(getResources().getColor(R.color.color_6877fe))
.setActionListener(
v -> {
if(type==1&&isSignOne){
isSignOne = false;
shoeSignOne(false);
int verticalPadding = SizeUtils.dp2px(5);
int horizontalPadding = SizeUtils.dp2px(10);
int endPadding = SizeUtils.dp2px(5);
TextView rightTextView = titleBar.getRightTextView();
rightTextView.setText(getString(R.string.selector_sure_without_num));
FrameLayout.LayoutParams layoutParams =
(FrameLayout.LayoutParams) rightTextView.getLayoutParams();
layoutParams.rightMargin = SizeUtils.dp2px(endPadding);
rightTextView.setPadding(
horizontalPadding, verticalPadding, horizontalPadding, verticalPadding);
return;
}
if (checkNetworkEnable && !NetworkUtils.isConnected()) {
Toast.makeText(this, R.string.contact_network_error_tip, Toast.LENGTH_SHORT).show();
return;
}
List<String> select = getSelectedAccount();
List<String> selectName = getSelectedName();
if (select.size() < 1) {
Toast.makeText(this, getString(R.string.select_empty_tips), Toast.LENGTH_LONG)
.show();
@@ -240,7 +279,23 @@ public class FunContactSelectorActivity extends BaseContactSelectorActivity {
.show();
return;
}
createGroup();
if(type ==1){
// FriendInfo friendInfo = ((ContactFriendBean) data).data;
//转发选取一个结束
Intent result = new Intent();
listAccount.clear();
listname.clear();
listAccount.addAll(select);
listname.addAll(selectName);
result.putExtra(REQUEST_CONTACT_SELECTOR_KEY, listAccount);
result.putExtra(KEY_REQUEST_SELECTOR_NAME, listname);
setResult(RESULT_OK, result);
finish();
}else {
createGroup();
}
// if (!selectedListAdapter.getSelectedFriends().isEmpty()) {
@@ -256,7 +311,7 @@ public class FunContactSelectorActivity extends BaseContactSelectorActivity {
// titleBar.getTitleTextView().setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
// titleBar.getRightTextView().setTextColor(getResources().getColor(R.color.color_6b3689));
}
// }
int verticalPadding = SizeUtils.dp2px(5);
int horizontalPadding = SizeUtils.dp2px(10);
int endPadding = SizeUtils.dp2px(5);

View File

@@ -33,7 +33,12 @@ import com.dskj.rbchat.network.BaseObserver;
import com.dskj.rbchat.network.Result;
import com.dskj.rbchat.utils.GsonUtils;
import com.dskj.rbchat.utils.LogUtils;
import com.netease.nimlib.sdk.NIMClient;
import com.netease.nimlib.sdk.RequestCallback;
import com.netease.nimlib.sdk.team.TeamService;
import com.netease.nimlib.sdk.team.constant.TeamMemberType;
import com.netease.nimlib.sdk.team.model.Team;
import com.netease.nimlib.sdk.team.model.TeamMember;
import com.netease.yunxin.kit.chatkit.model.UserInfoWithTeam;
import com.netease.yunxin.kit.chatkit.repo.ContactRepo;
import com.netease.yunxin.kit.chatkit.ui.model.TeamExtensionBean;
@@ -338,6 +343,36 @@ public class TeamMembersListActivity extends BaseTeamQrSettingActivity {
public void startUserInfoActivity(String userid, String teamId) {
//如果群不允许群内添加好友 当前登录用户不是群主以及userid 也不是群主 直接跳过
if (isAllowAdd == 0 && isManager != 1 && !userid.equals(teamOwnerId)) {
NIMClient.getService(TeamService.class).queryTeamMember(teamId, userid).setCallback(new RequestCallback<TeamMember>() {
@Override
public void onSuccess(TeamMember members) {
if(members!=null){
if(members.getType() == TeamMemberType.Manager){
XKitRouter.withKey(RouterConstant.PATH_USER_INFO_PAGE)
.withContext(TeamMembersListActivity.this)
.withParam(RouterConstant.KEY_ACCOUNT_ID_KEY, IMKitClient.account())
.withParam("userId", userid)
.withParam("teamId", teamId)
.withParam("isGroup", true)
.navigate();
}
}
}
@Override
public void onFailed(int code) {
// 撤销群管理员失败
}
@Override
public void onException(Throwable exception) {
// 错误
}
});
return;
}

View File

@@ -125,14 +125,28 @@ public class TeamMembersAdapter extends RecyclerView.Adapter<TeamMembersAdapter.
@Override
public void onBindViewHolder(@NonNull TeamMembersViewHolder holder, int position) {
UserInfo userInfo = members.get(position);
holder.binding.unreadTv.setVisibility(View.GONE);
if (position == 0 && isShowInvited) {
holder.binding.avatarView.setData(com.netease.yunxin.kit.contactkit.ui.R.drawable.ic_creategroup_add, "");
holder.binding.icDelete.setVisibility(View.GONE);
holder.binding.tvName.setText(mContext.getResources().getString(R.string.invcode_friend_txt));
holder.binding.tvNameActivetime.setVisibility(View.GONE);
} else {
TeamMember teamMember = NIMClient.getService(TeamService.class).queryTeamMemberBlock(teamId, userInfo.getAccount());
if(teamMember!=null){
if(teamMember.getType() == TeamMemberType.Manager){
holder.binding.unreadTv.setVisibility(View.VISIBLE);
holder.binding.unreadTv.setText(R.string.teamsetting_other_teammanager);
holder.binding.unreadTv.setBackgroundResource(com.netease.yunxin.kit.conversationkit.ui.R.drawable.bg_conversation_red_dot1);
}else if(teamMember.getType() == TeamMemberType.Owner){
holder.binding.unreadTv.setVisibility(View.VISIBLE);
holder.binding.unreadTv.setText(com.netease.yunxin.kit.teamkit.ui.R.string.team_owner);
holder.binding.unreadTv.setBackgroundResource(com.netease.yunxin.kit.conversationkit.ui.R.drawable.bg_conversation_red_dot);
}
}
if (isEdit) {
TeamMember teamMember = NIMClient.getService(TeamService.class).queryTeamMemberBlock(teamId, userInfo.getAccount());
if (teamMember != null && (teamMember.getType() == TeamMemberType.Manager || teamMember.getType() == TeamMemberType.Owner)) {
holder.binding.icDelete.setVisibility(View.GONE);
} else {

View File

@@ -95,9 +95,9 @@ public class WelcomeActivity extends BaseActivity {
ALog.d(Constant.PROJECT_TAG, TAG, "onCreateView");
//getWindow().setNavigationBarColor(getResources().getColor(R.color.color_white));
// 设置全屏
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
// requestWindowFeature(Window.FEATURE_NO_TITLE);
// getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
// WindowManager.LayoutParams.FLAG_FULLSCREEN);
IMApplication.setColdStart(true);
activityWelcomeBinding = ActivityWelcomeBinding.inflate(getLayoutInflater());
setContentView(activityWelcomeBinding.getRoot());

View File

@@ -299,6 +299,7 @@
<View
android:layout_width="@dimen/dp_1"
android:layout_height="@dimen/dp_20"
android:visibility="gone"
android:layout_gravity="center_vertical"
android:background="#49B78C8C" />
@@ -366,7 +367,7 @@
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_height="1px"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_15"
android:background="#D8D8D8" />
@@ -404,7 +405,7 @@
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_height="1px"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_15"
android:background="#D8D8D8" />
@@ -431,7 +432,7 @@
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_height="1px"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_15"
android:background="#D8D8D8" />
@@ -480,7 +481,7 @@
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_height="1px"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_15"
android:background="#D8D8D8" />
@@ -518,7 +519,7 @@
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_height="1px"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_15"
android:background="#D8D8D8" />
@@ -551,7 +552,7 @@
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_height="1px"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_15"
android:background="#D8D8D8" />
@@ -615,7 +616,7 @@
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_height="1px"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_15"
android:background="#D8D8D8" />
@@ -655,7 +656,7 @@
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_height="1px"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_15"
android:background="#D8D8D8" />
@@ -688,7 +689,7 @@
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_height="1px"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_15"
android:background="#D8D8D8" />

View File

@@ -33,7 +33,7 @@
<TextView
android:id="@+id/tv_name"
android:layout_width="0dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_15"
@@ -43,10 +43,27 @@
android:textSize="@dimen/text_size_16"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@+id/tv_name_activetime"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/avatar_view"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/unreadTv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dimen_2_dp"
android:background="@drawable/bg_conversation_red_dot"
android:gravity="center"
android:paddingStart="@dimen/dimen_5_dp"
android:paddingEnd="@dimen/dimen_5_dp"
android:textColor="@color/color_white"
android:textSize="@dimen/text_size_12"
android:visibility="gone"
android:layout_marginStart="@dimen/dp_5"
app:layout_constraintBottom_toBottomOf="@id/tv_name"
app:layout_constraintTop_toTopOf="@id/tv_name"
app:layout_constraintLeft_toRightOf="@id/tv_name" />
<TextView
android:id="@+id/tv_name_activetime"
android:layout_width="wrap_content"

View File

@@ -921,4 +921,6 @@
<string name="str_teammanager_add_faile_toast">A maximum of 5 administrators can be set</string>
<string name="str_teammanager_add_succ_toast">Added successfully</string>
<string name="str_teammanager_add_not_toast">Please select an administrator</string>
<string name="chat_message_action_multi_select">Multi-select</string>
</resources>

View File

@@ -7,7 +7,7 @@
<resources>
<string name="google_map_key">AIzaSyAAXviskUffLY3KfnrKVPlwcj5Ks5ces_8</string>
<string name="app_name">淘夢購</string>
<string name="app_name">MM</string>
<string name="yunxin_name">網易雲信</string>
<string name="yunxin_desc">真正穩定的IM 雲端服務</string>
@@ -330,7 +330,7 @@
<string name="aihistory_clean">クリア</string>
<string name="aihistory_title">Q&amp;A履歴をクリアしてもよろしいですか?</string>
<string name="aianswer_txt">スマート ドリームの回答を生成中です。お待​​ちください...</string>
<string name="aiintroduct_zh_txt">您好,我是淘夢購團隊研發的智能認知模型,我的名字叫小夢,我可以和人類進行自然交流,解答問題,高效完成各領域的認知智能需求</string>
<string name="aiintroduct_zh_txt">您好,我是MM團隊研發的智能認知模型,我的名字叫小夢,我可以和人類進行自然交流,解答問題,高效完成各領域的認知智能需求</string>
<string name="aiintroduct_en_txt">Hello, I am an intelligent cognitive model developed by TimeGo team. My name is Xiaomeng.
I can naturally communicate with humans, answer questions, and efficiently complete the cognitive intelligence needs in various fields</string>
<string name="aihint_txt">ちょっと、そこ!私はあなたの新しい友達シャオ・メンです</string>
@@ -346,6 +346,7 @@
<string name="nmhmylg_txt">まだ話していませんね~</string>
<string name="myltjl_txt">まだチャット記録がありません~</string>
<string name="to_wallet_send_redpack_txt">金貨残高が入金されているので、をクリックして確認してください></string>
<string name="to_wallet_send_redpack_txt_lipin">ギフトポイント残高が入金されました。クリックして確認></string>
<string name="species_txt">金貨</string>
<string name="jifen_txt">ポイント</string>
<string name="silver_coins_txt">銀貨</string>
@@ -360,6 +361,7 @@
<string name="danwei_txt">パソコン</string>
<string name="remarks_hit_txt">お金持ちになり、幸運を祈ります</string>
<string name="send_in_redenvelope_txt1">赤い封筒に金貨を入れます</string>
<string name="send_in_lipinjifen_txt1">ギフトポイントを赤い封筒に詰める</string>
<string name="send_in_redtype_txt1">赤い封筒に金貨を詰める</string>
<string name="no_get_to_back_txt">未受領のお年玉は、24時間以内に返却されます</string>
<string name="zhuanzhangobject_txt">クリックして転送オブジェクトを選択します</string>
@@ -887,7 +889,7 @@
<string name="userphoto_dialog_movetitle">他のアルバムに移動</string>
<string name="userphoto_dialog_notfriendtitle">このアルバムは友達のみ閲覧可能に設定されています。閲覧するには友達リクエストを送信してください。</string>
<string name="kefu_selector_title">お問い合わせの内容を選択してください:</string>
<string name="kefu_select_taomenggou">淘夢購に関する質問</string>
<string name="kefu_select_taomenggou">MMに関する質問</string>
<string name="kefu_select_taoleding">淘樂町に関する質問</string>
<string name="kefu_select_jifengshangcheng">ポイントモールに関する質問</string>
<string name="kefu_select_hezuo">協力業者に関する質問</string>
@@ -920,4 +922,8 @@
<string name="str_teammanager_add_succ_toast">追加に成功しました</string>
<string name="str_teammanager_add_not_toast">管理者を選択してください</string>
<string name="str_chat_all">世界チャット</string>
<string name="chat_message_action_multi_select">多选</string>
</resources>

View File

@@ -3,4 +3,6 @@
<string name="ps_message_max_num">最多只能选择%1$s张照片或视频</string>
<string name="chat_message_action_multi_select">多选</string>
</resources>

View File

@@ -921,5 +921,6 @@
<string name="str_teammanager_add_faile_toast">管理員最多可設置5個</string>
<string name="str_teammanager_add_succ_toast">添加成功</string>
<string name="str_teammanager_add_not_toast">請選擇管理員</string>
<string name="chat_message_action_multi_select">多選</string>
</resources>

View File

@@ -915,6 +915,7 @@
<string name="str_teammanager_add_faile_toast">管理员最多可设置5个</string>
<string name="str_teammanager_add_succ_toast">添加成功</string>
<string name="str_teammanager_add_not_toast">请选择管理员</string>
<string name="chat_message_action_multi_select">多选</string>
</resources>

View File

@@ -129,13 +129,13 @@
<item name="android:windowTranslucentNavigation">false</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:enforceNavigationBarContrast" tools:ignore="NewApi">false</item>
<!-- 标题栏颜色 -->
<item name="colorPrimary">@color/white</item>
<!-- 状态栏颜色 -->
<item name="colorPrimaryDark">@color/white</item>
<!-- 标题栏文字颜色 -->
<item name="colorAccent">@color/black</item>
<item name="android:windowBackground">@mipmap/ic_welcome_bg</item>
</style>
<!-- 注意当前AppTheme主题在values-v23存在另一个样式。原因是Android 6以下系统不支持设置

View File

@@ -246,7 +246,14 @@ public class ChatUtils {
.withContext(context)
.navigate(launcher);
}
public static void startTeamListByZhuanFa(
Context context, String pagePath, ActivityResultLauncher<Intent> launcher) {
XKitRouter.withKey(pagePath)
.withParam(RouterConstant.KEY_TEAM_LIST_SELECT, true)
.withParam("zhuanfa",true)
.withContext(context)
.navigate(launcher);
}
public static void startP2PSelector(
Context context, String pagePath, String filterId, ActivityResultLauncher<Intent> launcher) {
ArrayList<String> filterList = new ArrayList<>();

View File

@@ -49,7 +49,7 @@ public class ChatMessageForwardConfirmDialog extends BaseDialog {
boolean showInput;
int forwardType;
ArrayList<String> listsession;
public static ChatMessageForwardConfirmDialog createForwardConfirmDialog(
SessionTypeEnum type,
ArrayList<String> sessionIds,
@@ -97,7 +97,7 @@ public class ChatMessageForwardConfirmDialog extends BaseDialog {
// String action= getArguments().getString(FORWARD_ACTION, ActionConstants.POP_ACTION_TRANSMIT);
//adapter.setForwardType(getArguments().getInt(FORWARD_TYPE));
// adapter.append(getArguments().getStringArrayList(FORWARD_SESSION_LIST));
ArrayList<String> listsession = getArguments().getStringArrayList(FORWARD_SESSION_LIST);
listsession = getArguments().getStringArrayList(FORWARD_SESSION_LIST);
setData(listsession.get(0));
// String sendUser = getArguments().getString(FORWARD_MESSAGE_SEND); //发送人的名字
@@ -182,6 +182,11 @@ public class ChatMessageForwardConfirmDialog extends BaseDialog {
binding.avatar.setData(avatar, "");
}
binding.tvNickname.setText(nickname);
if(listsession!=null&&listsession.size()>1){
binding.tvTitle.setText(String.format(getString(R.string.chat_message_forward_to2),nickname+"",listsession.size()));
}
}
}
@@ -196,6 +201,10 @@ public class ChatMessageForwardConfirmDialog extends BaseDialog {
binding.avatar.setData(avatar, "");
}
binding.tvNickname.setText(nickname + "");
if(listsession!=null&&listsession.size()>1){
binding.tvTitle.setText(String.format(getString(R.string.chat_message_forward_to1),nickname+"",listsession.size()));
}
}
public void setCallback(ForwardCallback callback) {

View File

@@ -83,8 +83,8 @@ public class FunChatPinActivity extends ChatPinBaseActivity {
new ChatBaseForwardSelectDialog.ForwardTypeSelectedCallback() {
@Override
public void onTeamSelected() {
ChatUtils.startTeamList(
FunChatPinActivity.this, RouterConstant.PATH_FUN_MY_TEAM_PAGE, forwardTeamLauncher);
ChatUtils.startTeamListByZhuanFa(
FunChatPinActivity.this, RouterConstant.PATH_FUN_MY_TEAM_PAGE, forwardTeamLauncher1);
}
@Override

View File

@@ -477,8 +477,8 @@ public abstract class FunChatFragment extends ChatBaseFragment {
@Override
protected void forwardTeam() {
ChatUtils.startTeamList(
getContext(), RouterConstant.PATH_FUN_MY_TEAM_PAGE, forwardTeamLauncher);
ChatUtils.startTeamListByZhuanFa(
getContext(), RouterConstant.PATH_FUN_MY_TEAM_PAGE, forwardTeamLauncher1);
}

View File

@@ -49,12 +49,12 @@ public interface ApiService {
/**
* 正式环境
*/
String URL = "https://api.letschat2023.com/";
// String URL = "https://api.letschat2023.com/";
/**
* 测试环境
*/
// String URL = "https://api-test.letschat2023.com/";
String URL = "https://api-test.letschat2023.com/";
// String URL = "https://8.217.244.135:8001/";

View File

@@ -58,6 +58,7 @@ public abstract class ChatPinBaseActivity extends BaseActivity {
protected ActivityResultLauncher<Intent> forwardP2PLauncher;
protected ActivityResultLauncher<Intent> forwardTeamLauncher;
protected ActivityResultLauncher<Intent> forwardTeamLauncher1;
public static final String ACTION_CHECK_PIN = "check_pin";
public static final String ACTION_CANCEL_PIN = "cancel_pin";
@@ -163,6 +164,25 @@ public abstract class ChatPinBaseActivity extends BaseActivity {
}
});
forwardTeamLauncher1 =
registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
result -> {
if (result.getResultCode() != Activity.RESULT_OK || forwardMessage == null) {
return;
}
ALog.d(LIB_TAG, TAG, "forward Team result");
Intent data = result.getData();
if (data != null) {
ArrayList<String> friends =
data.getStringArrayListExtra(REQUEST_CONTACT_SELECTOR_KEY);
if (friends != null && !friends.isEmpty()) {
showForwardConfirmDialog(SessionTypeEnum.Team, friends);
}
}
});
if (TextUtils.isEmpty(mSessionId) || mSessionType == SessionTypeEnum.None) {
showEmptyView(true);
} else {

View File

@@ -63,6 +63,7 @@ import com.luck.picture.lib.style.SelectMainStyle;
import com.luck.picture.lib.style.TitleBarStyle;
import com.netease.nim.highavailable.LogUtils;
import com.netease.nimlib.sdk.NIMClient;
import com.netease.nimlib.sdk.RequestCallback;
import com.netease.nimlib.sdk.StatusCode;
import com.netease.nimlib.sdk.auth.AuthServiceObserver;
import com.netease.nimlib.sdk.friend.FriendService;
@@ -79,7 +80,10 @@ import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.netease.nimlib.sdk.msg.model.MsgPinOption;
import com.netease.nimlib.sdk.msg.model.QueryDirectionEnum;
import com.netease.nimlib.sdk.msg.model.RecentContact;
import com.netease.nimlib.sdk.team.TeamService;
import com.netease.nimlib.sdk.team.constant.TeamMemberType;
import com.netease.nimlib.sdk.team.model.Team;
import com.netease.nimlib.sdk.team.model.TeamMember;
import com.netease.nimlib.sdk.uinfo.UserService;
import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
import com.netease.yunxin.kit.alog.ALog;
@@ -225,6 +229,7 @@ public abstract class ChatBaseFragment extends BaseFragment {
protected ActivityResultLauncher<Intent> forwardP2PLauncher;
protected ActivityResultLauncher<Intent> forwardTeamLauncher;
protected ActivityResultLauncher<Intent> forwardTeamLauncher1;
protected ActivityResultLauncher<String[]> permissionLauncher;
@@ -1646,6 +1651,38 @@ public abstract class ChatBaseFragment extends BaseFragment {
&& isAllowAd == 0
&& teamInfo != null && !teamInfo.getCreator().equals(IMKitClient.account())
&& !teamInfo.getCreator().equals(messageBean.getMessageData().getMessage().getFromAccount())) {
NIMClient.getService(TeamService.class).queryTeamMember(teamInfo.getId(), messageBean.getMessageData().getMessage().getFromAccount()).setCallback(new RequestCallback<TeamMember>() {
@Override
public void onSuccess(TeamMember members) {
if(members!=null){
if(members.getType() == TeamMemberType.Manager){
XKitRouter.withKey(getUserInfoRoutePath())
.withContext(view.getContext())
.withParam(
"uid",
messageBean.getMessageData().getMessage().getFromAccount())
.withParam("userId", messageBean.getMessageData().getMessage().getFromAccount())
.withParam("isGroup", (sessionType == SessionTypeEnum.Team || sessionType == SessionTypeEnum.SUPER_TEAM))
.withParam("teamId", (sessionType == SessionTypeEnum.Team || sessionType == SessionTypeEnum.SUPER_TEAM) ? messageBean.getMessageData().getMessage().getSessionId() : "")
.navigate();
}
}
}
@Override
public void onFailed(int code) {
// 撤销群管理员失败
}
@Override
public void onException(Throwable exception) {
// 错误
}
});
return false;
}
XKitRouter.withKey(getUserInfoRoutePath())
@@ -1965,6 +2002,7 @@ public abstract class ChatBaseFragment extends BaseFragment {
&& isAllowAd == 0
&& teamInfo != null && !teamInfo.getCreator().equals(IMKitClient.account())
&& !teamInfo.getCreator().equals(businessShareBean.data.getAccout())) {
return;
}
XKitRouter.withKey(RouterConstant.PATH_USER_INFO_PAGE)
@@ -2450,6 +2488,13 @@ public abstract class ChatBaseFragment extends BaseFragment {
new ActivityResultContracts.StartActivityForResult(),
result -> onForwardMessage(result, SessionTypeEnum.Team));
forwardTeamLauncher1 =
registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
result -> onForwardMessage1(result, SessionTypeEnum.Team));
locationLauncher =
registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(), this::onSelectLocation);
@@ -2680,6 +2725,23 @@ public abstract class ChatBaseFragment extends BaseFragment {
}
}
protected void onForwardMessage1(ActivityResult result, SessionTypeEnum sessionType) {
if (result.getResultCode() != Activity.RESULT_OK) {
return;
}
ALog.d(LIB_TAG, LOG_TAG, "forward Team result");
Intent data = result.getData();
if (data != null) {
ArrayList<String> sessionList = new ArrayList<>();
sessionList.addAll(data.getStringArrayListExtra(REQUEST_CONTACT_SELECTOR_KEY));
if (sessionList.size() > 0) {
showForwardConfirmDialog(sessionType, sessionList);
}
}
}
protected void clearMessageMultiSelectStatus() {
chatView.showMultiSelect(false);
ChatMsgCache.clear();

View File

@@ -323,5 +323,7 @@
<string name="push_content_location">Received a location</string>
<string name="push_content_file">Received a file</string>
<string name="push_content_audio">Received an audio</string>
<string name="chat_message_forward_to1">Forward to %s and other %d people</string>
<string name="chat_message_forward_to2">Forward to %s and other %d group</string>
</resources>

View File

@@ -324,5 +324,7 @@
<string name="push_content_location">位置情報が届きました</string>
<string name="push_content_file">ファイルが届きました</string>
<string name="push_content_audio">音声が届きました</string>
<string name="chat_message_forward_to1">轉發給:%s等%d人</string>
<string name="chat_message_forward_to2">轉發給:%s等%d群</string>
</resources>

View File

@@ -324,4 +324,7 @@
<string name="push_content_location">发来了一个地理位置</string>
<string name="push_content_file">发来了一个文件</string>
<string name="push_content_audio">发来了一段语音</string>
<string name="chat_message_forward_to1">转发给:%s等%d人</string>
<string name="chat_message_forward_to2">转发给:%s等%d群</string>
</resources>

View File

@@ -323,4 +323,6 @@
<string name="push_content_location">發來了一個地理位置</string>
<string name="push_content_file">發來了一個文件</string>
<string name="push_content_audio">發來了一段語音</string>
<string name="chat_message_forward_to1">轉發給:%s等%d人</string>
<string name="chat_message_forward_to2">轉發給:%s等%d群</string>
</resources>

View File

@@ -4,16 +4,29 @@
package com.netease.yunxin.kit.contactkit.ui.fun.team;
import static com.netease.yunxin.kit.corekit.im.utils.RouterConstant.KEY_REQUEST_SELECTOR_NAME;
import static com.netease.yunxin.kit.corekit.im.utils.RouterConstant.REQUEST_CONTACT_SELECTOR_KEY;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.annotation.Nullable;
import com.netease.nimlib.sdk.team.model.DismissAttachment;
import com.netease.nimlib.sdk.team.model.Team;
import com.netease.yunxin.kit.common.ui.utils.ToastX;
import com.netease.yunxin.kit.contactkit.ui.R;
import com.netease.yunxin.kit.contactkit.ui.databinding.BaseListActivityLayoutBinding;
import com.netease.yunxin.kit.contactkit.ui.fun.view.FunContactViewHolderFactory;
import com.netease.yunxin.kit.contactkit.ui.fun.view.viewholder.FunTeamListViewHolder;
import com.netease.yunxin.kit.contactkit.ui.model.BaseContactBean;
import com.netease.yunxin.kit.contactkit.ui.model.ContactFriendBean;
import com.netease.yunxin.kit.contactkit.ui.model.ContactTeamBean;
import com.netease.yunxin.kit.contactkit.ui.model.IViewTypeConstant;
import com.netease.yunxin.kit.contactkit.ui.team.BaseTeamListActivity;
import com.netease.yunxin.kit.contactkit.ui.team.TeamListViewModel;
@@ -21,51 +34,146 @@ import com.netease.yunxin.kit.contactkit.ui.view.viewholder.BaseContactViewHolde
import com.netease.yunxin.kit.corekit.im.utils.RouterConstant;
import com.netease.yunxin.kit.corekit.route.XKitRouter;
import java.util.ArrayList;
import java.util.List;
public class FunTeamListActivity extends BaseTeamListActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
changeStatusBarColor(R.color.color_white);
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
changeStatusBarColor(R.color.color_white);
}
protected void configTitle(BaseListActivityLayoutBinding binding) {
super.configTitle(binding);
binding.title.getTitleTextView().setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20);
protected void configTitle(BaseListActivityLayoutBinding binding) {
super.configTitle(binding);
binding.title.getTitleTextView().setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20);
// binding.title.getTitleTextView().setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
binding.title.setBackgroundResource(R.color.color_white);
}
binding.title.setBackgroundResource(R.color.color_white);
protected void configRoutePath(TeamListViewModel viewModel) {
viewModel.configRoutePath(RouterConstant.PATH_FUN_CHAT_TEAM_PAGE);
}
@Override
protected void configViewHolderFactory() {
binding.contactListView.setViewHolderFactory(
new FunContactViewHolderFactory() {
@Override
protected BaseContactViewHolder getCustomViewHolder(ViewGroup view, int viewType) {
if (viewType == IViewTypeConstant.CONTACT_TEAM_LIST) {
FunTeamListViewHolder viewHolder = new FunTeamListViewHolder(view);
viewHolder.setItemClickListener(
data -> {
if (isSelector) {
Intent result = new Intent();
result.putExtra(RouterConstant.KEY_TEAM_ID, data.data.getId());
setResult(RESULT_OK, result);
finish();
}
@Override
protected void initData() {
super.initData();
if (isZhuanFa) {
// ToastX.showShortToast("111111111111111");
binding.title.setActionText(getString(R.string.chat_message_action_multi_select));
binding.title.setActionTextColor(getResources().getColor(R.color.color_6877fe));
binding.title.getRightTextView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isSignOne) {
isSignOne = false;
binding.title.setActionText(getString(R.string.selector_sure));
binding.contactListView.showSelector(true);
} else {
XKitRouter.withKey(data.router)
.withParam(RouterConstant.CHAT_KRY, data.data)
.withContext(FunTeamListActivity.this)
.navigate();
ArrayList<String> select = getSelectedAccount();
ArrayList<String> selectName = getSelectedName();
if (select.size() < 1) {
Toast.makeText(FunTeamListActivity.this, getString(R.string.select_empty_tips), Toast.LENGTH_LONG)
.show();
return;
}
//转发选取一个结束
Intent result = new Intent();
result.putExtra(REQUEST_CONTACT_SELECTOR_KEY, select);
result.putExtra(KEY_REQUEST_SELECTOR_NAME, selectName);
setResult(RESULT_OK, result);
finish();
}
});
return viewHolder;
}
});
} else {
// ToastX.showShortToast("2222222222222");
}
}
protected ArrayList<String> getSelectedAccount() {
ArrayList<String> result = new ArrayList<>();
List<BaseContactBean> contactTeamBeans = binding.contactListView.getAdapter().getDataList();
for (int i = 0; i < contactTeamBeans.size(); i++) {
ContactTeamBean contactTeamBean = (ContactTeamBean) contactTeamBeans.get(i);
if (contactTeamBean.isCheck()) {
result.add(contactTeamBean.data.getId());
}
return null;
}
});
}
}
return result;
}
protected ArrayList<String> getSelectedName() {
ArrayList<String> result = new ArrayList<>();
List<BaseContactBean> contactTeamBeans = binding.contactListView.getAdapter().getDataList();
for (int i = 0; i < contactTeamBeans.size(); i++) {
ContactTeamBean contactTeamBean = (ContactTeamBean) contactTeamBeans.get(i);
if (contactTeamBean.isCheck()) {
result.add(contactTeamBean.data.getName());
}
}
return result;
}
protected void configRoutePath(TeamListViewModel viewModel) {
viewModel.configRoutePath(RouterConstant.PATH_FUN_CHAT_TEAM_PAGE);
}
@Override
protected void configViewHolderFactory() {
// ToastX.showShortToast("点我干嘛!!!!");
binding.contactListView.setViewHolderFactory(
new FunContactViewHolderFactory() {
@Override
protected BaseContactViewHolder getCustomViewHolder(ViewGroup view, int viewType) {
if (viewType == IViewTypeConstant.CONTACT_TEAM_LIST) {
FunTeamListViewHolder viewHolder = new FunTeamListViewHolder(view);
viewHolder.setItemClickListener(
data -> {
if (isSelector) {
if (isZhuanFa) {
if (isSignOne) {
ArrayList<String> select = new ArrayList<>();
ArrayList<String> selectName = new ArrayList<>();
select.add(data.data.getId());
selectName.add(data.data.getName());
//转发选取一个结束
Intent result = new Intent();
result.putExtra(REQUEST_CONTACT_SELECTOR_KEY, select);
result.putExtra(KEY_REQUEST_SELECTOR_NAME, selectName);
setResult(RESULT_OK, result);
finish();
} else {
data.setCheck(!data.isCheck());
binding.contactListView.updateContactData(data);
}
} else {
Intent result = new Intent();
result.putExtra(RouterConstant.KEY_TEAM_ID, data.data.getId());
setResult(RESULT_OK, result);
finish();
}
} else {
XKitRouter.withKey(data.router)
.withParam(RouterConstant.CHAT_KRY, data.data)
.withContext(FunTeamListActivity.this)
.navigate();
}
});
return viewHolder;
}
return null;
}
});
}
}

View File

@@ -56,6 +56,16 @@ public class FunTeamListViewHolder extends BaseContactViewHolder {
@Override
public void onBind(BaseContactBean bean, int position, ContactListViewAttrs attrs) {
Team teamInfo = ((ContactTeamBean) bean).data;
if(binding.rbSelector!=null){
binding.rbSelector.setVisibility(View.GONE);
if(attrs.getShowSelector()){
binding.rbSelector.setVisibility(View.VISIBLE);
binding.rbSelector.setChecked(((ContactTeamBean) bean).isCheck());
}
}
if (teamInfo != null) {
binding.tvName.setText(teamInfo.getName());
String value = ((ContactTeamBean) bean).getContent();

View File

@@ -23,6 +23,15 @@ public class ContactTeamBean extends BaseContactBean {
public MsgAttachment msgAttachment;
public String fromNick;
public String fromAccount;
public boolean isCheck;
public boolean isCheck() {
return isCheck;
}
public void setCheck(boolean check) {
isCheck = check;
}
public String getFromNick() {
return fromNick;

View File

@@ -6,6 +6,8 @@ package com.netease.yunxin.kit.contactkit.ui.normal.team;
import android.content.Intent;
import android.view.ViewGroup;
import com.netease.yunxin.kit.common.ui.utils.ToastX;
import com.netease.yunxin.kit.contactkit.ui.model.IViewTypeConstant;
import com.netease.yunxin.kit.contactkit.ui.normal.view.ContactViewHolderFactory;
import com.netease.yunxin.kit.contactkit.ui.normal.view.viewholder.TeamListViewHolder;
@@ -18,6 +20,9 @@ public class TeamListActivity extends BaseTeamListActivity {
@Override
protected void configViewHolderFactory() {
// ToastX.showShortToast("点我干嘛!");
binding.contactListView.setViewHolderFactory(
new ContactViewHolderFactory() {
@Override

View File

@@ -108,6 +108,7 @@ public abstract class BaseContactSelectorActivity extends BaseActivity {
protected int type;// 0 创建群 选好友, 1 转发消息 选好友
protected boolean isSignOne = true;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -152,69 +153,56 @@ public abstract class BaseContactSelectorActivity extends BaseActivity {
actions.addContactListener(
IViewTypeConstant.CONTACT_FRIEND,
(position, data) -> {
FriendInfo friendInfo = ((ContactFriendBean) data).data;
//转发选取一个结束
Intent result = new Intent();
// if (!selectedListAdapter.getSelectedFriends().isEmpty()) {
// result.putExtra(REQUEST_CONTACT_SELECTOR_KEY, getSelectedAccount());
// result.putExtra(KEY_REQUEST_SELECTOR_NAME, getSelectedName());
//// if (enableReturnName) {
//// result.putExtra(KEY_REQUEST_SELECTOR_NAME, getSelectedName());
//// }
// }
listAccount.clear();
listname.clear();
listAccount.add(friendInfo.getAccount());
listname.add(friendInfo.getName());
result.putExtra(REQUEST_CONTACT_SELECTOR_KEY, listAccount);
result.putExtra(KEY_REQUEST_SELECTOR_NAME, listname);
setResult(RESULT_OK, result);
finish();
// XKitRouter.withKey(RouterConstant.PATH_FUN_CHAT_P2P_PAGE)
// .withParam(RouterConstant.CHAT_ID_KRY, friendInfo.getAccount())
// .withContext(requireActivity())
// .navigate();
// XKitRouter.withKey(RouterConstant.PATH_FUN_USER_INFO_PAGE)
// .withContext(requireContext())
// .withParam(RouterConstant.KEY_ACCOUNT_ID_KEY, friendInfo.getAccount())
// .navigate();
if (isSignOne) {
FriendInfo friendInfo = ((ContactFriendBean) data).data;
//转发选取一个结束
Intent result = new Intent();
listAccount.clear();
listname.clear();
listAccount.add(friendInfo.getAccount());
listname.add(friendInfo.getName());
result.putExtra(REQUEST_CONTACT_SELECTOR_KEY, listAccount);
result.putExtra(KEY_REQUEST_SELECTOR_NAME, listname);
setResult(RESULT_OK, result);
finish();
}
});
} else {
actions.addSelectorListener(
IViewTypeConstant.CONTACT_FRIEND,
(selector, data) -> {
if (selector) {
if (selectedListAdapter.getItemCount() >= maxSelectCount
&& !selectFinalCheckCountEnable) {
Toast.makeText(
this,
getString(
R.string.contact_selector_max_count, String.valueOf(maxSelectCount)),
Toast.LENGTH_LONG)
.show();
((ContactFriendBean) data).setSelected(false);
contactListView.updateContactData(data);
lastContactView.updateContactData(data);
searchContactView.updateContactData(data);
loveContactView.updateContactData(data);
} else {
((ContactFriendBean) data).setSelected(true);
contactListView.updateContactData(data);
lastContactView.updateContactData(data);
searchContactView.updateContactData(data);
loveContactView.updateContactData(data);
selectedListAdapter.addFriend((ContactFriendBean) data);
}
} else {
}
actions.addSelectorListener(
IViewTypeConstant.CONTACT_FRIEND,
(selector, data) -> {
if (selector) {
if (selectedListAdapter.getItemCount() >= maxSelectCount
&& !selectFinalCheckCountEnable) {
Toast.makeText(
this,
getString(
R.string.contact_selector_max_count, String.valueOf(maxSelectCount)),
Toast.LENGTH_LONG)
.show();
((ContactFriendBean) data).setSelected(false);
selectedListAdapter.removeFriend((ContactFriendBean) data);
contactListView.updateContactData(data);
lastContactView.updateContactData(data);
loveContactView.updateContactData(data);
searchContactView.updateContactData(data);
loveContactView.updateContactData(data);
} else {
((ContactFriendBean) data).setSelected(true);
contactListView.updateContactData(data);
lastContactView.updateContactData(data);
searchContactView.updateContactData(data);
loveContactView.updateContactData(data);
selectedListAdapter.addFriend((ContactFriendBean) data);
}
// titleBar.setActionText(getString(R.string.selector_sure_without_num));
} else {
((ContactFriendBean) data).setSelected(false);
selectedListAdapter.removeFriend((ContactFriendBean) data);
contactListView.updateContactData(data);
lastContactView.updateContactData(data);
loveContactView.updateContactData(data);
searchContactView.updateContactData(data);
}
// titleBar.setActionText(getString(R.string.selector_sure_without_num));
// int count = selectedListAdapter.getItemCount();
// if (count <= 0) {
// titleBar.setActionText(getString(R.string.selector_sure_without_num));
@@ -223,28 +211,32 @@ public abstract class BaseContactSelectorActivity extends BaseActivity {
// String.format(
// getString(R.string.selector_sure), selectedListAdapter.getItemCount()));
// }
});
});
}
// }
contactListView.setContactAction(actions);
lastContactView.setContactAction(actions);
searchContactView.setContactAction(actions);
loveContactView.setContactAction(actions);
//top selected list
LinearLayoutManager layoutManager =
new LinearLayoutManager(this, RecyclerView.HORIZONTAL, false);
//top selected list
LinearLayoutManager layoutManager =
new LinearLayoutManager(this, RecyclerView.HORIZONTAL, false);
rvSelected.setLayoutManager(layoutManager);
selectedListAdapter = getSelectedListAdapter();
selectedListAdapter =
getSelectedListAdapter();
selectedListAdapter.setItemClickListener(
item -> {
item.setSelected(false);
contactListView.updateContactData(item);
lastContactView.updateContactData(item);
loveContactView.updateContactData(item);
searchContactView.updateContactData(item);
//int count = selectedListAdapter.getItemCount();
// titleBar.setActionText(getString(R.string.selector_sure_without_num));
item ->
{
item.setSelected(false);
contactListView.updateContactData(item);
lastContactView.updateContactData(item);
loveContactView.updateContactData(item);
searchContactView.updateContactData(item);
//int count = selectedListAdapter.getItemCount();
// titleBar.setActionText(getString(R.string.selector_sure_without_num));
// if (count <= 0) {
// titleBar.setActionText(getString(R.string.selector_sure_without_num));
// } else {
@@ -252,42 +244,45 @@ public abstract class BaseContactSelectorActivity extends BaseActivity {
// String.format(
// getString(R.string.selector_sure), selectedListAdapter.getItemCount()));
// }
});
});
rvSelected.setAdapter(selectedListAdapter);
editSearch.setOnEditorActionListener((textView, actionId, keyEvent) ->
{
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
String search = textView.getEditableText().toString();
//搜索好友
searchViewModel.queryFriend(search);
}
return false;
});
editSearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
editSearch.setOnEditorActionListener((textView,actionId,keyEvent)->
}
{
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
String search = textView.getEditableText().toString();
//搜索好友
searchViewModel.queryFriend(search);
}
return false;
});
editSearch.addTextChangedListener(new
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
TextWatcher() {
@Override
public void beforeTextChanged (CharSequence charSequence,int i, int i1, int i2){
}
}
@Override
public void afterTextChanged(Editable editable) {
if (TextUtils.isEmpty(editSearch.getText().toString())) {
ivClean.setVisibility(View.GONE);
layoutContactList.setVisibility(View.VISIBLE);
layoutSearchList.setVisibility(View.GONE);
hideSoftInput(BaseContactSelectorActivity.this);
} else {
ivClean.setVisibility(View.VISIBLE);
}
@Override
public void onTextChanged (CharSequence charSequence,int i, int i1, int i2){
}
@Override
public void afterTextChanged (Editable editable){
if (TextUtils.isEmpty(editSearch.getText().toString())) {
ivClean.setVisibility(View.GONE);
layoutContactList.setVisibility(View.VISIBLE);
layoutSearchList.setVisibility(View.GONE);
hideSoftInput(BaseContactSelectorActivity.this);
} else {
ivClean.setVisibility(View.VISIBLE);
}
});
ivClean.setOnClickListener(view -> editSearch.setText(""));
}
}
});
ivClean.setOnClickListener(view ->editSearch.setText(""));
}
public void hideSoftInput(Activity activity) {
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);

View File

@@ -6,6 +6,7 @@ package com.netease.yunxin.kit.contactkit.ui.team;
import androidx.lifecycle.ViewModelProvider;
import com.netease.yunxin.kit.common.ui.utils.ToastX;
import com.netease.yunxin.kit.common.ui.viewmodel.FetchResult;
import com.netease.yunxin.kit.common.ui.viewmodel.LoadStatus;
import com.netease.yunxin.kit.contactkit.ui.R;
@@ -24,12 +25,16 @@ public abstract class BaseTeamListActivity extends BaseListActivity {
protected TeamListViewModel viewModel;
protected boolean isSelector;
protected boolean isZhuanFa = false;
protected boolean isSignOne = true;
protected abstract void configViewHolderFactory();
@Override
protected void initView() {
configTitle(binding);
isZhuanFa = getIntent().getBooleanExtra("zhuanfa",false);
configViewHolderFactory();
}
@@ -60,6 +65,7 @@ public abstract class BaseTeamListActivity extends BaseListActivity {
}
// Collections.sort(binding.contactListView.getAdapter().getDataList(), teambeanComparator);
});
}
@Override

View File

@@ -173,6 +173,7 @@ public class ContactListView extends FrameLayout
public void showSelector(boolean show) {
if (contactAdapter != null) {
contactAdapter.getContactListViewAttrs().setShowSelector(show);
contactAdapter.notifyDataSetChanged();
}
}

View File

@@ -5,11 +5,23 @@
-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/view_normal_selector">
<androidx.appcompat.widget.AppCompatRadioButton
android:id="@+id/rb_selector"
style="@style/FunSelectorRadioBtn"
android:layout_width="@dimen/dimen_18_dp"
android:layout_height="@dimen/dimen_18_dp"
android:clickable="false"
android:visibility="gone"
android:layout_marginStart="@dimen/dimen_12_dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="MissingConstraints" />
<com.netease.yunxin.kit.common.ui.widgets.ContactAvatarView
android:id="@+id/avatar_view"
@@ -17,9 +29,10 @@
android:layout_height="@dimen/dimen_45_dp"
android:layout_marginTop="@dimen/dimen_10_dp"
android:layout_marginBottom="@dimen/dimen_10_dp"
android:layout_marginStart="@dimen/dimen_12_dp"
app:avatarCorner="@dimen/dimen_45_dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintLeft_toRightOf="@id/rb_selector"
app:layout_constraintTop_toTopOf="parent" />
<TextView

View File

@@ -156,4 +156,7 @@
<string name="teamjoined_txt">You are already in this group</string>
<string name="know_txt">I see</string>
<string name="nodate_txt">No data</string>
<string name="chat_message_action_multi_select">Multi-select</string>
</resources>

View File

@@ -157,5 +157,6 @@
<string name="teamjoined_txt">あなたはすでにこのグループに属しています</string>
<string name="know_txt">なるほど</string>
<string name="nodate_txt">まだ情報がありません</string>
<string name="chat_message_action_multi_select">複数選択</string>
</resources>

View File

@@ -157,4 +157,6 @@
<string name="teamjoined_txt">您已经在该群组中</string>
<string name="know_txt">我知道了</string>
<string name="nodate_txt">暂无数据</string>
<string name="chat_message_action_multi_select">多选</string>
</resources>

View File

@@ -158,6 +158,7 @@
<string name="know_txt">我知道了</string>
<string name="nodate_txt">暫無數據</string>
<string name="chat_message_action_multi_select">多選</string>
</resources>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Copyright (c) 2022 NetEase, Inc. All rights reserved.
~ Use of this source code is governed by a MIT license that can be
~ found in the LICENSE file.
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="@dimen/dimen_10_dp" />
<solid android:color="@color/color_ff4e54_t" />
</shape>

View File

@@ -6,6 +6,8 @@
<color name="color_ededef">#ededef</color>
<color name="color_666666">#666666</color>
<color name="color_ff4e54">#ff4e54</color>
<color name="color_ff4e54_t">#88ff4e54</color>
<color name="color_999999">#999999</color>
<color name="color_cccccc">#cccccc</color>
<color name="color_9e9e9e">#9e9e9e</color>