package com.netease.nim.demo.chatroom.fragment; import android.os.Bundle; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; import com.netease.nim.demo.R; import com.netease.nim.demo.chatroom.activity.ChatRoomActivity; import com.netease.nim.demo.chatroom.helper.ChatRoomMemberCache; import com.netease.nim.demo.chatroom.widget.ChatRoomImageView; import com.netease.nim.uikit.cache.SimpleCallback; import com.netease.nim.uikit.common.fragment.TFragment; import com.netease.nim.uikit.common.util.log.LogUtil; import com.netease.nimlib.sdk.NIMClient; import com.netease.nimlib.sdk.RequestCallback; import com.netease.nimlib.sdk.chatroom.ChatRoomService; import com.netease.nimlib.sdk.chatroom.model.ChatRoomInfo; import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember; /** * 聊天室主播fragment * Created by hzxuwen on 2015/12/17. */ public class MasterFragment extends TFragment { private static final String TAG = MasterFragment.class.getSimpleName(); private ChatRoomImageView imageView; private TextView nameText; private TextView countText; private TextView announceText; private LinearLayout announceLayout; private LinearLayout noAnnounceLayout; private ChatRoomMember master; private long lastClickTime = 0; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.master_fragment, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); findViews(); } public void onCurrent() { if (!isFastClick()) { fetchRoomInfo(); } } /** * 频率控制,至少间隔一分钟 * @return */ private boolean isFastClick() { long current = System.currentTimeMillis(); long time = current - lastClickTime; if ( 0 < time && time < 60000) { return true; } lastClickTime = current; return false; } private void findViews() { imageView = findView(R.id.master_head_image); imageView.loadAvatarByUrl(""); // 网络不好的时候,设置一个默认头像 nameText = findView(R.id.master_name); countText = findView(R.id.online_total); announceText = findView(R.id.announce_content); announceLayout = findView(R.id.announce_layout); noAnnounceLayout = findView(R.id.no_announce_layout); } private void fetchRoomInfo() { String roomId = ((ChatRoomActivity) getActivity()).getRoomInfo().getRoomId(); NIMClient.getService(ChatRoomService.class).fetchRoomInfo(roomId).setCallback(new RequestCallback<ChatRoomInfo>() { @Override public void onSuccess(ChatRoomInfo param) { getChatRoomMaster(param); } @Override public void onFailed(int code) { LogUtil.d(TAG, "fetch room info failed:" + code); } @Override public void onException(Throwable exception) { LogUtil.d(TAG, "fetch room info exception:" + exception); } }); } private void getChatRoomMaster(final ChatRoomInfo roomInfo) { master = ChatRoomMemberCache.getInstance().getChatRoomMember(roomInfo.getRoomId(), roomInfo.getCreator()); if (master != null) { updateView(roomInfo); } else { ChatRoomMemberCache.getInstance().fetchMember(roomInfo.getRoomId(), roomInfo.getCreator(), new SimpleCallback<ChatRoomMember>() { @Override public void onResult(boolean success, ChatRoomMember result) { if (success) { master = result; updateView(roomInfo); } } }); } } private void updateView(ChatRoomInfo chatRoomInfo) { imageView.loadAvatarByUrl(master.getAvatar()); nameText.setText(TextUtils.isEmpty(master.getNick()) ? "" : master.getNick()); countText.setText(String.valueOf(chatRoomInfo.getOnlineUserCount())); if (TextUtils.isEmpty(chatRoomInfo.getAnnouncement())) { noAnnounceLayout.setVisibility(View.VISIBLE); announceLayout.setVisibility(View.GONE); } else { announceLayout.setVisibility(View.VISIBLE); noAnnounceLayout.setVisibility(View.GONE); announceText.setText(chatRoomInfo.getAnnouncement()); } } }