package com.fanxin.app.fx; import java.util.HashMap; import java.util.List; import java.util.Map; import android.annotation.SuppressLint; import android.app.ProgressDialog; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import com.easemob.chat.EMChatManager; import com.easemob.chat.EMContactManager; import com.fanxin.app.MYApplication; import com.fanxin.app.R; import com.fanxin.app.activity.BaseActivity; import com.fanxin.app.domain.User; import com.fanxin.app.fx.others.LoadUserAvatar; import com.fanxin.app.fx.others.TopUser; import com.fanxin.app.fx.others.TopUserDao; import com.fanxin.app.fx.others.LoadUserAvatar.ImageDownloadedCallBack; import com.easemob.exceptions.EaseMobException; @SuppressLint({ "SimpleDateFormat", "SdCardPath" }) public class ChatSingleSettingActivity extends BaseActivity implements OnClickListener { // 、置顶、、、、 private RelativeLayout rl_switch_chattotop; private RelativeLayout rl_switch_block_groupmsg; private RelativeLayout re_clear; // 状态变化 private ImageView iv_switch_chattotop; private ImageView iv_switch_unchattotop; private ImageView iv_switch_block_groupmsg; private ImageView iv_switch_unblock_groupmsg; private String userId; private String userNick; private String avatar; String sex; private LoadUserAvatar avatarLoader; private List<String> blackList; // 置顶列表 Map<String, TopUser> topMap = new HashMap<String, TopUser>(); private ProgressDialog progressDialog; public static ChatSingleSettingActivity instance; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_singlechat_setting); avatarLoader = new LoadUserAvatar(this, "/sdcard/fanxin/"); instance = this; // 获取传过来的userId userId = getIntent().getStringExtra("userId"); User user = MYApplication.getInstance().getContactList().get(userId); // 资料错误则不显示 if (user == null) { return; } userNick = user.getNick(); avatar = user.getAvatar(); sex = user.getSex(); // 黑名单列表 blackList = EMContactManager.getInstance().getBlackListUsernames(); // 置顶列表 topMap = MYApplication.getInstance().getTopUserList(); // progressDialog = new ProgressDialog(this); initView(); initData(); } private void initView() { rl_switch_chattotop = (RelativeLayout) findViewById(R.id.rl_switch_chattotop); rl_switch_block_groupmsg = (RelativeLayout) findViewById(R.id.rl_switch_block_groupmsg); re_clear = (RelativeLayout) findViewById(R.id.re_clear); iv_switch_chattotop = (ImageView) findViewById(R.id.iv_switch_chattotop); iv_switch_unchattotop = (ImageView) findViewById(R.id.iv_switch_unchattotop); iv_switch_block_groupmsg = (ImageView) findViewById(R.id.iv_switch_block_groupmsg); iv_switch_unblock_groupmsg = (ImageView) findViewById(R.id.iv_switch_unblock_groupmsg); // 初始化置顶和免打扰的状态 if (!blackList.contains(userId)) { iv_switch_block_groupmsg.setVisibility(View.INVISIBLE); iv_switch_unblock_groupmsg.setVisibility(View.VISIBLE); } else { iv_switch_block_groupmsg.setVisibility(View.VISIBLE); iv_switch_unblock_groupmsg.setVisibility(View.INVISIBLE); } if (!topMap.containsKey(userId)) { // 当前状态是w未置顶 iv_switch_chattotop.setVisibility(View.INVISIBLE); iv_switch_unchattotop.setVisibility(View.VISIBLE); } else { // 当前状态是置顶 iv_switch_chattotop.setVisibility(View.VISIBLE); iv_switch_unchattotop.setVisibility(View.INVISIBLE); } } private void initData() { rl_switch_chattotop.setOnClickListener(this); rl_switch_block_groupmsg.setOnClickListener(this); re_clear.setOnClickListener(this); ImageView iv_avatar = (ImageView) this.findViewById(R.id.iv_avatar); TextView tv_username = (TextView) this.findViewById(R.id.tv_username); tv_username.setText(userNick); iv_avatar.setImageResource(R.drawable.default_useravatar); iv_avatar.setTag(avatar); if (avatar != null && !avatar.equals("")) { Bitmap bitmap = avatarLoader.loadImage(iv_avatar, avatar, new ImageDownloadedCallBack() { @Override public void onImageDownloaded(ImageView imageView, Bitmap bitmap) { if (imageView.getTag() == avatar) { imageView.setImageBitmap(bitmap); } } }); if (bitmap != null) { iv_avatar.setImageBitmap(bitmap); } } iv_avatar.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(ChatSingleSettingActivity.this, UserInfoActivity.class).putExtra("hxid", userId) .putExtra("nick", userNick).putExtra("avatar", avatar) .putExtra("sex", sex)); } }); ImageView iv_avatar2 = (ImageView) this.findViewById(R.id.iv_avatar2); iv_avatar2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(ChatSingleSettingActivity.this, CreatChatRoomActivity.class).putExtra("userId", userId)); } }); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.rl_switch_block_groupmsg: // 设置免打扰 progressDialog.setMessage("正在设置免打扰..."); progressDialog.setCanceledOnTouchOutside(false); progressDialog.show(); if (iv_switch_block_groupmsg.getVisibility() == View.VISIBLE) { new Handler().postDelayed(new Runnable() { public void run() { removeOutBlacklist(userId); progressDialog.dismiss(); } }, 2000); } else { moveToBlacklist(userId); } break; case R.id.re_clear: // 清空聊天记录 progressDialog.setMessage("正在清空消息..."); progressDialog.show(); // 按照你们要求必须有个提示,防止记录太少,删得太快,不提示 new Handler().postDelayed(new Runnable() { public void run() { EMChatManager.getInstance().clearConversation(userId); progressDialog.dismiss(); } }, 2000); break; case R.id.rl_switch_chattotop: // 当前状态是已经置顶,点击后取消置顶 if (iv_switch_chattotop.getVisibility() == View.VISIBLE) { iv_switch_chattotop.setVisibility(View.INVISIBLE); iv_switch_unchattotop.setVisibility(View.VISIBLE); if (topMap.containsKey(userId)) { topMap.remove(userId); TopUserDao topUserDao = new TopUserDao( ChatSingleSettingActivity.this); topUserDao.deleteTopUser(userId); } } else { // 当前状态是未置顶点击后置顶 iv_switch_chattotop.setVisibility(View.VISIBLE); iv_switch_unchattotop.setVisibility(View.INVISIBLE); if (!topMap.containsKey(userId)) { TopUser topUser = new TopUser(); topUser.setTime(System.currentTimeMillis()); // 1---表示是群组0----个人 topUser.setType(0); topUser.setUserName(userId); Map<String, TopUser> map = new HashMap<String, TopUser>(); map.put(userId, topUser); topMap.putAll(map); TopUserDao topUserDao = new TopUserDao( ChatSingleSettingActivity.this); topUserDao.saveTopUser(topUser); } } break; default: break; } } /** * 把user移入到免打扰 */ private void moveToBlacklist(final String username) { new Thread(new Runnable() { public void run() { try { // 加入到黑名单 EMContactManager.getInstance().addUserToBlackList(username, false); runOnUiThread(new Runnable() { public void run() { progressDialog.dismiss(); iv_switch_block_groupmsg .setVisibility(View.VISIBLE); iv_switch_unblock_groupmsg .setVisibility(View.INVISIBLE); } }); } catch (final EaseMobException e) { e.printStackTrace(); runOnUiThread(new Runnable() { public void run() { progressDialog.dismiss(); Toast.makeText(getApplicationContext(), "设置失败,原因:" + e.toString(), Toast.LENGTH_SHORT).show(); } }); } } }).start(); } /** * 移出免打扰 * * @param tobeRemoveUser */ private void removeOutBlacklist(final String tobeRemoveUser) { try { // 移出黑民单 EMContactManager.getInstance().deleteUserFromBlackList( tobeRemoveUser); iv_switch_block_groupmsg.setVisibility(View.INVISIBLE); iv_switch_unblock_groupmsg.setVisibility(View.VISIBLE); } catch (EaseMobException e) { e.printStackTrace(); runOnUiThread(new Runnable() { public void run() { Toast.makeText(getApplicationContext(), "设置失败", Toast.LENGTH_SHORT).show(); } }); } } public void back(View v) { finish(); } }