个人中心

This commit is contained in:
oujunhui
2020-04-29 21:20:32 +08:00
parent b1cd288cc4
commit cef381ddde
33 changed files with 1500 additions and 794 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@@ -30,7 +30,8 @@ public class ActivityLifeManager implements Application.ActivityLifecycleCallbac
//这里进行暗号的判断
PwdCodeMgr.get().handlePopPwdCodeWindow(activity);
if (AuthModel.get().isImLogin()) {
SignDialogTimeManager.checkSignDialog(activity, true);
//签到弹窗
// SignDialogTimeManager.checkSignDialog(activity, true);
LocationManager.uploadLocation(activity);
}
}

View File

@@ -4,45 +4,30 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import androidx.annotation.Nullable;
import com.coorchice.library.utils.LogUtils;
import com.google.android.material.appbar.AppBarLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.core.content.ContextCompat;
import androidx.viewpager.widget.ViewPager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.core.widget.NestedScrollView;
import android.graphics.drawable.GradientDrawable;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target;
import com.bumptech.glide.request.target.ViewTarget;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.jude.rollviewpager.Util;
import com.jude.rollviewpager.hintview.ColorPointHintView;
import com.jude.rollviewpager.hintview.TextHintView;
import com.netease.nim.uikit.impl.cache.NimUserInfoCache;
import com.netease.nim.uikit.support.glide.GlideApp;
import com.netease.nimlib.sdk.RequestCallbackWrapper;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomKickOutEvent;
import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
import com.opensource.svgaplayer.SVGACallback;
import com.opensource.svgaplayer.SVGADrawable;
import com.opensource.svgaplayer.SVGAParser;
import com.opensource.svgaplayer.SVGAVideoEntity;
import com.yizhuan.erban.R;
import com.yizhuan.erban.UIHelper;
import com.yizhuan.erban.audio.RecordingVoiceActivity;
import com.yizhuan.erban.avroom.ButtonItemFactory;
import com.yizhuan.erban.avroom.activity.AVRoomActivity;
import com.yizhuan.erban.base.BaseBindingActivity;
import com.yizhuan.erban.common.widget.dialog.CommonPopupDialog;
import com.yizhuan.erban.common.widget.dialog.DialogManager;
@@ -51,33 +36,26 @@ import com.yizhuan.erban.family.view.activity.FamilyHomeActivity;
import com.yizhuan.erban.family.view.activity.FamilyMemberListActivity;
import com.yizhuan.erban.family.view.activity.FamilyMemberSearchActivity;
import com.yizhuan.erban.community.user_dynamic.UserDynamicFrg;
import com.yizhuan.erban.home.adapter.BannerAdapter;
import com.yizhuan.erban.ui.im.avtivity.NimFriendModel;
import com.yizhuan.erban.ui.im.avtivity.NimP2PMessageActivity;
import com.yizhuan.erban.ui.relation.FansListActivity;
import com.yizhuan.erban.ui.user.adapter.GiftAdapter;
import com.yizhuan.erban.ui.user.adapter.UserInfoDynamicAdapter;
import com.yizhuan.erban.ui.user.adapter.UserInfoPhotoAdapter;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.erban.ui.widget.ButtonItem;
import com.yizhuan.erban.ui.widget.ObservableScrollView;
import com.yizhuan.erban.ui.widget.UserMagicIndicator;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator;
import com.yizhuan.erban.utils.AppBarStateChangeListener;
import com.yizhuan.erban.utils.BlurTransformation;
import com.yizhuan.erban.utils.RegexUtil;
import com.yizhuan.xchat_android_constants.XChatConstants;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.decoration.headwear.bean.HeadWearInfo;
import com.yizhuan.xchat_android_core.home.bean.TabInfo;
import com.yizhuan.xchat_android_core.community.bean.WorldDynamicBean;
import com.yizhuan.xchat_android_core.im.friend.IMFriendModel;
import com.yizhuan.xchat_android_core.level.UserLevelVo;
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
import com.yizhuan.xchat_android_core.manager.IMNetEaseManager;
import com.yizhuan.xchat_android_core.manager.RoomEvent;
import com.yizhuan.xchat_android_core.noble.NobleInfo;
import com.yizhuan.xchat_android_core.noble.NobleUtil;
import com.yizhuan.xchat_android_core.praise.PraiseModel;
import com.yizhuan.xchat_android_core.praise.event.IsLikedEvent;
import com.yizhuan.xchat_android_core.praise.event.PraiseEvent;
import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
import com.yizhuan.xchat_android_core.room.model.AvRoomModel;
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_core.user.UserInfoUiMgr;
@@ -89,20 +67,16 @@ import com.yizhuan.xchat_android_core.user.event.LoginUserInfoUpdateEvent;
import com.yizhuan.xchat_android_core.utils.StarUtils;
import com.yizhuan.xchat_android_core.utils.net.BeanObserver;
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import com.yizhuan.xchat_android_library.utils.SizeUtils;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.CancellationException;
import io.reactivex.android.schedulers.AndroidSchedulers;
/**
* create by lvzebiao on 2018/8/31
@@ -110,21 +84,14 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
@ActLayoutRes(R.layout.activity_user_info)
public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBinding>
implements UserPhotoAdapter.ImageClickListener, ObservableScrollView.ScrollViewListener,
UserMagicIndicator.OnItemSelectListener {
implements UserPhotoAdapter.ImageClickListener, ObservableScrollView.ScrollViewListener{
public static final int REQUEST_CODE_UPDATE_VOICE = 1;
private int TAB_SIZE = 3;
private int TAB_SIZE = 1;
private int TAB_DYNAMIC = 0;
private int TAB_INFORMATION = 1;
private int TAB_GIFT = 2;
@Override
public void onItemSelect(int position) {
Log.i("onItemselect", "position:" + position);
mBinding.vpUserInfo.setCurrentItem(position);
}
public interface IdentityState {
int NON = 0; // 无法识别
@@ -151,39 +118,6 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
private ImageView ivOfficialMask;
private TextView tvOfficialMask;
UserInfoFragment mUserInfoFragment;
UserInfoGiftGroupFrg mUserInfoGiftGroupFrg;
UserDynamicFrg mUserDynamicFrg;
private void onSetListener() {
mBinding.ivUserBack.setOnClickListener(this);
mBinding.ivEdit.setOnClickListener(this);
// mBinding.imageView.setOnClickListener(this);
mBinding.ablUserInfo.addOnOffsetChangedListener(new AppBarStateChangeListener() {
@Override
public void onStateChanged(AppBarLayout appBarLayout, State state) {
if (state == State.EXPANDED) {
//展开状态
setEditButton(identityState, true);
setBackBottom(true);
setTitleVisible(false);
} else if (state == State.COLLAPSED) {
//折叠状态
setEditButton(identityState, false);
setBackBottom(false);
setTitleVisible(true);
} else {
//中间状态
}
}
});
}
@SuppressLint("CheckResult")
@Override
protected void init() {
@@ -195,21 +129,55 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
onSetListener();
EventBus.getDefault().register(this);
UserModel.get().getUserInfoDetail(userId)
.compose(bindToLifecycle())
.subscribe(new BeanObserver<UserDetailInfo>() {
@Override
public void onErrorMsg(String error) {
}
getUserInfoDetail();
getUserInfo();
@Override
public void onSuccess(UserDetailInfo info) {
LogUtil.e(info.toString());
initUserDetail(info.getData());
}
});
initAttentionView();
initNestScrollView();
setEditButton(identityState, true);
setBackBottom(true);
setTitleVisible(false);
}
private void initAttentionView() {
mAttenDrawable = ContextCompat.getDrawable(this, R.drawable.icon_new_attention);
mAttenedDrawable = ContextCompat.getDrawable(this, R.drawable.ic_attened);
if (AuthModel.get().getCurrentUid() == userId) {
identityState = IdentityState.OWN;
mBinding.tvFansCount.setOnClickListener(this);
if (bottomViewLayout != null)
bottomViewLayout.setVisibility(View.GONE);
} else {
if (userId == NimP2PMessageActivity.SECRETARY_UID || userId == NimP2PMessageActivity.SYSTEM_MESSAGE_UID) {
identityState = IdentityState.NON;
} else {
identityState = IdentityState.OTHER;
}
if (bottomViewLayout == null) {
View view = mBinding.vsBottomLayout.getViewStub().inflate();
bottomViewLayout = view.findViewById(R.id.bottom_view_layout);
sendMsgLayout = view.findViewById(R.id.send_msg_layout);
attentionLayout = view.findViewById(R.id.attention_layout);
sendMsgLayout.setOnClickListener(this);
attentionLayout.setOnClickListener(this);
}
bottomViewLayout.setVisibility(View.VISIBLE);
}
}
private void onSetListener() {
mBinding.ivUserBack.setOnClickListener(this);
mBinding.ivEdit.setOnClickListener(this);
mBinding.tvEdit.setOnClickListener(this);
}
private void getUserInfo(){
UserModel.get().getUserInfoFromServer(userId)
.compose(bindToLifecycle())
.subscribe(new BeanObserver<UserInfo>() {
@@ -224,82 +192,29 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
initData(userInfo);
}
});
}
mAttenDrawable = ContextCompat.getDrawable(this, R.mipmap.icon_new_attention);
mAttenedDrawable = ContextCompat.getDrawable(this, R.drawable.ic_attened);
if (AuthModel.get().getCurrentUid() == userId) {
identityState = IdentityState.OWN;
private void getUserInfoDetail(){
UserModel.get().getUserInfoDetail(userId)
.compose(bindToLifecycle())
.subscribe(new BeanObserver<UserDetailInfo>() {
@Override
public void onErrorMsg(String error) {
mBinding.tvFansCount.setOnClickListener(this);
if (bottomViewLayout != null)
bottomViewLayout.setVisibility(View.GONE);
} else {
if (userId == NimP2PMessageActivity.SECRETARY_UID || userId == NimP2PMessageActivity.SYSTEM_MESSAGE_UID) {
identityState = IdentityState.NON;
} else {
identityState = IdentityState.OTHER;
}
if (bottomViewLayout == null) {
View view = mBinding.vsBottomLayout.getViewStub().inflate();
bottomViewLayout = view.findViewById(R.id.bottom_view_layout);
sendMsgLayout = view.findViewById(R.id.send_msg_layout);
attentionLayout = view.findViewById(R.id.attention_layout);
sendMsgLayout.setOnClickListener(this);
attentionLayout.setOnClickListener(this);
}
bottomViewLayout.setVisibility(View.VISIBLE);
}
setEditButton(identityState, true);
setBackBottom(true);
setTitleVisible(false);
mCompositeDisposable.add(IMNetEaseManager.get().getChatRoomEventObservable()
.subscribe(roomEvent -> {
if (roomEvent != null) {
switch (roomEvent.getEvent()) {
case RoomEvent.KICK_OUT_ROOM:
ChatRoomKickOutEvent reason = roomEvent.getReason();
if (reason != null) {
ChatRoomKickOutEvent.ChatRoomKickOutReason kickOutReason = reason.getReason();
if (kickOutReason == ChatRoomKickOutEvent.ChatRoomKickOutReason.CHAT_ROOM_INVALID) {
}
}
break;
}
}
}));
if (mBinding.inOfficialMask != null) {
ivOfficialMask = mBinding.inOfficialMask.findViewById(R.id.iv_official_mask);
tvOfficialMask = mBinding.inOfficialMask.findViewById(R.id.tv_official_mask);
}
@Override
public void onSuccess(UserDetailInfo info) {
initUserDetail(info.getData());
}
});
}
private void setEditButton(int identityState, boolean isExpanded) {
if (identityState == IdentityState.OWN) {
mBinding.ivEdit.setVisibility(View.VISIBLE);
mBinding.ivEdit.setImageResource(isExpanded ? R.drawable.icon_user_info_edit : R.drawable.icon_edit_black);
} else if (identityState == IdentityState.OTHER) {
mBinding.ivEdit.setVisibility(View.VISIBLE);
mBinding.ivEdit.setImageResource(isExpanded ? R.drawable.icon_home_page_more : R.drawable.icon_home_page_more_black);
} else {
mBinding.ivEdit.setVisibility(View.GONE);
}
}
private void setBackBottom(boolean isExpanded) {
mBinding.ivUserBack.setImageResource(isExpanded ? R.drawable.icon_user_back : R.drawable.icon_user_back_black);
@@ -313,61 +228,8 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
private void onFindViews() {
mBinding.tbUserInfo.setTitle("");
List<TabInfo> tabInfoList = new ArrayList<>(TAB_SIZE);
tabInfoList.add(new TabInfo(TAB_DYNAMIC, "动态"));
tabInfoList.add(new TabInfo(TAB_INFORMATION, "资料"));
tabInfoList.add(new TabInfo(TAB_GIFT, "礼物"));
CommonNavigator commonNavigator = new CommonNavigator(this);
commonNavigator.setAdjustMode(true);
UserMagicIndicator indicator = new UserMagicIndicator(this, tabInfoList, 0);
indicator.setOnItemSelectListener(this);
commonNavigator.setAdapter(indicator);
mBinding.miUserInfo.setNavigator(commonNavigator);
mBinding.vpUserInfo.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
mBinding.miUserInfo.onPageScrolled(position, positionOffset, positionOffsetPixels);
}
@Override
public void onPageSelected(int position) {
mBinding.miUserInfo.onPageSelected(position);
setStatistic(position);
}
@Override
public void onPageScrollStateChanged(int state) {
mBinding.miUserInfo.onPageScrollStateChanged(state);
}
});
mUserDynamicFrg = UserDynamicFrg.newInstance(userId);
mUserInfoFragment = UserInfoFragment.newInstance(userId, getIntent().getIntExtra("from", 1));
mUserInfoGiftGroupFrg = UserInfoGiftGroupFrg.newInstance();
mBinding.vpUserInfo.setOffscreenPageLimit(3);
mBinding.vpUserInfo.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public int getCount() {
return TAB_SIZE;
}
@Override
public Fragment getItem(int position) {
if (position == TAB_DYNAMIC) {
return mUserDynamicFrg;
} else if (position == TAB_INFORMATION) {
return mUserInfoFragment;
} else if (position == TAB_GIFT) {
return mUserInfoGiftGroupFrg;
}
return mUserInfoFragment;
}
});
mBinding.vpUserInfo.setCurrentItem(0);
ivOfficialMask = mBinding.inOfficialMask.findViewById(R.id.iv_official_mask);
tvOfficialMask = mBinding.inOfficialMask.findViewById(R.id.tv_official_mask);
setStatistic(0);
}
@@ -399,86 +261,105 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
}
}
private void initUserDetail(UserDetailInfo.DataBean info) {
if (null != info) {
String nick = RegexUtil.getPrintableString(info.getNick());
mBinding.tvNick.setText(nick);
mBinding.tvUserInfoTitle.setText(nick);
// Drawable drawable = ContextCompat.getDrawable(this,
// (info.getGender() == 1) ? R.drawable.ic_gender_male : R.drawable.ic_gender_female);
// mBinding.tvNick.setCompoundDrawablesWithIntrinsicBounds(null, null, drawable, null);
mBinding.tvFansCount.setText(String.valueOf(info.getFansNum()));
//设置星座
// String star = StarUtils.getConstellation(new Date(info.getBirth()));
// if (null == star) {
// mBinding.tvConstellation.setVisibility(View.GONE);
// } else {
// mBinding.tvConstellation.setText(star);
// mBinding.tvConstellation.setVisibility(View.VISIBLE);
// }
mBinding.tvErbanId.setText(getString(R.string.me_user_id, info.getErbanNo()));
setUserLevel(info.getUserLevelVo());
// if (info.getNameplate() != null) {
// setOfficialMask(info.getNameplate().getFixedWord(), info.getNameplate().getIconPic());
// } else {
// setOfficialMask("", "");
// }
// if (!TextUtils.isEmpty(info.getAttestationBackPic())) {
// ImageLoadUtils.loadImage(this, info.getAttestationBackPic(), mBinding.avatarBg);
//
// } else {
// setBgByLevel(false);
// GlideApp.with(this)
// .load(info.getAvatar())
// .dontAnimate()
// .centerInside()
// .diskCacheStrategy(DiskCacheStrategy.RESOURCE)
// .listener(new RequestListener<Drawable>() {
// @Override
// public boolean onLoadFailed(@Nullable GlideException e, Object o,
// Target<Drawable> target, boolean b) {
// return false;
// }
//
// @Override
// public boolean onResourceReady(Drawable drawable, Object o,
// Target<Drawable> target, DataSource dataSource, boolean b) {
// drawable.setColorFilter(context.getResources().getColor(R.color.black_transparent_20), PorterDuff.Mode.DARKEN);
// ViewTarget<ImageView, Drawable> viewTarget = (ViewTarget<ImageView, Drawable>) target;
// viewTarget.getView().setImageDrawable(drawable);
// return true;
// }
// })
// // “23”设置模糊度(在0.0到25.0之间)默认”25";"4":图片缩放比例,默认“1”。
// .transforms(new BlurTransformation(context, 10, 1))
// .into(mBinding.avatarBg);
// }
// if (null == star) {
// mBinding.tvConstellation.setVisibility(View.GONE);
// } else {
// mBinding.tvConstellation.setText(star);
// mBinding.tvConstellation.setVisibility(View.VISIBLE);
// }
if (AuthModel.get().getCurrentUid() != info.getUid()) {
PraiseModel.get().isPraised(AuthModel.get().getCurrentUid(), info.getUid()).subscribe();
}
}
}
private void initData(UserInfo userInfo) {
if (null != userInfo) {
//设置昵称
String nick = RegexUtil.getPrintableString(userInfo.getNick());
mBinding.tvNick.setText(nick);
//设置签名
UserInfoUiMgr.get().setValue(userInfo);
mUserInfoFragment.onGetUserInfo(userInfo);
mBinding.tvDesc.setText(userInfo.getUserDesc() != null ? userInfo.getUserDesc() : getResources().getString(R.string.msg_no_user_desc));
//设置星座
String star = StarUtils.getConstellation(new Date(userInfo.getBirth()));
if (null == star) {
mBinding.tvConstellation.setVisibility(View.GONE);
} else {
mBinding.tvConstellation.setText(star);
mBinding.tvConstellation.setVisibility(View.VISIBLE);
}
//设置性别
Drawable drawable = ContextCompat.getDrawable(this,
(userInfo.getGender() == 1) ? R.drawable.ic_gender_male : R.drawable.ic_gender_female);
mBinding.tvNick.setCompoundDrawablesWithIntrinsicBounds(null, null, drawable, null);
mBinding.tvFansCount.setText(String.valueOf(userInfo.getFansNum()));
mBinding.tvErbanId.setText(getString(R.string.me_user_id, userInfo.getErbanNo()));
//等级魅力值
setUserLevel(userInfo.getUserLevelVo());
//铭牌
setOfficialMask(userInfo.getNameplateWord(),userInfo.getNameplatePic());
if (AuthModel.get().getCurrentUid() != userInfo.getUid()) {
PraiseModel.get().isPraised(AuthModel.get().getCurrentUid(), userInfo.getUid()).subscribe();
}
}
}
private void setUserLevel(UserDetailInfo.DataBean.UserLevelVoBean userLevelVo) {
private void initUserDetail(UserDetailInfo.DataBean info) {
initGiftList(info.getUserGiftWall());
initDynamicList(info.getDynamicInfo());
initPhoto(info.getPrivatePhoto());
}
/**
* 礼物列表
* @param list
*/
private void initGiftList(List<UserDetailInfo.DataBean.UserGiftWallBean> list) {
int normalDividerSize = SizeUtils.dp2px(this, 5);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
mBinding.rvGift.setLayoutManager(layoutManager);
mBinding.rvGift.addItemDecoration(new RecyclerView.ItemDecoration() {
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
int position = parent.getChildLayoutPosition(view);
int right = normalDividerSize;
outRect.set(0, 0, right, 0);
}
});
if (ListUtils.isListEmpty(list)){
UserDetailInfo.DataBean.UserGiftWallBean giftBean = new UserDetailInfo.DataBean.UserGiftWallBean();
giftBean.setItemType(0);
list.add(giftBean);
}
GiftAdapter giftAdapter= new GiftAdapter(this,list);
giftAdapter.setEnableLoadMore(false);
mBinding.rvGift.setAdapter(giftAdapter);
}
/**
* 动态列表
* @param list
*/
private void initDynamicList(List<WorldDynamicBean> list) {
mBinding.rvDynamic.setLayoutManager(new LinearLayoutManager(this));
UserInfoDynamicAdapter dynamicAdapter= new UserInfoDynamicAdapter(this);
dynamicAdapter.setNewData(list);
dynamicAdapter.setEnableLoadMore(false);
mBinding.rvDynamic.setAdapter(dynamicAdapter);
}
private void initPhoto(List<UserDetailInfo.DataBean.PrivatePhotoBean> list){
TextHintView hintView = new TextHintView(this);
hintView.setBackground(getResources().getDrawable(R.drawable.bg_userinfo_photo_hintview));
hintView.setTextSize(SizeUtils.dp2px(this,4));
mBinding.rollView.setHintView(hintView);
UserInfoPhotoAdapter bannerAdapter = new UserInfoPhotoAdapter(list, this);
mBinding.rollView.setAdapter(bannerAdapter);
//设置透明度
mBinding.rollView.setAnimationDurtion(500);
bannerAdapter.notifyDataSetChanged();
}
private void setUserLevel(UserLevelVo userLevelVo) {
mBinding.ivUserCharm.setVisibility(View.GONE);
mBinding.ivUserLevel.setVisibility(View.GONE);
if (userLevelVo != null) {
@@ -504,14 +385,40 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
@Override
public void onScrollChanged(NestedScrollView view, int x, int y, int oldx, int oldy) {
if (flag == 0 && oldy > 300) {
flag = 1;
boolean isNoble = (userInfo != null && userInfo.getNobleInfo() != null);
mBinding.ivEdit.setImageResource(
(isNoble) ? R.drawable.icon_user_info_edit : R.drawable.icon_edit_black);
} else if (flag == 1 && oldy <= 300) {
flag = 0;
mBinding.ivEdit.setImageResource(R.drawable.icon_user_info_edit);
}
private void initNestScrollView() {
mBinding.scrollView.setOnScrollChangeListener((NestedScrollView.OnScrollChangeListener) (v, scrollX, scrollY, oldScrollX, oldScrollY) -> {
if (flag == 0 && oldScrollY > SizeUtils.dp2px(this,200)) {
//展开
flag = 1;
mBinding.ivUserBack.setImageResource(R.drawable.icon_user_back_black);
mBinding.tbUserInfo.setBackgroundColor(getResources().getColor(R.color.white));
setTitleVisible(true);
setEditButton(identityState,true);
} else if (flag == 1 && oldScrollY <= 200) {
//合起来
flag = 0;
mBinding.ivUserBack.setImageResource(R.drawable.icon_user_back);
mBinding.tbUserInfo.setBackgroundColor(getResources().getColor(R.color.transparent));
setTitleVisible(false);
setEditButton(identityState,false);
}
});
}
private void setEditButton(int identityState, boolean isExpanded) {
if (identityState == IdentityState.OWN) {
mBinding.ivEdit.setVisibility(View.GONE);
mBinding.tvEdit.setVisibility(View.VISIBLE);
} else if (identityState == IdentityState.OTHER) {
mBinding.ivEdit.setVisibility(View.VISIBLE);
mBinding.tvEdit.setVisibility(View.GONE);
mBinding.ivEdit.setImageResource(isExpanded ? R.drawable.icon_home_page_more : R.drawable.icon_home_page_more_black);
} else {
mBinding.ivEdit.setVisibility(View.GONE);
mBinding.tvEdit.setVisibility(View.GONE);
}
}
@@ -566,11 +473,6 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
}
}
private void avatarClick(int identityState) {
if (identityState == IdentityState.OWN) {
UIHelper.showUserInfoModifyAct(this, REQUEST_CODE_UPDATE_VOICE, userId);
}
}
@Override
public void onClick(View v) {
@@ -579,11 +481,11 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
finish();
break;
case R.id.imageView:
avatarClick(identityState);
case R.id.iv_edit:
editClick(identityState);
break;
case R.id.iv_edit:
case R.id.tv_edit:
editClick(identityState);
break;
@@ -605,6 +507,36 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
}
break;
case R.id.attention_layout:
if (userInfo == null) {
toast("用户信息为空。");
return;
}
if (mIslike) {
boolean isMyFriend = IMFriendModel.get().isMyFriend(String.valueOf(userInfo.getUid()));
String tip = (isMyFriend) ? "取消关注将不再是好友关系,确定取消关注?" : "确定取消关注?";
getDialogManager().showOkCancelDialog(tip, true, new DialogManager.OkCancelDialogListener() {
@Override
public void onCancel() {
getDialogManager().dismissDialog();
}
@Override
public void onOk() {
getDialogManager().dismissDialog();
getDialogManager().showProgressDialog(mActivity, getString(R.string.waiting_text));
PraiseModel.get().praise(userInfo.getUid(), false).subscribe();
}
});
} else {
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.guest_page_follow, "客态页-关注");
getDialogManager().showProgressDialog(mActivity, getString(R.string.waiting_text));
PraiseModel.get().praise(userInfo.getUid(), true).subscribe();
}
break;
// /**************** 测试代码 **************/
// AVRoomActivity.start(this, 91, mRoomInfo!!.type)
}
@@ -620,8 +552,9 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
mIslike = isliked;
attentionLayout.setCompoundDrawablesWithIntrinsicBounds(
(!isliked) ? mAttenDrawable : mAttenedDrawable, null, null, null);
attentionLayout.setCompoundDrawablePadding((isliked) ? 0 : SizeUtils.dp2px(this, 5f));
attentionLayout.setText(getString((isliked) ? R.string.already_attention : R.string.attention));
attentionLayout.setTextColor(isliked ? getResources().getColor(R.color.appColor) : getResources().getColor(R.color.white));
attentionLayout.setBackground(isliked ? getResources().getDrawable(R.drawable.bg_shape_send_msg) : getResources().getDrawable(R.drawable.bg_shape_attention));
}
@Subscribe(threadMode = ThreadMode.MAIN)
@@ -650,13 +583,7 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == REQUEST_CODE_UPDATE_VOICE) {
String audioFileUrl = data.getStringExtra(RecordingVoiceActivity.AUDIO_FILE);
int audioDuration = data.getIntExtra(RecordingVoiceActivity.AUDIO_DURA, 0);
if (mUserInfoFragment != null) {
mUserInfoFragment.refreshVoiceDataView(audioFileUrl, audioDuration);
}
}
}
}
@@ -666,7 +593,7 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
if (tvOfficialMask != null && ivOfficialMask != null) {
tvOfficialMask.setText(name);
NobleUtil.loadResource(icon, ivOfficialMask);
ImageLoadUtils.loadImage(this,icon,ivOfficialMask);
}
} else {

View File

@@ -291,7 +291,6 @@ public class UserInfoFragment extends BaseFragment implements View.OnClickListen
setHallData(userInfo);
// setGameInfo();
}
@Override

View File

@@ -254,7 +254,7 @@ public class UserInfoOldActivity extends BaseBindingActivity<ActivityUserInfoOld
}
});
mAttenDrawable = ContextCompat.getDrawable(this, R.mipmap.icon_new_attention);
mAttenDrawable = ContextCompat.getDrawable(this, R.drawable.icon_new_attention);
mAttenedDrawable = ContextCompat.getDrawable(this, R.drawable.ic_attened);
mBinding.userInfoSvgaCar.clearAnimation();

View File

@@ -0,0 +1,48 @@
package com.yizhuan.erban.ui.user.adapter;
import android.content.Context;
import android.widget.ImageView;
import androidx.annotation.Nullable;
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.yizhuan.erban.R;
import com.yizhuan.erban.home.bean.HomeTabMapInfo;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.xchat_android_core.user.bean.UserDetailInfo;
import java.util.List;
public class GiftAdapter extends BaseMultiItemQuickAdapter<UserDetailInfo.DataBean.UserGiftWallBean, BaseViewHolder> {
public GiftAdapter(Context context,@Nullable List<UserDetailInfo.DataBean.UserGiftWallBean> data) {
super(data);
addItemType(UserDetailInfo.DataBean.UserGiftWallBean.TYPE_NORMAL,R.layout.item_userinfo_gift);
addItemType(UserDetailInfo.DataBean.UserGiftWallBean.TYPE_EMPTY,R.layout.item_userinfo_gift_empty);
this.mContext = context;
}
@Override
protected void convert(BaseViewHolder helper, UserDetailInfo.DataBean.UserGiftWallBean item) {
if (item == null) {
return;
}
switch (helper.getItemViewType()){
case UserDetailInfo.DataBean.UserGiftWallBean.TYPE_NORMAL:
helper.setText(R.id.tv_title, "x" + item.getReciveCount());
ImageView ivIcon = helper.getView(R.id.iv_icon);
ImageLoadUtils.loadImageWithPlaceholder(mContext, item.getPicUrl(), ivIcon);
break;
case UserDetailInfo.DataBean.UserGiftWallBean.TYPE_EMPTY:
break;
}
}
}

View File

@@ -0,0 +1,295 @@
package com.yizhuan.erban.ui.user.adapter;
import android.app.Activity;
import android.content.Context;
import android.text.TextUtils;
import android.util.SparseBooleanArray;
import android.util.SparseIntArray;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.netease.nim.uikit.support.glide.GlideApp;
import com.yizhuan.erban.R;
import com.yizhuan.erban.UIHelper;
import com.yizhuan.erban.community.dynamic.view.DynamicDetailActivity;
import com.yizhuan.erban.community.helper.CalcSize;
import com.yizhuan.erban.community.helper.DynamicUiHelper;
import com.yizhuan.erban.community.helper.ImageUiHelper;
import com.yizhuan.erban.community.photo.BigPhotoActivity;
import com.yizhuan.erban.community.photo.DynamicImageAdapter;
import com.yizhuan.erban.community.photo.PagerOption;
import com.yizhuan.erban.community.utils.ObjectTypeHelper;
import com.yizhuan.erban.community.widget.DynamicNickDetailWidget;
import com.yizhuan.erban.community.widget.ExpandableTextView;
import com.yizhuan.erban.ui.utils.ImageLoadUtilsV2;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil;
import com.yizhuan.erban.utils.TimeUiUtils;
import com.yizhuan.xchat_android_core.community.bean.DynamicMedia;
import com.yizhuan.xchat_android_core.community.bean.WorldDynamicBean;
import com.yizhuan.xchat_android_core.community.dynamic.DynamicModel;
import com.yizhuan.xchat_android_core.noble.NobleUtil;
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.DontWarnObserver;
import com.yizhuan.xchat_android_core.utils.net.RxHelper;
import com.yizhuan.xchat_android_library.utils.SingleToastUtil;
import java.util.List;
/**
* create by lvzebiao @2019/11/13
*/
public class UserInfoDynamicAdapter extends BaseQuickAdapter<WorldDynamicBean, BaseViewHolder> {
private SparseBooleanArray mCollapsedStatus = new SparseBooleanArray();
private SparseIntArray mCollapsedHeightStatus = new SparseIntArray(2);
private Context context;
private long worldId;
private int iconWidth;
private int iconHeight;
/**有文本的图片布局的top-margin*/
private int imageTmHasText;
/**无文本的图片布局的top-margin*/
private int imageTmNoText;
/**
* 单图情况下的边界
*/
private int imageBorder;
/**
* 图片的边界值
*/
private int divider;
public UserInfoDynamicAdapter(Context context) {
super(R.layout.item_userinfo_dynamic);
this.context = context;
this.worldId = worldId;
iconWidth = UIUtil.dip2px(context, 32);
iconHeight = UIUtil.dip2px(context, 15);
imageTmHasText = UIUtil.dip2px(context, 15f);
imageTmNoText = UIUtil.dip2px(context, 7.5f);
//0.68
imageBorder = UIUtil.getScreenWidth(context) * ImageUiHelper.BORDER_MIN / ImageUiHelper.BORDER_MAX;
divider = UIUtil.dip2px(context, 10);
}
@Override
protected void convert(BaseViewHolder helper, WorldDynamicBean item) {
//这个值有没有文本UI部分改变图片部分的margin
boolean noTextUi = TextUtils.isEmpty(item.getContent()) && !item.isFirstDynamic();
helper.setText(R.id.tv_nick, item.getNick());
RecyclerView rvImage = helper.getView(R.id.rv_image);
List<DynamicMedia> dynamicMediaList = item.getDynamicResList();
if (item.getType() == WorldDynamicBean.TYPE_IMAGE
&& dynamicMediaList != null && dynamicMediaList.size() > 0) {
rvImage.setVisibility(View.VISIBLE);
initRecyclerView(rvImage, dynamicMediaList, noTextUi);
} else {
rvImage.setVisibility(View.GONE);
}
//头饰 贵族头饰
ImageView ivHeadWear = helper.getView(R.id.iv_head_wear);
GlideApp.with(ivHeadWear.getContext()).clear(ivHeadWear);
String headwearPic = item.getHeadwearPic();
String micDecorate = item.getMicDecorate();
if (!TextUtils.isEmpty(headwearPic)) {
NobleUtil.loadHeadWear(headwearPic, ivHeadWear);
} else if (!TextUtils.isEmpty(micDecorate)){
NobleUtil.loadResource(micDecorate, ivHeadWear);
} else {
ivHeadWear.setImageDrawable(null);
}
//头像
ImageLoadUtilsV2.loadImage(helper.getView(R.id.iv_avatar), item.getAvatar());
DynamicNickDetailWidget widget = helper.getView(R.id.widget_nick_detail);
widget.setData(item);
//时间
helper.setText(R.id.tv_time, TimeUiUtils.getDynamicUi(item.getPublishTime()));
ExpandableTextView etvContent = helper.getView(R.id.etv_content);
etvContent.setEventType(1);
if (noTextUi) {
etvContent.setVisibility(View.GONE);
} else {
etvContent.setVisibility(View.VISIBLE);
CharSequence formatText = DynamicUiHelper.formatFirstDynamicContent(
item, etvContent.mTv, iconWidth, iconHeight);
etvContent.setText(formatText, mCollapsedStatus, helper.getAdapterPosition(), mCollapsedHeightStatus);
}
helper.setGone(R.id.ll_miniworld, item.getTag() != null);
helper.setText(R.id.tv_mini_world_name,"#" + item.getTag());
//评论
setCommentCount(helper, item.getCommentCount());
//点赞
setLikeCount(helper, item.getLikeCount(), item.isLike(), false);
LinearLayout llLike = helper.getView(R.id.ll_like);
llLike.setEnabled(true);
llLike.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
llLike.setEnabled(false);
int status = item.isLike() ? 0 : 1;
DynamicModel.get().like(worldId, item.getDynamicId(), item.getUid(), status, 1)
.compose(RxHelper.bindContext(context))
.subscribe(new DontWarnObserver<String>() {
@Override
public void accept(String s, String error) {
super.accept(s, error);
llLike.setEnabled(true);
if (error != null) {
SingleToastUtil.showToast(error);
} else {
LogUtil.print("调用点赞接口完成...");
if (status == 1) {
item.setLikeCount(item.getLikeCount() + 1);
} else {
item.setLikeCount(item.getLikeCount() - 1);
}
item.setLike(status == 1);
setLikeCount(helper, item.getLikeCount(), item.isLike(), true);
}
}
});
}
});
//评论
helper.getView(R.id.ll_comment).setOnClickListener(v -> {
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_WORLD_COMMENT_MOMENTS,
"点击列表评论按钮-区分-小世界客态页");
//1.3.1新埋点
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_WORLD_COMMENT_MOMENTS_B,
"点击评论按钮进入详情页的次数,区分小世界-" + worldId);
DynamicDetailActivity.start(context, item.getDynamicId(), worldId,
helper.getAdapterPosition(), true, 1);
}
);
View.OnClickListener toDetailListener = v ->
DynamicDetailActivity.start(context, item.getDynamicId(), worldId,
helper.getAdapterPosition(), false, 1);
if (etvContent.mTv != null) {
etvContent.mTv.setOnClickListener(toDetailListener);
}
//跳转去详情
helper.itemView.setOnClickListener(toDetailListener);
helper.addOnClickListener(R.id.iv_more)
.addOnClickListener(R.id.ll_share);
View.OnClickListener userInfoActClick = v -> UIHelper.showUserInfoAct(context, item.getUid());
helper.getView(R.id.iv_avatar).setOnClickListener(userInfoActClick);
helper.getView(R.id.widget_nick_detail).setOnClickListener(userInfoActClick);
}
private void setLikeCount(BaseViewHolder helper, int likeCount, boolean isLike, boolean isAnim) {
TextView tvLike = helper.getView(R.id.tv_like);
String likeCountStr;
if (likeCount < 0) {
likeCountStr = "0";
} else if (likeCount >= 1000) {
likeCountStr = "999+";
} else {
likeCountStr = String.valueOf(likeCount);
}
tvLike.setText(likeCountStr);
ImageView ivLikeAnim = helper.getView(R.id.iv_like_pic);
if (isLike) {
// if (isAnim) {
// AnimationDrawable drawable = (AnimationDrawable) context.getResources()
// .getDrawable(R.drawable.anim_list_dy_like);
// ivLikeAnim.setImageDrawable(drawable);
// drawable.stop();
// drawable.start();
// } else {
ivLikeAnim.setImageResource(R.drawable.icon_dy_list_like);
// }
} else {
ivLikeAnim.setImageResource(R.drawable.icon_dy_list_like_false);
}
}
private void initRecyclerView(RecyclerView rvImage, List<DynamicMedia> imageUrl, boolean noTextUi) {
if (imageUrl == null) {
return;
}
CalcSize calcSize = new CalcSize(imageBorder);
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) rvImage.getLayoutParams();
if (imageUrl.size() > 1) {
params.width = ViewGroup.LayoutParams.MATCH_PARENT;
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
} else {
//单图的情况,按比例显示
DynamicMedia media = null;
if (imageUrl.size() > 0) {
media = imageUrl.get(0);
}
if (media == null) {
return;
}
calcSize = ImageUiHelper.calcImage(media, imageBorder);
params.width = calcSize.width + divider;
params.height = calcSize.height + divider;
}
if (noTextUi) {
params.topMargin = imageTmNoText;
} else {
params.topMargin = imageTmHasText;
}
rvImage.setLayoutParams(params);
rvImage.setNestedScrollingEnabled(false);
rvImage.setLayoutManager(new GridLayoutManager(mContext, imageUrl.size() > 2 ? 3 : imageUrl.size()));
DynamicImageAdapter adapter = new DynamicImageAdapter(R.layout.item_dynamic_image, imageUrl);
adapter.setSingleImageHeight(calcSize.height);
adapter.setOnItemClickListener((adapter1, view, position) -> {
PagerOption option = new PagerOption().setSave(true);
BigPhotoActivity.start((Activity) mContext, ObjectTypeHelper.mediaToCustomList(imageUrl),
position, option);
}
);
rvImage.setAdapter(adapter);
}
private void setCommentCount(BaseViewHolder helper, int commentCount) {
TextView tvComment = helper.getView(R.id.tv_comment);
String commentCountStr;
if (commentCount < 0) {
commentCountStr = "0";
} else if (commentCount >= 1000) {
commentCountStr = "999+";
} else {
commentCountStr = String.valueOf(commentCount);
}
tvComment.setText(commentCountStr);
}
}

View File

@@ -0,0 +1,76 @@
package com.yizhuan.erban.ui.user.adapter;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.jude.rollviewpager.adapter.StaticPagerAdapter;
import com.yizhuan.erban.R;
import com.yizhuan.erban.ui.user.ShowPhotoActivity;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.erban.utils.CommonJumpHelper;
import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_core.user.bean.UserDetailInfo;
import com.yizhuan.xchat_android_core.user.bean.UserPhoto;
import java.util.ArrayList;
import java.util.List;
/**
* @author Administrator
* @date 2017/8/7
*/
public class UserInfoPhotoAdapter extends StaticPagerAdapter {
private Context context;
private List<UserDetailInfo.DataBean.PrivatePhotoBean> photoBeanList;
private LayoutInflater mInflater;
public UserInfoPhotoAdapter(List<UserDetailInfo.DataBean.PrivatePhotoBean> photoBeans, Context context) {
this.context = context;
this.photoBeanList = photoBeans;
mInflater = LayoutInflater.from(context);
}
@Override
public View getView(ViewGroup container, int position) {
UserDetailInfo.DataBean.PrivatePhotoBean photoInfo = photoBeanList.get(position);
ImageView imgBanner = (ImageView) mInflater.inflate(R.layout.banner_userinfo_photo_item, container, false);
if (photoInfo == null) return imgBanner;
ImageLoadUtils.loadImage(context, photoInfo.getPhotoUrl(), imgBanner);
imgBanner.setOnClickListener(v -> {
showUserPhoto(position,photoBeanList);
});
return imgBanner;
}
@Override
public int getCount() {
return photoBeanList == null ? 0 : photoBeanList.size();
}
public void setData(List<UserDetailInfo.DataBean.PrivatePhotoBean> bannerInfos) {
this.photoBeanList = bannerInfos;
}
private void showUserPhoto(int position,List<UserDetailInfo.DataBean.PrivatePhotoBean> photoBeanList) {
//创建一个集合拿来做用户所有照片信息
ArrayList<UserDetailInfo.DataBean.PrivatePhotoBean> userPhotos = new ArrayList<>();
for (UserDetailInfo.DataBean.PrivatePhotoBean photo: photoBeanList) {
UserDetailInfo.DataBean.PrivatePhotoBean newPhoto = new UserDetailInfo.DataBean.PrivatePhotoBean();
newPhoto.setPhotoUrl(photo.getPhotoUrl());
userPhotos.add(newPhoto);
}
Intent intent = new Intent(context, ShowPhotoActivity.class);
intent.putExtra("position", position);
intent.putExtra("photoList", userPhotos);
context.startActivity(intent);
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -5,10 +5,11 @@
<!--<gradient android:startColor="@color/color_FDA712"-->
<!--android:endColor="@color/color_FDC212"/>-->
<solid android:color="@color/appColor"/>
<gradient
android:angle="180"
android:startColor="#735FFE"
android:endColor="#8776FF" />
<stroke android:width="2dp"
android:color="@color/color_333333"/>
<corners android:bottomRightRadius="20dp"
android:bottomLeftRadius="20dp"

View File

@@ -2,10 +2,7 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/white"/>
<stroke android:width="2dp"
android:color="@color/color_B3B3B3"/>
<solid android:color="#E9E5FD"/>
<corners android:topLeftRadius="20dp"
android:topRightRadius="20dp"

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#EFEBFF"/>
<corners android:topLeftRadius="7.5dp"
android:topRightRadius="@dimen/dp_4"
android:bottomRightRadius="7.5dp"
android:bottomLeftRadius="7.5dp"/>
</shape>

View File

@@ -0,0 +1,9 @@
<?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:topLeftRadius="@dimen/dp_8"
android:topRightRadius="@dimen/dp_2"
android:bottomLeftRadius="@dimen/dp_8"
android:bottomRightRadius="@dimen/dp_8"/>
</shape>

View File

@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#30ffffff" />
<corners android:radius="50dp" />
<gradient android:startColor="#6DADFF" android:endColor="#6B68F8"/>
<corners android:topLeftRadius="@dimen/dp_8"
android:bottomLeftRadius="@dimen/dp_8"
android:bottomRightRadius="@dimen/dp_8"
android:topRightRadius="@dimen/dp_3"/>
</shape>

View File

@@ -7,271 +7,316 @@
</data>
<androidx.coordinatorlayout.widget.CoordinatorLayout
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_F9F9F9"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/abl_user_info"
<androidx.core.widget.NestedScrollView
android:id="@+id/scroll_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
app:elevation="0dp">
android:layout_height="match_parent"
android:fillViewport="true">
<com.google.android.material.appbar.CollapsingToolbarLayout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="@color/white"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<ImageView
android:id="@+id/avatar_bg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax"
app:layout_collapseParallaxMultiplier="0" />
android:layout_height="wrap_content"
android:orientation="vertical"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="256dp"
android:layout_gravity="bottom"
android:layout_marginTop="48dp"
app:layout_collapseMode="parallax"
app:layout_collapseParallaxMultiplier="0">
android:layout_height="wrap_content"
>
<com.jude.rollviewpager.RollPagerView
android:id="@+id/roll_view"
android:layout_width="match_parent"
android:layout_height="250dp"
app:rollviewpager_hint_gravity="right"
app:rollviewpager_hint_paddingBottom="60dp"
app:rollviewpager_hint_paddingRight="20dp"
app:rollviewpager_play_delay="5000"
/>
<View
android:layout_width="match_parent"
android:layout_height="250dp"
android:background="@mipmap/bg_userinfo_photo_cover"
/>
</RelativeLayout>
<androidx.appcompat.widget.Toolbar
android:id="@+id/tb_user_info"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:visibility="visible"
app:contentInsetStart="0dp"
app:layout_collapseMode="pin">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:paddingLeft="15dp"
android:paddingRight="15dp">
<ImageView
android:id="@+id/iv_user_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_user_info_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:textColor="@color/color_333333"
android:textSize="16sp"
android:visibility="visible" />
<ImageView
android:id="@+id/iv_edit"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:src="@drawable/icon_home_page_more" />
</RelativeLayout>
</androidx.appcompat.widget.Toolbar>
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_15"
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_corner_shadow_12"
android:padding="@dimen/dp_15"
>
<TextView
android:id="@+id/tv_nick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginBottom="6dp"
android:drawablePadding="@dimen/space_normal"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/color_333333"
android:textSize="15sp"
android:textStyle="bold"
tools:drawableRight="@drawable/ic_gender_male"
tools:text="King天地为asdasdasdasdsadsadsad"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
<LinearLayout
android:id="@+id/ll_level"
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5"
app:layout_constraintTop_toBottomOf="@id/tv_nick"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_user_level"
android:layout_width="15dp"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_3"
android:scaleType="fitXY"
android:visibility="visible"
tools:src="@mipmap/ic_user_level" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_user_charm"
android:layout_width="15dp"
android:layout_height="wrap_content"
android:layout_marginEnd="3dp"
android:scaleType="fitXY"
android:visibility="visible"
tools:src="@drawable/ic_user_charm_level" />
<include
android:id="@+id/in_official_mask"
android:layout_marginStart="5dp"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_15"
layout="@layout/layout_official_mask"/>
android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_15"
android:layout_marginTop="-50dp"
android:background="@drawable/bg_corner_shadow_12"
android:padding="@dimen/dp_15"
>
<TextView
android:id="@+id/tv_constellation"
android:layout_width="wrap_content"
android:layout_height="15dp"
android:background="@drawable/shape_58559d"
android:gravity="center"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:textColor="@color/white"
android:textSize="10sp"
tools:text="金牛座" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/ll_level"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginTop="@dimen/dp_10"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_erban_id"
android:id="@+id/tv_nick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginBottom="6dp"
android:drawablePadding="@dimen/space_normal"
android:ellipsize="end"
android:maxLines="1"
android:paddingTop="1dp"
android:paddingRight="5dp"
android:paddingBottom="1dp"
android:includeFontPadding="false"
android:textColor="@color/color_999999"
android:textSize="11sp"
tools:text="ID:7958626" />
android:textColor="@color/color_333333"
android:textSize="15dp"
android:textStyle="bold"
tools:drawableRight="@drawable/ic_gender_male"
tools:text="King天地为asdasdasdasdsadsadsad"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
<LinearLayout
android:layout_width="wrap_content"
android:id="@+id/ll_level"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5"
app:layout_constraintTop_toBottomOf="@id/tv_nick"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_fans_count"
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_user_level"
android:layout_width="22dp"
android:layout_height="@dimen/dp_17"
android:layout_marginEnd="@dimen/dp_3"
android:scaleType="fitXY"
android:visibility="visible"
tools:src="@mipmap/ic_user_level" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_user_charm"
android:layout_width="22dp"
android:layout_height="@dimen/dp_17"
android:layout_marginEnd="3dp"
android:scaleType="fitXY"
android:visibility="visible"
tools:src="@drawable/ic_user_charm_level" />
<include
android:id="@+id/in_official_mask"
android:layout_marginStart="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:includeFontPadding="false"
android:maxLines="1"
android:textColor="@color/color_666666"
android:textSize="13sp"
tools:text="19" />
android:layout_height="@dimen/dp_15"
layout="@layout/layout_official_mask"/>
<TextView
android:id="@+id/tv_user_fan_text"
android:id="@+id/tv_constellation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:layout_marginStart="@dimen/dp_5"
android:text="@string/fan"
android:textColor="@color/color_999999"
android:textSize="11sp" />
android:layout_height="15dp"
android:background="@drawable/shape_58559d"
android:gravity="center"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:layout_marginStart="@dimen/dp_10"
android:textColor="@color/white"
android:textSize="10dp"
tools:text="金牛座" />
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:id="@+id/ll_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/ll_level"
app:layout_constraintStart_toStartOf="parent"
android:gravity="center_vertical"
android:layout_marginTop="@dimen/dp_10"
android:orientation="horizontal">
<androidx.core.widget.NestedScrollView
android:id="@+id/scroll_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/bottom_view_layout"
android:fillViewport="true">
<TextView
android:id="@+id/tv_erban_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:includeFontPadding="false"
android:textColor="@color/color_999999"
android:textSize="11dp"
tools:text="ID:7958626" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_20"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_fans_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:textColor="@color/color_666666"
android:textSize="13dp"
tools:text="19" />
<TextView
android:id="@+id/tv_user_fan_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:includeFontPadding="false"
android:layout_marginStart="@dimen/dp_5"
android:text="@string/fan"
android:textColor="@color/color_999999"
android:textSize="11dp" />
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/tv_desc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/ll_id"
android:textSize="@dimen/dp_11"
android:paddingTop="@dimen/dp_15"
android:lines="1"
android:ellipsize="end"
android:textColor="@color/color_666666"
tools:text="喜欢我就关注我"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.yizhuan.erban.ui.widget.magicindicator.MagicIndicator
android:id="@+id/mi_user_info"
android:layout_height="wrap_content"
android:background="@drawable/bg_corner_shadow_12"
android:padding="@dimen/dp_15"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_13"
android:orientation="vertical"
>
<TextView
android:layout_width="match_parent"
android:layout_height="36dp" />
android:layout_height="wrap_content"
android:text="礼物"
android:textSize="@dimen/sp_13"
android:textColor="@color/color_333333"
android:drawableEnd="@drawable/arrow_right_2"
/>
<androidx.viewpager.widget.ViewPager
android:id="@+id/vp_user_info"
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_gift"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="66星球&#xA;请刷新页面,如果一直出现这个界面可能是你浏览器版本过低&#xA;&#xA;true&#xA;" />
</androidx.viewpager.widget.ViewPager>
android:layout_height="wrap_content"
/>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_dynamic_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_corner_shadow_12"
android:orientation="vertical"
android:paddingTop="@dimen/dp_15"
android:paddingBottom="@dimen/dp_15"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_13"
android:layout_marginBottom="@dimen/dp_50"
>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="动态"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_15"
android:textSize="@dimen/sp_13"
android:textColor="@color/color_333333"
android:drawableEnd="@drawable/arrow_right_2"
/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_dynamic"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
<ViewStub
android:id="@+id/vs_bottom_layout"
android:layout_width="match_parent"
android:layout_height="74dp"
android:layout_gravity="bottom"
android:layout_alignParentBottom="true"
android:layout="@layout/user_info_bottom_layout"
app:layout_behavior="com.yizhuan.erban.ui.user.ScrollAwareBehavior" />
<androidx.appcompat.widget.Toolbar
android:id="@+id/tb_user_info"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:visibility="visible"
app:contentInsetStart="0dp"
app:layout_collapseMode="pin">
</androidx.coordinatorlayout.widget.CoordinatorLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:paddingLeft="15dp"
android:paddingRight="15dp">
<ImageView
android:id="@+id/iv_user_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_user_info_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/user_info"
android:textColor="@color/color_333333"
android:textSize="16sp"
android:visibility="visible" />
<ImageView
android:id="@+id/iv_edit"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:src="@drawable/icon_home_page_more" />
<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:textColor="@color/color_999999"
android:visibility="gone"
android:text="编辑"
/>
</RelativeLayout>
</androidx.appcompat.widget.Toolbar>
</RelativeLayout>
</layout>

View File

@@ -200,6 +200,7 @@
android:id="@+id/rl_audio_record"
android:layout_width="match_parent"
android:layout_height="50dp"
android:visibility="gone"
android:gravity="center_vertical"
android:layout_marginStart="15dp">

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="fitXY" />

View File

@@ -37,9 +37,88 @@
android:src="@mipmap/bg_home_top"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.Toolbar
android:id="@+id/tool_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:contentInsetStart="0dp"
app:layout_collapseMode="pin"
app:layout_constraintTop_toTopOf="parent"
>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:id="@+id/title_bar"
android:layout_width="match_parent"
android:layout_height="48dp"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tv_search_room"
android:layout_width="0dp"
android:layout_height="@dimen/dp_32"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/dp_20"
android:layout_weight="1"
android:background="@drawable/bg_home_search"
android:drawableStart="@mipmap/ic_home_search"
android:drawablePadding="@dimen/dp_7"
android:gravity="center_vertical"
android:onClick="@{click}"
android:paddingStart="@dimen/dp_11"
android:paddingEnd="5dp"
android:text="@string/search_hint"
android:textColor="@color/white"
android:textSize="@dimen/sp_13" />
<ImageView
android:id="@+id/iv_ranking"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_32"
android:layout_gravity="center"
android:src="@mipmap/ic_home_ranking"
android:layout_marginEnd="@dimen/dp_15"
android:layout_marginStart="@dimen/dp_13"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:onClick="@{click}"
/>
<ImageView
android:id="@+id/iv_to_sign_in"
android:layout_width="40dp"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:layout_marginStart="@dimen/dp_11"
android:gravity="center"
android:onClick="@{click}"
android:visibility="gone"
android:scaleType="centerInside"
android:src="@drawable/icon_to_sign_in" />
<ImageView
android:id="@+id/iv_open_room"
android:layout_width="40dp"
android:layout_height="match_parent"
android:layout_gravity="end"
android:onClick="@{click}"
android:layout_marginEnd="@dimen/dp_10"
android:scaleType="centerInside"
android:visibility="gone"
android:src="@mipmap/ic_open_room" />
</LinearLayout>
</FrameLayout>
</androidx.appcompat.widget.Toolbar>
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/tool_bar"
android:visibility="visible">
<com.google.android.material.appbar.AppBarLayout
@@ -55,25 +134,18 @@
android:id="@+id/collapsing_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:contentScrim="@color/appColor"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll">
<View
android:id="@+id/iv_bg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp"
app:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_follow_room"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/iv_bg"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:paddingStart="@dimen/dp_15"
@@ -94,7 +166,7 @@
<com.yizhuan.erban.ui.widget.magicindicator.MagicIndicator
android:id="@+id/magic_indicator"
android:layout_width="0dp"
android:layout_height="@dimen/dp_35"
android:layout_height="@dimen/dp_38"
android:layout_weight="1"
android:paddingEnd="@dimen/dp_10"
/>
@@ -102,13 +174,13 @@
<TextView
android:id="@+id/tv_room_more"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:layout_height="38dp"
android:gravity="center"
android:text="更多房间"
android:onClick="@{click}"
android:textColor="@color/white"
android:textSize="@dimen/dp_12"
android:drawablePadding="@dimen/dp_5"
android:textSize="@dimen/dp_13"
android:drawablePadding="@dimen/dp_3"
android:drawableRight="@drawable/arrow_right_white"
/>
</LinearLayout>
@@ -164,85 +236,12 @@
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.appcompat.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:contentInsetStart="0dp"
app:layout_collapseMode="pin"
>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:id="@+id/title_bar"
android:layout_width="match_parent"
android:layout_height="48dp"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tv_search_room"
android:layout_width="0dp"
android:layout_height="@dimen/dp_32"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/dp_20"
android:layout_weight="1"
android:background="@drawable/bg_home_search"
android:drawableStart="@mipmap/ic_home_search"
android:drawablePadding="@dimen/dp_7"
android:gravity="center_vertical"
android:onClick="@{click}"
android:paddingStart="@dimen/dp_11"
android:paddingEnd="5dp"
android:text="@string/search_hint"
android:textColor="@color/white"
android:textSize="@dimen/sp_13" />
<ImageView
android:id="@+id/iv_ranking"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_32"
android:layout_gravity="center"
android:src="@mipmap/ic_home_ranking"
android:layout_marginEnd="@dimen/dp_15"
android:layout_marginStart="@dimen/dp_13"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:onClick="@{click}"
/>
<ImageView
android:id="@+id/iv_to_sign_in"
android:layout_width="40dp"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:layout_marginStart="@dimen/dp_11"
android:gravity="center"
android:onClick="@{click}"
android:visibility="gone"
android:scaleType="centerInside"
android:src="@drawable/icon_to_sign_in" />
<ImageView
android:id="@+id/iv_open_room"
android:layout_width="40dp"
android:layout_height="match_parent"
android:layout_gravity="end"
android:onClick="@{click}"
android:layout_marginEnd="@dimen/dp_10"
android:scaleType="centerInside"
android:visibility="gone"
android:src="@mipmap/ic_open_room" />
</LinearLayout>
</FrameLayout>
</androidx.appcompat.widget.Toolbar>
</com.google.android.material.appbar.CollapsingToolbarLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_5"
android:gravity="center"
android:orientation="vertical"
>
<ImageView
android:id="@+id/iv_icon"
android:layout_width="@dimen/dp_60"
android:layout_height="@dimen/dp_60"
android:scaleType="centerCrop"
android:src="@mipmap/app_logo"
/>
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
tools:text="20"
android:textColor="@color/appColor"
android:textSize="@dimen/sp_10"
android:padding="@dimen/dp_2"
android:gravity="center"
android:layout_marginTop="-5dp"
android:background="@drawable/bg_user_gift_count"
/>
</LinearLayout>

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_5"
android:orientation="vertical"
android:gravity="center"
>
<ImageView
android:id="@+id/iv_icon"
android:layout_width="@dimen/dp_60"
android:layout_height="@dimen/dp_60"
android:scaleType="centerCrop"
android:src="@mipmap/ic_user_gift_empty"
/>
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:text="还没收到礼物"
android:textColor="@color/appColor"
android:textSize="@dimen/sp_10"
android:padding="@dimen/dp_2"
android:gravity="center"
android:layout_marginTop="-5dp"
android:background="@drawable/bg_user_gift_count"
/>
</LinearLayout>

View File

@@ -6,28 +6,6 @@
android:gravity="center"
android:background="@color/transparent"
android:orientation="horizontal">
<LinearLayout
android:layout_width="164dp"
android:layout_height="74dp"
android:orientation="vertical"
android:gravity="center"
android:background="@drawable/ic_projection">
<com.yizhuan.xchat_android_library.widget.DrawableCenterTextView
android:id="@+id/attention_layout"
android:layout_width="129dp"
android:layout_height="39dp"
android:drawablePadding="5dp"
android:drawableStart="@mipmap/icon_new_attention"
android:gravity="center"
android:text="@string/attention"
android:textColor="@color/color_333333"
android:textSize="15sp"
android:textStyle="bold"
android:background="@drawable/bg_shape_attention"/>
</LinearLayout>
<LinearLayout
android:layout_width="164dp"
@@ -44,11 +22,31 @@
android:drawablePadding="5dp"
android:gravity="center"
android:text="@string/send_msg"
android:textColor="@color/black"
android:textColor="@color/appColor"
android:textSize="15sp"
android:textStyle="bold"
android:background="@drawable/bg_shape_send_msg"/>
</LinearLayout>
<LinearLayout
android:layout_width="164dp"
android:layout_height="74dp"
android:orientation="vertical"
android:gravity="center"
android:background="@drawable/ic_projection">
<com.yizhuan.xchat_android_library.widget.DrawableCenterTextView
android:id="@+id/attention_layout"
android:layout_width="129dp"
android:layout_height="39dp"
android:drawablePadding="5dp"
android:drawableStart="@drawable/icon_new_attention"
android:gravity="center"
android:text="@string/attention"
android:textColor="@color/white"
android:textSize="15sp"
android:background="@drawable/bg_shape_attention"/>
</LinearLayout>
</LinearLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 694 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 604 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 B

View File

@@ -169,6 +169,7 @@
<dimen name="tag_height">14dp</dimen>
<dimen name="dp_18">18dp</dimen>
<dimen name="dp_17">17dp</dimen>
<!-- 头像和头饰比例是3:4 -->
<!-- 房间普通麦位 -->
<dimen name="dp_room_normal_mic_radius">55dp</dimen>

View File

@@ -879,6 +879,7 @@
<string name="pm_detail">《66星球护苗计划》</string>
<string name="charge_agreement">已阅读并同意</string>
<string name="agreement">《用户充值协议》</string>
<string name="user_info">个人资料</string>
</resources>

View File

@@ -87,8 +87,6 @@ public class DynamicNickDetailWidget extends ShapeConstrainLayout {
//魅力等级
ImageLoadUtils.loadImage(context, info.getCharmLevelPic(), ivUserCharmLevel);
//铭牌
// ImageLoadUtils.loadImage(context, info.getNameplateIcon(), ivUserNamePlate);
if (info.getNameplateWord() != null) {
inOfficialMask.setVisibility(View.VISIBLE);
TextView tvOfficialMask = inOfficialMask.findViewById(R.id.tv_official_mask);

View File

@@ -0,0 +1,264 @@
<?xml version="1.0" encoding="utf-8"?>
<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:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:orientation="vertical">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_user_info"
android:layout_width="match_parent"
android:layout_height="59dp"
android:layout_marginTop="@dimen/dp_13"
android:layout_marginEnd="@dimen/dp_20"
app:layout_constraintTop_toTopOf="parent">
<com.yizhuan.erban.common.widget.CircleImageView
android:id="@+id/iv_avatar"
android:layout_width="@dimen/dp_45"
android:layout_height="@dimen/dp_45"
app:layout_constraintBottom_toBottomOf="@+id/iv_head_wear"
app:layout_constraintEnd_toEndOf="@+id/iv_head_wear"
app:layout_constraintStart_toStartOf="@+id/iv_head_wear"
app:layout_constraintTop_toTopOf="@+id/iv_head_wear" />
<ImageView
android:id="@+id/iv_head_wear"
android:layout_width="59dp"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:layout_marginStart="@dimen/dp_10"
app:layout_constraintStart_toStartOf="parent" />
<com.yizhuan.erban.community.widget.DynamicNickDetailWidget
android:id="@+id/widget_nick_detail"
app:layout_constraintStart_toEndOf="@id/iv_head_wear"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="@dimen/dp_7"
android:layout_marginStart="@dimen/dp_8"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
android:textColor="@color/color_999999"
android:textSize="@dimen/dp_12"
app:layout_constraintBottom_toBottomOf="@id/widget_nick_detail"
app:layout_constraintEnd_toEndOf="parent"
tools:text="刚刚" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.yizhuan.erban.community.widget.ExpandableTextView
android:id="@+id/etv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_6"
android:orientation="vertical"
app:animAlphaStart="1"
app:collapseIndicator="@string/collapse"
app:expandIndicator="@string/expand"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_15"
app:expandToggleOnTextClick="false"
app:expandToggleType="TextView"
app:layout_constraintTop_toBottomOf="@id/cl_user_info"
app:maxCollapsedLines="6">
<com.netease.nim.uikit.business.session.widget.NimEmojiTextView
android:id="@+id/expandable_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lineSpacingExtra="4dp"
android:textColor="@color/color_333333"
android:textSize="15sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/expand_collapse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/expand"
android:textColor="@color/color_34A7FF"
android:textSize="15sp" />
</LinearLayout>
</com.yizhuan.erban.community.widget.ExpandableTextView>
<FrameLayout
android:id="@+id/fl_image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/dp_10"
android:paddingEnd="@dimen/dp_15"
app:layout_constraintTop_toBottomOf="@id/etv_content">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_20"
/>
</FrameLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/layout_root_mini_world"
android:layout_width="match_parent"
android:layout_height="28dp"
android:layout_marginBottom="16.5dp"
android:layout_marginTop="@dimen/dp_5"
android:orientation="horizontal"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_15"
app:layout_constraintTop_toBottomOf="@id/fl_image"
>
<LinearLayout
android:id="@+id/ll_miniworld"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_18"
android:layout_gravity="center_vertical"
android:background="@drawable/bg_dynamic_topic"
android:orientation="horizontal"
android:paddingEnd="@dimen/dp_11"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tv_mini_world_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:paddingStart="@dimen/dp_10"
android:paddingEnd="0dp"
android:maxWidth="150dp"
android:singleLine="true"
android:textColor="@color/color_7154EE"
android:textSize="@dimen/sp_12"
tools:text="小世界名称小世界名称小世界名称" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<RelativeLayout
android:id="@+id/rl_option"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_30"
android:layout_marginBottom="@dimen/dp_10"
android:orientation="horizontal"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_15"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/layout_root_mini_world"
>
<LinearLayout
android:id="@+id/ll_like"
android:layout_width="66dp"
android:layout_height="match_parent"
android:orientation="horizontal"
>
<ImageView
android:id="@+id/iv_like_pic"
android:layout_width="@dimen/dp_22"
android:layout_height="@dimen/dp_22"
android:layout_gravity="center_vertical"
android:src="@drawable/icon_dy_list_like_false"
android:scaleType="centerInside" />
<TextView
android:id="@+id/tv_like"
android:layout_width="0dp"
android:layout_height="@dimen/dp_30"
android:layout_marginStart="6.5dp"
android:layout_weight="1"
android:gravity="center_vertical"
android:textColor="@color/color_999999"
android:textSize="@dimen/sp_12"
tools:text="0" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_comment"
android:layout_width="66dp"
android:layout_height="match_parent"
android:layout_toEndOf="@id/ll_like"
android:orientation="horizontal"
android:paddingEnd="0dp">
<ImageView
android:id="@+id/iv_comment_pic"
android:layout_width="@dimen/dp_22"
android:layout_height="@dimen/dp_22"
android:layout_gravity="center_vertical"
android:scaleType="centerInside"
android:src="@drawable/icon_dy_list_comment" />
<TextView
android:id="@+id/tv_comment"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_30"
android:layout_marginStart="6.5dp"
android:gravity="center_vertical"
android:textColor="@color/color_999999"
android:textSize="@dimen/sp_12"
tools:text="0" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_share"
android:layout_width="50dp"
android:layout_height="match_parent"
android:layout_toEndOf="@id/ll_comment"
android:paddingStart="@dimen/dp_10"
android:paddingEnd="0dp">
<ImageView
android:layout_width="@dimen/dp_22"
android:layout_height="@dimen/dp_22"
android:layout_gravity="center_vertical"
android:scaleType="centerInside"
android:src="@drawable/icon_dy_list_share"
/>
</LinearLayout>
<ImageView
android:id="@+id/iv_more"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:padding="@dimen/dp_6"
android:scaleType="centerInside"
android:src="@drawable/icon_dy_item_more"
android:layout_alignParentEnd="true"
tools:visibility="visible" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginStart="15dp"
android:layout_marginTop="9.5dp"
android:layout_marginEnd="15dp"
android:background="@color/line_color"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/rl_option" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -22,7 +22,7 @@
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:text="明媚的早晨"
tools:text="明媚的早晨"
android:textColor="@color/white"
android:textSize="@dimen/sp_12"
android:gravity="center"

View File

@@ -1,5 +1,8 @@
package com.yizhuan.xchat_android_core.user.bean;
import com.chad.library.adapter.base.entity.MultiItemEntity;
import com.yizhuan.xchat_android_core.community.bean.WorldDynamicBean;
import java.io.Serializable;
import java.util.List;
@@ -9,7 +12,7 @@ public class UserDetailInfo implements Serializable {
/**
* code : 200
* message : success
* data : {"uid":935001,"nick":"我是一只小萌新","erbanNo":3894073,"fansNum":1,"userLevelVo":{"experAmount":0,"charmAmount":0,"experUrl":"http://image.doudouyue.com/wealth_01.png","charmUrl":"http://image.doudouyue.com/charm_01.png","experLevelName":"Lv1","charmLevelName":"Lv1","experLevelGrp":"","charmLevelGrp":"","experLevelSeq":1,"charmLevelSeq":1},"userGiftWall":[],"dynamicInfo":[{"uid":935001,"worldId":-1,"content":"哈哈哈哈","likeCount":3,"commentCount":0,"dynamicId":1323,"publishTime":1587613571000,"playCount":0,"type":0,"status":1,"isLike":true,"nick":"我是一只小萌新","avatar":"https://img.erbanyy.com/qingxun_default_avatar.png"},{"uid":935001,"worldId":-1,"content":"测试哦","likeCount":0,"commentCount":0,"dynamicId":1290,"publishTime":1587113734000,"playCount":0,"type":0,"status":0,"isLike":false,"nick":"我是一只小萌新","avatar":"https://img.erbanyy.com/qingxun_default_avatar.png"},{"uid":935001,"worldId":-1,"content":"哈哈哈哈","likeCount":1,"commentCount":0,"dynamicId":1260,"publishTime":1587031053000,"playCount":0,"type":0,"status":1,"isLike":false,"nick":"我是一只小萌新","avatar":"https://img.erbanyy.com/qingxun_default_avatar.png"},{"uid":935001,"worldId":-1,"content":"哈哈","likeCount":0,"commentCount":0,"dynamicId":1246,"publishTime":1587019900000,"playCount":0,"type":0,"status":0,"isLike":false,"nick":"我是一只小萌新","avatar":"https://img.erbanyy.com/qingxun_default_avatar.png"},{"uid":935001,"worldId":-1,"content":"测试","likeCount":0,"commentCount":0,"dynamicId":1234,"publishTime":1586947335000,"playCount":0,"type":0,"status":0,"isLike":false,"nick":"我是一只小萌新","avatar":"https://img.erbanyy.com/qingxun_default_avatar.png"}],"privatePhoto":[{"photoUrl":"https://img.erbanyy.com/qingxun_default_avatar.png","seqNo":0},{"pid":1300,"photoUrl":"http://image.doudouyuyin.com/FpaSiFuVl7o0IDV5mWhwsuJoPOO_?imageslim","seqNo":1,"createTime":1587986501000},{"pid":1299,"photoUrl":"http://image.doudouyuyin.com/FlehFmWF3B-u4p5Pl96D-VkH8gYo?imageslim","seqNo":1,"createTime":1587986493000},{"pid":1298,"photoUrl":"http://image.doudouyuyin.com/FgS7jdfiky4712SuV4fb4Cxpe1tV?imageslim","seqNo":1,"createTime":1587986484000}]}
* data : {"uid":935007,"nick":"大幽魂上衣","erbanNo":8072455,"fansNum":5,"userLevelVo":{"experAmount":1647,"charmAmount":182,"experUrl":"http://image.doudouyue.com/wealth_06.png","charmUrl":"http://image.doudouyue.com/charm_02.png","experLevelName":"Lv6","charmLevelName":"Lv2","experLevelGrp":"","charmLevelGrp":"","experLevelSeq":6,"charmLevelSeq":2},"userGiftWall":[{"uid":935007,"giftPrice":100,"giftId":1362,"giftName":"棒棒糖","picUrl":"http://image.doudouyuyin.com/FutM6ydZBdAn6Iz_ro7mgen1Cmph?imageslim","reciveCount":152}],"dynamicInfo":[{"uid":935007,"worldId":-1,"content":"人生不如意之事 十之八九\n放下才是解脱","likeCount":1,"commentCount":2,"dynamicId":1339,"publishTime":1587726740000,"playCount":0,"type":2,"dynamicResList":[{"id":950,"resUrl":"https://img.erbanyy.com/FhWRCGNLYybra8--ItDfuN3lpCIX?imageslim","resDuration":0,"format":"jpeg","width":2000,"height":1500}],"status":1,"isLike":false,"nick":"大幽魂上衣","avatar":"https://img.erbanyy.com/rotate_picture_1587010848888.jpg?imageslim"},{"uid":935007,"worldId":-1,"content":"努力,才能保证你的价值🌹🌷💐🥀🍂🍁🌼🌸🌺🍃🌾🌱🌾🎍🌵🌵🌿🍀🌳🌳💐🌻🌷🌻","likeCount":1,"commentCount":1,"dynamicId":1337,"publishTime":1587726053000,"playCount":0,"type":2,"dynamicResList":[{"id":948,"resUrl":"https://img.erbanyy.com/FhwRh_iAaqRkgsOZdHK3n3TM75Zq?imageslim","resDuration":0,"format":"jpeg","width":2000,"height":1500}],"status":1,"isLike":false,"nick":"大幽魂上衣","avatar":"https://img.erbanyy.com/rotate_picture_1587010848888.jpg?imageslim"},{"uid":935007,"worldId":-1,"content":"盘他","likeCount":1,"commentCount":1,"dynamicId":1330,"publishTime":1587721604000,"playCount":0,"type":2,"dynamicResList":[{"id":947,"resUrl":"https://img.erbanyy.com/FpthMLmgrkDHfEatTBKb0h05mnXj?imageslim","resDuration":0,"format":"jpeg","width":1080,"height":1672}],"status":1,"isLike":false,"nick":"大幽魂上衣","avatar":"https://img.erbanyy.com/rotate_picture_1587010848888.jpg?imageslim"},{"uid":935007,"worldId":-1,"content":"铁汁,奥力给,没毛病吧?!","likeCount":1,"commentCount":3,"dynamicId":1329,"publishTime":1587720609000,"playCount":0,"type":2,"dynamicResList":[{"id":946,"resUrl":"https://img.erbanyy.com/FtV48sdlmrKkc69OSft43J-S7wDk?imageslim","resDuration":0,"format":"png","width":1080,"height":1920}],"status":1,"isLike":false,"nick":"大幽魂上衣","avatar":"https://img.erbanyy.com/rotate_picture_1587010848888.jpg?imageslim"},{"uid":935007,"worldId":-1,"content":"上热门🦆","likeCount":5,"commentCount":7,"dynamicId":1327,"publishTime":1587711821000,"playCount":0,"type":2,"dynamicResList":[{"id":938,"resUrl":"https://img.erbanyy.com/FgInE7evjBy8lL33uHkmvORMlC1_?imageslim","resDuration":0,"format":"jpeg","width":1296,"height":1728}],"status":1,"isLike":false,"nick":"大幽魂上衣","avatar":"https://img.erbanyy.com/rotate_picture_1587010848888.jpg?imageslim"}],"privatePhoto":[{"photoUrl":"https://img.erbanyy.com/rotate_picture_1587010848888.jpg?imageslim","seqNo":0}]}
*/
private int code;
@@ -42,24 +45,51 @@ public class UserDetailInfo implements Serializable {
public static class DataBean {
/**
* uid : 935001
* nick : 我是一只小萌新
* erbanNo : 3894073
* fansNum : 1
* userLevelVo : {"experAmount":0,"charmAmount":0,"experUrl":"http://image.doudouyue.com/wealth_01.png","charmUrl":"http://image.doudouyue.com/charm_01.png","experLevelName":"Lv1","charmLevelName":"Lv1","experLevelGrp":"","charmLevelGrp":"","experLevelSeq":1,"charmLevelSeq":1}
* userGiftWall : []
* dynamicInfo : [{"uid":935001,"worldId":-1,"content":"哈哈哈哈","likeCount":3,"commentCount":0,"dynamicId":1323,"publishTime":1587613571000,"playCount":0,"type":0,"status":1,"isLike":true,"nick":"我是一只小萌新","avatar":"https://img.erbanyy.com/qingxun_default_avatar.png"},{"uid":935001,"worldId":-1,"content":"测试哦","likeCount":0,"commentCount":0,"dynamicId":1290,"publishTime":1587113734000,"playCount":0,"type":0,"status":0,"isLike":false,"nick":"我是一只小萌新","avatar":"https://img.erbanyy.com/qingxun_default_avatar.png"},{"uid":935001,"worldId":-1,"content":"哈哈哈哈","likeCount":1,"commentCount":0,"dynamicId":1260,"publishTime":1587031053000,"playCount":0,"type":0,"status":1,"isLike":false,"nick":"我是一只小萌新","avatar":"https://img.erbanyy.com/qingxun_default_avatar.png"},{"uid":935001,"worldId":-1,"content":"哈哈","likeCount":0,"commentCount":0,"dynamicId":1246,"publishTime":1587019900000,"playCount":0,"type":0,"status":0,"isLike":false,"nick":"我是一只小萌新","avatar":"https://img.erbanyy.com/qingxun_default_avatar.png"},{"uid":935001,"worldId":-1,"content":"测试","likeCount":0,"commentCount":0,"dynamicId":1234,"publishTime":1586947335000,"playCount":0,"type":0,"status":0,"isLike":false,"nick":"我是一只小萌新","avatar":"https://img.erbanyy.com/qingxun_default_avatar.png"}]
* privatePhoto : [{"photoUrl":"https://img.erbanyy.com/qingxun_default_avatar.png","seqNo":0},{"pid":1300,"photoUrl":"http://image.doudouyuyin.com/FpaSiFuVl7o0IDV5mWhwsuJoPOO_?imageslim","seqNo":1,"createTime":1587986501000},{"pid":1299,"photoUrl":"http://image.doudouyuyin.com/FlehFmWF3B-u4p5Pl96D-VkH8gYo?imageslim","seqNo":1,"createTime":1587986493000},{"pid":1298,"photoUrl":"http://image.doudouyuyin.com/FgS7jdfiky4712SuV4fb4Cxpe1tV?imageslim","seqNo":1,"createTime":1587986484000}]
* uid : 935007
* nick : 大幽魂上衣
* erbanNo : 8072455
* fansNum : 5
* userLevelVo : {"experAmount":1647,"charmAmount":182,"experUrl":"http://image.doudouyue.com/wealth_06.png","charmUrl":"http://image.doudouyue.com/charm_02.png","experLevelName":"Lv6","charmLevelName":"Lv2","experLevelGrp":"","charmLevelGrp":"","experLevelSeq":6,"charmLevelSeq":2}
* userGiftWall : [{"uid":935007,"giftPrice":100,"giftId":1362,"giftName":"棒棒糖","picUrl":"http://image.doudouyuyin.com/FutM6ydZBdAn6Iz_ro7mgen1Cmph?imageslim","reciveCount":152}]
* dynamicInfo : [{"uid":935007,"worldId":-1,"content":"人生不如意之事 十之八九\n放下才是解脱","likeCount":1,"commentCount":2,"dynamicId":1339,"publishTime":1587726740000,"playCount":0,"type":2,"dynamicResList":[{"id":950,"resUrl":"https://img.erbanyy.com/FhWRCGNLYybra8--ItDfuN3lpCIX?imageslim","resDuration":0,"format":"jpeg","width":2000,"height":1500}],"status":1,"isLike":false,"nick":"大幽魂上衣","avatar":"https://img.erbanyy.com/rotate_picture_1587010848888.jpg?imageslim"},{"uid":935007,"worldId":-1,"content":"努力,才能保证你的价值🌹🌷💐🥀🍂🍁🌼🌸🌺🍃🌾🌱🌾🎍🌵🌵🌿🍀🌳🌳💐🌻🌷🌻","likeCount":1,"commentCount":1,"dynamicId":1337,"publishTime":1587726053000,"playCount":0,"type":2,"dynamicResList":[{"id":948,"resUrl":"https://img.erbanyy.com/FhwRh_iAaqRkgsOZdHK3n3TM75Zq?imageslim","resDuration":0,"format":"jpeg","width":2000,"height":1500}],"status":1,"isLike":false,"nick":"大幽魂上衣","avatar":"https://img.erbanyy.com/rotate_picture_1587010848888.jpg?imageslim"},{"uid":935007,"worldId":-1,"content":"盘他","likeCount":1,"commentCount":1,"dynamicId":1330,"publishTime":1587721604000,"playCount":0,"type":2,"dynamicResList":[{"id":947,"resUrl":"https://img.erbanyy.com/FpthMLmgrkDHfEatTBKb0h05mnXj?imageslim","resDuration":0,"format":"jpeg","width":1080,"height":1672}],"status":1,"isLike":false,"nick":"大幽魂上衣","avatar":"https://img.erbanyy.com/rotate_picture_1587010848888.jpg?imageslim"},{"uid":935007,"worldId":-1,"content":"铁汁,奥力给,没毛病吧?!","likeCount":1,"commentCount":3,"dynamicId":1329,"publishTime":1587720609000,"playCount":0,"type":2,"dynamicResList":[{"id":946,"resUrl":"https://img.erbanyy.com/FtV48sdlmrKkc69OSft43J-S7wDk?imageslim","resDuration":0,"format":"png","width":1080,"height":1920}],"status":1,"isLike":false,"nick":"大幽魂上衣","avatar":"https://img.erbanyy.com/rotate_picture_1587010848888.jpg?imageslim"},{"uid":935007,"worldId":-1,"content":"上热门🦆","likeCount":5,"commentCount":7,"dynamicId":1327,"publishTime":1587711821000,"playCount":0,"type":2,"dynamicResList":[{"id":938,"resUrl":"https://img.erbanyy.com/FgInE7evjBy8lL33uHkmvORMlC1_?imageslim","resDuration":0,"format":"jpeg","width":1296,"height":1728}],"status":1,"isLike":false,"nick":"大幽魂上衣","avatar":"https://img.erbanyy.com/rotate_picture_1587010848888.jpg?imageslim"}]
* privatePhoto : [{"photoUrl":"https://img.erbanyy.com/rotate_picture_1587010848888.jpg?imageslim","seqNo":0}]
*/
private int uid;
private String nick;
private int erbanNo;
private int fansNum;
private long birth;
private UserLevelVoBean userLevelVo;
private List<?> userGiftWall;
private List<DynamicInfoBean> dynamicInfo;
private List<UserGiftWallBean> userGiftWall;
private List<WorldDynamicBean> dynamicInfo;
private List<PrivatePhotoBean> privatePhoto;
private String nameplatePic;
private String nameplateWord;
public String getNameplatePic() {
return nameplatePic;
}
public void setNameplatePic(String nameplatePic) {
this.nameplatePic = nameplatePic;
}
public String getNameplateWord() {
return nameplateWord;
}
public void setNameplateWord(String nameplateWord) {
this.nameplateWord = nameplateWord;
}
public long getBirth() {
return birth;
}
public void setBirth(long birth) {
this.birth = birth;
}
public int getUid() {
return uid;
@@ -101,19 +131,19 @@ public class UserDetailInfo implements Serializable {
this.userLevelVo = userLevelVo;
}
public List<?> getUserGiftWall() {
public List<UserGiftWallBean> getUserGiftWall() {
return userGiftWall;
}
public void setUserGiftWall(List<?> userGiftWall) {
public void setUserGiftWall(List<UserGiftWallBean> userGiftWall) {
this.userGiftWall = userGiftWall;
}
public List<DynamicInfoBean> getDynamicInfo() {
public List<WorldDynamicBean> getDynamicInfo() {
return dynamicInfo;
}
public void setDynamicInfo(List<DynamicInfoBean> dynamicInfo) {
public void setDynamicInfo(List<WorldDynamicBean> dynamicInfo) {
this.dynamicInfo = dynamicInfo;
}
@@ -127,16 +157,16 @@ public class UserDetailInfo implements Serializable {
public static class UserLevelVoBean {
/**
* experAmount : 0
* charmAmount : 0
* experUrl : http://image.doudouyue.com/wealth_01.png
* charmUrl : http://image.doudouyue.com/charm_01.png
* experLevelName : Lv1
* charmLevelName : Lv1
* experAmount : 1647
* charmAmount : 182
* experUrl : http://image.doudouyue.com/wealth_06.png
* charmUrl : http://image.doudouyue.com/charm_02.png
* experLevelName : Lv6
* charmLevelName : Lv2
* experLevelGrp :
* charmLevelGrp :
* experLevelSeq : 1
* charmLevelSeq : 1
* experLevelSeq : 6
* charmLevelSeq : 2
*/
private int experAmount;
@@ -231,36 +261,25 @@ public class UserDetailInfo implements Serializable {
}
}
public static class DynamicInfoBean {
public static class UserGiftWallBean implements MultiItemEntity {
/**
* uid : 935001
* worldId : -1
* content : 哈哈哈哈
* likeCount : 3
* commentCount : 0
* dynamicId : 1323
* publishTime : 1587613571000
* playCount : 0
* type : 0
* status : 1
* isLike : true
* nick : 我是一只小萌新
* avatar : https://img.erbanyy.com/qingxun_default_avatar.png
* uid : 935007
* giftPrice : 100
* giftId : 1362
* giftName : 棒棒糖
* picUrl : http://image.doudouyuyin.com/FutM6ydZBdAn6Iz_ro7mgen1Cmph?imageslim
* reciveCount : 152
*/
private int uid;
private int worldId;
private String content;
private int likeCount;
private int commentCount;
private int dynamicId;
private long publishTime;
private int playCount;
private int type;
private int status;
private boolean isLike;
private String nick;
private String avatar;
private int giftPrice;
private int giftId;
private String giftName;
private String picUrl;
private int reciveCount;
public static final int TYPE_EMPTY = 0;
public static final int TYPE_NORMAL = 1;
private int itemType = 1;
public int getUid() {
return uid;
@@ -270,115 +289,65 @@ public class UserDetailInfo implements Serializable {
this.uid = uid;
}
public int getWorldId() {
return worldId;
public int getGiftPrice() {
return giftPrice;
}
public void setWorldId(int worldId) {
this.worldId = worldId;
public void setGiftPrice(int giftPrice) {
this.giftPrice = giftPrice;
}
public String getContent() {
return content;
public int getGiftId() {
return giftId;
}
public void setContent(String content) {
this.content = content;
public void setGiftId(int giftId) {
this.giftId = giftId;
}
public int getLikeCount() {
return likeCount;
public String getGiftName() {
return giftName;
}
public void setLikeCount(int likeCount) {
this.likeCount = likeCount;
public void setGiftName(String giftName) {
this.giftName = giftName;
}
public int getCommentCount() {
return commentCount;
public String getPicUrl() {
return picUrl;
}
public void setCommentCount(int commentCount) {
this.commentCount = commentCount;
public void setPicUrl(String picUrl) {
this.picUrl = picUrl;
}
public int getDynamicId() {
return dynamicId;
public int getReciveCount() {
return reciveCount;
}
public void setDynamicId(int dynamicId) {
this.dynamicId = dynamicId;
public void setReciveCount(int reciveCount) {
this.reciveCount = reciveCount;
}
public long getPublishTime() {
return publishTime;
public int getItemType() {
return itemType;
}
public void setPublishTime(long publishTime) {
this.publishTime = publishTime;
}
public int getPlayCount() {
return playCount;
}
public void setPlayCount(int playCount) {
this.playCount = playCount;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public boolean isIsLike() {
return isLike;
}
public void setIsLike(boolean isLike) {
this.isLike = isLike;
}
public String getNick() {
return nick;
}
public void setNick(String nick) {
this.nick = nick;
}
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
public void setItemType(int itemType) {
this.itemType = itemType;
}
}
public static class PrivatePhotoBean {
/**
* photoUrl : https://img.erbanyy.com/qingxun_default_avatar.png
* photoUrl : https://img.erbanyy.com/rotate_picture_1587010848888.jpg?imageslim
* seqNo : 0
* pid : 1300
* createTime : 1587986501000
*/
private String photoUrl;
private int seqNo;
private int pid;
private long createTime;
public String getPhotoUrl() {
return photoUrl;
@@ -395,22 +364,6 @@ public class UserDetailInfo implements Serializable {
public void setSeqNo(int seqNo) {
this.seqNo = seqNo;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public long getCreateTime() {
return createTime;
}
public void setCreateTime(long createTime) {
this.createTime = createTime;
}
}
}
}

View File

@@ -88,6 +88,8 @@ public class UserInfo implements Serializable {
/**
* 等级信息
*/
@Getter
@Setter
private UserLevelVo userLevelVo;
/**
@@ -97,6 +99,8 @@ public class UserInfo implements Serializable {
@Setter
private String nameplatePic;
@Getter
@Setter
private String nameplateWord;
/**
* 头饰信息