家族和公会分开

(cherry picked from commit 8ded103b68e24eb39a26f53e770c41ff627b200d)
This commit is contained in:
huangjian
2021-05-06 18:59:46 +08:00
parent 638f729d01
commit 456ccf77c9
16 changed files with 967 additions and 378 deletions

View File

@@ -940,6 +940,9 @@
<activity
android:name=".module_hall.hall.activity.ModuleHallActivity"
android:screenOrientation="portrait" />
<activity
android:name=".module_hall.hall.activity.ModuleClanActivity"
android:screenOrientation="portrait" />
<activity
android:name=".module_hall.hall.activity.IncomeStatisticsActivity"
android:screenOrientation="portrait" />

View File

@@ -451,7 +451,7 @@ public class HomePartyPresenter extends BaseMvpPresenter<IHomePartyView> {
} else {
getMvpView().onSendMsgSuccess();
IMNetEaseManager.get().addMessagesImmediately(chatRoomMessage);
Logger.i("发送房间信息成功:" + chatRoomMessage);
Logger.i("发送房间信息成功:" + chatRoomMessage.getUuid());
}
}
});

View File

@@ -17,6 +17,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.yizhuan.erban.module_hall.hall.activity.ModuleClanActivity;
import com.yizhuan.erban.ui.widget.rollviewpager.hintview.TextHintView;
import com.netease.nim.uikit.impl.cache.NimUserInfoCache;
import com.netease.nim.uikit.support.glide.GlideApp;
@@ -331,6 +332,10 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
mBinding.llHall.setLayoutParams(layoutParams);
mBinding.llHall.setBackgroundResource(R.drawable.bg_corner_shadow_12);
}
if (showApply) {
mBinding.tvApplyHall.setVisibility(View.VISIBLE);
mBinding.tvApplyHall.setOnClickListener(v -> applyJoinHall(hallInfo.getHallId()));
}
} else {
mBinding.llHall.setVisibility(View.GONE);
}
@@ -354,21 +359,17 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
.load(clanInfo.getLevelIcon())
.placeholder(R.drawable.default_cover)
.into(mBinding.ivClanLevel);
if (showApply) {
mBinding.tvApplyHall.setVisibility(View.VISIBLE);
mBinding.tvApplyHall.setOnClickListener(v -> applyJoinHall(hallInfo.getHallId()));
}
} else {
mBinding.llClan.setVisibility(View.GONE);
}
mBinding.llModuleHall.setOnClickListener(v -> {
//如果是同一个公会的,则认为是主态
if (hallInfo != null && hallInfo.getHallId() != 0 && hallInfo.getHallId() == HallDataManager.get().getHallId()) {
ModuleHallActivity.start(context);
} else {
ModuleHallActivity.start(context, userId);
mBinding.llHall.setOnClickListener(v -> {
if (hallInfo != null && hallInfo.getHallId() != 0) {
ModuleHallActivity.start(context, hallInfo.getHallId(),hallInfo.getOwnerUid(),userId);
}
});
mBinding.llClan.setOnClickListener(v -> {
ModuleClanActivity.start(context, userId);
});
});
}

View File

@@ -364,8 +364,7 @@ public class ImageLoadUtils {
GlideApp.with(context.getApplicationContext()).load(url)
.dontAnimate()
.placeholder(defaultRes)
.transforms(new CenterCrop(),
new RoundedCorners(cornerRadius))
.transform(new CenterCrop(), new RoundedCorners(cornerRadius))
.error(defaultRes)
.into(imageView);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,558 @@
package com.yizhuan.erban.module_hall.hall.activity;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.core.widget.NestedScrollView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.netease.nim.uikit.support.glide.GlideApp;
import com.orhanobut.logger.Logger;
import com.yizhuan.erban.R;
import com.yizhuan.erban.UIHelper;
import com.yizhuan.erban.base.BaseMvpActivity;
import com.yizhuan.erban.common.widget.dialog.DialogManager;
import com.yizhuan.erban.friend.action.AbstractSelectFriendAction;
import com.yizhuan.erban.module_hall.HallDataManager;
import com.yizhuan.erban.module_hall.hall.adapter.GroupMemberListAdapter;
import com.yizhuan.erban.module_hall.hall.adapter.HallListAdapter;
import com.yizhuan.erban.module_hall.hall.presenter.ModuleHallPresenter;
import com.yizhuan.erban.module_hall.hall.view.IModuleHallView;
import com.yizhuan.erban.module_hall.hall.view.dialog.HallMenuDialog;
import com.yizhuan.erban.ui.user.UserInfoActivity;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.erban.ui.utils.RVDelegate;
import com.yizhuan.erban.ui.widget.ButtonItem;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.module_hall.hall.HallModel;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.AuthInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ClanInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.HallInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.MemberInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.OptionInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.RoleType;
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_core.utils.net.RxHelper;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import com.yizhuan.xchat_android_library.utils.ScreenUtils;
import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
import org.greenrobot.eventbus.EventBus;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
/**
* 模厅界面
*/
@CreatePresenter(ModuleHallPresenter.class)
public class ModuleClanActivity extends BaseMvpActivity<IModuleHallView, ModuleHallPresenter>
implements IModuleHallView {
@BindView(R.id.rv_hall)
RecyclerView rvHall;
@BindView(R.id.ll_hall_list)
View llHallList;
@BindView(R.id.tv_clan_member_count)
TextView tvClanMemberCount;
@BindView(R.id.srl_group)
SwipeRefreshLayout mSrlGroup;
@BindView(R.id.recycler_view)
RecyclerView recyclerView;
@BindView(R.id.tv_count)
TextView tvCount;
@BindView(R.id.iv_hall_member_more)
ImageView ivHallMemberMore;
@BindView(R.id.iv_hall_member_search)
ImageView ivHallMemberSearch;
@BindView(R.id.tv_title)
TextView tvTitle;
@BindView(R.id.iv_setting)
ImageView ivSetting;
@BindView(R.id.cl_clan)
View clClan;
@BindView(R.id.tv_clan_id)
TextView tvClanId;
@BindView(R.id.tv_clan_owner_name)
TextView tvClanOwnerName;
@BindView(R.id.iv_clan_avatar)
ImageView ivClanAvatar;
@BindView(R.id.iv_avatar_bg)
ImageView ivAvatarBg;
@BindView(R.id.iv_clan_level)
ImageView ivClanLevel;
@BindView(R.id.nsv_hall)
NestedScrollView nsvHall;
private GroupMemberListAdapter mGroupMemberListAdapter;
private List<AuthInfo> mAuthInfoList;
private HallListAdapter hallListAdapter;
private RVDelegate<HallInfo> rvDelegate;
@Nullable
private ClanInfo clanInfo;
private int page = 100;
private final int pageSize = 20;
private boolean isLoading;
private long lastClickTime;
private final static String KEY_OTHER_UID = "key_other_uid";
private boolean isSelfClan;
private long otherUid;
public static void start(Context context, long uid) {
Intent intent = new Intent(context, ModuleClanActivity.class);
intent.putExtra(KEY_OTHER_UID, uid);
context.startActivity(intent);
}
public static void start(Context context) {
StatisticManager.Instance().onEvent(BasicConfig.INSTANCE.getAppContext(),
StatisticsProtocol.Event.MY_HALL_CLICK, "我的厅入口", null);
start(context, AuthModel.get().getCurrentUid());
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_module_clan);
ButterKnife.bind(this);
otherUid = getIntent().getLongExtra(KEY_OTHER_UID, AuthModel.get().getCurrentUid());
isSelfClan = otherUid == AuthModel.get().getCurrentUid();
recyclerView.setLayoutManager(new LinearLayoutManager(this));
mSrlGroup.setOnRefreshListener(() -> {
if (isLoading) {
return;
}
loadMembers(true);
});
recyclerView.setLayoutManager(new LinearLayoutManager(this));
mGroupMemberListAdapter = new GroupMemberListAdapter(this, null);
mGroupMemberListAdapter.setOnItemChildClickListener((adapter, view, position) -> {
List<MemberInfo> memberInfoList = mGroupMemberListAdapter.getData();
if (memberInfoList.size() > 0) {
MemberInfo memberInfo = memberInfoList.get(position);
int type = mGroupMemberListAdapter.getmType();
if (type == GroupMemberListAdapter.TYPE_REMOVE) {
if (view.getId() == R.id.iv_remove) {
showRemoveDialog(memberInfo.getUid(), memberInfo.getRoleType(), memberInfo.getNick());
}
} else {
UIHelper.showUserInfoAct(ModuleClanActivity.this, memberInfo.getUid());
}
}
});
mGroupMemberListAdapter.setOnLoadMoreListener(() -> loadMembers(false), recyclerView);
recyclerView.setAdapter(mGroupMemberListAdapter);
setTvCount(0);
if (isSelfClan) {
getMvpPresenter().getHallAuths();
} else {
ivHallMemberSearch.setVisibility(View.GONE);
}
EventBus.getDefault().register(this);
nsvHall.setNestedScrollingEnabled(false);
initClanAndHall();
setMoreOption(HallDataManager.get().isManager() && isSelfClan);
}
@SuppressLint({"CheckResult", "SetTextI18n"})
private void initClanAndHall() {
//没有家族才更新顶部公会名,有的话重新加载公会列表
HallDataManager.get().registerName(this, hallName -> {
if (TextUtils.isEmpty(hallName)) return;
if (clanInfo == null || clanInfo.getId() == 0) {
tvTitle.setText(hallName);
} else {
loadHallList();
}
});
HallModel.get().getUserHallAndClan(otherUid)
.compose(bindToLifecycle())
.subscribe(clanAndHallInfo -> {
if (isSelfClan) {
HallDataManager.get().updateHallInfo(clanAndHallInfo);
}
setSettingOption(HallDataManager.get().isClanElder() && isSelfClan);
clanInfo = clanAndHallInfo.getClan();
if (clanInfo != null && clanInfo.getId() != 0) {
clClan.setVisibility(View.VISIBLE);
clClan.setOnClickListener(v -> UserInfoActivity.Companion.start(context, clanInfo.getElderUid()));
tvClanId.setText("家族ID:" + clanInfo.getId());
tvClanOwnerName.setText(clanInfo.getElderName());
tvTitle.setText(clanInfo.getName());
ImageLoadUtils.loadRectImage(context,clanInfo.getAvatar(),ivClanAvatar,R.drawable.default_avatar, ScreenUtil.dip2px(8));
ImageLoadUtils.loadImage(context, clanInfo.getLevelIcon(), ivClanLevel);
GlideApp.with(ivAvatarBg.getContext())
.load(clanInfo.getAvatar())
.placeholder(R.drawable.default_avatar)
.into(ivAvatarBg);
loadHallList();
} else {
clClan.setVisibility(View.GONE);
}
});
}
@SuppressLint({"CheckResult", "SetTextI18n"})
private void loadHallList() {
if (clanInfo == null) return;
HallModel.get().getClanHallList(clanInfo.getId())
.compose(bindToLifecycle())
.subscribe(hallInfos -> {
if (ListUtils.isListEmpty(hallInfos)) {
llHallList.setVisibility(View.GONE);
return;
}
if (rvDelegate == null) {
rvDelegate = new RVDelegate.Builder<HallInfo>()
.setAdapter(hallListAdapter = new HallListAdapter())
.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false))
.setRecyclerView(rvHall)
.build();
hallListAdapter.setOnItemClickListener((adapter, view, position) -> {
HallInfo hallInfo = hallListAdapter.getItem(position);
if (hallInfo != null) {
ModuleHallActivity.start(context, hallInfo.getHallId(),hallInfo.getOwnerUid(), otherUid);
}
});
}
llHallList.setVisibility(View.VISIBLE);
tvClanMemberCount.setText("公会列表(" + hallInfos.size() + ")");
rvDelegate.setNewData(hallInfos);
});
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
/**
* 设置权限, 房主才展示
*
* @param visibility true:显示
*/
private void setSettingOption(boolean visibility) {
if (visibility) {
ivSetting.setVisibility(View.VISIBLE);
} else {
ivSetting.setVisibility(View.GONE);
}
}
private void setMoreOption(boolean hasOption) {
if (hasOption) {
ivHallMemberMore.setVisibility(View.VISIBLE);
} else {
ivHallMemberMore.setVisibility(View.GONE);
}
}
@Override
public void onReloadDate() {
super.onReloadDate();
loadMembers(true);
}
private long mTargetUid;
private void showRemoveDialog(long targetUid, int targetRoleType, String targetNick) {
mTargetUid = targetUid;
SpannableString spannableString = getMvpPresenter().getRemoveTips(this, targetRoleType, targetNick);
getDialogManager().showOkCancelWithTitleDialog("提示", spannableString, "确定", "取消", new DialogManager.OkCancelDialogListener() {
@Override
public void onCancel() {
mTargetUid = -1;
statusNone();
}
@Override
public void onOk() {
getMvpPresenter().remove(targetUid);
}
});
}
private void statusNone() {
mGroupMemberListAdapter.setmType(GroupMemberListAdapter.TYPE_NONE);
mGroupMemberListAdapter.notifyDataSetChanged();
}
@SuppressLint("CheckResult")
private void loadMembers(boolean refresh) {
page = refresh ? 1 : (page + 1);
isLoading = true;
HallModel.get().getClanAllMembers(otherUid, page, pageSize)
.compose(RxHelper.bindActivity(this))
.subscribe((listMemberInfo, throwable) -> {
mSrlGroup.setRefreshing(false);
isLoading = false;
if (throwable != null) {
Logger.i("模厅成员加载失败...");
if (refresh) {
showNetworkErr();
}
} else {
int count = listMemberInfo.getCount();
setTvCount(count);
List<MemberInfo> list = listMemberInfo.getMembers();
if (list == null) {
list = new ArrayList<>();
}
if (list.size() == 0) {
if (refresh) {
showNoData();
} else {
mGroupMemberListAdapter.loadMoreEnd();
}
} else {
hideStatus();
if (refresh) {
mGroupMemberListAdapter.setNewData(list);
mGroupMemberListAdapter.disableLoadMoreIfNotFullPage();
} else {
mGroupMemberListAdapter.addData(list);
}
if (list.size() < 20) {
mGroupMemberListAdapter.loadMoreEnd();
} else {
mGroupMemberListAdapter.loadMoreComplete();
}
}
}
});
}
private int mCount;
private void setTvCount(int count) {
mCount = count;
tvCount.setText("成员列表(" + mCount + "人)");
}
@Override
public void hallMenusByUidSuccess(List<OptionInfo> optionInfoList) {
}
@Override
public void hallMenusByUidFail(String message) {
}
@Override
public void getHallAuthsSuccess(List<AuthInfo> authInfoList) {
mAuthInfoList = authInfoList;
}
@Override
public void getHallAuthsFail(String message) {
}
@Override
public void quitSuccess(String message) {
toast(message);
}
@Override
public void quitFail(String message) {
toast(message);
}
@Override
public void getAllMembersSuccess(List<MemberInfo> memberInfoList) {
hideStatus();
mGroupMemberListAdapter.setNewData(memberInfoList);
}
@Override
public void getAllMembersFail(String message) {
hideStatus();
showNoData();
}
@Override
public void removeSuccess(String message) {
if (mTargetUid == -1)
return;
List<MemberInfo> memberInfoList = mGroupMemberListAdapter.getData();
if (memberInfoList.size() > 0) {
for (MemberInfo memberInfo : memberInfoList) {
if (memberInfo.getUid() == mTargetUid) {
memberInfoList.remove(memberInfo);
if (mCount > 0) {
mCount--;
setTvCount(mCount);
}
break;
}
}
}
statusNone();
mTargetUid = -1;
}
@Override
public void removeFail(String message) {
mTargetUid = -1;
toast(message);
}
@OnClick({R.id.iv_hall_member_search, R.id.iv_hall_member_more, R.id.iv_back, R.id.iv_setting})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.iv_hall_member_search:
MemberSearchActivity.start(ModuleClanActivity.this);
break;
case R.id.iv_hall_member_more:
//防双击
long currTime = System.currentTimeMillis();
if (currTime - lastClickTime < 1000) {
return;
}
lastClickTime = currTime;
moreOption(mAuthInfoList);
break;
case R.id.iv_back:
finish();
break;
case R.id.iv_setting:
if (HallDataManager.get().getRoleType() == RoleType.OWNER) {
showMenuDialog(view);
}
break;
}
}
private void moreOption(List<AuthInfo> authInfoList) {
if (authInfoList != null && authInfoList.size() > 0) {
List<ButtonItem> list_adapter = new ArrayList<>();
for (AuthInfo authInfo : authInfoList) {
if (authInfo.getCode().equals(AuthInfo.AUTH_APPLY_HALL_EXIT)) {
continue;
}
if (authInfo.isOwnAuth()) {
ButtonItem item = new ButtonItem(authInfo.getName(), () -> {
jumpCode(authInfo.getCode());
});
list_adapter.add(item);
}
}
getDialogManager().showCommonPopupDialog(list_adapter, "取消");
} else {
toast("未分配权限");
}
}
private void showMenuDialog(View attachView) {
List<AuthInfo> authInfoList = new ArrayList<>();
AuthInfo incomeAuth = new AuthInfo();
incomeAuth.setCode(AuthInfo.AUTH_HALL_CLAN_INCOME);
incomeAuth.setName("公会收入");
incomeAuth.setStatus(1);
authInfoList.add(incomeAuth);
HallMenuDialog dialog = new HallMenuDialog(this, attachView, authInfoList, false);
dialog.setOnMenuClickListener(this::jumpCode);
dialog.show();
}
private void jumpCode(String code) {
switch (code) {
case AuthInfo.AUTH_APPLY_HALL_EXIT:
showExitDialog();
break;
case AuthInfo.AUTH_MEMBER_JOIN_MANAGER:
HallSearchActivity.start(context, AbstractSelectFriendAction.TYPE_MODULE_HALL);
break;
case AuthInfo.AUTH_MEMBER_EXIT_MANAGER:
RemoveMemberListActivity.start(ModuleClanActivity.this);
break;
case AuthInfo.AUTH_HALL_MANAGER_SET:
AdminListActivity.start(ModuleClanActivity.this);
break;
case AuthInfo.AUTH_HALL_NAME_SET:
HallNameSettingActivity.start(ModuleClanActivity.this);
break;
case AuthInfo.AUTH_HALL_CLAN_INCOME:
if (clanInfo != null) {
ClanIncomeActivity.start(this, clanInfo.getId());
}
break;
default:
Logger.e("本版本不能识别的权限");
break;
}
}
private void showExitDialog() {
CharSequence text = getMvpPresenter().getExitTips(this);
getDialogManager().showOkCancelDialog(text, new DialogManager.OkCancelDialogListener() {
@Override
public void onCancel() {
}
@Override
public void onOk() {
getMvpPresenter().quit();
}
});
}
@Override
protected void onResume() {
super.onResume();
onReloadDate();
}
@Override
protected boolean needSteepStateBar() {
return true;
}
@Override
protected void setStatusBar() {
super.setStatusBar();
StatusBarUtil.transparencyBar(this);
StatusBarUtil.StatusBarLightMode(this);
}
}

View File

@@ -11,7 +11,6 @@ import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.core.widget.NestedScrollView;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -28,13 +27,11 @@ import com.yizhuan.erban.common.widget.dialog.DialogManager;
import com.yizhuan.erban.friend.action.AbstractSelectFriendAction;
import com.yizhuan.erban.module_hall.HallDataManager;
import com.yizhuan.erban.module_hall.hall.adapter.GroupMemberListAdapter;
import com.yizhuan.erban.module_hall.hall.adapter.HallListAdapter;
import com.yizhuan.erban.module_hall.hall.adapter.OptionAdapter;
import com.yizhuan.erban.module_hall.hall.presenter.ModuleHallPresenter;
import com.yizhuan.erban.module_hall.hall.view.IModuleHallView;
import com.yizhuan.erban.module_hall.hall.view.dialog.HallMenuDialog;
import com.yizhuan.erban.ui.user.UserInfoActivity;
import com.yizhuan.erban.ui.utils.RVDelegate;
import com.yizhuan.erban.ui.webview.CommonWebViewActivity;
import com.yizhuan.erban.ui.widget.ButtonItem;
import com.yizhuan.xchat_android_core.auth.AuthModel;
@@ -49,7 +46,6 @@ import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_core.utils.net.RxHelper;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
import org.greenrobot.eventbus.EventBus;
@@ -71,12 +67,6 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
@BindView(R.id.rv_option)
RecyclerView mRvOption;
@BindView(R.id.rv_hall)
RecyclerView rvHall;
@BindView(R.id.ll_hall_list)
View llHallList;
@BindView(R.id.tv_clan_member_count)
TextView tvClanMemberCount;
@BindView(R.id.srl_group)
SwipeRefreshLayout mSrlGroup;
@BindView(R.id.recycler_view)
@@ -93,57 +83,44 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
ImageView ivSetting;
@BindView(R.id.tv_hall_id)
TextView tvHallId;
@BindView(R.id.tv_hall_owner_uid)
TextView tvOwnerUid;
@BindView(R.id.tv_hall_owner_name)
TextView tvOwnerName;
@BindView(R.id.iv_hall_avatar)
ImageView ivAvatar;
@BindView(R.id.cl_clan)
View clClan;
@BindView(R.id.cl_hall)
View clHall;
@BindView(R.id.tv_clan_id)
TextView tvClanId;
@BindView(R.id.tv_clan_owner_uid)
TextView tvClanOwnerUid;
@BindView(R.id.tv_clan_owner_name)
TextView tvClanOwnerName;
@BindView(R.id.iv_clan_avatar)
ImageView ivClanAvatar;
@BindView(R.id.iv_avatar_bg)
ImageView ivAvatarBg;
@BindView(R.id.nsv_hall)
NestedScrollView nsvHall;
@BindView(R.id.tv_owner_clan)
TextView tvOwnerClan;
private OptionAdapter mOptionAdapter;
private GroupMemberListAdapter mGroupMemberListAdapter;
private List<AuthInfo> mAuthInfoList;
private HallListAdapter hallListAdapter;
private RVDelegate<HallInfo> rvDelegate;
@Nullable
private ClanInfo clanInfo;
private int page = 100;
private final int pageSize = 20;
private boolean isLoading;
private long lastClickTime;
private final static String KEY_HALL_ID = "key_hall_id";
private final static String KEY_OWNER_UID = "key_owner_uid";
private final static String KEY_OTHER_UID = "key_other_uid";
private boolean isSelf;
private long uid;
private boolean isSelfHall;
private long hallId;
private long ownerUid;
private long otherUid;
public static void start(Context context, long uid) {
public static void start(Context context, long hallId, long ownerUid,long otherUid) {
Intent intent = new Intent(context, ModuleHallActivity.class);
intent.putExtra(KEY_OTHER_UID, uid);
intent.putExtra(KEY_HALL_ID, hallId);
intent.putExtra(KEY_OWNER_UID, ownerUid);
intent.putExtra(KEY_OTHER_UID, otherUid);
context.startActivity(intent);
}
public static void start(Context context) {
StatisticManager.Instance().onEvent(BasicConfig.INSTANCE.getAppContext(),
StatisticsProtocol.Event.MY_HALL_CLICK, "我的厅入口", null);
start(context, AuthModel.get().getCurrentUid());
start(context, HallModel.get().getHallId(), AuthModel.get().getCurrentUid(),AuthModel.get().getCurrentUid());
}
@Override
@@ -151,8 +128,10 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_module_hall);
ButterKnife.bind(this);
uid = getIntent().getLongExtra(KEY_OTHER_UID, AuthModel.get().getCurrentUid());
isSelf = uid == AuthModel.get().getCurrentUid();
hallId = getIntent().getLongExtra(KEY_HALL_ID, HallModel.get().getHallId());
ownerUid = getIntent().getLongExtra(KEY_OWNER_UID, AuthModel.get().getCurrentUid());
otherUid = getIntent().getLongExtra(KEY_OTHER_UID, AuthModel.get().getCurrentUid());
isSelfHall = hallId == HallModel.get().getHallId();
recyclerView.setLayoutManager(new LinearLayoutManager(this));
mSrlGroup.setOnRefreshListener(() -> {
@@ -179,53 +158,42 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
}
});
mGroupMemberListAdapter.setOnLoadMoreListener(() -> loadMembers(false), recyclerView);
recyclerView.setAdapter(mGroupMemberListAdapter);
setTvCount(0);
if (isSelf) {
if (HallDataManager.get().isManager() && isSelfHall) {
getMvpPresenter().getHallAuths();
getMvpPresenter().getHallMenusByUid(uid);
getMvpPresenter().getHallMenusByUid(AuthModel.get().getCurrentUid());
} else {
ivHallMemberSearch.setVisibility(View.GONE);
}
EventBus.getDefault().register(this);
nsvHall.setNestedScrollingEnabled(false);
initClanAndHall();
setMoreOption(HallDataManager.get().isManager() && isSelf);
setMoreOption(HallDataManager.get().isManager() && isSelfHall);
}
@SuppressLint({"CheckResult", "SetTextI18n"})
private void initClanAndHall() {
//没有家族才更新顶部公会名,有的话重新加载公会列表
HallDataManager.get().registerName(this, hallName -> {
if (TextUtils.isEmpty(hallName)) return;
if (clanInfo == null || clanInfo.getId() == 0) {
tvTitle.setText(hallName);
} else {
loadHallList();
}
tvTitle.setText(hallName);
});
HallModel.get().getUserHallAndClan(uid)
HallModel.get().getUserHallAndClan(ownerUid)
.compose(bindToLifecycle())
.subscribe(clanAndHallInfo -> {
if (isSelf) {
HallDataManager.get().updateHallInfo(clanAndHallInfo);
}
//如果用户只是族长而且不是会长,隐藏设置,游客也需要隐藏
setSettingOption((HallDataManager.get().isClanElder() &&
HallDataManager.get().getRoleType() != RoleType.OWNER) || !isSelf);
clanInfo = clanAndHallInfo.getClan();
String bgUrl = "";
HallInfo hallInfo = clanAndHallInfo.getHall();
ClanInfo clanInfo = clanAndHallInfo.getClan();
if (clanInfo != null && clanInfo.getId() != 0) {
tvOwnerClan.setVisibility(View.VISIBLE);
tvOwnerClan.setOnClickListener(v -> ModuleClanActivity.start(context,otherUid));
}
setSettingOption(HallDataManager.get().getRoleType() != RoleType.OWNER || !isSelfHall);
if (hallInfo != null && hallInfo.getHallId() != 0) {
clHall.setVisibility(View.VISIBLE);
clHall.setOnClickListener(v -> UserInfoActivity.Companion.start(context, hallInfo.getOwnerUid()));
bgUrl = hallInfo.getOwnerAvatar();
tvHallId.setText("公会ID:" + hallInfo.getHallId() + "");
tvOwnerUid.setText("音游号:" + hallInfo.getOwnerErbanNo());
tvOwnerName.setText(hallInfo.getOwnerNick());
tvTitle.setText(hallInfo.getHallName());
GlideApp.with(ivAvatar.getContext())
.load(hallInfo.getOwnerAvatar())
@@ -234,59 +202,9 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
} else {
clHall.setVisibility(View.GONE);
}
if (clanInfo != null && clanInfo.getId() != 0) {
clClan.setVisibility(View.VISIBLE);
clClan.setOnClickListener(v -> UserInfoActivity.Companion.start(context, clanInfo.getElderUid()));
bgUrl = clanInfo.getAvatar();
tvClanId.setText("家族ID:" + clanInfo.getId());
tvClanOwnerUid.setText("音游号:" + clanInfo.getElderErbanNo());
tvClanOwnerName.setText(clanInfo.getElderName());
tvTitle.setText(clanInfo.getName());
GlideApp.with(ivClanAvatar.getContext())
.load(clanInfo.getAvatar())
.placeholder(R.drawable.default_avatar)
.into(ivClanAvatar);
loadHallList();
} else {
clClan.setVisibility(View.GONE);
}
GlideApp.with(ivAvatarBg.getContext())
.load(bgUrl)
.placeholder(R.drawable.default_avatar)
.into(ivAvatarBg);
});
}
@SuppressLint({"CheckResult", "SetTextI18n"})
private void loadHallList() {
if (clanInfo == null) return;
HallModel.get().getClanHallList(clanInfo.getId())
.compose(bindToLifecycle())
.subscribe(hallInfos -> {
if (ListUtils.isListEmpty(hallInfos)) {
llHallList.setVisibility(View.GONE);
return;
}
if (rvDelegate == null) {
rvDelegate = new RVDelegate.Builder<HallInfo>()
.setAdapter(hallListAdapter = new HallListAdapter())
.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false))
.setRecyclerView(rvHall)
.build();
hallListAdapter.setOnItemClickListener((adapter, view, position) -> {
HallInfo hallInfo = hallListAdapter.getItem(position);
if (hallInfo != null) {
HallMemberListActivity.start(context, hallInfo.getHallName(), hallInfo.getHallId());
}
});
}
llHallList.setVisibility(View.VISIBLE);
tvClanMemberCount.setText("公会列表(" + hallInfos.size() + ")");
rvDelegate.setNewData(hallInfos);
});
}
@Override
protected void onDestroy() {
@@ -340,13 +258,6 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
} else {
IncomeStatisticsActivity.start(ModuleHallActivity.this);
}
} else if (OptionInfo.OPTION_GUILD_INCOME.equals(optionInfo.getCode())) {
if (!TextUtils.isEmpty(optionInfo.getUrl())) {
CommonWebViewActivity.start(ModuleHallActivity.this, optionInfo.getUrl());
} else {
ClanIncomeActivity.start(ModuleHallActivity.this, clanInfo.getId());
}
} else if (OptionInfo.OPTION_HALL_BUILD.equals(optionInfo.getCode())) {
Log.i("option", "do nothing");
} else if (OptionInfo.OPTION_ADD_HALL_MEMBER_WITH_PWD.equals(optionInfo.getCode())) {
@@ -361,7 +272,6 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
String url = optionInfo.getUrl();
if (!TextUtils.isEmpty(url))
CommonWebViewActivity.start(ModuleHallActivity.this, optionInfo.getUrl());
} else {
toast("请更新到最新版本");
}
@@ -406,7 +316,7 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
private void loadMembers(boolean refresh) {
page = refresh ? 1 : (page + 1);
isLoading = true;
HallModel.get().getClanAllMembers(uid, page, pageSize)
HallModel.get().getAllMembers(hallId, page, pageSize)
.compose(RxHelper.bindActivity(this))
.subscribe((listMemberInfo, throwable) -> {
mSrlGroup.setRefreshing(false);
@@ -508,15 +418,12 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
for (MemberInfo memberInfo : memberInfoList) {
if (memberInfo.getUid() == mTargetUid) {
memberInfoList.remove(memberInfo);
if (mCount > 0) {
mCount--;
setTvCount(mCount);
}
break;
}
}
}
@@ -666,5 +573,6 @@ public class ModuleHallActivity extends BaseMvpActivity<IModuleHallView, ModuleH
protected void setStatusBar() {
super.setStatusBar();
StatusBarUtil.transparencyBar(this);
StatusBarUtil.StatusBarLightMode(this);
}
}

View File

@@ -14,6 +14,7 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import com.yizhuan.erban.R;
import com.yizhuan.erban.module_hall.hall.activity.ClanIncomeActivity;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.AuthInfo;
import com.yizhuan.xchat_android_library.utils.SizeUtils;
@@ -127,6 +128,14 @@ public class HallMenuDialog extends Dialog implements View.OnClickListener {
break;
case AuthInfo.AUTH_HALL_MANAGER_SET:
ivMenu.setImageResource(R.drawable.ic_set_admin);
break;
case AuthInfo.AUTH_HALL_CLAN_INCOME:
LinearLayout.LayoutParams clanLayoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
clanLayoutParams.setMargins(0, 0, SizeUtils.dp2px(mContext, 15), 0);
clanLayoutParams.gravity = Gravity.END;
ivTopArrow.setLayoutParams(clanLayoutParams);
ivMenu.setImageResource(R.drawable.ic_set_admin);
break;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/color_66000000" />
<corners
android:bottomLeftRadius="10dp"
android:bottomRightRadius="0dp"
android:topLeftRadius="10dp"
android:topRightRadius="0dp" />
</shape>

View File

@@ -0,0 +1,288 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.yizhuan.erban.module_hall.hall.activity.ModuleHallActivity">
<androidx.core.widget.NestedScrollView
android:id="@+id/nsv_hall"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.yizhuan.erban.module_hall.hall.activity.ModuleHallActivity">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/fl_top_bg"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintDimensionRatio="750:497"
app:layout_constraintTop_toTopOf="parent">
<com.yizhuan.erban.ui.widget.EdgeTransparentView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:edge_position="bottom">
<ImageView
android:id="@+id/iv_avatar_bg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop" />
</com.yizhuan.erban.ui.widget.EdgeTransparentView>
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/bg_userinfo_photo_cover" />
</FrameLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_clan"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="80dp"
android:orientation="horizontal"
android:visibility="visible"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/iv_clan_avatar"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_marginStart="30dp"
android:layout_marginBottom="5dp"
android:src="@drawable/default_cover"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/iv_clan_avatar"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tv_clan_owner_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:maxEms="6"
android:textColor="@color/white"
android:textSize="@dimen/sp_15"
tools:text="我是会长" />
<TextView
android:id="@+id/tv_clan_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:textColor="@color/white_transparent_60"
android:textSize="@dimen/sp_11"
tools:text="家族ID:123456" />
</LinearLayout>
<ImageView
android:id="@+id/iv_clan_level"
android:layout_width="71dp"
android:layout_height="64dp"
android:layout_marginEnd="42dp"
android:scaleType="centerCrop"
android:src="@drawable/default_cover"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_option"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_30"
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:visibility="gone"
app:layout_constraintTop_toBottomOf="@id/cl_clan"
tools:itemCount="1"
tools:listitem="@layout/item_tab_small" />
<LinearLayout
android:id="@+id/ll_hall_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_13"
android:layout_marginEnd="@dimen/dp_15"
android:background="@drawable/bg_corner_shadow_12"
android:orientation="vertical"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:paddingBottom="17dp"
android:visibility="gone"
app:layout_constraintTop_toBottomOf="@id/rv_option"
app:layout_goneMarginTop="30dp"
tools:visibility="visible">
<TextView
android:id="@+id/tv_clan_member_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_10"
android:paddingStart="7dp"
android:paddingTop="10dp"
android:paddingEnd="14dp"
android:paddingBottom="5dp"
android:textColor="@color/color_333333"
android:textSize="15dp"
tools:text="公会列表(8)" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_hall"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_member_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_13"
android:layout_marginEnd="@dimen/dp_15"
android:layout_marginBottom="@dimen/dp_15"
android:background="@drawable/bg_corner_shadow_12"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_hall_list">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:paddingStart="15dp"
android:paddingEnd="15dp">
<TextView
android:id="@+id/tv_count"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:text="总人数:0人"
android:textColor="@color/color_333333"
android:textSize="15dp" />
<ImageView
android:id="@+id/iv_hall_member_search"
android:layout_width="30dp"
android:layout_height="30dp"
android:scaleType="center"
android:src="@drawable/ic_hall_member_search" />
<ImageView
android:id="@+id/iv_hall_member_more"
android:layout_width="30dp"
android:layout_height="30dp"
android:scaleType="center"
android:src="@drawable/ic_hall_member_more"
android:visibility="gone"
tools:visibility="visible" />
</LinearLayout>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/srl_group"
android:layout_width="match_parent"
android:layout_height="450dp"
android:layout_marginBottom="@dimen/dp_20">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
<androidx.appcompat.widget.Toolbar
android:id="@+id/tb_hall"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginTop="20dp"
android:visibility="visible"
app:contentInsetStart="0dp"
app:layout_collapseMode="pin"
app:layout_constraintTop_toTopOf="parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingLeft="15dp"
android:paddingRight="15dp">
<ImageView
android:id="@+id/iv_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:src="@drawable/icon_user_back" />
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:textColor="@color/white"
android:textSize="18sp"
android:visibility="visible" />
<ImageView
android:id="@+id/iv_setting"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:src="@drawable/ic_setting"
android:visibility="gone" />
<TextView
android:id="@+id/tv_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:text="编辑"
android:textColor="@color/color_999999"
android:textSize="@dimen/sp_13"
android:visibility="gone" />
</RelativeLayout>
</androidx.appcompat.widget.Toolbar>
</RelativeLayout>

View File

@@ -10,288 +10,94 @@
android:id="@+id/nsv_hall"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/bg_normal_1c1b22"
tools:context="com.yizhuan.erban.module_hall.hall.activity.ModuleHallActivity">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/fl_top_bg"
<ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintDimensionRatio="750:497"
app:layout_constraintTop_toTopOf="parent">
<com.yizhuan.erban.ui.widget.EdgeTransparentView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:edge_position="bottom">
<ImageView
android:id="@+id/iv_avatar_bg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop" />
</com.yizhuan.erban.ui.widget.EdgeTransparentView>
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/bg_userinfo_photo_cover" />
</FrameLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_clan"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="80dp"
android:orientation="horizontal"
android:visibility="visible"
app:layout_constraintEnd_toStartOf="@id/cl_hall"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<View
android:layout_width="66dp"
android:layout_height="66dp"
android:background="@drawable/shape_ffa768_stroke_1dp"
app:layout_constraintBottom_toBottomOf="@id/iv_clan_avatar"
app:layout_constraintEnd_toEndOf="@id/iv_clan_avatar"
app:layout_constraintStart_toStartOf="@id/iv_clan_avatar"
app:layout_constraintTop_toTopOf="@id/iv_clan_avatar" />
<com.yizhuan.erban.common.widget.CircleImageView
android:id="@+id/iv_clan_avatar"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginStart="17dp"
android:layout_marginBottom="5dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.coorchice.library.SuperTextView
android:layout_width="35dp"
android:layout_height="15dp"
android:gravity="center"
android:text="族长"
android:textColor="#ffffffff"
android:textSize="11sp"
app:corner="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@id/iv_clan_avatar"
app:layout_constraintStart_toStartOf="@id/iv_clan_avatar"
app:shaderEnable="true"
app:shaderEndColor="#FFBC59"
app:shaderMode="leftToRight"
app:shaderStartColor="#FF8F57" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/iv_clan_avatar"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tv_clan_owner_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:maxEms="6"
android:textColor="@color/text_title_white"
android:textSize="@dimen/sp_15"
tools:text="我是会长" />
<TextView
android:id="@+id/tv_clan_owner_uid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_6"
android:textColor="@color/text_normal_c6c6e9"
android:textSize="@dimen/sp_11"
tools:text="音游号:3979655" />
<TextView
android:id="@+id/tv_clan_id"
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_normal_c6c6e9"
android:textSize="@dimen/sp_11"
tools:text="家族ID:123456" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
android:layout_height="match_parent"
android:background="@drawable/bg_hall_top"
android:scaleType="centerCrop" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_hall"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="80dp"
android:layout_marginTop="70dp"
android:orientation="horizontal"
android:visibility="visible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/cl_clan"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<View
android:layout_width="66dp"
android:layout_height="66dp"
android:background="@drawable/shape_7154ee_stroke_1dp"
app:layout_constraintBottom_toBottomOf="@id/iv_hall_avatar"
app:layout_constraintEnd_toEndOf="@id/iv_hall_avatar"
app:layout_constraintStart_toStartOf="@id/iv_hall_avatar"
app:layout_constraintTop_toTopOf="@id/iv_hall_avatar" />
<com.yizhuan.erban.common.widget.CircleImageView
android:id="@+id/iv_hall_avatar"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginStart="10dp"
android:layout_marginBottom="5dp"
android:layout_width="70dp"
android:layout_height="70dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.coorchice.library.SuperTextView
android:layout_width="35dp"
android:layout_height="15dp"
android:gravity="center"
android:text="会长"
android:textColor="@color/white"
android:textSize="11sp"
app:corner="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@id/iv_hall_avatar"
app:layout_constraintStart_toStartOf="@id/iv_hall_avatar"
app:shaderEnable="true"
app:shaderEndColor="#6956F0"
app:shaderMode="leftToRight"
app:shaderStartColor="#987EF7" />
<LinearLayout
<TextView
android:id="@+id/tv_hall_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="@id/iv_hall_avatar"
app:layout_constraintStart_toEndOf="@id/iv_hall_avatar"
app:layout_constraintTop_toTopOf="@id/iv_hall_avatar">
android:layout_marginTop="@dimen/dp_10"
android:textColor="#6D4729"
android:textSize="@dimen/sp_13"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_hall_avatar"
tools:text="公会ID:123456" />
<TextView
android:id="@+id/tv_hall_owner_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:maxEms="6"
android:textColor="@color/text_title_white"
android:textSize="@dimen/sp_15"
tools:text="我是会我是会长长" />
<com.yizhuan.xchat_android_library.widget.DrawableCenterTextView
android:id="@+id/tv_owner_clan"
android:layout_width="70dp"
android:layout_height="20dp"
android:layout_marginBottom="34dp"
android:background="@drawable/bg_hall_owner_text"
android:drawableEnd="@drawable/ic_hall_right_white"
android:drawablePadding="6dp"
android:gravity="center"
android:text="所在家族"
android:textColor="#ffffffff"
android:textSize="10sp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
tools:visibility="visible" />
<TextView
android:id="@+id/tv_hall_owner_uid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_6"
android:textColor="@color/text_normal_c6c6e9"
android:textSize="@dimen/sp_11"
tools:text="音游号:3979655" />
<TextView
android:id="@+id/tv_hall_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_normal_c6c6e9"
android:textSize="@dimen/sp_11"
android:visibility="gone"
tools:text="公会ID:123456" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.Barrier
android:id="@+id/barrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="bottom"
app:constraint_referenced_ids="cl_clan,cl_hall" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_option"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_30"
android:layout_marginTop="@dimen/dp_15"
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:visibility="gone"
app:layout_constraintTop_toBottomOf="@id/barrier"
app:layout_constraintTop_toBottomOf="@id/cl_hall"
tools:itemCount="1"
tools:listitem="@layout/item_tab_small" />
<LinearLayout
android:id="@+id/ll_hall_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_13"
android:layout_marginEnd="@dimen/dp_15"
android:background="@drawable/bg_secondary_radius_15"
android:orientation="vertical"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:paddingBottom="17dp"
android:visibility="gone"
app:layout_constraintTop_toBottomOf="@id/rv_option"
app:layout_goneMarginTop="30dp"
tools:visibility="visible">
<TextView
android:id="@+id/tv_clan_member_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_10"
android:paddingStart="7dp"
android:paddingTop="10dp"
android:paddingEnd="14dp"
android:paddingBottom="5dp"
android:textColor="@color/text_title_white"
android:textSize="15dp"
tools:text="公会列表(8)" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_hall"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
tools:listitem="@layout/item_tab_small"
tools:visibility="visible" />
<LinearLayout
android:id="@+id/ll_member_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_13"
android:layout_marginTop="@dimen/dp_16"
android:layout_marginEnd="@dimen/dp_15"
android:background="@drawable/bg_secondary_radius_15"
android:layout_marginBottom="@dimen/dp_15"
android:background="@drawable/bg_corner_shadow_12"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@id/ll_hall_list">
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/rv_option">
<LinearLayout
android:layout_width="match_parent"
@@ -308,7 +114,7 @@
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:text="总人数:0人"
android:textColor="@color/text_title_white"
android:textColor="@color/color_333333"
android:textSize="15dp" />
<ImageView
@@ -333,8 +139,8 @@
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/srl_group"
android:layout_width="match_parent"
android:layout_height="450dp"
android:layout_marginBottom="@dimen/dp_20">
android:layout_height="550dp"
>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
@@ -369,7 +175,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:src="@drawable/icon_user_back" />
android:src="@drawable/arrow_left" />
<TextView
android:id="@+id/tv_title"
@@ -377,7 +183,8 @@
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:textColor="@color/white"
android:text="哈哈哈哈"
android:textColor="#6D4729"
android:textSize="18sp"
android:visibility="visible" />
@@ -387,7 +194,7 @@
android:layout_height="24dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:src="@drawable/ic_setting"
android:src="@drawable/ic_hall_setting"
android:visibility="gone" />
<TextView

View File

@@ -20,6 +20,8 @@ public class AuthInfo implements Serializable {
public final static String AUTH_APPLY_HALL_EXIT = "hall_exit";
/** 厅名设置(本地自定义) */
public final static String AUTH_HALL_NAME_SET = "hall_name_set";
/** 公会收入(本地自定义) */
public final static String AUTH_HALL_CLAN_INCOME = "clan_income";
/**表示能够处理的权限,为了兼容版本问题,过滤新版可能出现的新权限*/