|
@@ -1,9 +1,50 @@
|
|
|
package com.sheishuo.app.core_module.sheishuo.view.ui;
|
|
|
|
|
|
+import android.app.Activity;
|
|
|
+import android.content.Context;
|
|
|
+import android.content.Intent;
|
|
|
import android.os.Bundle;
|
|
|
+import android.view.View;
|
|
|
+import android.widget.Button;
|
|
|
+import android.widget.EditText;
|
|
|
+import android.widget.HorizontalScrollView;
|
|
|
+import android.widget.ImageView;
|
|
|
+import android.widget.LinearLayout;
|
|
|
|
|
|
+import com.bumptech.glide.Glide;
|
|
|
+import com.netease.nim.uikit.NimUIKit;
|
|
|
+import com.netease.nim.uikit.common.media.picker.PickImageHelper;
|
|
|
+import com.netease.nim.uikit.common.media.picker.activity.PickImageActivity;
|
|
|
+import com.netease.nim.uikit.common.media.picker.model.PhotoInfo;
|
|
|
+import com.netease.nim.uikit.common.ui.imageview.HeadImageView;
|
|
|
+import com.netease.nim.uikit.common.util.media.ImageUtil;
|
|
|
+import com.netease.nim.uikit.contact_selector.activity.ContactSelectActivity;
|
|
|
+import com.netease.nim.uikit.session.helper.MessageHelper;
|
|
|
+import com.netease.nimlib.sdk.NIMClient;
|
|
|
+import com.netease.nimlib.sdk.RequestCallback;
|
|
|
+import com.netease.nimlib.sdk.msg.MessageBuilder;
|
|
|
+import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
|
|
|
+import com.netease.nimlib.sdk.msg.model.IMMessage;
|
|
|
+import com.netease.nimlib.sdk.team.TeamService;
|
|
|
+import com.netease.nimlib.sdk.team.constant.TeamFieldEnum;
|
|
|
+import com.netease.nimlib.sdk.team.constant.TeamTypeEnum;
|
|
|
+import com.netease.nimlib.sdk.team.model.Team;
|
|
|
+import com.netease.nimlib.sdk.uinfo.UserInfoProvider;
|
|
|
+import com.netease.nimlib.sdk.uinfo.UserService;
|
|
|
+import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
|
|
|
+import com.sheishuo.app.R;
|
|
|
+import com.sheishuo.app.common.util.img.ImgUtil;
|
|
|
+import com.sheishuo.app.common.views.BaseToolbar;
|
|
|
import com.sheishuo.app.uikit_implements.SheishuoUI;
|
|
|
|
|
|
+import java.io.Serializable;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+import jp.wasabeef.glide.transformations.CropCircleTransformation;
|
|
|
+
|
|
|
/**
|
|
|
* Created by KN on 2017/8/16.
|
|
|
*/
|
|
@@ -11,9 +52,162 @@ import com.sheishuo.app.uikit_implements.SheishuoUI;
|
|
|
public class CreateNewGroupActivity extends SheishuoUI {
|
|
|
|
|
|
|
|
|
+ private String TAG = this.getClass().getSimpleName();
|
|
|
+ private Context context = this;
|
|
|
+ private BaseToolbar toolbar;
|
|
|
+ private EditText groupNameTV, groupAnnouncementTV;
|
|
|
+ private HeadImageView groupAvatar, groupMemberImg;
|
|
|
+ private Button createGroupBtn;
|
|
|
+ private LinearLayout membersLayout;
|
|
|
+
|
|
|
+
|
|
|
+ private String avatarIcon = "";
|
|
|
+ private List<String> memberIds = new ArrayList<>();
|
|
|
+
|
|
|
@Override
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
super.onCreate(savedInstanceState);
|
|
|
+ setContentView(R.layout.area_group_create_group);
|
|
|
+ findViews();
|
|
|
+ init();
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ void findViews() {
|
|
|
+ toolbar = findView(R.id.toolbar);
|
|
|
+ groupAvatar = findView(R.id.create_group_avatar);
|
|
|
+ groupNameTV = findView(R.id.create_group_name);
|
|
|
+ groupAnnouncementTV = findView(R.id.create_group_announcement);
|
|
|
+ groupMemberImg = findView(R.id.create_group_add_member);
|
|
|
+ createGroupBtn = findView(R.id.create_group_btn);
|
|
|
+ membersLayout = findView(R.id.create_group_members_layout);
|
|
|
+ }
|
|
|
+
|
|
|
+ void init() {
|
|
|
+ initToolbar();
|
|
|
+ initCreateBtn();
|
|
|
+ initAddMembersBtn();
|
|
|
+ initAvatarBtn();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ void initToolbar() {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ void initCreateBtn() {
|
|
|
+ final TeamService teamService = NIMClient.getService(TeamService.class);
|
|
|
+ createGroupBtn.setOnClickListener(new View.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(View v) {
|
|
|
+ String groupName = groupNameTV.getText().toString().trim();
|
|
|
+ String groupIntroduce = groupAnnouncementTV.getText().toString().trim();
|
|
|
+
|
|
|
+ if (avatarIcon.isEmpty() || groupName.isEmpty() || groupIntroduce.isEmpty()) {
|
|
|
+ showToast(context, "请先完善群信息");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<TeamFieldEnum, Serializable> teamInfoMap = new HashMap<>();
|
|
|
+ teamInfoMap.put(TeamFieldEnum.Name, groupName);
|
|
|
+ teamInfoMap.put(TeamFieldEnum.Introduce, groupIntroduce);
|
|
|
+ teamService.createTeam(teamInfoMap, TeamTypeEnum.Advanced, "邀请您加入群", memberIds).setCallback(new RequestCallback<Team>() {
|
|
|
+ @Override
|
|
|
+ public void onSuccess(Team team) {
|
|
|
+ showToast(context, "创建群组成功");
|
|
|
+ NimUIKit.startTeamSession(context, team.getId());
|
|
|
+ finish();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onFailed(int i) {
|
|
|
+ showToast(context, "创建群组失败,错误代码:" + i);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onException(Throwable throwable) {
|
|
|
+ throwable.printStackTrace();
|
|
|
+ showToast(context, "创建群组失败");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ void initAddMembersBtn() {
|
|
|
+ groupMemberImg.setOnClickListener(new View.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(View v) {
|
|
|
+ ContactSelectActivity.Option option = new ContactSelectActivity.Option();
|
|
|
+
|
|
|
+ ContactSelectActivity.startActivityForResult(context,option,0);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ void initAvatarBtn(){
|
|
|
+ groupAvatar.setOnClickListener(new View.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(View v) {
|
|
|
+ PickImageHelper.PickImageOption option = new PickImageHelper.PickImageOption();
|
|
|
+ option.multiSelect = false;
|
|
|
+// PickImageHelper.pickImage(context,1,option);
|
|
|
+
|
|
|
+ int requestCode = 1;
|
|
|
+ int from = PickImageActivity.FROM_LOCAL;
|
|
|
+ if (!option.crop) {
|
|
|
+ PickImageActivity.start((Activity) context, requestCode, from, option.outputPath, option.multiSelect,
|
|
|
+ option.multiSelectMaxCount, true, false, 0, 0);
|
|
|
+ } else {
|
|
|
+ PickImageActivity.start((Activity) context, requestCode, from, option.outputPath, false, 1,
|
|
|
+ false, true, option.cropOutputImageWidth, option.cropOutputImageHeight);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
|
+ super.onActivityResult(requestCode, resultCode, data);
|
|
|
+ if (resultCode == RESULT_OK && requestCode == 0){
|
|
|
+
|
|
|
+ //添加成员
|
|
|
+ memberIds.addAll(data.getStringArrayListExtra(ContactSelectActivity.RESULT_DATA));
|
|
|
+ List<NimUserInfo> userInfoList = NIMClient.getService(UserService.class).getUserInfoList(memberIds);
|
|
|
+ membersLayout.removeAllViews();
|
|
|
+
|
|
|
+ for (NimUserInfo userInfo : userInfoList){
|
|
|
+ ImageView avatar = new ImageView(context);
|
|
|
+ avatar.setAdjustViewBounds(true);
|
|
|
+ avatar.setMaxWidth((int) ImgUtil.convertDpToPixel(48,context));
|
|
|
+ avatar.setMaxHeight((int) ImgUtil.convertDpToPixel(48,context));
|
|
|
+ if (userInfo.getAvatar().isEmpty()){
|
|
|
+ Glide.with(context)
|
|
|
+ .load(R.drawable.nim_avatar_default)
|
|
|
+ .bitmapTransform(new CropCircleTransformation(context))
|
|
|
+ .placeholder(R.drawable.nim_avatar_default)
|
|
|
+ .into(avatar);
|
|
|
+ }else {
|
|
|
+ Glide.with(context)
|
|
|
+ .load(userInfo.getAvatar())
|
|
|
+ .bitmapTransform(new CropCircleTransformation(context))
|
|
|
+ .placeholder(R.drawable.nim_avatar_default)
|
|
|
+ .into(avatar);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ membersLayout.addView(avatar);
|
|
|
+ }
|
|
|
|
|
|
+ }else if (resultCode == RESULT_OK && requestCode == 1){
|
|
|
+ //群头像选择
|
|
|
+ Bundle result = data.getExtras();
|
|
|
+ List<PhotoInfo> photoInfoList = (List<PhotoInfo>) result.getSerializable("photo_list");
|
|
|
+ avatarIcon = photoInfoList.get(0).getFilePath();
|
|
|
+ Glide.with(context)
|
|
|
+ .load(avatarIcon)
|
|
|
+ .into(groupAvatar);
|
|
|
+ }
|
|
|
}
|
|
|
}
|