移除了旧版首页相关代码

This commit is contained in:
huangjian
2021-11-26 18:14:16 +08:00
parent a6a39a57f5
commit a71b2d00c3
130 changed files with 35 additions and 12957 deletions

View File

@@ -981,16 +981,6 @@
<activity <activity
android:name=".avroom.activity.CpRoomInviteActivity" android:name=".avroom.activity.CpRoomInviteActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity
android:name=".avroom.game.MatchActivity"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity
android:name=".avroom.game.PlayGameActivity"
android:launchMode="singleTop"
android:screenOrientation="portrait"
android:theme="@style/AVRoomTheme"
android:windowSoftInputMode="stateHidden" />
<activity <activity
android:name=".module_hall.hall.activity.HallSearchActivity" android:name=".module_hall.hall.activity.HallSearchActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
@@ -1012,12 +1002,7 @@
android:name=".avroom.recommendcard.MyRecommendCardActivity" android:name=".avroom.recommendcard.MyRecommendCardActivity"
android:launchMode="singleTask" android:launchMode="singleTask"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity <!-- 房间内私聊 -->
android:name=".home.activity.AllGameActivity"
android:screenOrientation="portrait" />
<activity
android:name=".home.activity.UserMatchActivity"
android:screenOrientation="portrait" /> <!-- 房间内私聊 -->
<activity <activity
android:name="com.yizhuan.tutu.room_chat.activity.NimRoomP2PMessageActivity" android:name="com.yizhuan.tutu.room_chat.activity.NimRoomP2PMessageActivity"
android:theme="@style/room_message_activity" /> android:theme="@style/room_message_activity" />
@@ -1136,7 +1121,7 @@
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity <activity
android:name=".home.fragment.CommunityNoticeAct" android:name=".home.activity.CommunityNoticeAct"
android:exported="true" android:exported="true"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />

View File

@@ -206,7 +206,6 @@ public class MessageView extends FrameLayout {
private Consumer<String> clickConsumer; private Consumer<String> clickConsumer;
@Setter @Setter
private OnClick onClick; private OnClick onClick;
private Disposable subscribe;
public MessageView(Context context) { public MessageView(Context context) {
this(context, null); this(context, null);
@@ -235,8 +234,7 @@ public class MessageView extends FrameLayout {
@Override @Override
protected void onDetachedFromWindow() { protected void onDetachedFromWindow() {
disposable.dispose(); if (disposable != null) disposable.dispose();
subscribe.dispose();
super.onDetachedFromWindow(); super.onDetachedFromWindow();
} }

View File

@@ -1,4 +1,4 @@
package com.yizhuan.erban.home.fragment; package com.yizhuan.erban.home.activity;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;

View File

@@ -150,31 +150,6 @@ public class HomeMoreRoomActivity extends BaseMvpActivity<IMainFragmentView, Mai
} }
@Override
public void titleListSuccess(List<TagListInfo> tagListInfoList) {
}
@Override
public void titleListFail(String msg) {
}
@Override
public void onGetFirstPageBannerFailed(String message) {
}
@Override
public void roomWorldModeCloseSuccess() {
}
@Override
public void roomWorldModeCloseFail(String error) {
}
@Override @Override
public void onGetHomeBannerSuccess(List<BannerInfo> bannerInfos) { public void onGetHomeBannerSuccess(List<BannerInfo> bannerInfos) {
@@ -221,11 +196,6 @@ public class HomeMoreRoomActivity extends BaseMvpActivity<IMainFragmentView, Mai
ViewPagerHelper.bind(magicIndicator, viewPager); ViewPagerHelper.bind(magicIndicator, viewPager);
} }
@Override
public void getRoomShortcut(String data) {
}
@Override @Override
protected boolean needSteepStateBar() { protected boolean needSteepStateBar() {
return true; return true;

View File

@@ -1,83 +0,0 @@
package com.yizhuan.erban.home.adapter;
import android.content.Context;
import androidx.core.content.ContextCompat;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import com.yizhuan.erban.R;
import com.yizhuan.erban.ui.widget.XRecyclerView.ScaleTransitionPagerTitleView;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerIndicator;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerTitleView;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.indicators.LinePagerIndicator;
import com.yizhuan.xchat_android_core.home.bean.TabInfo;
import java.util.List;
/**
* <p> 公共多个滑动tab样式 </p>
*
* @author Administrator
* @date 2017/11/15
*/
public class CommonMagicIndicatorAdapter extends CommonNavigatorAdapter {
private Context mContext;
private List<TabInfo> mTitleList;
private int mBottomMargin;
public CommonMagicIndicatorAdapter(Context context, List<TabInfo> titleList, int bottomMargin) {
mContext = context;
mTitleList = titleList;
mBottomMargin = bottomMargin;
}
@Override
public int getCount() {
return mTitleList == null ? 0 : mTitleList.size();
}
@Override
public IPagerTitleView getTitleView(Context context, final int i) {
ScaleTransitionPagerTitleView scaleTransitionPagerTitleView = new ScaleTransitionPagerTitleView(context);
scaleTransitionPagerTitleView.setNormalColor(ContextCompat.getColor(mContext, R.color.color_666666));
scaleTransitionPagerTitleView.setSelectedColor(ContextCompat.getColor(mContext, R.color.color_000000));
scaleTransitionPagerTitleView.setMinScale(1);
scaleTransitionPagerTitleView.setTextSize(16);
scaleTransitionPagerTitleView.setText(mTitleList.get(i).getName());
scaleTransitionPagerTitleView.setOnClickListener(view -> {
if (mOnItemSelectListener != null) {
mOnItemSelectListener.onItemSelect(i);
}
});
return scaleTransitionPagerTitleView;
}
@Override
public IPagerIndicator getIndicator(Context context) {
LinePagerIndicator indicator = new LinePagerIndicator(context);
indicator.setMode(LinePagerIndicator.MODE_WRAP_CONTENT);
indicator.setLineHeight(UIUtil.dip2px(mContext, 2.5));
indicator.setRoundRadius(UIUtil.dip2px(mContext, 1.25));
indicator.setLineWidth(UIUtil.dip2px(mContext, 27));
indicator.setColors(context.getResources().getColor(R.color.appColor));
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
lp.bottomMargin = mBottomMargin;
indicator.setLayoutParams(lp);
return indicator;
}
private OnItemSelectListener mOnItemSelectListener;
public void setOnItemSelectListener(OnItemSelectListener onItemSelectListener) {
mOnItemSelectListener = onItemSelectListener;
}
public interface OnItemSelectListener {
void onItemSelect(int position);
}
}

View File

@@ -1,172 +0,0 @@
package com.yizhuan.erban.home.adapter;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import androidx.annotation.Nullable;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target;
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.netease.nim.uikit.support.glide.GlideApp;
import com.yizhuan.erban.R;
import com.yizhuan.erban.avroom.activity.AVRoomActivity;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.erban.ui.widget.LivingIconView;
import com.yizhuan.erban.ui.widget.RoomItemView;
import com.yizhuan.erban.ui.widget.marqueeview.Utils;
import com.yizhuan.xchat_android_core.home.bean.HomeRoom;
import java.util.List;
/**
* @author jack
* @Description
* @Date 2018/4/16
*/
public class ErbanRecommendAdapter extends BaseMultiItemQuickAdapter<HomeRoom, BaseViewHolder> {
private Context mContext;
private int mRound, mTagHeight, mBadgeHeight;
public ErbanRecommendAdapter(Context context, @Nullable List<HomeRoom> data) {
super(data);
addItemType(HomeRoom.TYPE_GIRD, R.layout.item_erban_recommend);
addItemType(HomeRoom.TYPE_LINEAR, R.layout.item_room_recommended);
addItemType(HomeRoom.TYPE_GIRD_EMPTY, R.layout.item_erban_grid_empty);
this.mContext = context;
mRound = Utils.dip2px(mContext, 9);
mTagHeight = (int) context.getResources().getDimension(R.dimen.tag_height);
mBadgeHeight = (int) context.getResources().getDimension(R.dimen.tag_height);
}
private void setLinearTypeData(BaseViewHolder helper, HomeRoom homeRoom) {
RoomItemView roomItemView = helper.getView(R.id.riv_room_view);
roomItemView.bindData(homeRoom);
}
private void setGridEmptyData(BaseViewHolder helper, HomeRoom homeRoom) {
}
@Override
protected void convert(BaseViewHolder helper, HomeRoom homeRoom) {
if (homeRoom.getItemType() == HomeRoom.TYPE_LINEAR) {
setLinearTypeData(helper, homeRoom);
return;
}
if (homeRoom.getItemType() == HomeRoom.TYPE_GIRD_EMPTY) {
setGridEmptyData(helper, homeRoom);
return;
}
helper.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AVRoomActivity.start(mContext, homeRoom.getUid());
}
});
LivingIconView livingIconView = helper.getView(R.id.liv_living_icon);
livingIconView.setColor(Color.WHITE);
livingIconView.start();
helper.setText(R.id.tv_online_number, mContext.getString(R.string.online_number_text, homeRoom.getOnlineNum()))
.setText(R.id.tv_title, homeRoom.getTitle());
helper.getView(R.id.lock_bg).setVisibility(!TextUtils.isEmpty(homeRoom.getRoomPwd()) ? View.VISIBLE : View.GONE);
ImageView mIvTabLabel = helper.getView(R.id.iv_tab_label);
//
// mIvEmperorRecommend.setVisibility(homeRoom.getIsRecom() > 0 ? View.VISIBLE : View.GONE);
// GlideApp.with(mContext)
// .load(mContext.getResources().getDrawable(R.drawable.ic_king_recommend))
//// .load(homeRoom.getIsRecom() > 0 ? NobleUtil.getEmperorRecommendTag(7) : 0)
// .fitCenter()
// .into(mIvEmperorRecommend);
if (homeRoom.getIsRecom() > 0) {
mIvTabLabel.setVisibility(View.VISIBLE);
GlideApp.with(mContext)
.load(mContext.getResources().getDrawable(R.drawable.ic_king_recommend))
.fitCenter()
.into(mIvTabLabel);
} else if (!TextUtils.isEmpty(homeRoom.badge)) {
mIvTabLabel.setVisibility(View.VISIBLE);
GlideApp.with(mContext)
.load(homeRoom.badge)
.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) {
float ratio = (drawable.getIntrinsicHeight() + 0.F) / drawable.getIntrinsicWidth();
int width = Math.round(mBadgeHeight / ratio);
int height = mBadgeHeight;
ViewGroup.LayoutParams params = mIvTabLabel.getLayoutParams();
params.width = width;
params.height = height;
mIvTabLabel.setLayoutParams(params);
mIvTabLabel.setImageDrawable(drawable);
return true;
}
})
.into(mIvTabLabel);
} else
mIvTabLabel.setVisibility(View.INVISIBLE);
// mIvTabLabel.setVisibility(TextUtils.isEmpty(homeRoom.badge) ? View.INVISIBLE : View.VISIBLE);
// GlideApp.with(mContext)
// .load(homeRoom.badge)
// .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) {
// float ratio = (drawable.getIntrinsicHeight() + 0.F) / drawable.getIntrinsicWidth();
// int width = Math.round(mBadgeHeight / ratio);
// int height = mBadgeHeight;
// ViewGroup.LayoutParams params = mIvTabLabel.getLayoutParams();
// params.width = width;
// params.height = height;
// mIvTabLabel.setLayoutParams(params);
// mIvTabLabel.setImageDrawable(drawable);
// return true;
// }
// })
// .into(mIvTabLabel);
ImageView ivCover = helper.getView(R.id.iv_cover);
if (!TextUtils.isEmpty(homeRoom.getAvatar())) {
ImageLoadUtils.loadAvatarBig(homeRoom.getAvatar(), ivCover, R.drawable.default_cover);
} else {
GlideApp.with(mContext)
.load(R.drawable.default_cover)
.placeholder(R.drawable.default_cover)
.transforms(new CenterCrop(), new RoundedCorners(mRound))
.into(ivCover);
}
}
}

View File

@@ -1,112 +0,0 @@
package com.yizhuan.erban.home.adapter;
import android.content.Context;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.yizhuan.erban.R;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.erban.ui.widget.marqueeview.BetterMarqueeView;
import com.yizhuan.xchat_android_core.home.bean.TopMessage;
import com.yizhuan.xchat_android_core.home.bean.VMTopMessage;
import java.util.List;
/**
* @author jack
* @Description 滚动轮播适配器
* @Date 2018/5/3
*/
public class ErbanTopMessageAdapter extends BetterMarqueeView.Adapter<ErbanTopMessageAdapter.ErBanTopMessageViewHolder> {
private Context context;
private List<VMTopMessage> vmTopMessageList;
public ErbanTopMessageAdapter(Context context,List<VMTopMessage> vmTopMessageList) {
this.context = context;
this.vmTopMessageList = vmTopMessageList;
}
@Override
public ErbanTopMessageAdapter.ErBanTopMessageViewHolder onCreateView(ViewGroup parent) {
return new ErBanTopMessageViewHolder(LayoutInflater.from(this.context).inflate(R.layout.item_erban_top_message,parent,false));
}
@Override
public void onBindViewHolder(ErbanTopMessageAdapter.ErBanTopMessageViewHolder holder, int position) {
VMTopMessage item = vmTopMessageList.get(position);
TextView[] textViews = new TextView[]{holder.tvMsg1,holder.tvMsg2};
for (TextView textView : textViews) {
textView.setText("");
}
ImageView[] imageViews = new ImageView[]{holder.ivMsg1,holder.ivMsg2};
for (ImageView imageView : imageViews) {
imageView.setVisibility(View.GONE);
}
String imgUrl = null;
for (int i = 0; i < item.getTopMessageList().size() ; i++) {
if (i >= textViews.length) break;
TopMessage topMessage = item.getTopMessageList().get(i);
if (!TextUtils.isEmpty(topMessage.getImg()) && imgUrl == null){
imgUrl = topMessage.getImg();
}
if (!TextUtils.isEmpty(topMessage.getTitle())){
textViews[i].setText(topMessage.getTitle());
if (topMessage.getTipType() == TopMessage.TIP_TYPE_ABOUT_ME){
imageViews[i].setVisibility(View.VISIBLE);
imageViews[i].setImageResource(R.drawable.erban_toutiao_tag_about_me);
}else if (topMessage.getTipType() == TopMessage.TIP_TYPE_NEW){
imageViews[i].setVisibility(View.VISIBLE);
imageViews[i].setImageResource(R.drawable.erban_toutiao_tag_new);
}else if (topMessage.getTipType() == TopMessage.TIP_TYPE_MONSTER){
imageViews[i].setVisibility(View.VISIBLE);
imageViews[i].setImageResource(R.drawable.erban_toutiao_tag_monster);
}
}
}
if (null != imgUrl){
holder.ivPic.setVisibility(View.VISIBLE);
ImageLoadUtils.loadImage(context,imgUrl,holder.ivPic, R.drawable.default_cover);
}else{
holder.ivPic.setVisibility(View.GONE);
}
}
@Override
public int getSize() {
return vmTopMessageList.size();
}
class ErBanTopMessageViewHolder extends BetterMarqueeView.ViewHolder{
private TextView tvMsg1;
private TextView tvMsg2;
private ImageView ivPic;
private ImageView ivMsg1;
private ImageView ivMsg2;
public ErBanTopMessageViewHolder(View itemView) {
super(itemView);
ivMsg1 = (ImageView) itemView.findViewById(R.id.iv_msg1);
ivMsg2 = (ImageView) itemView.findViewById(R.id.iv_msg2);
tvMsg1 = (TextView) itemView.findViewById(R.id.tv_msg1);
tvMsg2 = (TextView) itemView.findViewById(R.id.tv_msg2);
ivPic = (ImageView) itemView.findViewById(R.id.iv_pic);
}
}
}

View File

@@ -1,135 +0,0 @@
package com.yizhuan.erban.home.adapter;
import android.content.Context;
import androidx.annotation.Nullable;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.netease.nim.uikit.support.glide.GlideApp;
import com.yizhuan.erban.R;
import com.yizhuan.erban.avroom.activity.AVRoomActivity;
import com.yizhuan.erban.decoration.view.DecorationStoreActivity;
import com.yizhuan.erban.ui.im.RouterHandler;
import com.yizhuan.erban.ui.webview.CommonWebViewActivity;
import com.yizhuan.erban.ui.widget.RedPointView;
import com.yizhuan.xchat_android_constants.XChatConstants;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.home.bean.FindEntranceInfo;
import com.yizhuan.xchat_android_core.im.custom.bean.RouterType;
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_library.utils.SingleToastUtil;
import java.util.List;
/**
* @author jackI
* @Description
* @Date 2018/5/24
*/
public class FindAdapter extends BaseQuickAdapter<FindEntranceInfo, BaseViewHolder> {
private Context context;
private final int itemWidth;
public FindAdapter(Context context, @Nullable List<FindEntranceInfo> data) {
super(R.layout.list_item_find_rv, data);
this.context = context;
int screenWidth = context.getResources().getDisplayMetrics().widthPixels;
itemWidth = (screenWidth - ScreenUtil.dip2px(20) * 2 - ScreenUtil.dip2px(12) * 3) / 4;
}
@Override
protected BaseViewHolder onCreateDefViewHolder(ViewGroup parent, int viewType) {
BaseViewHolder baseViewHolder = super.onCreateDefViewHolder(parent, viewType);
ViewGroup.LayoutParams layoutParams = baseViewHolder.itemView.getLayoutParams();
layoutParams.width = itemWidth;
baseViewHolder.itemView.setLayoutParams(layoutParams);
return baseViewHolder;
}
@Override
protected void convert(BaseViewHolder helper, FindEntranceInfo item) {
ImageView rivPic = helper.getView(R.id.iv_pic);
GlideApp.with(context)
.load(item.getMinPic())
.transforms(new CenterCrop())
.dontAnimate()
.into(rivPic);
helper.setText(R.id.tv_name, item.getName());
RedPointView tvTaskNumber = helper.getView(R.id.tv_task_number);
if (item.getActivityType() == FindEntranceInfo.ACTIVITYTYPE_TASK && item.getMissionNum() > 0) {
String numText;
if (item.getMissionNum() > 99) {
numText = "99+";
} else {
numText = String.valueOf(item.getMissionNum());
}
tvTaskNumber.setNumber(String.valueOf(numText));
tvTaskNumber.setVisibility(View.VISIBLE);
} else {
tvTaskNumber.setVisibility(View.GONE);
}
boolean isVisible = (item.getActivityType() == FindEntranceInfo.ACTIVITYTYPE_SIGN_IN
&& !item.isSignStatus());
helper.setGone(R.id.stv_has_sign_stutas, isVisible);
helper.itemView.setOnClickListener(v -> jumpByType(item));
}
private void jumpByType(FindEntranceInfo info) {
int type = info.getType();
String param = info.getParam();
switch (type) {
case FindEntranceInfo.TYPE_H5:
//跳转H5界面
CommonWebViewActivity.start(mContext, param);
break;
case FindEntranceInfo.TYPE_ROOM:
//跳转聊天室界面
if (TextUtils.isEmpty(param)) return;
try {
AVRoomActivity.start(mContext, Long.valueOf(param));
} catch (NumberFormatException e) {
e.printStackTrace();
}
break;
case FindEntranceInfo.TYPE_GAME:
//跳转H5 游戏
CommonWebViewActivity.start(mContext, param);
break;
case FindEntranceInfo.TYPE_DECORATION:
long uid = AuthModel.get().getCurrentUid();
DecorationStoreActivity.start(mContext, uid);
break;
case FindEntranceInfo.TYPE_TO_ROUTERTYPE:
//旧版保留读取type的方式新版type=5
//转到routerType处理
if (info.getRouterType() == RouterType.SIGN_IN) {
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_FIND_SIGN_CLICK,
"签到-发现页");
}
boolean result = RouterHandler.handle(mContext, info.getRouterType(),
info.getRouterValue());
if (!result) {
SingleToastUtil.showToast(XChatConstants.UPDATE_VERSION_TIPS);
}
break;
default:
SingleToastUtil.showToast(XChatConstants.UPDATE_VERSION_TIPS);
break;
}
}
}

View File

@@ -1,54 +0,0 @@
package com.yizhuan.erban.home.adapter;
import android.content.Context;
import androidx.annotation.Nullable;
import android.view.View;
import android.widget.ImageView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.netease.nim.uikit.support.glide.GlideApp;
import com.yizhuan.erban.R;
import com.yizhuan.erban.ui.user.UserInfoActivity;
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
import java.util.List;
/**
* @author jack
* @Description
* @Date 2018/10/30
*/
public class FindNewerListAdapter extends BaseQuickAdapter<UserInfo, BaseViewHolder> {
private Context context;
public FindNewerListAdapter(Context context, @Nullable List<UserInfo> data) {
super(R.layout.item_home_find_newer_list, data);
this.context = context;
}
@Override
protected void convert(BaseViewHolder helper, UserInfo item) {
helper.setText(R.id.tv_name, item.getNick());
ImageView ivAvatar = helper.getView(R.id.civ_avatar);
GlideApp.with(context)
.load(item.getAvatar())
.dontAnimate()
.into(ivAvatar);
if (item.getGender() == 1) {
helper.setImageResource(R.id.iv_sex, R.drawable.ic_gender_male);
} else {
helper.setImageResource(R.id.iv_sex, R.drawable.ic_gender_female);
}
helper.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
UserInfoActivity.Companion.start(context, item.getUid());
}
});
}
}

View File

@@ -1,57 +0,0 @@
package com.yizhuan.erban.home.adapter;
import android.content.Context;
import androidx.annotation.Nullable;
import android.text.TextUtils;
import android.widget.ImageView;
import android.widget.TextView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.yizhuan.erban.R;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.xchat_android_core.family.bean.response.RankingFamilyInfo;
import java.util.List;
/**
* @author jackI
* @Description
* @Date 2018/5/24
*/
public class FindStarFamilyAdapter extends BaseQuickAdapter<RankingFamilyInfo, BaseViewHolder> {
private Context context;
public FindStarFamilyAdapter(Context context, @Nullable List<RankingFamilyInfo> data) {
super(R.layout.list_item_find_star_family_list_vertical, data);
this.context = context;
}
@Override
protected void convert(BaseViewHolder helper, RankingFamilyInfo item) {
if (item == null) {
return;
}
ImageView rivPic = helper.getView(R.id.riv_pic);
ImageLoadUtils.loadRectImage(context, item.getIcon(), rivPic, R.drawable.default_avatar, ScreenUtil.dip2px(5));
TextView tvName = helper.getView(R.id.tv_name);
tvName.setText(item.getName());
TextView familyId = helper.getView(R.id.tv_family_id);
TextView familyMemberCount = helper.getView(R.id.tv_family_member_count);
if (familyId != null) {
// ID
familyId.setText(TextUtils.isEmpty(item.getId()) ? "" : "ID:" + item.getId());
}
if (familyMemberCount != null) {
// 成员数量
familyMemberCount.setText(item.getMemberCount() == 0 ? "" : "成员:" + item.getMemberCount());
}
}
}

View File

@@ -1,64 +0,0 @@
package com.yizhuan.erban.home.adapter;
import androidx.annotation.Nullable;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.widget.TextView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.yizhuan.erban.R;
import com.yizhuan.erban.common.widget.CircleImageView;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.xchat_android_core.home.bean.HomeHallMsgInfo;
import java.util.List;
public class HallChatAdapter extends BaseQuickAdapter<HomeHallMsgInfo, BaseViewHolder> {
public HallChatAdapter(@Nullable List<HomeHallMsgInfo> data) {
super(R.layout.item_home_hall_chat, data);
}
@Override
protected void convert(BaseViewHolder helper, HomeHallMsgInfo item) {
CircleImageView civAvatar = (CircleImageView) helper.getView(R.id.civ_avatar);
if (!TextUtils.isEmpty(item.getSenderAvatar())) {
ImageLoadUtils.loadAvatar(mContext, item.getSenderAvatar(), civAvatar);
} else {
civAvatar.setImageResource(R.drawable.default_avatar);
}
TextView textView = helper.getView(R.id.tv_content);
if (TextUtils.isEmpty(item.getContent())) {
textView.setText(textView.getResources().getText(R.string.not_support_message_tip));
} else {
if (item.getMessageType() == HomeHallMsgInfo.MESSAGE_TYPE_TEXT) {
textView.setText(item.getContent());
// MoonUtil.identifyFaceExpressionSmall(mContext, textView, item.getContent().toString(), ImageSpan.ALIGN_BOTTOM);
} else if (item.getMessageType() == HomeHallMsgInfo.MESSAGE_TYPE_GIFT) {
SpannableStringBuilder ssb = new SpannableStringBuilder("赠送 ");
String targetNick = item.getTargetNick();
if (targetNick == null) {
targetNick = "";
}
ssb.append(targetNick);
int start = ssb.length();
ssb.append("[");
if (!TextUtils.isEmpty(item.getGiftName())) {
ssb.append(item.getGiftName());
} else {
ssb.append("礼物");
}
ssb.append("]");
start = ssb.length();
ssb.append("x").append(String.valueOf(item.getGiftCount()));
// ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(mContext.getResources().getColor(R.color.color_FF3D56));
// ssb.setSpan(foregroundColorSpan, start, ssb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(ssb);
}
}
}
}

View File

@@ -1,993 +0,0 @@
package com.yizhuan.erban.home.adapter;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.viewpager.widget.ViewPager;
import androidx.appcompat.widget.AppCompatImageView;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.LinearInterpolator;
import android.view.animation.RotateAnimation;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target;
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.yizhuan.erban.ui.widget.rollviewpager.RollPagerView;
import com.yizhuan.erban.ui.widget.rollviewpager.Util;
import com.yizhuan.erban.ui.widget.rollviewpager.hintview.ColorPointHintView;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.netease.nim.uikit.support.glide.GlideApp;
import com.netease.nim.uikit.support.glide.GlideRequest;
import com.opensource.svgaplayer.SVGADrawable;
import com.opensource.svgaplayer.SVGAImageView;
import com.opensource.svgaplayer.SVGAParser;
import com.opensource.svgaplayer.SVGAVideoEntity;
import com.yizhuan.erban.BR;
import com.yizhuan.erban.R;
import com.yizhuan.erban.avroom.activity.AVRoomActivity;
import com.yizhuan.erban.avroom.widget.MessageView;
import com.yizhuan.erban.bindadapter.BaseAdapter;
import com.yizhuan.erban.bindadapter.BindingViewHolder;
import com.yizhuan.erban.databinding.ItemHomeTwoNBinding;
import com.yizhuan.erban.home.view.HomeConfigModule;
import com.yizhuan.erban.public_chat_hall.activity.PublicChatHallHomeActivity;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.erban.ui.widget.LivingIconView;
import com.yizhuan.erban.ui.widget.RoomItemView;
import com.yizhuan.erban.ui.widget.magicindicator.MagicIndicator;
import com.yizhuan.erban.ui.widget.magicindicator.ViewPagerHelper;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator;
import com.yizhuan.erban.ui.widget.marqueeview.BetterMarqueeView;
import com.yizhuan.erban.ui.widget.recyclerview.decoration.GridSpacingItemDecoration;
import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
import com.yizhuan.xchat_android_core.home.bean.HomeItem;
import com.yizhuan.xchat_android_core.home.bean.HomeRoom;
import com.yizhuan.xchat_android_core.home.bean.KTVRoomInfo;
import com.yizhuan.xchat_android_core.home.bean.MakeFriendsInfo;
import com.yizhuan.xchat_android_core.home.bean.RecommendInfo;
import com.yizhuan.xchat_android_core.home.bean.VMTopMessageInfo;
import com.yizhuan.xchat_android_core.level.UserLevelVo;
import com.yizhuan.xchat_android_core.market_verify.MarketVerifyModel;
import com.yizhuan.xchat_android_core.noble.NobleUtil;
import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
import com.yizhuan.xchat_android_core.user.bean.RecommendationUserInfo;
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import com.yizhuan.xchat_android_library.utils.StringUtils;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* <p> 首页热门adapter </p>
*
* @author Administrator
* @date 2017/11/16
*/
public class HomeFragmentAdapter extends BaseMultiItemQuickAdapter<HomeItem, BaseViewHolder> {
private int mBadgeHeight;
private Context mContext;
/**
* 校验跳转房间的频率
*/
private long mLastOpen;
private String mTabName;
public HomeFragmentAdapter(Context context, List<HomeItem> data) {
super(data);
this.mContext = context;
addItemType(HomeItem.TYPE_DIV_1, R.layout.list_item_div_1);
addItemType(HomeItem.TYPE_DIV_2, R.layout.list_item_div_2);
addItemType(HomeItem.TYPE_BANNER, R.layout.layout_rollpage_view);
addItemType(HomeItem.TYPE_TOP_MESSAGE, R.layout.list_item_home_erban_top_message);
addItemType(HomeItem.TYPE_RECOMMEND, R.layout.list_item_erban_recommend);
addItemType(HomeItem.TYPE_CONFIG, R.layout.list_item_three_plus_n);
addItemType(HomeItem.TYPE_TWO_LINES, R.layout.item_game_home_two_lines);
addItemType(HomeItem.TYPE_KTV, R.layout.list_item_home_ktv);
addItemType(HomeItem.TYPE_MAKE_FRIENDS, R.layout.list_item_home_make_friends);
//3.1.2之后删除怪兽
//addItemType(HomeItem.TYPE_MONSTER, R.layout.list_item_home_monster);
//3.1.2之后加入
addItemType(HomeItem.TYPE_SQUARE_PIC, R.layout.item_erban_recommend);
addItemType(HomeItem.TYPE_LINEAR_LITTLE_PIC, R.layout.item_room_recommended);
addItemType(HomeItem.TYPE_SQUARE_EMPTY, R.layout.item_erban_grid_empty);
addItemType(HomeItem.TYPE_BLOCK_TITLE, R.layout.home_module_block_title);
//end3.1.2
//添加两列单个显示
addItemType(HomeItem.TYPE_BLOCK_SINGLE, R.layout.item_home_two_single_show);
//不带背景的banner
addItemType(HomeItem.TYPE_BANNER_NO_TOP_BG, R.layout.item_banner);
//新版首页用户信息
addItemType(HomeItem.TYPE_USER_LINEAR, R.layout.item_user);
//两个的虚位以待
addItemType(HomeItem.TYPE_DOUBLE_SQUARE_EMPTY, R.layout.item_erban_grid_2_empty);
mBadgeHeight = (int) context.getResources().getDimension(R.dimen.tag_height);
}
@Override
public void onBindViewHolder(@NonNull BaseViewHolder holder, int position, @NonNull List<Object> payloads) {
super.onBindViewHolder(holder, position, payloads);
int viewType = holder.getItemViewType();
if (position - getHeaderLayoutCount() < 0) {
return;
}
switch (viewType) {
case 0:
convert(holder, getItem(position - getHeaderLayoutCount()), payloads);
break;
default:
convert(holder, getItem(position - getHeaderLayoutCount()), payloads);
break;
}
}
@Override
protected void convert(BaseViewHolder holder, HomeItem homeItem) {
}
protected void convert(BaseViewHolder holder, HomeItem homeItem, @NonNull List<Object> payloads) {
if (homeItem == null) {
return;
}
switch (homeItem.getItemType()) {
case HomeItem.TYPE_BANNER:
setBannerData(holder, homeItem);
break;
case HomeItem.TYPE_RECOMMEND:
setErbanRecommend(holder, homeItem);
break;
case HomeItem.TYPE_CONFIG:
setConfigRecommend(holder, homeItem);
break;
case HomeItem.TYPE_TWO_LINES:
setTwoLinesData(holder, homeItem);
break;
case HomeItem.TYPE_TOP_MESSAGE:
setErbanTopMessageData(holder, homeItem);
break;
case HomeItem.TYPE_KTV:
setKTVRoom(holder, homeItem);
break;
case HomeItem.TYPE_MAKE_FRIENDS:
setMakeFriend(holder, homeItem);
break;
case HomeItem.TYPE_SQUARE_PIC:
setSquarePicData(holder, homeItem);
break;
case HomeItem.TYPE_SQUARE_EMPTY:
setSquareEmpty(holder, homeItem);
break;
case HomeItem.TYPE_LINEAR_LITTLE_PIC:
setLinearLittlePicData(holder, homeItem);
break;
case HomeItem.TYPE_BLOCK_TITLE:
setBlockTitle(holder, homeItem);
break;
case HomeItem.TYPE_BLOCK_SINGLE:
setTwoSingle(holder, homeItem);
break;
case HomeItem.TYPE_BANNER_NO_TOP_BG:
setNoBgBannerData(holder, homeItem);
break;
case HomeItem.TYPE_USER_LINEAR:
setUserData(holder, homeItem);
break;
default:
break;
}
}
private void setUserData(BaseViewHolder holder, HomeItem homeItem) {
Object obj = homeItem.getData();
if (!(obj instanceof RecommendationUserInfo)) {
return;
}
RecommendationUserInfo item = (RecommendationUserInfo) obj;
View inOfficialMask = holder.getView(R.id.in_official_mask);
UserInfo.NamePlate namePlate = item.getNameplate();
if (namePlate != null) {
inOfficialMask.setVisibility(View.VISIBLE);
TextView tvOfficialMask = inOfficialMask.findViewById(R.id.tv_official_mask);
if (tvOfficialMask != null) {
tvOfficialMask.setText(namePlate.getFixedWord());
}
ImageView ivOfficialMask = inOfficialMask.findViewById(R.id.iv_official_mask);
NobleUtil.loadResource(namePlate.getIconPic(), ivOfficialMask);
} else {
inOfficialMask.setVisibility(View.GONE);
}
//common begin
holder.setGone(R.id.iv_noble_level, false);
holder.setGone(R.id.iv_user_level, false);
holder.setGone(R.id.iv_charm_level, false);
//setTag
ImageView ivTag = holder.getView(R.id.iv_tag);
//distance
holder.setGone(R.id.tv_distance, !TextUtils.isEmpty(item.getDistanceStr()))
.setText(R.id.tv_distance, item.getDistanceStr());
//common end
holder.setGone(R.id.iv_gender, false).setGone(R.id.tv_age, false);
CharSequence title;
String avatar;
HomeRoom roomInfo = item.getRoomVo();
String tag;
String badge = null;
CharSequence description;
holder.addOnClickListener(R.id.fl_avatar);
holder.addOnClickListener(R.id.ll_sub_content);
holder.addOnClickListener(R.id.rl_opt);
TextView tvNum = holder.getView(R.id.tv_num);
Integer num = getRoomOnlineNum(roomInfo, item.getOnlineNum());
if (item.getStatus() != RecommendationUserInfo.STATUS_RECOMMEND_ROOM) {
UserLevelVo userLevelVo = item.getUserLevelVo();
AppCompatImageView ivUserLevel = holder.getView(R.id.iv_user_level);
AppCompatImageView ivCharmLevel = holder.getView(R.id.iv_charm_level);
// 是否展示等级图标
showLevel(userLevelVo, ivUserLevel, ivCharmLevel);
if (item.getGender() == 1) {
if (item.getAge() > 0) {
holder.setBackgroundRes(R.id.tv_age, R.drawable.ic_home_male_age)
.setText(R.id.tv_age, item.getAge() + "")
.setGone(R.id.tv_age, true)
.setGone(R.id.iv_gender, false);
} else {
holder.setImageResource(R.id.iv_gender, R.drawable.ic_gender_male)
.setGone(R.id.tv_age, false)
.setGone(R.id.iv_gender, true);
}
} else {
if (item.getAge() > 0) {
holder.setBackgroundRes(R.id.tv_age, R.drawable.ic_home_female_age)
.setText(R.id.tv_age, item.getAge() + "")
.setGone(R.id.tv_age, true)
.setGone(R.id.iv_gender, false);
} else {
holder.setImageResource(R.id.iv_gender, R.drawable.ic_gender_female)
.setGone(R.id.iv_gender, true)
.setGone(R.id.tv_age, false);
}
}
AppCompatImageView ivNobleLevel = holder.getView(R.id.iv_noble_level);
if (item.getNobleUsers() != null) {
ivNobleLevel.setVisibility(View.VISIBLE);
String badgeByLevel = NobleUtil.getBadgeByLevel(item.getNobleUsers().getLevel());
if (!TextUtils.isEmpty(badgeByLevel)) {
NobleUtil.loadResource(badgeByLevel, ivNobleLevel);
}
}
}
//判断类型
switch (item.getStatus()) {
//普通
case RecommendationUserInfo.STATUS_NORMAL:
title = item.getNick();
avatar = item.getAvatar();
description = item.getDescription();
tag = item.getSkillTag();
if (isCpRoom(roomInfo)) {
tvNum.setVisibility(View.VISIBLE);
tvNum.setText("一起玩");
tvNum.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_home_play_together, 0, 0, 0);
}
else {
tvNum.setText("撩一下");
tvNum.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_home_accost, 0, 0, 0);
}
break;
//KTV
case RecommendationUserInfo.STATUS_KTV:
title = getRoomTitle(roomInfo, item.getNick());
tag = getRoomTag(roomInfo, null);
badge = getRoomBadge(roomInfo, null);
avatar = getRoomAvatar(roomInfo, item.getAvatar());
description = getRoomDescription(roomInfo, item.getDescription());
if (isCpRoom(roomInfo)) {
tvNum.setVisibility(View.VISIBLE);
tvNum.setText("一起玩");
tvNum.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_home_play_together, 0, 0, 0);
} else {
tvNum.setText("去找TA");
tvNum.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_home_find_ta, 0, 0, 0);
}
break;
case RecommendationUserInfo.STATUS_GAME:
title = getRoomTitle(roomInfo, item.getNick());
tag = getRoomTag(roomInfo, null);
badge = getRoomBadge(roomInfo, null);
avatar = getRoomAvatar(roomInfo, item.getAvatar());
description = getRoomDescription(roomInfo, item.getDescription());
tvNum.setText("一起玩");
tvNum.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_home_play_together, 0, 0, 0);
break;
case RecommendationUserInfo.STATUS_ROOM:
title = getRoomTitle(roomInfo, item.getNick());
avatar = getRoomAvatar(roomInfo, item.getAvatar());
description = getRoomDescription(roomInfo, item.getDescription());
tag = getRoomTag(roomInfo, null);
badge = getRoomBadge(roomInfo, null);
if (isCpRoom(roomInfo)) {
tvNum.setVisibility(View.VISIBLE);
tvNum.setText("一起玩");
tvNum.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_home_play_together, 0, 0, 0);
}
else {
tvNum.setText("去找TA");
tvNum.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_home_find_ta, 0, 0, 0);
}
break;
case RecommendationUserInfo.STATUS_RECOMMEND_ROOM:
title = getRoomTitle(roomInfo, item.getNick());
avatar = getRoomAvatar(roomInfo, item.getAvatar());
description = getRoomDescription(roomInfo, item.getDescription());
tag = getRoomTag(roomInfo, null);
badge = getRoomBadge(roomInfo, null);
if (isCpRoom(roomInfo)) {
tvNum.setVisibility(View.VISIBLE);
tvNum.setText("一起玩");
tvNum.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_home_play_together, 0, 0, 0);
} else if (num != null && num > 0) {
tvNum.setVisibility(View.VISIBLE);
tvNum.setText(num + "人在看");
tvNum.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_home_find_ta, 0, 0, 0);
} else {
tvNum.setText("去找TA");
tvNum.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_home_find_ta, 0, 0, 0);
}
break;
default:
return;
}
holder.setText(R.id.tv_title, title);
//显示标签
if (StringUtils.isEmpty(tag)) {
holder.setGone(R.id.iv_tag, false);
} else {
holder.setGone(R.id.iv_tag, true);
ImageLoadUtils.loadImage(mContext, tag, ivTag);
}
ImageView ivAvatarBadge = holder.getView(R.id.iv_avatar_badge);
//显示头像角标
if (StringUtils.isEmpty(badge)) {
ivAvatarBadge.setVisibility(View.GONE);
} else {
ivAvatarBadge.setVisibility(View.VISIBLE);
ImageLoadUtils.loadImage(ivAvatarBadge.getContext(), badge, ivAvatarBadge);
}
ImageView avatarView = holder.getView(R.id.noble_avatar_view);
if (StringUtils.isEmpty(avatar)) {
avatarView.setVisibility(View.GONE);
} else {
avatarView.setVisibility(View.VISIBLE);
ImageLoadUtils.loadAvatar(avatar, avatarView);
}
holder.setGone(R.id.tv_desc, !StringUtils.isBlank(description));
//描述
holder.setText(R.id.tv_desc, description);
}
private boolean isCpRoom(HomeRoom roomInfo) {
if (roomInfo == null) {
return false;
}
return roomInfo.getType() == RoomInfo.ROOMTYPE_CP;
}
private void showLevel(UserLevelVo userLevelVo, AppCompatImageView ivUserLevel, AppCompatImageView ivCharmLevel) {
if (userLevelVo != null) {
if (!TextUtils.isEmpty(userLevelVo.getExperUrl())) {
ivUserLevel.setVisibility(View.VISIBLE);
ImageLoadUtils.loadImage1(ivUserLevel.getContext(), userLevelVo.getExperUrl(), ivUserLevel);
}
if (!TextUtils.isEmpty(userLevelVo.getCharmUrl())) {
ivCharmLevel.setVisibility(View.VISIBLE);
ImageLoadUtils.loadImage1(ivCharmLevel.getContext(), userLevelVo.getCharmUrl(), ivCharmLevel);
}
}
}
private void setNoBgBannerData(BaseViewHolder holder, HomeItem homeItem) {
ArrayList<BannerInfo> bannerList = (ArrayList<BannerInfo>) homeItem.getData();
if (!ListUtils.isListEmpty(bannerList)) {
//审核中状态,去掉跳转房间banner
if (MarketVerifyModel.get().isMarketChecking()) {
Iterator<BannerInfo> iterator = bannerList.iterator();
while (iterator.hasNext()) {
BannerInfo bannerInfo = iterator.next();
if (bannerInfo.getSkipType() == 2) {
iterator.remove();
}
}
}
RollPagerView rollPagerView = holder.getView(R.id.roll_view);
ViewGroup.LayoutParams layoutParams = rollPagerView.getLayoutParams();
int bannerWidth = UIUtil.getScreenWidth(mContext) - UIUtil.dip2px(mContext, 40);
layoutParams.width = bannerWidth;
layoutParams.height = bannerWidth * 80 / 345;
rollPagerView.setLayoutParams(layoutParams);
rollPagerView.setHintView(new ColorPointHintView(mContext, Color.WHITE, mContext.getResources().getColor(R.color.color_66FFFFFF)) {
@Override
public Drawable makeFocusDrawable() {
GradientDrawable dotFocus = new GradientDrawable();
dotFocus.setColor(Color.WHITE);
dotFocus.setCornerRadius(Util.dip2px(getContext(), 2));
dotFocus.setSize(Util.dip2px(getContext(), 9), Util.dip2px(getContext(), 4));
return dotFocus;
}
@Override
public Drawable makeNormalDrawable() {
GradientDrawable dotNormal = new GradientDrawable();
dotNormal.setColor(mContext.getResources().getColor(R.color.color_66FFFFFF));
dotNormal.setCornerRadius(Util.dip2px(getContext(), 2));
dotNormal.setSize(Util.dip2px(getContext(), 4), Util.dip2px(getContext(), 4));
return dotNormal;
}
});
BannerAdapter bannerAdapter = new BannerAdapter(bannerList, mContext);
bannerAdapter.setRoundingRadius(ScreenUtil.dip2px(12));
rollPagerView.setAdapter(bannerAdapter);
rollPagerView.setPlayDelay(3000);
//设置透明度
rollPagerView.setAnimationDurtion(500);
rollPagerView.setVisibility(View.VISIBLE);
bannerAdapter.notifyDataSetChanged();
}
//审核中状态隐藏
LinearLayout llPanelContainer = holder.getView(R.id.ll_panel_container);
if (MarketVerifyModel.get().isMarketChecking()) {
llPanelContainer.setVisibility(View.GONE);
return;
} else {
llPanelContainer.setVisibility(View.VISIBLE);
}
llPanelContainer.setVisibility(View.GONE);
}
/**
* 房间单个item
*/
private void setTwoSingle(BaseViewHolder helper, HomeItem homeItem) {
HomeRoom item = (HomeRoom) homeItem.getData();
if (item == null) {
return;
}
SVGAImageView ivTabLabel = helper.getView(R.id.iv_tab_label);
ImageView livLivingIcon = helper.getView(R.id.liv_living_icon);
TextView tvOnlineNumber = helper.getView(R.id.tv_online_number);
View lockBg = helper.getView(R.id.lock_bg);
ImageView ivCover = helper.getView(R.id.iv_cover);
TextView tvTitle = helper.getView(R.id.tv_title);
String badge = item.getBadge();
if (StringUtils.isEmpty(badge)) {
ivTabLabel.setVisibility(View.GONE);
} else {
ivTabLabel.setVisibility(View.VISIBLE);
SVGAParser svgaParser = (SVGAParser) ivTabLabel.getTag();
if (svgaParser == null) {
svgaParser = new SVGAParser(mContext);
ivTabLabel.setTag(svgaParser);
}
try {
svgaParser.decodeFromURL(new URL(badge), new SVGAParser.ParseCompletion() {
@Override
public void onComplete(@Nullable SVGAVideoEntity svgaVideoEntity) {
SVGADrawable drawable = new SVGADrawable(svgaVideoEntity);
ivTabLabel.setImageDrawable(drawable);
ivTabLabel.startAnimation();
}
@Override
public void onError() {
ImageLoadUtils.loadImage(mContext, badge, ivTabLabel);
}
},null);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
Drawable drawable = livLivingIcon.getDrawable();
if (drawable instanceof AnimationDrawable) {
((AnimationDrawable) drawable).start();
}
//tvOnlineNumber
tvOnlineNumber.setText(String.valueOf(item.getOnlineNum()));
//lockBg
lockBg.setVisibility(StringUtils.isEmpty(item.getRoomPwd()) ? View.GONE : View.VISIBLE);
//ivCover
String avatar = item.getAvatar();
if (StringUtils.isEmpty(avatar)) {
ivCover.setVisibility(View.GONE);
} else {
ivCover.setVisibility(View.VISIBLE);
ImageLoadUtils.loadImage(mContext, avatar, ivCover);
}
//tvTitle
MessageView.SpannableBuilder text = new MessageView.SpannableBuilder(tvTitle)
.appendImg(item.tagPict)
.append(item.title);
tvTitle.setText(text.build());
helper.itemView.setOnClickListener(v -> AVRoomActivity.start(mContext, item.getUid()));
}
/**
* 交友
*/
private void setMakeFriend(BaseViewHolder holder, HomeItem homeItem) {
MakeFriendsInfo makeFriendsInfo = (MakeFriendsInfo) homeItem.getData();
if (makeFriendsInfo == null) return;
holder.setText(R.id.tv_title, makeFriendsInfo.getTitle());
holder.setText(R.id.tv_sub_title, makeFriendsInfo.getSubTitle());
holder.getView(R.id.tv_refresh).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (actionListener != null) {
actionListener.onRefreshMakeFriendList();
makeFriendsInfo.setVmIsLoading(true);
notifyItemChanged(holder.getAdapterPosition());
}
}
});
TextView tvRefresh = holder.getView(R.id.tv_refresh);
ImageView ivRefreshArrow = holder.getView(R.id.iv_refresh_arrow);
if (makeFriendsInfo.isVmIsLoading()) {
tvRefresh.setText("我刷刷刷...");
RotateAnimation rotateAnimation = new RotateAnimation(0, 359,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
rotateAnimation.setRepeatCount(-1);
rotateAnimation.setDuration(300);
LinearInterpolator lin = new LinearInterpolator();
rotateAnimation.setInterpolator(lin);
ivRefreshArrow.startAnimation(rotateAnimation);
} else {
tvRefresh.setText("换一换");
ivRefreshArrow.clearAnimation();
}
List<HomeRoom> roomList = makeFriendsInfo.getRoomList();
RecyclerView recyclerView = holder.getView(R.id.rv_list);
recyclerView.setItemAnimator(null);
recyclerView.setFocusable(false);
recyclerView.setLayoutManager(new GridLayoutManager(mContext, 3));
if (recyclerView.getItemDecorationCount() == 0) {
recyclerView.addItemDecoration(new GridSpacingItemDecoration(holder.itemView.getContext(), 3, 10));
}
MakeFriendAdapter makeFriendAdapter = new MakeFriendAdapter(mContext, roomList);
recyclerView.setAdapter(makeFriendAdapter);
}
/**
* KTV 房间列表
*/
private void setKTVRoom(BaseViewHolder holder, HomeItem homeItem) {
KTVRoomInfo ktvRoomInfo = (KTVRoomInfo) homeItem.getData();
holder.setText(R.id.tv_title, ktvRoomInfo.getTitle());
holder.setText(R.id.tv_sub_title, ktvRoomInfo.getSubTitle());
holder.getView(R.id.tv_more).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (actionListener != null) {
actionListener.onMoreKTVRoom();
}
}
});
ViewPager viewPager = holder.getView(R.id.vp_rooms);
viewPager.setAdapter(new HomeItemVPAdapter(mContext, ktvRoomInfo.getRoomList()));
MagicIndicator magicIndicator = holder.getView(R.id.mi_indicator);
CommonNavigator commonNavigator = new CommonNavigator(mContext);
KTVMagicIndicatorAdapter ktvMagicIndicatorAdapter = new KTVMagicIndicatorAdapter(mContext, ktvRoomInfo.getRoomList().size());
commonNavigator.setAdapter(ktvMagicIndicatorAdapter);
magicIndicator.setNavigator(commonNavigator);
ViewPagerHelper.bind(magicIndicator, viewPager);
}
/**
* 设置音游头条数据
*/
private void setErbanTopMessageData(BaseViewHolder holder, HomeItem homeItem) {
VMTopMessageInfo topMessageInfo = (VMTopMessageInfo) homeItem.getData();
BetterMarqueeView betterMarqueeView = holder.getView(R.id.bmv_marquee_view);
ErbanTopMessageAdapter adapter = new ErbanTopMessageAdapter(mContext, topMessageInfo.getVmTopMessageList());
betterMarqueeView.setAdapter(adapter);
betterMarqueeView.start();
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PublicChatHallHomeActivity.openHeadlinePage(mContext);
}
});
}
/**
* 设置顶部数据
*/
private void setBannerData(BaseViewHolder holder, HomeItem homeItem) {
@SuppressWarnings("unchecked")
ArrayList<BannerInfo> bannerList = (ArrayList<BannerInfo>) homeItem.getData();
if (!ListUtils.isListEmpty(bannerList)) {
//审核中状态,去掉跳转房间banner
if (MarketVerifyModel.get().isMarketChecking()) {
Iterator<BannerInfo> iterator = bannerList.iterator();
while (iterator.hasNext()) {
BannerInfo bannerInfo = iterator.next();
if (bannerInfo.getSkipType() == 2) {
iterator.remove();
}
}
}
RollPagerView rollPagerView = holder.getView(R.id.roll_view);
ViewGroup.LayoutParams layoutParams = rollPagerView.getLayoutParams();
int bannerWidth = UIUtil.getScreenWidth(mContext) - UIUtil.dip2px(mContext, 30);
layoutParams.width = bannerWidth;
layoutParams.height = bannerWidth * 120 / 345;
rollPagerView.setLayoutParams(layoutParams);
rollPagerView.setHintView(new ColorPointHintView(mContext, Color.WHITE, mContext.getResources().getColor(R.color.color_66FFFFFF)) {
@Override
public Drawable makeFocusDrawable() {
GradientDrawable dotFocus = new GradientDrawable();
dotFocus.setColor(Color.WHITE);
dotFocus.setCornerRadius(Util.dip2px(getContext(), 2));
dotFocus.setSize(Util.dip2px(getContext(), 9), Util.dip2px(getContext(), 4));
return dotFocus;
}
@Override
public Drawable makeNormalDrawable() {
GradientDrawable dotNormal = new GradientDrawable();
dotNormal.setColor(mContext.getResources().getColor(R.color.color_66FFFFFF));
dotNormal.setCornerRadius(Util.dip2px(getContext(), 2));
dotNormal.setSize(Util.dip2px(getContext(), 4), Util.dip2px(getContext(), 4));
return dotNormal;
}
});
BannerAdapter bannerAdapter = new BannerAdapter(bannerList, mContext);
rollPagerView.setAdapter(bannerAdapter);
rollPagerView.setPlayDelay(3000);
//设置透明度
rollPagerView.setAnimationDurtion(500);
rollPagerView.setVisibility(View.VISIBLE);
bannerAdapter.notifyDataSetChanged();
}
//审核中状态隐藏
LinearLayout llPanelContainer = (LinearLayout) holder.getView(R.id.ll_panel_container);
if (MarketVerifyModel.get().isMarketChecking()) {
llPanelContainer.setVisibility(View.GONE);
return;
} else {
llPanelContainer.setVisibility(View.VISIBLE);
}
llPanelContainer.setVisibility(View.GONE);
}
/**
* 设置音游推荐item
*/
private void setErbanRecommend(BaseViewHolder holder, HomeItem homeItem) {
RecommendInfo recommendInfo = (RecommendInfo) homeItem.getData();
holder.setText(R.id.tv_title, recommendInfo.getTitle());
List<HomeRoom> roomList = recommendInfo.getRoomList();
RecyclerView recyclerView = holder.getView(R.id.rv_list);
recyclerView.setItemAnimator(null);
recyclerView.setFocusable(false);
GridLayoutManager manager = new GridLayoutManager(mContext, 3);
recyclerView.setLayoutManager(manager);
if (recyclerView.getItemDecorationCount() == 0) {
int px = UIUtil.dip2px(mContext, 15);
recyclerView.addItemDecoration(new RecommendThreeNModelDecoration(px));
}
ErbanRecommendAdapter erbanRecommendAdapter = new ErbanRecommendAdapter(mContext, roomList);
recyclerView.setAdapter(erbanRecommendAdapter);
erbanRecommendAdapter.setSpanSizeLookup(new SpanSizeLookup() {
@Override
public int getSpanSize(GridLayoutManager gridLayoutManager, int position) {
if (position < 3) {
return 1;
}
return manager.getSpanCount();
}
});
}
/**
* 设置运营可配置模块
*
* @param holder holder
* @param homeItem homeItem
*/
private void setConfigRecommend(BaseViewHolder holder, HomeItem homeItem) {
RecommendInfo recommendInfo = (RecommendInfo) homeItem.getData();
HomeConfigModule module = holder.getView(R.id.home_config_module);
module.setData(recommendInfo);
}
/**
* 设置游戏首页两列的数据
*
* @param holder holder
* @param homeItem homeItem
*/
private void setTwoLinesData(BaseViewHolder holder, HomeItem homeItem) {
RecommendInfo recommendInfo = (RecommendInfo) homeItem.getData();
TextView textView = holder.getView(R.id.tv_title);
if (!ListUtils.isListEmpty(recommendInfo.getRoomList())) {
textView.setVisibility(View.VISIBLE);
textView.setText(recommendInfo.getTitle());
} else {
textView.setVisibility(View.GONE);
}
RecyclerView recyclerView = holder.getView(R.id.recycler_view);
GridLayoutManager manager = new GridLayoutManager(mContext, 2) {
@Override
public boolean canScrollVertically() {
return false;
}
};
recyclerView.setLayoutManager(manager);
BaseAdapter<HomeRoom> adapter = new BaseAdapter<HomeRoom>(R.layout.item_home_two_n, BR.homeInfo) {
@Override
protected void convert(BindingViewHolder helper, HomeRoom item) {
super.convert(helper, item);
ItemHomeTwoNBinding binding = (ItemHomeTwoNBinding) helper.getBinding();
if (binding == null) {
return;
}
binding.livLivingIcon.setColor(Color.WHITE);
binding.livLivingIcon.start();
MessageView.SpannableBuilder text = new MessageView.SpannableBuilder(binding.tvTitle)
.appendImg(item.tagPict)
.append(item.title);
binding.tvTitle.setText(text.build());
}
};
adapter.setOnItemClickListener((adapt, view, position) -> AVRoomActivity.start(mContext, adapter.getItem(position).getUid()));
recyclerView.setAdapter(adapter);
adapter.setNewData(recommendInfo.getRoomList());
}
/**
* 设置3+n布局中的格子数据
*/
private void setSquarePicData(BaseViewHolder helper, HomeItem homeItem) {
HomeRoom homeRoom = (HomeRoom) homeItem.getData();
helper.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AVRoomActivity.start(mContext, homeRoom.getUid());
}
});
LivingIconView livingIconView = helper.getView(R.id.liv_living_icon);
livingIconView.setColor(Color.WHITE);
livingIconView.start();
helper.setText(R.id.tv_online_number, mContext.getString(R.string.online_number_text, homeRoom.getOnlineNum()))
.setText(R.id.tv_title, homeRoom.getTitle());
helper.getView(R.id.lock_bg).setVisibility(!TextUtils.isEmpty(homeRoom.getRoomPwd()) ? View.VISIBLE : View.GONE);
ImageView mIvTabLabel = helper.getView(R.id.iv_tab_label);
boolean showTab = false;
Drawable icon = null;
if (homeItem.isShowRankHalfIcon()) {
showTab = true;
icon = mContext.getResources().getDrawable(R.drawable.icon_rank_half);
} else if (homeRoom.getIsRecom() > 0) {
showTab = true;
icon = mContext.getResources().getDrawable(R.drawable.ic_king_recommend);
} else if (!TextUtils.isEmpty(homeRoom.badge)) {
showTab = true;
} else
mIvTabLabel.setVisibility(View.INVISIBLE);
if (showTab) {
mIvTabLabel.setVisibility(View.VISIBLE);
GlideRequest request;
if (icon != null)
request = GlideApp.with(mContext).load(icon);
else
request = GlideApp.with(mContext).load(homeRoom.badge);
request.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) {
float ratio = (drawable.getIntrinsicHeight() + 0.F) / drawable.getIntrinsicWidth();
int width = Math.round(mBadgeHeight / ratio);
int height = mBadgeHeight;
ViewGroup.LayoutParams params = mIvTabLabel.getLayoutParams();
params.width = width;
params.height = height;
mIvTabLabel.setLayoutParams(params);
mIvTabLabel.setImageDrawable(drawable);
return true;
}
})
.into(mIvTabLabel);
}
ImageView ivCover = helper.getView(R.id.iv_cover);
if (!TextUtils.isEmpty(homeRoom.getAvatar())) {
ImageLoadUtils.loadAvatarBig(homeRoom.getAvatar(), ivCover, R.drawable.default_cover);
} else {
GlideApp.with(mContext)
.load(R.drawable.default_cover)
.placeholder(R.drawable.default_cover)
.into(ivCover);
}
}
/**
* 设置3+N布局中虚位以待的数据
*/
private void setSquareEmpty(BaseViewHolder holder, HomeItem homeItem) {
}
/**
* 设置3+N布局中小图列表的数据
*/
private void setLinearLittlePicData(BaseViewHolder helper, HomeItem homeItem) {
HomeRoom homeRoom = (HomeRoom) homeItem.getData();
RoomItemView roomItemView = helper.getView(R.id.riv_room_view);
roomItemView.bindData(homeRoom);
}
/**
* 设置每个模块的标题
*/
private void setBlockTitle(BaseViewHolder holder, HomeItem homeItem) {
holder.setText(R.id.tv_title, (String) homeItem.getData());
}
private String getRoomTitle(HomeRoom roomInfo, String defaultValue) {
if (roomInfo == null || StringUtils.isEmpty(roomInfo.getTitle())) {
return defaultValue;
}
return roomInfo.getTitle();
}
private String getRoomTag(HomeRoom roomInfo, String defaultValue) {
if (roomInfo == null || StringUtils.isEmpty(roomInfo.getSkillTag())) {
return getRoomTagPic(roomInfo, defaultValue);
}
return roomInfo.getSkillTag();
}
private String getRoomTagPic(HomeRoom roomInfo, String defaultValue) {
if (roomInfo == null || StringUtils.isEmpty(roomInfo.getTagPict())) {
return defaultValue;
}
return roomInfo.getTagPict();
}
private String getRoomBadge(HomeRoom roomInfo, String defaultValue) {
if (roomInfo == null || StringUtils.isEmpty(roomInfo.getIcon())) {
return defaultValue;
}
return roomInfo.getIcon();
}
private String getRoomAvatar(HomeRoom roomInfo, String defaultValue) {
if (roomInfo == null || StringUtils.isEmpty(roomInfo.getAvatar())) {
return defaultValue;
}
return roomInfo.getAvatar();
}
private String getRoomDescription(HomeRoom roomInfo, String defaultValue) {
if (roomInfo == null || StringUtils.isEmpty(roomInfo.getDescription())) {
return defaultValue;
}
return roomInfo.getDescription();
}
private Integer getRoomOnlineNum(HomeRoom roomInfo, Integer defaultValue) {
if (roomInfo == null || roomInfo.getOnlineNum() == 0) {
return defaultValue;
}
return roomInfo.getOnlineNum();
}
public interface OnActionListener {
void onRefreshMakeFriendList();
void onMoreKTVRoom();
void onGoTalkHall();
}
private OnActionListener actionListener;
public void setActionListener(OnActionListener actionListener) {
this.actionListener = actionListener;
}
}

View File

@@ -1,167 +0,0 @@
package com.yizhuan.erban.home.adapter;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.AppCompatImageView;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.style.ForegroundColorSpan;
import android.text.style.ImageSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.netease.nim.uikit.business.session.emoji.MoonUtil;
import com.netease.nim.uikit.support.glide.GlideApp;
import com.yizhuan.erban.R;
import com.yizhuan.erban.common.widget.CircleImageView;
import com.yizhuan.erban.common.widget.CustomImageSpan;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.erban.ui.widget.marqueeview.Utils;
import com.yizhuan.xchat_android_core.home.bean.HomeHallMsgInfo;
import com.yizhuan.xchat_android_core.noble.NobleUtil;
import com.yizhuan.xchat_android_library.utils.JavaUtil;
import java.util.List;
/**
* @author jack
* @Description
* @Date 2018/11/21
*/
public class HomeHallAdapter extends BaseMultiItemQuickAdapter<HomeHallMsgInfo, BaseViewHolder> {
private Context context;
public HomeHallAdapter(Context context, @Nullable List<HomeHallMsgInfo> data) {
super(data);
this.context = context;
addItemType(HomeHallMsgInfo.ITEM_TYPE_LEFT, R.layout.item_home_hall_left);
addItemType(HomeHallMsgInfo.ITEM_TYPE_RIGHT, R.layout.item_home_hall_right);
addItemType(HomeHallMsgInfo.ITEM_TYPE_TIP, R.layout.item_home_hall_tip);
}
@Override
protected View getItemView(int layoutResId, ViewGroup parent) {
return LayoutInflater.from(context).inflate(layoutResId, null);
}
@Override
protected void convert(BaseViewHolder helper, HomeHallMsgInfo item) {
helper.itemView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
if (HomeHallMsgInfo.ITEM_TYPE_TIP == item.getItemType()) {
helper.setText(R.id.tv_tip_text, item.getFormatTime());
return;
}
helper.setText(R.id.tv_user_name, item.getNick());
TextView textView = helper.getView(R.id.tv_content);
if (TextUtils.isEmpty(item.getContent())) {
textView.setText(textView.getResources().getText(R.string.not_support_message_tip));
} else {
if (item.getMessageType() == HomeHallMsgInfo.MESSAGE_TYPE_TEXT) {
MoonUtil.identifyFaceExpression(context, textView, item.getContent().toString(), ImageSpan.ALIGN_BOTTOM);
} else if (item.getMessageType() == HomeHallMsgInfo.MESSAGE_TYPE_GIFT) {
SpannableStringBuilder ssb = new SpannableStringBuilder("赠送 ");
String targetNick = item.getTargetNick();
if (targetNick == null) {
targetNick = "";
}
ssb.append(targetNick).append("\n");
int start = ssb.length();
if (!TextUtils.isEmpty(item.getGiftImage())) {
ssb.append("-");
CustomImageSpan imageSpan = new CustomImageSpan(new ColorDrawable(Color.TRANSPARENT),
textView, item.getGiftImage(), Utils.dip2px(mContext, 35), Utils.dip2px(mContext, 35));
ssb.setSpan(imageSpan, start, ssb.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
} else {
ssb.append("礼物");
}
start = ssb.length();
ssb.append("x").append(String.valueOf(item.getGiftCount()));
ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(mContext.getResources().getColor(R.color.color_FF3D56));
ssb.setSpan(foregroundColorSpan, start, ssb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(ssb);
}
}
CircleImageView civAvatar = (CircleImageView) helper.getView(R.id.civ_avatar);
if (!TextUtils.isEmpty(item.getSenderAvatar())) {
GlideApp.with(context)
.load(item.getSenderAvatar())
.placeholder(R.drawable.default_avatar)
.dontAnimate()
.into(civAvatar);
} else {
civAvatar.setImageResource(R.drawable.default_avatar);
}
// 官字
helper.getView(R.id.message_item_name_icon_official).setVisibility(item.isOfficial() ? View.VISIBLE : View.GONE);
// 新字
helper.getView(R.id.message_item_name_icon_new).setVisibility(item.isNewUser() ? View.VISIBLE : View.GONE);
// 靓字
helper.getView(R.id.message_item_name_icon_pretty).setVisibility(item.isPrettyErbanNo() ? View.VISIBLE : View.GONE);
AppCompatImageView ivNobleLevel = (AppCompatImageView) helper.getView(R.id.iv_noble_level);
if (!TextUtils.isEmpty(item.getNobleLevel())) {
String badgeUrl = NobleUtil.getBadgeByLevel(JavaUtil.str2int(item.getNobleLevel()));
if (!TextUtils.isEmpty(badgeUrl)) {
ivNobleLevel.setVisibility(View.VISIBLE);
NobleUtil.loadResource(badgeUrl, ivNobleLevel);
} else {
ivNobleLevel.setVisibility(View.GONE);
}
} else {
ivNobleLevel.setVisibility(View.GONE);
}
AppCompatImageView ivUserLevel = (AppCompatImageView) helper.getView(R.id.iv_user_level);
ivUserLevel.setVisibility(View.GONE);
if (!TextUtils.isEmpty(item.getUserLevelUrl())) {
ivUserLevel.setVisibility(View.VISIBLE);
ImageLoadUtils.loadImage(mContext, item.getUserLevelUrl(), ivUserLevel);
}
AppCompatImageView ivCharmLevel = (AppCompatImageView) helper.getView(R.id.iv_charm_level);
ivCharmLevel.setVisibility(View.GONE);
if (!TextUtils.isEmpty(item.getUserCharmLevelUrl())) {
ivCharmLevel.setVisibility(View.VISIBLE);
ImageLoadUtils.loadImage(mContext, item.getUserCharmLevelUrl(), ivCharmLevel);
}
// 官方认证标识
View inOfficialMask = helper.getView(R.id.in_official_mask);
if (!TextUtils.isEmpty(item.getFixedWord()) && !TextUtils.isEmpty(item.getIconPic())) {
inOfficialMask.setVisibility(View.VISIBLE);
TextView tvOfficialMask = inOfficialMask.findViewById(R.id.tv_official_mask);
if (tvOfficialMask != null) {
tvOfficialMask.setText(item.getFixedWord());
}
ImageView ivOfficialMask = inOfficialMask.findViewById(R.id.iv_official_mask);
if (ivOfficialMask != null) {
NobleUtil.loadResource(item.getIconPic(), ivOfficialMask);
}
} else {
inOfficialMask.setVisibility(View.GONE);
}
}
}

View File

@@ -1,69 +0,0 @@
package com.yizhuan.erban.home.adapter;
import android.content.Context;
import android.graphics.Color;
import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.yizhuan.erban.R;
import com.yizhuan.erban.ui.widget.marqueeview.Utils;
import com.yizhuan.erban.ui.widget.recyclerview.decoration.ColorDecoration;
import com.yizhuan.xchat_android_core.home.bean.KTVRoom;
import java.util.List;
/**
* @author jack
* @Description
* @Date 2018/10/30
*/
public class HomeItemVPAdapter extends PagerAdapter {
private Context context;
private List<List<KTVRoom>> data;
public HomeItemVPAdapter(Context context, List<List<KTVRoom>> data) {
this.context = context;
this.data = data;
}
@Override
public int getCount() {
return data.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
List<KTVRoom> homeRoomList = data.get(position);
View rootView = LayoutInflater.from(context).inflate(R.layout.item_home_ktv_vp, container, false);
RecyclerView recyclerView = rootView.findViewById(R.id.rv_list);
recyclerView.setItemAnimator(null);
recyclerView.setFocusable(false);
recyclerView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false));
if (recyclerView.getItemDecorationCount() == 0) {
recyclerView.addItemDecoration(new ColorDecoration(Color.TRANSPARENT, Utils.dip2px(context, 10), 0, false));
}
KTVRoomAdapter ktvRoomAdapter = new KTVRoomAdapter(context, homeRoomList);
recyclerView.setAdapter(ktvRoomAdapter);
container.addView(rootView);
return rootView;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
}

View File

@@ -1,111 +0,0 @@
package com.yizhuan.erban.home.adapter;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.view.View;
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.yizhuan.erban.ui.widget.rollviewpager.RollPagerView;
import com.yizhuan.erban.ui.widget.rollviewpager.Util;
import com.yizhuan.erban.ui.widget.rollviewpager.hintview.ColorPointHintView;
import com.yizhuan.erban.R;
import com.yizhuan.erban.ui.widget.RoomItemView;
import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
import com.yizhuan.xchat_android_core.home.bean.HomeRoomItem;
import com.yizhuan.xchat_android_core.home.bean.HomeRoom;
import com.yizhuan.xchat_android_core.home.bean.OtherBannerInfo;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import java.util.List;
/**
* @author jack
* @Description
* @Date 2018/11/2
*/
public class HomeRoomAdapter extends BaseMultiItemQuickAdapter<HomeRoomItem, BaseViewHolder> {
private Context context;
public HomeRoomAdapter(Context context, List<HomeRoomItem> data) {
super(data);
this.context = context;
addItemType(HomeRoomItem.TYPE_HOME_ROOM, R.layout.list_item_home_room_room);
addItemType(HomeRoomItem.TYPE_BANNER, R.layout.list_item_home_room_banner);
}
@Override
protected void convert(BaseViewHolder helper, HomeRoomItem item) {
if (item == null) {
return;
}
switch (item.getItemType()) {
case HomeRoomItem.TYPE_HOME_ROOM:
setRoom(helper, item);
break;
case HomeRoomItem.TYPE_BANNER:
setOtherBanner(helper, item);
break;
}
}
/**
* 设置房间
*
* @param holder
* @param item
*/
private void setRoom(BaseViewHolder holder, HomeRoomItem item) {
HomeRoom homeRoom = (HomeRoom) item.getData();
RoomItemView roomItemView = holder.getView(R.id.riv_room_view);
roomItemView.bindData(homeRoom);
}
/**
* 设置中间的scrollView page
*
* @param holder
* @param homeItem
*/
private void setOtherBanner(BaseViewHolder holder, HomeRoomItem homeItem) {
List<BannerInfo> bannerInfos = (List<BannerInfo>) homeItem.getData();
if (!ListUtils.isListEmpty(bannerInfos)) {
RollPagerView rollPagerView = holder.getView(R.id.rpv_other_banner);
rollPagerView.setHintView(new ColorPointHintView(mContext, Color.WHITE, mContext.getResources().getColor(R.color.color_66FFFFFF)) {
@Override
public Drawable makeFocusDrawable() {
GradientDrawable dotFocus = new GradientDrawable();
dotFocus.setColor(Color.WHITE);
dotFocus.setCornerRadius(Util.dip2px(getContext(), 2));
dotFocus.setSize(Util.dip2px(getContext(), 9), Util.dip2px(getContext(), 4));
return dotFocus;
}
@Override
public Drawable makeNormalDrawable() {
GradientDrawable dotNormal = new GradientDrawable();
dotNormal.setColor(mContext.getResources().getColor(R.color.color_66FFFFFF));
dotNormal.setCornerRadius(Util.dip2px(getContext(), 2));
dotNormal.setSize(Util.dip2px(getContext(), 4), Util.dip2px(getContext(), 4));
return dotNormal;
}
});
OtherBannerAdapter bannerAdapter = new OtherBannerAdapter(mContext, bannerInfos);
rollPagerView.setAdapter(bannerAdapter);
rollPagerView.setPlayDelay(3000);
//设置透明度
rollPagerView.setAnimationDurtion(500);
rollPagerView.setVisibility(View.VISIBLE);
bannerAdapter.notifyDataSetChanged();
}
}
}

View File

@@ -1,81 +0,0 @@
package com.yizhuan.erban.home.adapter;
import android.content.Context;
import androidx.core.content.ContextCompat;
import android.view.View;
import android.widget.RelativeLayout;
import com.yizhuan.erban.R;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerIndicator;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerTitleView;
/**
* <p> 公共多个滑动tab样式 </p>
*
* @author Administrator
* @date 2017/11/15
*/
public class KTVMagicIndicatorAdapter extends CommonNavigatorAdapter {
private Context mContext;
private int size;
public KTVMagicIndicatorAdapter(Context context, int size) {
mContext = context;
this.size = size;
}
@Override
public int getCount() {
return size;
}
@Override
public IPagerTitleView getTitleView(Context context, final int i) {
ColorPagerTitleView colorPagerTitleView = new ColorPagerTitleView(context);
return colorPagerTitleView;
}
@Override
public IPagerIndicator getIndicator(Context context) {
return null;
}
class ColorPagerTitleView extends RelativeLayout implements IPagerTitleView {
View view;
public ColorPagerTitleView(Context context) {
super(context);
view = new View(context);
LayoutParams lp = new LayoutParams(16, 4);
lp.setMargins(5, 0, 5, 0);
addView(view, lp);
}
@Override
public void onSelected(int index, int totalCount) {
view.setBackgroundColor(getResources().getColor(R.color.appColor));
}
@Override
public void onDeselected(int index, int totalCount) {
view.setBackgroundColor(getResources().getColor(R.color.color_CCCCCC));
}
@Override
public void onLeave(int index, int totalCount, float leavePercent, boolean leftToRight) {
}
@Override
public void onEnter(int index, int totalCount, float enterPercent, boolean leftToRight) {
}
}
}

View File

@@ -1,106 +0,0 @@
package com.yizhuan.erban.home.adapter;
import android.content.Context;
import android.graphics.Color;
import androidx.annotation.Nullable;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.netease.nim.uikit.support.glide.GlideApp;
import com.yizhuan.erban.R;
import com.yizhuan.erban.avroom.activity.AVRoomActivity;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.erban.ui.widget.LivingIconView;
import com.yizhuan.erban.ui.widget.marqueeview.Utils;
import com.yizhuan.xchat_android_core.home.bean.KTVRoom;
import java.util.List;
/**
* @author jack
* @Description
* @Date 2018/4/16
*/
public class KTVRoomAdapter extends BaseMultiItemQuickAdapter<KTVRoom, BaseViewHolder> {
private Context mContext;
private int mRound, mTagHeight, mBadgeHeight;
public KTVRoomAdapter(Context context, @Nullable List<KTVRoom> data) {
super(data);
this.mContext = context;
mRound = Utils.dip2px(mContext, 9);
mTagHeight = (int) context.getResources().getDimension(R.dimen.tag_height);
mBadgeHeight = (int) context.getResources().getDimension(R.dimen.tag_height);
addItemType(KTVRoom.TYPE_GIRD, R.layout.item_home_ktv_room);
addItemType(KTVRoom.TYPE_GIRD_EMPTY, R.layout.item_home_empty_ktv_room);
}
@Override
protected void convert(BaseViewHolder helper, KTVRoom homeRoom) {
View view = helper.getView(R.id.ll_container);
ViewGroup.LayoutParams lp = view.getLayoutParams();
lp.width = (Utils.getWindowWidth(mContext) - Utils.dip2px(mContext, 50)) / 3;
view.setLayoutParams(lp);
if (homeRoom.getItemType() == KTVRoom.TYPE_GIRD_EMPTY) {
// FIXME: 2018/11/15 使用 ContentWrapViewPager 下面两句代码不能去掉,否则显示异常。
ImageView ivCover = helper.getView(R.id.iv_cover);
GlideApp.with(mContext)
.load(R.mipmap.bg_item_empty_ktv_room)
.skipMemoryCache(true)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.into(ivCover);
} else {
helper.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// AVRoomActivity.start(mContext, Long.parseLong(homeRoom.getRoomUid()));
AVRoomActivity.start(mContext, homeRoom.getRoomUid());
}
});
helper.getView(R.id.lock_bg).setVisibility(!TextUtils.isEmpty(homeRoom.getRoomPwd()) ? View.VISIBLE : View.GONE);
LivingIconView livingIconView = helper.getView(R.id.liv_living_icon);
livingIconView.setColor(Color.WHITE);
livingIconView.start();
helper.setText(R.id.tv_online_number, mContext.getString(R.string.online_number_text, homeRoom.getOnlineNum()))
.setText(R.id.tv_title, homeRoom.getTitle());
if (!TextUtils.isEmpty(homeRoom.getSingingMusicName())) {
helper.setText(R.id.tv_singing_song, String.format(mContext.getResources().getString(R.string.home_ktv_singing_song), homeRoom.getSingingMusicName()));
} else {
helper.setText(R.id.tv_singing_song, mContext.getResources().getString(R.string.home_ktv_no_singing_song));
}
ImageView ivCover = helper.getView(R.id.iv_cover);
if (!TextUtils.isEmpty(homeRoom.getAvatar())) {
ImageLoadUtils.loadRectImage(mContext, homeRoom.getAvatar(), ivCover, R.drawable.default_cover, mRound);
} else {
GlideApp.with(mContext)
.load(R.drawable.default_cover)
.placeholder(R.drawable.default_cover)
.transforms(new CenterCrop(), new RoundedCorners(mRound))
.into(ivCover);
}
}
}
}

View File

@@ -1,75 +0,0 @@
package com.yizhuan.erban.home.adapter;
import android.content.Context;
import androidx.annotation.Nullable;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.netease.nim.uikit.support.glide.GlideApp;
import com.yizhuan.erban.R;
import com.yizhuan.erban.avroom.activity.AVRoomActivity;
import com.yizhuan.xchat_android_core.home.bean.KTVRoom;
import java.util.List;
/**
* @author jack
* @Description
* @Date 2018/10/31
*/
public class KTVTypeRoomAdapter extends BaseQuickAdapter<KTVRoom, BaseViewHolder> {
private Context context;
private int[] bgIds = new int[]{R.drawable.ktv_room_bg_1,
R.drawable.ktv_room_bg_2,
R.drawable.ktv_room_bg_3,
R.drawable.ktv_room_bg_4};
public KTVTypeRoomAdapter(Context context, @Nullable List<KTVRoom> data) {
super(R.layout.item_ktv_type_room, data);
this.context = context;
}
@Override
protected void convert(BaseViewHolder helper, KTVRoom item) {
int index = helper.getAdapterPosition() % bgIds.length;
helper.setBackgroundRes(R.id.ll_container, bgIds[index]);
helper.setText(R.id.tv_title, item.getTitle())
.setText(R.id.tv_member_count, mContext.getString(R.string.online_number_text, item.getOnlineNum()));
if (!TextUtils.isEmpty(item.getSingingMusicName())) {
helper.setText(R.id.tv_sing_song, String.format(mContext.getResources().getString(R.string.home_ktv_singing_song), item.getSingingMusicName()));
} else {
helper.setText(R.id.tv_sing_song, mContext.getResources().getString(R.string.home_ktv_no_singing_song));
}
helper.getView(R.id.iv_lock).setVisibility(!TextUtils.isEmpty(item.getRoomPwd()) ? View.VISIBLE : View.GONE);
ImageView ivCover = helper.getView(R.id.civ_avatar);
if (!TextUtils.isEmpty(item.getAvatar())) {
GlideApp.with(mContext)
.load(item.getAvatar())
.placeholder(R.drawable.default_cover)
.error(R.drawable.default_cover)
.into(ivCover);
} else {
GlideApp.with(mContext)
.load(R.drawable.default_cover)
.placeholder(R.drawable.default_cover)
.error(R.drawable.default_cover)
.into(ivCover);
}
helper.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AVRoomActivity.start(context, item.getRoomUid());
}
});
}
}

View File

@@ -1,44 +0,0 @@
package com.yizhuan.erban.home.adapter;
import android.content.Context;
import androidx.annotation.Nullable;
import android.view.View;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.yizhuan.erban.R;
import com.yizhuan.erban.avroom.activity.AVRoomActivity;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.xchat_android_core.home.bean.HomeRoom;
import java.util.List;
/**
* @author jack
* @Description
* @Date 2018/10/30
*/
public class MakeFriendAdapter extends BaseQuickAdapter<HomeRoom, BaseViewHolder> {
private Context context;
public MakeFriendAdapter(Context context, @Nullable List<HomeRoom> data) {
super(R.layout.item_home_make_friends_room, data);
this.context = context;
}
@Override
protected void convert(BaseViewHolder helper, HomeRoom item) {
helper.setText(R.id.tv_title, item.getTitle())
.setText(R.id.tv_online_number,
String.format(context.getResources().getString(R.string.online_number_text), item.getOnlineNum()));
ImageLoadUtils.loadAvatar(context, item.getAvatar(), helper.getView(R.id.civ_avatar));
helper.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AVRoomActivity.start(mContext, item.getUid());
}
});
}
}

View File

@@ -1,81 +0,0 @@
package com.yizhuan.erban.home.adapter;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.yizhuan.erban.ui.widget.rollviewpager.adapter.StaticPagerAdapter;
import com.netease.nim.uikit.support.glide.GlideApp;
import com.yizhuan.erban.R;
import com.yizhuan.erban.avroom.activity.AVRoomActivity;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.erban.ui.webview.CommonWebViewActivity;
import com.yizhuan.erban.ui.widget.RoomItemView;
import com.yizhuan.erban.ui.widget.marqueeview.Utils;
import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
import com.yizhuan.xchat_android_core.home.bean.HomeRoom;
import java.util.List;
/**
* @author jack
* @Description
* @Date 2018/4/16
*/
public class OtherBannerAdapter extends StaticPagerAdapter {
private Context mContext;
private List<BannerInfo> data;
public OtherBannerAdapter(Context context, List<BannerInfo> data) {
this.data = data;
this.mContext = context;
}
@Override
public View getView(ViewGroup container, int position) {
View view = LayoutInflater.from(mContext).inflate(R.layout.list_item_other_banner_cover,container,false);
ImageView ivCover = view.findViewById(R.id.iv_cover);
BannerInfo bannerInfo = data.get(position);
String url = bannerInfo.getSkipUri();
ImageLoadUtils.loadGameBannerRoundBackground(mContext, bannerInfo.getBannerPic(), ivCover);
ivCover.setOnClickListener(v -> {
if (TextUtils.isEmpty(url)) return;
if (bannerInfo.getSkipType() == BannerInfo.SKIP_TYP_H5) {
Intent intent = new Intent(mContext, CommonWebViewActivity.class);
intent.putExtra("url", url);
mContext.startActivity(intent);
} else if (bannerInfo.getSkipType() == BannerInfo.SKIP_TYP_CHAT_ROOM) {
if (TextUtils.isEmpty(url)) return;
try {
AVRoomActivity.start(mContext, Long.valueOf(url));
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
});
return view;
}
@Override
public int getCount() {
if (data != null) {
return data.size();
}else{
return 0;
}
}
}

View File

@@ -1,44 +0,0 @@
package com.yizhuan.erban.home.adapter;
import android.graphics.Rect;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.View;
/**
* 推荐 3+n 界面专用的分割线
* Created by lvzebiao on 2019/2/18.
*/
public class RecommendThreeNModelDecoration extends RecyclerView.ItemDecoration{
private int valuePx;
public RecommendThreeNModelDecoration(int valuePx) {
this.valuePx = valuePx;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
if (parent.getLayoutManager() == null || !(parent.getLayoutManager() instanceof GridLayoutManager)) {
return;
}
int position = parent.getChildAdapterPosition(view);
GridLayoutManager layoutManager = (GridLayoutManager) parent.getLayoutManager();
int spanCount = layoutManager.getSpanCount();
int column = position % spanCount;
int spanSize = layoutManager.getSpanSizeLookup().getSpanSize(position);
if (spanSize == spanCount) {
//独占一行的,不需要左右分割线
outRect.set(0, 0, 0, 0);
} else {
getGridItemOffsets(outRect, column, spanCount);
}
}
private void getGridItemOffsets(Rect outRect, int column, int spanCount) {
outRect.left = valuePx * column / spanCount;
outRect.right = valuePx * (spanCount - 1 - column) / spanCount;
}
}

View File

@@ -1,117 +0,0 @@
package com.yizhuan.erban.home.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.makeramen.roundedimageview.RoundedImageView;
import com.yizhuan.erban.R;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerIndicator;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerTitleView;
import com.yizhuan.xchat_android_core.home.bean.TabInfo;
import java.util.List;
/**
* @author jack
* @Description
* @Date 2018/11/1
*/
public class RoomCategoryIndicatorAdapter extends CommonNavigatorAdapter {
private List<TabInfo> mTitleList;
private Context mContext;
public RoomCategoryIndicatorAdapter(Context mContext, List<TabInfo> mTitleList) {
this.mTitleList = mTitleList;
this.mContext = mContext;
}
@Override
public int getCount() {
return mTitleList == null ? 0 : mTitleList.size();
}
@Override
public IPagerTitleView getTitleView(Context context, int index) {
CategoryPagerTitleView categoryPagerTitleView = new CategoryPagerTitleView(context, mTitleList.get(index));
categoryPagerTitleView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (null != mOnItemSelectListener) {
mOnItemSelectListener.onItemSelect(index);
}
}
});
return categoryPagerTitleView;
}
@Override
public IPagerIndicator getIndicator(Context context) {
return null;
}
private OnItemSelectListener mOnItemSelectListener;
public void setOnItemSelectListener(OnItemSelectListener onItemSelectListener) {
mOnItemSelectListener = onItemSelectListener;
}
public interface OnItemSelectListener {
void onItemSelect(int position);
}
class CategoryPagerTitleView extends RelativeLayout implements IPagerTitleView {
private RelativeLayout rlContainer;
private RoundedImageView ivIcon;
private TextView tvName;
private TabInfo tabInfo;
private View vCover;
public CategoryPagerTitleView(Context context, TabInfo tabInfo) {
super(context);
this.tabInfo = tabInfo;
LayoutInflater.from(context).inflate(R.layout.item_room_category, this, true);
rlContainer = (RelativeLayout) findViewById(R.id.rl_container);
ivIcon = (RoundedImageView) findViewById(R.id.iv_icon);
tvName = (TextView) findViewById(R.id.tv_name);
vCover = (View) findViewById(R.id.v_cover);
ImageLoadUtils.loadImage(context, tabInfo.getPict(), ivIcon);
// tvName.setText(tabInfo.getName());
}
@Override
public void onSelected(int index, int totalCount) {
vCover.setBackgroundResource(R.drawable.shape_room_category_selected);
// tvName.setTextColor(getResources().getColor(R.color.black));
}
@Override
public void onDeselected(int index, int totalCount) {
vCover.setBackgroundResource(R.drawable.shape_room_category_unselected);
// tvName.setTextColor(getResources().getColor(R.color.white));
}
@Override
public void onLeave(int index, int totalCount, float leavePercent, boolean leftToRight) {
}
@Override
public void onEnter(int index, int totalCount, float enterPercent, boolean leftToRight) {
}
}
}

View File

@@ -1,40 +0,0 @@
package com.yizhuan.erban.home.adapter;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import android.util.SparseArray;
import com.yizhuan.erban.home.fragment.RoomListFragment;
import com.yizhuan.xchat_android_core.home.bean.TabInfo;
import java.util.List;
/**
* <p> 房间 adapter </p>
* Created by Administrator on 2017/11/15.
*/
public class RoomCategoryViewPagerAdapter extends FragmentPagerAdapter {
private SparseArray<Fragment> mFragmentList;
private List<TabInfo> mTitleList;
public RoomCategoryViewPagerAdapter(FragmentManager fm, List<TabInfo> titleList) {
super(fm);
this.mTitleList = titleList;
mFragmentList = new SparseArray<>();
int size = titleList.size();
for (int i = 0; i < size; i++) {
mFragmentList.put(i, RoomListFragment.newInstance(titleList.get(i)));
}
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mTitleList == null ? 0 : mTitleList.size();
}
}

View File

@@ -1,149 +0,0 @@
package com.yizhuan.erban.home.adapter;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.yizhuan.erban.ui.widget.rollviewpager.RollPagerView;
import com.yizhuan.erban.ui.widget.rollviewpager.Util;
import com.yizhuan.erban.ui.widget.rollviewpager.hintview.ColorPointHintView;
import com.yizhuan.erban.R;
import com.yizhuan.erban.ui.widget.RoomItemView;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil;
import com.yizhuan.erban.ui.widget.marqueeview.Utils;
import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
import com.yizhuan.xchat_android_core.home.bean.HomeRoom;
import com.yizhuan.xchat_android_core.home.bean.HomeRoomItem;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import java.util.ArrayList;
import java.util.List;
public class RoomTabAdapter extends BaseMultiItemQuickAdapter<HomeRoomItem, BaseViewHolder> {
private Context context;
private int mScreenWidth;
public RoomTabAdapter(Context context, List<HomeRoomItem> data) {
super(data);
this.context = context;
addItemType(HomeRoomItem.TYPE_HOME_ROOM, R.layout.list_item_home_room_room);
// addItemType(HomeRoomItem.TYPE_BANNER, R.layout.list_item_home_room_banner);
addItemType(HomeRoomItem.TYPE_BANNER, R.layout.layout_rollpage_view);
addItemType(HomeRoomItem.TYPE_TOP_THREE, R.layout.list_top_three);
addItemType(HomeRoomItem.TYPE_TOP_EMPTY, R.layout.layout_top_empty);
mScreenWidth = Utils.getWindowWidth(context) - Utils.dip2px(context, 30);
}
@Override
protected void convert(BaseViewHolder helper, HomeRoomItem item) {
if (item == null) {
return;
}
switch (item.getItemType()) {
case HomeRoomItem.TYPE_HOME_ROOM:
setRoom(helper, item);
break;
case HomeRoomItem.TYPE_BANNER:
setOtherBanner(helper, item);
break;
case HomeRoomItem.TYPE_TOP_THREE:
setTopThree(helper, item);
break;
}
}
private void setTopThree(BaseViewHolder holder, HomeRoomItem item) {
ArrayList<HomeRoom> roomList = (ArrayList<HomeRoom>) item.getData();
RecyclerView recyclerView = holder.getView(R.id.rv_list);
recyclerView.setItemAnimator(null);
recyclerView.setFocusable(false);
GridLayoutManager manager = new GridLayoutManager(mContext, 3);
recyclerView.setLayoutManager(manager);
if (recyclerView.getItemDecorationCount() == 0) {
int px = UIUtil.dip2px(mContext, 15);
recyclerView.addItemDecoration(new RecommendThreeNModelDecoration(px));
}
ErbanRecommendAdapter erbanRecommendAdapter = new ErbanRecommendAdapter(mContext, roomList);
recyclerView.setAdapter(erbanRecommendAdapter);
erbanRecommendAdapter.setSpanSizeLookup(((gridLayoutManager, position) -> {
if (position < 3) {
return 1;
}
return manager.getSpanCount();
}));
}
/**
* 设置房间
*
* @param holder
* @param item
*/
private void setRoom(BaseViewHolder holder, HomeRoomItem item) {
HomeRoom homeRoom = (HomeRoom) item.getData();
RoomItemView roomItemView = holder.getView(R.id.riv_room_view);
roomItemView.bindData(homeRoom);
}
/**
* 设置中间的scrollView page
*
* @param holder
* @param homeItem
*/
private void setOtherBanner(BaseViewHolder holder, HomeRoomItem homeItem) {
List<BannerInfo> bannerInfos = (List<BannerInfo>) homeItem.getData();
if (!ListUtils.isListEmpty(bannerInfos)) {
RollPagerView rollPagerView = holder.getView(R.id.roll_view);
ViewGroup.LayoutParams layoutParams = rollPagerView.getLayoutParams();
int bannerWidth = UIUtil.getScreenWidth(mContext) - UIUtil.dip2px(mContext, 30);
layoutParams.width = bannerWidth;
layoutParams.height = bannerWidth * 120 / 345;
rollPagerView.setLayoutParams(layoutParams);
// RollPagerView rollPagerView = holder.getView(R.id.rpv_other_banner);
rollPagerView.setHintView(new ColorPointHintView(mContext, Color.WHITE, mContext.getResources().getColor(R.color.color_66FFFFFF)) {
@Override
public Drawable makeFocusDrawable() {
GradientDrawable dotFocus = new GradientDrawable();
dotFocus.setColor(Color.WHITE);
dotFocus.setCornerRadius(Util.dip2px(getContext(), 2));
dotFocus.setSize(Util.dip2px(getContext(), 9), Util.dip2px(getContext(), 4));
return dotFocus;
}
@Override
public Drawable makeNormalDrawable() {
GradientDrawable dotNormal = new GradientDrawable();
dotNormal.setColor(mContext.getResources().getColor(R.color.color_66FFFFFF));
dotNormal.setCornerRadius(Util.dip2px(getContext(), 2));
dotNormal.setSize(Util.dip2px(getContext(), 4), Util.dip2px(getContext(), 4));
return dotNormal;
}
});
OtherBannerAdapter bannerAdapter = new OtherBannerAdapter(mContext, bannerInfos);
rollPagerView.setAdapter(bannerAdapter);
rollPagerView.setPlayDelay(3000);
//设置透明度
rollPagerView.setAnimationDurtion(500);
rollPagerView.setVisibility(View.VISIBLE);
bannerAdapter.notifyDataSetChanged();
}
}
}

View File

@@ -1,48 +0,0 @@
package com.yizhuan.erban.home.adapter;
import android.graphics.Color;
import com.yizhuan.erban.bindadapter.BaseAdapter;
import com.yizhuan.erban.bindadapter.BindingViewHolder;
import com.yizhuan.erban.databinding.ItemHomeTwoNBinding;
import com.yizhuan.xchat_android_core.home.bean.HomeRoom;
public class TwoXNAdapter extends BaseAdapter<HomeRoom> {
public TwoXNAdapter(int layoutResId, int brid) {
super(layoutResId, brid);
}
@Override
protected void convert(BindingViewHolder helper, HomeRoom item) {
super.convert(helper, item);
ItemHomeTwoNBinding binding = (ItemHomeTwoNBinding) helper.getBinding();
binding.livLivingIcon.setColor(Color.WHITE);
binding.livLivingIcon.start();
/*GlideApp.with(mContext)
.asDrawable()
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.dontAnimate()
.dontTransform()
.load(item.tagPict)
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
if (resource == null) return true;
MessageView.SpannableBuilder text = new MessageView.SpannableBuilder(binding.tvTitle)
.append(resource,resource.getIntrinsicWidth(),resource.getIntrinsicHeight())
.append(item.title);
binding.tvTitle.setText(text.build());
binding.tvTitle.postInvalidate();
return true;
}
})
.submit();*/
}
}

View File

@@ -1,53 +0,0 @@
package com.yizhuan.erban.home.dialog;
import android.content.Context;
import android.view.View;
import com.yizhuan.erban.R;
import com.yizhuan.erban.treasure_box.widget.dialog.BaseBindingDialog;
import com.yizhuan.erban.databinding.DialogCreateRoomBinding;
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes;
@ActLayoutRes(R.layout.dialog_create_room)
public class CreateRoomDialog extends BaseBindingDialog<DialogCreateRoomBinding> {
private OpenRoomListener openRoomListener;
public CreateRoomDialog(Context context, OpenRoomListener openRoomListener) {
super(context);
this.openRoomListener = openRoomListener;
}
@Override
protected void init() {
binding.tvCp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
closeDialog();
if (openRoomListener != null) {
openRoomListener.onCpRoom();
}
}
});
binding.tvNormal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
closeDialog();
if (openRoomListener != null) {
openRoomListener.onNormalRoom();
}
}
});
binding.tvExplain.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new RoomShowsDialog(getContext()).openDialog();
}
});
}
public interface OpenRoomListener {
void onNormalRoom();
void onCpRoom();
}
}

View File

@@ -1,95 +0,0 @@
package com.yizhuan.erban.home.dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatDialog;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import com.yizhuan.erban.R;
import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
/**
* @author jack
* @Description 新人推荐房间dialog
* @Date 2018/7/9
*/
public class RecommendRoomForNewerDialog extends AppCompatDialog implements View.OnClickListener{
private ImageView ivContent;
private ImageView ivGoRoom;
private ImageView imgClose;
public RecommendRoomForNewerDialog(Context context) {
super(context, R.style.common_dialog_theme);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.dialog_recommend_room_for_newer);
Window window = getWindow();
if (window != null) {
// window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
WindowManager.LayoutParams windowParams = window.getAttributes();
windowParams.width = WindowManager.LayoutParams.MATCH_PARENT;
windowParams.height = WindowManager.LayoutParams.MATCH_PARENT;
windowParams.gravity = Gravity.CENTER_HORIZONTAL;
window.setAttributes(windowParams);
}
ivContent = (ImageView) findViewById(R.id.iv_content);
ivGoRoom = findViewById(R.id.tv_go_room);
imgClose = (ImageView) findViewById(R.id.img_close);
ivGoRoom.setOnClickListener(this);
imgClose.setOnClickListener(this);
UserInfo userInfo = UserModel.get().getCacheLoginUserInfo();
if (userInfo == null){
return;
}
if (userInfo.getGender() == 1){
ivContent.setImageResource(R.mipmap.bg_recommend_room_girls);
}else if (userInfo.getGender() == 2){
ivContent.setImageResource(R.mipmap.bg_recommend_room_boys);
}
}
@Override
public void onClick(View v) {
int id = v.getId();
if (id == ivGoRoom.getId()){
if (this.actionListener != null){
this.actionListener.onGoIntoRoom(this);
}
}else if (id == imgClose.getId()){
if (this.actionListener != null){
this.actionListener.onCancel(this);
}
}
}
private onActionListener actionListener;
public void setActionListener(onActionListener actionListener) {
this.actionListener = actionListener;
}
public interface onActionListener{
void onGoIntoRoom(DialogInterface dialogInterface);
void onCancel(DialogInterface dialogInterface);
}
}

View File

@@ -1,26 +0,0 @@
package com.yizhuan.erban.home.dialog;
import android.content.Context;
import android.view.View;
import com.yizhuan.erban.R;
import com.yizhuan.erban.treasure_box.widget.dialog.BaseBindingDialog;
import com.yizhuan.erban.databinding.DialogRoomShowsBinding;
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes;
@ActLayoutRes(R.layout.dialog_room_shows)
public class RoomShowsDialog extends BaseBindingDialog<DialogRoomShowsBinding> {
public RoomShowsDialog(Context context) {
super(context);
}
@Override
protected void init() {
binding.ivClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
}
}

View File

@@ -1,423 +0,0 @@
package com.yizhuan.erban.home.fragment;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.yizhuan.erban.ui.widget.rollviewpager.RollPagerView;
import com.yizhuan.erban.ui.widget.rollviewpager.Util;
import com.yizhuan.erban.ui.widget.rollviewpager.hintview.ColorPointHintView;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.netease.nim.uikit.support.glide.GlideApp;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseMvpFragment;
import com.yizhuan.erban.family.view.activity.FamilyHomeActivity;
import com.yizhuan.erban.family.view.activity.FamilyPlazaActivity;
import com.yizhuan.erban.family.view.adapter.FamilyBannerAdapter;
import com.yizhuan.erban.home.adapter.FindStarFamilyAdapter;
import com.yizhuan.erban.home.presenter.FamilyFragmentPresenter;
import com.yizhuan.erban.home.view.IFamilyFragmentView;
import com.yizhuan.erban.ui.im.avtivity.NimP2PMessageActivity;
import com.yizhuan.erban.ui.webview.CommonWebViewActivity;
import com.yizhuan.erban.ui.widget.SquareImageView;
import com.yizhuan.erban.ui.widget.recyclerview.decoration.HorizontalDecoration;
import com.yizhuan.xchat_android_core.UriProvider;
import com.yizhuan.xchat_android_core.family.bean.CustomServiceInfo;
import com.yizhuan.xchat_android_core.family.bean.FamilyCustomServiceInfo;
import com.yizhuan.xchat_android_core.family.bean.FamilyInfo;
import com.yizhuan.xchat_android_core.family.bean.FindBannerInfo;
import com.yizhuan.xchat_android_core.family.bean.response.RankingFamilyInfo;
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.SingleObserver;
import io.reactivex.disposables.Disposable;
/**
* @author jack
* @Description
* @Date 2018/10/29
*/
@CreatePresenter(FamilyFragmentPresenter.class)
public class FamilyFragment extends BaseMvpFragment<IFamilyFragmentView, FamilyFragmentPresenter>
implements IFamilyFragmentView, View.OnClickListener, SwipeRefreshLayout.OnRefreshListener {
private SwipeRefreshLayout srlRefreshContainer;
private LinearLayout rlBannerContainer;
private RollPagerView rpvFamilyPlaza;
private LinearLayout llFamilyPlaza;
private LinearLayout llCreateFamily;
private LinearLayout llMyFamilyContainer;
private TextView tvTitle;
private LinearLayout llMyFamily;
private SquareImageView ivCover;
private TextView tvFamilyName;
private TextView tvFamilyId;
private TextView tvFamilyMemberCount;
private LinearLayout llStarFamilyContainer;
private RecyclerView rvStartFamilyList;
private LinearLayout llFamilyCustomerService;
private LinearLayout llFamilyInstruction;
// private TextView tvCustomerServiceHotline;
// private TextView tvCustomerServiceId;
private FamilyBannerAdapter bannerAdapter;
private FindStarFamilyAdapter starFamilyAdapter;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
// 模拟展示家族tab的操作
if (isVisibleToUser) {
StatisticManager.Instance().onEvent(BasicConfig.INSTANCE.getAppContext(),
StatisticsProtocol.Event.HOME_FAMILY_CLICK, "家族tab", null);
}
}
public static Fragment newInstance() {
return new FamilyFragment();
}
@Override
public int getRootLayoutId() {
return R.layout.fragment_family;
}
@Override
public void onFindViews() {
srlRefreshContainer = (SwipeRefreshLayout) getView().findViewById(R.id.srl_refresh_container);
rlBannerContainer = getView().findViewById(R.id.rl_banner_container);
rpvFamilyPlaza = (RollPagerView) getView().findViewById(R.id.rpv_family_plaza);
llFamilyPlaza = (LinearLayout) getView().findViewById(R.id.ll_family_plaza);
llCreateFamily = (LinearLayout) getView().findViewById(R.id.ll_create_family);
llMyFamilyContainer = (LinearLayout) getView().findViewById(R.id.ll_my_family_container);
tvTitle = (TextView) getView().findViewById(R.id.tv_title);
llMyFamily = (LinearLayout) getView().findViewById(R.id.ll_my_family);
ivCover = (SquareImageView) getView().findViewById(R.id.iv_cover);
tvFamilyName = (TextView) getView().findViewById(R.id.tv_family_name);
tvFamilyId = (TextView) getView().findViewById(R.id.tv_family_id);
tvFamilyMemberCount = (TextView) getView().findViewById(R.id.tv_family_member_count);
llStarFamilyContainer = (LinearLayout) getView().findViewById(R.id.ll_star_family_container);
rvStartFamilyList = (RecyclerView) getView().findViewById(R.id.rv_start_family_list);
llFamilyCustomerService = (LinearLayout) getView().findViewById(R.id.ll_family_customer_service);
llFamilyInstruction = (LinearLayout) getView().findViewById(R.id.ll_family_instruction);
// tvCustomerServiceHotline = (TextView) getView().findViewById(R.id.tv_customer_service_hotline);
// tvCustomerServiceId = (TextView) getView().findViewById(R.id.tv_customer_service_id);
}
@Override
public void onSetListener() {
srlRefreshContainer.setOnRefreshListener(this);
llFamilyPlaza.setOnClickListener(this);
llCreateFamily.setOnClickListener(this);
llMyFamily.setOnClickListener(this);
llFamilyCustomerService.setOnClickListener(this);
llFamilyInstruction.setOnClickListener(this);
}
@Override
public void initiate() {
// rvStartFamilyList.setLayoutManager(new FullyGridLayoutManager(getActivity(), 3));
// rvStartFamilyList.addItemDecoration(new SpacingDecoration(0, 30, true));
rvStartFamilyList.setLayoutManager(new LinearLayoutManager(mContext));
rvStartFamilyList.addItemDecoration(new HorizontalDecoration(ScreenUtil.dip2px(17), true, true));
starFamilyAdapter = new FindStarFamilyAdapter(getActivity(), new ArrayList<>());
starFamilyAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
RankingFamilyInfo familyInfo = (RankingFamilyInfo) adapter.getData().get(position);
FamilyHomeActivity.start(getActivity(), familyInfo.getId());
}
});
rvStartFamilyList.setAdapter(starFamilyAdapter);
bannerAdapter = new FamilyBannerAdapter(new ArrayList<>(), getContext());
rpvFamilyPlaza.setAdapter(bannerAdapter);
rpvFamilyPlaza.setPlayDelay(3000);
//设置透明度
rpvFamilyPlaza.setAnimationDurtion(500);
rpvFamilyPlaza.setVisibility(View.VISIBLE);
rpvFamilyPlaza.setHintView(new ColorPointHintView(getContext(), Color.WHITE, this.getResources().getColor(R.color.color_66FFFFFF)) {
@Override
public Drawable makeFocusDrawable() {
GradientDrawable dotFocus = new GradientDrawable();
dotFocus.setColor(Color.WHITE);
dotFocus.setCornerRadius(Util.dip2px(getContext(), 2));
dotFocus.setSize(Util.dip2px(getContext(), 9), Util.dip2px(getContext(), 4));
return dotFocus;
}
@Override
public Drawable makeNormalDrawable() {
GradientDrawable dotNormal = new GradientDrawable();
dotNormal.setColor(getContext().getResources().getColor(R.color.color_66FFFFFF));
dotNormal.setCornerRadius(Util.dip2px(getContext(), 2));
dotNormal.setSize(Util.dip2px(getContext(), 4), Util.dip2px(getContext(), 4));
return dotNormal;
}
});
}
@Override
public void onResume() {
super.onResume();
loadData();
// getMvpPresenter().showCustomerServiceInfo().subscribe(new SingleObserver<FamilyCustomServiceInfo>() {
// @Override
// public void onSubscribe(Disposable d) {
// mCompositeDisposable.add(d);
// }
//
// @Override
// public void onSuccess(FamilyCustomServiceInfo familyCustomServiceInfo) {
// onCustomServiceInfo(familyCustomServiceInfo);
// }
//
// @Override
// public void onError(Throwable e) {
// onCustomServiceFail(e.getMessage());
// }
// });
getMvpPresenter().checkMyFamilyInfo();
if (ListUtils.isListEmpty(starFamilyAdapter.getData())) {
loadWeeklyStarList();
}
}
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
// if (!hidden){
// loadWeeklyStarList();
// }
}
@Override
public void onClick(View v) {
int id = v.getId();
if (id == llFamilyPlaza.getId()) {
FamilyPlazaActivity.start(this.getActivity());
} else if (id == llCreateFamily.getId()) {
CommonWebViewActivity.start(this.getActivity(), UriProvider.getCreateFamilyUrl());
} else if (id == llMyFamily.getId()) {
StatisticManager.Instance().onEvent(BasicConfig.INSTANCE.getAppContext(),
StatisticsProtocol.Event.FAMILY_MY_FAMILY_CLICK, "我的家族", null);
FamilyHomeActivity.start(getActivity(), getMvpPresenter().getMyFamily().getFamilyId());
} else if (id == llFamilyCustomerService.getId()) {
getMvpPresenter().contactCustomerService().subscribe(new SingleObserver<String>() {
@Override
public void onSubscribe(Disposable d) {
mCompositeDisposable.add(d);
}
@Override
public void onSuccess(String s) {
NimP2PMessageActivity.start(getContext(), s);
}
@Override
public void onError(Throwable e) {
toast(e.getMessage());
}
});
} else if (id == llFamilyInstruction.getId()) {
CommonWebViewActivity.start(getContext(), UriProvider.getFamilyInstructionUrl());
}
}
@Override
public void showMyFamilyInfo(FamilyInfo familyInfo) {
if (null != familyInfo) {
llMyFamilyContainer.setVisibility(View.VISIBLE);
GlideApp.with(this)
.load(familyInfo.getFamilyIcon())
.dontAnimate()
.transforms(new CenterCrop(), new RoundedCorners(10))
.into(ivCover);
tvFamilyName.setText(familyInfo.getFamilyName());
tvFamilyId.setText(String.format(Locale.CHINA, "ID:%s", familyInfo.getFamilyId()));
tvFamilyMemberCount.setText(String.format(Locale.CHINA, "成员:%s", String.valueOf(familyInfo.getMemberCount())));
llCreateFamily.setVisibility(View.GONE);
} else {
llCreateFamily.setVisibility(View.VISIBLE);
llMyFamilyContainer.setVisibility(View.GONE);
}
}
@Override
public void onCustomServiceInfo(FamilyCustomServiceInfo customServiceInfo) {
List<CustomServiceInfo> customServiceInfoList = customServiceInfo.getServices();
for (int i = 0; i < customServiceInfoList.size(); i++) {
CustomServiceInfo serviceInfo = customServiceInfoList.get(i);
if (serviceInfo.getType() == CustomServiceInfo.TYPE_ONLINE) {
// tvCustomerServiceId.setText(String.format(getResources().getString(R.string.family_customer_service_hint),
// serviceInfo.getContent()));
} else if (serviceInfo.getType() == CustomServiceInfo.TYPE_PHONE) {
// tvCustomerServiceHotline.setText(String.format(getResources().getString(R.string.family_customer_service_hotline),
// serviceInfo.getContent()));
}
}
}
@Override
public void onCustomServiceFail(String reason) {
toast(reason);
}
private void loadWeeklyStarList() {
getMvpPresenter().loadWeeklyStarList().subscribe(new SingleObserver<List<RankingFamilyInfo>>() {
@Override
public void onSubscribe(Disposable d) {
mCompositeDisposable.add(d);
}
@Override
public void onSuccess(List<RankingFamilyInfo> list) {
if (ListUtils.isListEmpty(list)) {
llStarFamilyContainer.setVisibility(View.GONE);
return;
}
llStarFamilyContainer.setVisibility(View.VISIBLE);
starFamilyAdapter.setNewData(list);
}
@Override
public void onError(Throwable e) {
toast(e.getMessage());
}
});
}
@Override
public void onRefresh() {
loadData();
}
private void loadData() {
Observable.create(new ObservableOnSubscribe<Integer>() {
@Override
public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
getMvpPresenter().loadBannerDate().subscribe(new SingleObserver<List<FindBannerInfo>>() {
@Override
public void onSubscribe(Disposable d) {
mCompositeDisposable.add(d);
}
@Override
public void onSuccess(List<FindBannerInfo> bannerInfoList) {
emitter.onNext(1);
if (ListUtils.isListEmpty(bannerInfoList)) {
rlBannerContainer.setVisibility(View.GONE);
return;
}
rlBannerContainer.setVisibility(View.VISIBLE);
bannerAdapter.setNewData(bannerInfoList);
}
@Override
public void onError(Throwable e) {
toast(e.getMessage());
emitter.onNext(1);
}
});
getMvpPresenter().loadWeeklyStarList().subscribe(new SingleObserver<List<RankingFamilyInfo>>() {
@Override
public void onSubscribe(Disposable d) {
mCompositeDisposable.add(d);
}
@Override
public void onSuccess(List<RankingFamilyInfo> list) {
emitter.onNext(1);
if (ListUtils.isListEmpty(list)) {
llStarFamilyContainer.setVisibility(View.GONE);
return;
}
llStarFamilyContainer.setVisibility(View.VISIBLE);
starFamilyAdapter.setNewData(list);
}
@Override
public void onError(Throwable e) {
toast(e.getMessage());
emitter.onNext(1);
}
});
}
}).subscribe(new Observer<Integer>() {
Disposable disposable;
int i = 0;
@Override
public void onSubscribe(Disposable d) {
disposable = d;
mCompositeDisposable.add(d);
}
@Override
public void onNext(Integer integer) {
i += integer;
if (i == 2) {
srlRefreshContainer.setRefreshing(false);
disposable.dispose();
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
}

View File

@@ -1,575 +0,0 @@
package com.yizhuan.erban.home.fragment;
import android.app.Activity;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.yizhuan.erban.ui.widget.rollviewpager.RollPagerView;
import com.yizhuan.erban.ui.widget.rollviewpager.Util;
import com.yizhuan.erban.ui.widget.rollviewpager.hintview.ColorPointHintView;
import com.netease.nim.uikit.api.NimUIKit;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
import com.netease.nimlib.sdk.msg.attachment.MsgAttachment;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseMvpFragment;
import com.yizhuan.erban.home.adapter.BannerAdapter;
import com.yizhuan.erban.home.adapter.ErbanTopMessageAdapter;
import com.yizhuan.erban.home.adapter.FindAdapter;
import com.yizhuan.erban.home.adapter.HomeHallAdapter;
import com.yizhuan.erban.home.presenter.FindFragmentPresenter;
import com.yizhuan.erban.home.view.IFindFragmentView;
import com.yizhuan.erban.public_chat_hall.activity.PublicChatHallHomeActivity;
import com.yizhuan.erban.public_chat_hall.msg.viewholder.ChatRoomViewHolderHelper;
import com.yizhuan.erban.ui.widget.InterceptTouchLayout;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil;
import com.yizhuan.erban.ui.widget.marqueeview.BetterMarqueeView;
import com.yizhuan.erban.ui.widget.marqueeview.Utils;
import com.yizhuan.erban.ui.widget.recyclerview.decoration.ColorDecoration;
import com.yizhuan.erban.ui.widget.recyclerview.decoration.SpacingDecoration;
import com.yizhuan.tutu.mentoring_relationship.activity.MentoringRelationshipActivity;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.auth.event.LoginEvent;
import com.yizhuan.xchat_android_core.gift.GiftModel;
import com.yizhuan.xchat_android_core.gift.bean.GiftInfo;
import com.yizhuan.xchat_android_core.gift.bean.GiftReceiveInfo;
import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
import com.yizhuan.xchat_android_core.home.bean.FindEntranceInfo;
import com.yizhuan.xchat_android_core.home.bean.FindInfo;
import com.yizhuan.xchat_android_core.home.bean.HomeHallMsgInfo;
import com.yizhuan.xchat_android_core.home.bean.MakeFriendsHallInfo;
import com.yizhuan.xchat_android_core.home.bean.VMTopMessageInfo;
import com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.GiftAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.ImTipAttachment;
import com.yizhuan.xchat_android_core.level.UserLevelResourceType;
import com.yizhuan.xchat_android_core.market_verify.MarketVerifyModel;
import com.yizhuan.xchat_android_core.noble.NobleResourceType;
import com.yizhuan.xchat_android_core.public_chat_hall.attachment.AitFriendsAttachment;
import com.yizhuan.xchat_android_core.public_chat_hall.bean.AitFriendsInfo;
import com.yizhuan.xchat_android_core.public_chat_hall.event.PublicChatHallAitMeEvent;
import com.yizhuan.xchat_android_core.public_chat_hall.event.PublicChatHallHistoryEvent;
import com.yizhuan.xchat_android_core.public_chat_hall.event.PublicChatHallMsgIncomingEvent;
import com.yizhuan.xchat_android_core.public_chat_hall.manager.PublicChatHallDataManager;
import com.yizhuan.xchat_android_core.radish.event.ReceivePrizeEvent;
import com.yizhuan.xchat_android_core.radish.event.SignInSuccessEvent;
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.UserInfo;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import com.yizhuan.xchat_android_library.list.NoScrollingLinearLayoutManager;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import com.yizhuan.xchat_android_library.utils.SingleToastUtil;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
/**
* @author jack
* @Description
* @Date 2018/5/22
*/
@CreatePresenter(FindFragmentPresenter.class)
public class FindFragment extends BaseMvpFragment<IFindFragmentView, FindFragmentPresenter>
implements IFindFragmentView, View.OnClickListener {
public final static String TAG = FindFragment.class.getSimpleName();
private RecyclerView rvEntrance;
private LinearLayout llMentoringRelationship;
private InterceptTouchLayout llPublicChatHallContainer;
private FindAdapter findAdapter;
private View tvMore;
private TextView tvHallNewAitTips;
private RecyclerView publicChatHallMsgView;
private MakeFriendsHallInfo makeFriendsHallInfo;
private SimpleDateFormat chatHallTimeFormater = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss", Locale.getDefault());
private ChatRoomMessage tempMsg = null;
private final int hallMsgMaxSize = 30;
private HomeHallAdapter homeHallAdapter;
// private CircleImageView newUserAvatarOne;
// private CircleImageView newUserAvatarTwo;
// private CircleImageView newUserAvatarThree;
//banner
private RollPagerView rollPagerView;
//头条
private BetterMarqueeView betterMarqueeView;
private View llTopMsgContainer;
private SwipeRefreshLayout swipeRefresh;
public static Fragment newInstance() {
return new FindFragment();
}
@Override
public int getRootLayoutId() {
return R.layout.fragment_find;
}
@Override
public void onFindViews() {
rvEntrance = (RecyclerView) getView().findViewById(R.id.rv_entrance);
tvMore = getView().findViewById(R.id.tv_more);
tvHallNewAitTips = getView().findViewById(R.id.tv_new_ait_tip);
publicChatHallMsgView = getView().findViewById(R.id.rv_hall_msg_list);
llPublicChatHallContainer = getView().findViewById(R.id.ll_public_chat_hall_container);
llMentoringRelationship = getView().findViewById(R.id.ll_mentoring_relationship);
// newUserAvatarOne = getView().findViewById(R.id.iv_new_user_1);
// newUserAvatarTwo = getView().findViewById(R.id.iv_new_user_2);
// newUserAvatarThree = getView().findViewById(R.id.iv_new_user_3);
rollPagerView = getView().findViewById(R.id.roll_view);
betterMarqueeView = getView().findViewById(R.id.bmv_marquee_view);
llTopMsgContainer = getView().findViewById(R.id.ll_top_msg_container);
swipeRefresh = getView().findViewById(R.id.swipe_refresh);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mView = super.onCreateView(inflater, container, savedInstanceState);
EventBus.getDefault().register(this);
return mView;
}
@Override
public void onDestroyView() {
super.onDestroyView();
EventBus.getDefault().unregister(this);
}
@Override
public void onSetListener() {
tvMore.setOnClickListener(this);
tvHallNewAitTips.setOnClickListener(this);
llPublicChatHallContainer.setOnClickListener(this);
llMentoringRelationship.setOnClickListener(this);
}
@Override
public void initiate() {
Activity activity = getActivity();
if (activity == null) {
return;
}
rvEntrance.setLayoutManager(new GridLayoutManager(mContext, 4));
findAdapter = new FindAdapter(getActivity(), new ArrayList<>());
rvEntrance.setAdapter(findAdapter);
rvEntrance.addItemDecoration(new SpacingDecoration(ScreenUtil.dip2px(12), ScreenUtil.dip2px(10), false));
makeFriendsHallInfo = new MakeFriendsHallInfo();
makeFriendsHallInfo.setAitUserName(null);
ArrayList<ChatRoomMessage> list = new ArrayList<>(PublicChatHallDataManager.get().getMessages());
Collections.reverse(list);
while (list.size() > hallMsgMaxSize) {
list.remove(0);
}
makeFriendsHallInfo.setMsgList(transformChatRoomMessage(list));
List<HomeHallMsgInfo> chatRoomMessageList = makeFriendsHallInfo.getMsgList();
publicChatHallMsgView.setItemAnimator(null);
publicChatHallMsgView.setFocusable(false);
NoScrollingLinearLayoutManager noScrollingLinearLayoutManager =
new NoScrollingLinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false);
noScrollingLinearLayoutManager.setScrollEnabled(false);
publicChatHallMsgView.setLayoutManager(noScrollingLinearLayoutManager);
if (publicChatHallMsgView.getItemDecorationCount() == 0) {
publicChatHallMsgView.addItemDecoration(new ColorDecoration(Color.TRANSPARENT, 0, Utils.dip2px(mContext, 10), false));
}
homeHallAdapter = new HomeHallAdapter(mContext, chatRoomMessageList);
publicChatHallMsgView.setAdapter(homeHallAdapter);
publicChatHallMsgView.scrollToPosition(homeHallAdapter.getItemCount() - 1);
//增加刷新功能
swipeRefresh.setOnRefreshListener(() -> getMvpPresenter().loadData());
}
/**
* 设置音游头条数据
*/
private void setTuTuTopMessageData(VMTopMessageInfo topMessageInfo) {
ErbanTopMessageAdapter adapter = new ErbanTopMessageAdapter(mContext, topMessageInfo.getVmTopMessageList());
betterMarqueeView.setAdapter(adapter);
betterMarqueeView.start();
llTopMsgContainer.setOnClickListener(v -> PublicChatHallHomeActivity.openHeadlinePage(mContext));
}
@Override
public void onResume() {
super.onResume();
if (null == getMvpPresenter().getFindInfo()) {
getMvpPresenter().loadData();
// getMvpPresenter().loadNewerList();
}
}
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
if (!hidden) {
getMvpPresenter().loadData();
// getMvpPresenter().loadNewerList();
}
}
@Override
public void onClick(View v) {
int id = v.getId();
if (id == tvMore.getId() || id == tvHallNewAitTips.getId() || id == llPublicChatHallContainer.getId()) {
PublicChatHallHomeActivity.openPublicChatHallPage(mContext);
makeFriendsHallInfo.setAitUserName(null);
if (tvHallNewAitTips.getVisibility() == View.VISIBLE) {
tvHallNewAitTips.setVisibility(View.GONE);
}
} else if (id == llMentoringRelationship.getId()) {
MentoringRelationshipActivity.start(mContext);
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.FIND_APPRENTICE_ENTRANCE, "收个徒弟赢钻石");
}
}
@Override
public void onLoadData(FindInfo findInfo) {
swipeRefresh.setRefreshing(false);
findAdapter.setNewData(findInfo.getBanners());
//设置banner
setBannerData(findInfo.getBannerVos());
VMTopMessageInfo info = getMvpPresenter().transformHomeData2TopMessageInfos(findInfo.getTopLineVos());
if (info == null) {
llTopMsgContainer.setVisibility(View.GONE);
} else {
llTopMsgContainer.setVisibility(View.VISIBLE);
setTuTuTopMessageData(info);
}
}
private void setBannerData(List<BannerInfo> bannerList) {
if (!ListUtils.isListEmpty(bannerList)) {
//审核中状态,去掉跳转房间banner
if (MarketVerifyModel.get().isMarketChecking()) {
Iterator<BannerInfo> iterator = bannerList.iterator();
while (iterator.hasNext()) {
BannerInfo bannerInfo = iterator.next();
if (bannerInfo.getSkipType() == 2) {
iterator.remove();
}
}
}
ViewGroup.LayoutParams layoutParams = rollPagerView.getLayoutParams();
int bannerWidth = UIUtil.getScreenWidth(mContext) - UIUtil.dip2px(mContext, 20) * 2;
layoutParams.width = bannerWidth;
layoutParams.height = bannerWidth * 232 / 670;
rollPagerView.setLayoutParams(layoutParams);
rollPagerView.setHintView(new ColorPointHintView(mContext, Color.WHITE, mContext.getResources().getColor(R.color.color_66FFFFFF)) {
@Override
public Drawable makeFocusDrawable() {
GradientDrawable dotFocus = new GradientDrawable();
dotFocus.setColor(Color.WHITE);
dotFocus.setCornerRadius(Util.dip2px(getContext(), 2));
dotFocus.setSize(Util.dip2px(getContext(), 9), Util.dip2px(getContext(), 4));
return dotFocus;
}
@Override
public Drawable makeNormalDrawable() {
GradientDrawable dotNormal = new GradientDrawable();
dotNormal.setColor(mContext.getResources().getColor(R.color.color_66FFFFFF));
dotNormal.setCornerRadius(Util.dip2px(getContext(), 2));
dotNormal.setSize(Util.dip2px(getContext(), 4), Util.dip2px(getContext(), 4));
return dotNormal;
}
});
BannerAdapter bannerAdapter = new BannerAdapter(bannerList, mContext);
rollPagerView.setAdapter(bannerAdapter);
rollPagerView.setPlayDelay(3000);
//设置透明度
rollPagerView.setAnimationDurtion(500);
rollPagerView.setVisibility(View.VISIBLE);
bannerAdapter.notifyDataSetChanged();
} else {
rollPagerView.setVisibility(View.GONE);
}
}
@Override
public void onLoadDataFail(String error) {
swipeRefresh.setRefreshing(false);
// Toast.makeText(this.getContext(), error, Toast.LENGTH_SHORT).show();
SingleToastUtil.showToastShort(error);
}
// @Override
// public void onLoadNewUserList(List<UserInfo> userInfoList) {
// if (!ListUtils.isListEmpty(userInfoList)) {
// newUserAvatarOne.setVisibility(View.GONE);
// newUserAvatarTwo.setVisibility(View.GONE);
// newUserAvatarThree.setVisibility(View.GONE);
// for (int i = 0; i < userInfoList.size(); i++) {
// if (i == 0) {
// newUserAvatarOne.setVisibility(View.VISIBLE);
// ImageLoadUtils.loadAvatar(getContext(), userInfoList.get(i).getAvatar(), newUserAvatarOne);
// }
// if (i == 1) {
// newUserAvatarTwo.setVisibility(View.VISIBLE);
// ImageLoadUtils.loadAvatar(getContext(), userInfoList.get(i).getAvatar(), newUserAvatarTwo);
// }
// if (i == 2) {
// newUserAvatarThree.setVisibility(View.VISIBLE);
// ImageLoadUtils.loadAvatar(getContext(), userInfoList.get(i).getAvatar(), newUserAvatarThree);
// }
// }
// }
// }
@Subscribe(threadMode = ThreadMode.MAIN)
public void onPublicChatHallHistoryEvent(PublicChatHallHistoryEvent event) {
ArrayList<ChatRoomMessage> list = new ArrayList<>(event.getMessages());
Collections.reverse(list);
while (list.size() > hallMsgMaxSize) {
list.remove(0);
}
updateHallData(list);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onPublicChatHallMsgIncomingEvent(PublicChatHallMsgIncomingEvent event) {
ArrayList<ChatRoomMessage> chatRoomMessages = new ArrayList<>();
chatRoomMessages.add(event.getChatRoomMessage());
updateHallData(chatRoomMessages);
}
private void updateHallData(List<ChatRoomMessage> messageList) {
if (ListUtils.isListEmpty(makeFriendsHallInfo.getMsgList())) {
ArrayList<ChatRoomMessage> list = new ArrayList<>(messageList);
makeFriendsHallInfo.setMsgList(transformChatRoomMessage(list));
} else {
while (makeFriendsHallInfo.getMsgList().size() > hallMsgMaxSize) {
makeFriendsHallInfo.getMsgList().remove(0);
}
makeFriendsHallInfo.getMsgList().addAll(transformChatRoomMessage(messageList));
}
List<HomeHallMsgInfo> chatRoomMessageList = makeFriendsHallInfo.getMsgList();
homeHallAdapter.setNewData(chatRoomMessageList);
publicChatHallMsgView.scrollToPosition(homeHallAdapter.getItemCount() - 1);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onPublicChatHallAitMeEvent(PublicChatHallAitMeEvent event) {
makeFriendsHallInfo.setAitUserName(event.getNick());
if (!TextUtils.isEmpty(makeFriendsHallInfo.getAitUserName())) {
tvHallNewAitTips.setVisibility(View.VISIBLE);
String temp = makeFriendsHallInfo.getAitUserName();
if (temp.length() >= 6) {
temp = temp.substring(0, 4).concat("...");
}
tvHallNewAitTips.setText(String.format(mContext.getResources().getString(R.string.hall_new_ait_tip), temp));
} else {
tvHallNewAitTips.setVisibility(View.GONE);
}
}
/**
* 把chatRoomMessage 转换成我们首页显示上的bean
*
* @param messageList
* @return
*/
private List<HomeHallMsgInfo> transformChatRoomMessage(List<ChatRoomMessage> messageList) {
List<HomeHallMsgInfo> homeHallMsgInfos = new ArrayList<>();
for (ChatRoomMessage chatRoomMessage : messageList) {
if (chatRoomMessage.getAttachment() instanceof ImTipAttachment) {
continue;
}
if (isNeedShowTimeFlag(chatRoomMessage, tempMsg)) {
HomeHallMsgInfo item = new HomeHallMsgInfo();
item.setItemType(HomeHallMsgInfo.ITEM_TYPE_TIP);
item.setMessageType(HomeHallMsgInfo.MESSAGE_TYPE_TIME);
item.setFormatTime(chatHallTimeFormater.format(new Date(chatRoomMessage.getTime())));
homeHallMsgInfos.add(item);
}
tempMsg = chatRoomMessage;
HomeHallMsgInfo item = new HomeHallMsgInfo();
item.setFromAccount(chatRoomMessage.getFromAccount());
if (item.getFromAccount().equals(String.valueOf(AuthModel.get().getCurrentUid()))) {
item.setItemType(HomeHallMsgInfo.ITEM_TYPE_RIGHT);
} else {
item.setItemType(HomeHallMsgInfo.ITEM_TYPE_LEFT);
}
final com.netease.nimlib.sdk.uinfo.model.UserInfo userInfo = NimUIKit.getUserInfoProvider().getUserInfo(chatRoomMessage.getFromAccount());
if (userInfo != null) {
item.setSenderAvatar(userInfo.getAvatar());
}
item.setNick(ChatRoomViewHolderHelper.getNameText(chatRoomMessage));
item.setContent(chatRoomMessage.getContent());
//贵族等级,等级,魅力等级相关
Map<String, Object> remoteExtension = chatRoomMessage.getRemoteExtension();
if (remoteExtension != null) {
Map<String, Object> extension = (Map<String, Object>) remoteExtension.get(chatRoomMessage.getFromAccount());
if (extension != null) {
item.setNobleLevel(extension.get(NobleResourceType.KEY_LEVEL) + "");
item.setUserLevelUrl((String) extension.get(UserLevelResourceType.EXPER_URL));
item.setUserCharmLevelUrl((String) extension.get(UserLevelResourceType.CHARM_URL));
if (extension.get(UserInfo.IS_OFFICIAL) != null) {
item.setOfficial((Boolean) extension.get(UserInfo.IS_OFFICIAL));
} else {
if (extension.get(UserInfo.DEF_USER) != null) {
int userType = (int) extension.get(UserInfo.DEF_USER);
item.setOfficial(userType == UserInfo.USER_TYPE_OFFICIAL);
}
}
if (extension.get(UserInfo.IS_NEW_USER) != null) {
item.setNewUser((Boolean) extension.get(UserInfo.IS_NEW_USER));
}
if (extension.get(UserInfo.HAS_PRETTY) != null) {
item.setPrettyErbanNo((Boolean) extension.get(UserInfo.HAS_PRETTY
));
}
if (extension.get(UserInfo.OAC_NAME) != null) {
item.setFixedWord((String) extension.get(UserInfo.OAC_NAME));
}
if (extension.get(UserInfo.OAC_ICON) != null) {
item.setIconPic((String) extension.get(UserInfo.OAC_ICON));
}
}
}
//礼物的消息的时候
MsgAttachment attachment = chatRoomMessage.getAttachment();
if (attachment != null) {
CustomAttachment customAttachment = (CustomAttachment) chatRoomMessage.getAttachment();
int first = customAttachment.getFirst();
int second = customAttachment.getSecond();
if (first == CustomAttachment.CUSTOM_MSG_PUBLIC_CHAT_HALL) {
if (second == CustomAttachment.CUSTOM_MSG_SUB_PUBLIC_CHAT_HALL_GIFT) {
GiftAttachment giftAttachment = (GiftAttachment) customAttachment;
GiftReceiveInfo giftReceiveInfo = giftAttachment.getGiftReceiveInfo();
item.setMessageType(HomeHallMsgInfo.MESSAGE_TYPE_GIFT);
item.setTargetNick(giftReceiveInfo.getTargetNick());
item.setGiftCount(giftReceiveInfo.getGiftNum());
GiftInfo giftInfo = giftReceiveInfo.getGift();
if (giftInfo == null) {
giftInfo = GiftModel.get().findGiftInfoById(giftReceiveInfo.getGiftId());
}
if (null != giftInfo) {
item.setGiftImage(giftInfo.getGiftUrl());
}
//这里使得内容不为空
String sb = "赠送 " + giftReceiveInfo.getTargetNick() + "\n" +
"礼物" +
"x" +
giftReceiveInfo.getGiftNum();
item.setContent(sb);
} else if (second == CustomAttachment.CUSTOM_MSG_SUB_PUBLIC_CHAT_HALL_AIT) {
AitFriendsAttachment aitFriendsAttachment = (AitFriendsAttachment) customAttachment;
AitFriendsInfo aitFriendsInfo = aitFriendsAttachment.getAitFriendsInfo();
item.setContent(aitFriendsInfo.getContent());
}
}
}
homeHallMsgInfos.add(item);
}
return homeHallMsgInfos;
}
private boolean isNeedShowTimeFlag(ChatRoomMessage message, @Nullable ChatRoomMessage anchor) {
boolean update = false;
if (anchor == null) {
return true;
}
long time = anchor.getTime();
long now = message.getTime();
if (now - time > (long) (5 * 60 * 1000)) {
update = true;
}
return update;
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onLoginEvent(LoginEvent event) {
//不同用户的,签到和任务状态不同,需要刷新
getMvpPresenter().loadData();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onSignInSuccessEvent(SignInSuccessEvent event) {
//签到成功,做一下数字处理
if (findAdapter == null) {
return;
}
List<FindEntranceInfo> list = findAdapter.getData();
if (ListUtils.isListEmpty(list)) {
return;
}
for (FindEntranceInfo info : list) {
if (info == null) {
continue;
}
if (info.getActivityType() == FindEntranceInfo.ACTIVITYTYPE_SIGN_IN) {
info.setSignStatus(true);
} else if (info.getActivityType() == FindEntranceInfo.ACTIVITYTYPE_TASK) {
int num = info.getMissionNum() - 1;
if (num < 0) {
num = 0;
}
info.setMissionNum(num);
}
}
findAdapter.notifyDataSetChanged();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onReceivePrizeEvent(ReceivePrizeEvent event) {
getMvpPresenter().loadData();
}
}

View File

@@ -1,229 +0,0 @@
package com.yizhuan.erban.home.fragment;
import android.annotation.SuppressLint;
import com.google.android.material.appbar.AppBarLayout;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.netease.nim.uikit.common.ui.draggablebubbles.BubbleView;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseMvpFragment;
import com.yizhuan.erban.common.widget.DragLayout;
import com.yizhuan.erban.community.publish.view.PublishActivity;
import com.yizhuan.erban.home.adapter.FragmentViewPagerAdapter;
import com.yizhuan.erban.home.adapter.TopMagicIndicatorAdapter;
import com.yizhuan.erban.home.presenter.FindTabFragmentPresenter;
import com.yizhuan.erban.home.view.IFindTabFragmentView;
import com.yizhuan.erban.community.square.SquareFragment;
import com.yizhuan.erban.ui.behavior.FixAppBarBehavior;
import com.yizhuan.erban.ui.widget.OnPageSelectedListener;
import com.yizhuan.erban.ui.widget.magicindicator.MagicIndicator;
import com.yizhuan.erban.ui.widget.magicindicator.ViewPagerHelper;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.community.event.UnReadCountEvent;
import com.yizhuan.xchat_android_core.home.model.HomeModel;
import com.yizhuan.xchat_android_core.market_verify.MarketVerifyModel;
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_core.user.event.LoadLoginUserInfoEvent;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.functions.BiConsumer;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
@CreatePresenter(FindTabFragmentPresenter.class)
public class FindTabFragment extends BaseMvpFragment<IFindTabFragmentView, FindTabFragmentPresenter>
implements IFindTabFragmentView, TopMagicIndicatorAdapter.OnItemSelectListener, View.OnClickListener {
public static final String TAG = "FindTabFragment";
private MagicIndicator miHomeIndicator;
private ViewPager mainViewpager;
private FrameLayout flContactList;
private TextView tvCommunityUnread;
private AppBarLayout appBarLayout;
private RelativeLayout rlTopGroup;
private DragLayout ivSquarePublish;
public static Fragment newInstance() {
return new FindFragment();
}
@Override
public int getRootLayoutId() {
return R.layout.fragment_find_tab;
}
@Override
public void onFindViews() {
miHomeIndicator = mView.findViewById(R.id.mi_home_indicator);
mainViewpager = mView.findViewById(R.id.main_viewpager);
flContactList = mView.findViewById(R.id.fl_contact_list);
tvCommunityUnread = mView.findViewById(R.id.msg_number);
appBarLayout = mView.findViewById(R.id.app_bar_layout);
rlTopGroup = mView.findViewById(R.id.rl_top_group);
ivSquarePublish = mView.findViewById(R.id.iv_square_publish);
}
@Override
public void onSetListener() {
if (flContactList != null) {
flContactList.setOnClickListener(this);
}
if (ivSquarePublish != null) {
ivSquarePublish.setOnClickListener(this);
}
}
@Override
public void initiate() {
EventBus.getDefault().register(this);
List<String> mTabInfoList = new ArrayList<>();
List<Fragment> fragmentList = new ArrayList<>();
//广场 1.3.2版本添加
mTabInfoList.add(getResources().getString(R.string.dys_find_tab_square));
fragmentList.add(SquareFragment.newInstance());
mTabInfoList.add(getResources().getString(R.string.main_find));
fragmentList.add(FindFragment.newInstance());
if (!MarketVerifyModel.get().isMarketChecking()) {
mTabInfoList.add(getResources().getString(R.string.main_tab_family));
fragmentList.add(FamilyFragment.newInstance());
}
CommonNavigator commonNavigator = new CommonNavigator(getContext());
TopMagicIndicatorAdapter magicIndicatorAdapter = new TopMagicIndicatorAdapter(getContext(), mTabInfoList);
magicIndicatorAdapter.setOnItemSelectListener(this);
commonNavigator.setAdapter(magicIndicatorAdapter);
miHomeIndicator.setNavigator(commonNavigator);
mainViewpager.setAdapter(new FragmentViewPagerAdapter(getChildFragmentManager(), fragmentList));
mainViewpager.setOffscreenPageLimit(3);
ViewPagerHelper.bind(miHomeIndicator, mainViewpager);
getUnReadCount();
mainViewpager.addOnPageChangeListener(new OnPageSelectedListener() {
@Override
public void onPageSelected(int position) {
updateTopView(position);
}
});
updateTopView(0);
}
private void updateTopView(int currPos) {
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) rlTopGroup.getLayoutParams();
if (currPos == 0) {
ivSquarePublish.setVisibility(VISIBLE);
flContactList.setVisibility(VISIBLE);
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL);
} else {
ivSquarePublish.setVisibility(GONE);
flContactList.setVisibility(View.INVISIBLE);
params.setScrollFlags(0);
}
rlTopGroup.setLayoutParams(params);
}
public void scrollToTop() {
try {
FixAppBarBehavior behavior = (FixAppBarBehavior)
((CoordinatorLayout.LayoutParams)appBarLayout.getLayoutParams())
.getBehavior();
if (behavior != null) {
behavior.setTopAndBottomOffset(0);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
@Override
public void onItemSelect(int position) {
mainViewpager.setCurrentItem(position);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onUnReadCount(UnReadCountEvent event) {
setNumber(event.getTotal());
}
@SuppressLint("SetTextI18n")
public void setNumber(int number) {
if(tvCommunityUnread instanceof BubbleView){
((BubbleView) tvCommunityUnread).setNumText(number);
return;
}
tvCommunityUnread.setVisibility(number <= 0 ? GONE : VISIBLE);
if (number > 99) {
tvCommunityUnread.setText("99+");
} else
tvCommunityUnread.setText(String.valueOf(number));
}
@Override
public void onDestroyView() {
super.onDestroyView();
EventBus.getDefault().unregister(this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onLoginUserInfoUpdateEvent(LoadLoginUserInfoEvent event) {
getUnReadCount();
}
@SuppressWarnings("CheckResult")
private void getUnReadCount() {
HomeModel.get().getUnreadCount(AuthModel.get().getCurrentUid())
.compose(bindToLifecycle())
.subscribe(new BiConsumer<Integer, Throwable>() {
@Override
public void accept(Integer integer, Throwable throwable) throws Exception {
if (integer != null) {
EventBus.getDefault().post(new UnReadCountEvent(integer));
}
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.fl_contact_list:
CommunityNoticeAct.start(mContext);
break;
case R.id.iv_square_publish:
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_WORLD_PUBLISH_MOMENTS_B,
"发布动态-广场");
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_WORLD_PUBLISH_MOMENTS,
"发布动态-区分话题-无话题");
PublishActivity.start(getDialogManager());
break;
}
}
}

View File

@@ -116,7 +116,6 @@ public class HomeFragment extends BaseMvpFragment<IMainFragmentView, MainFragmen
private final List<CharSequence> mTabInfoList = new ArrayList<>(); private final List<CharSequence> mTabInfoList = new ArrayList<>();
private FragmentGameHomeBinding mBinding; private FragmentGameHomeBinding mBinding;
private List<Fragment> mFragmentsBottom; private List<Fragment> mFragmentsBottom;
private Handler uiHandler;
private boolean needAutoScroll = true; private boolean needAutoScroll = true;
private HomeAddFriendsAdapter addFriendsAdapter; private HomeAddFriendsAdapter addFriendsAdapter;
private BannerAdapter bannerAdapter; private BannerAdapter bannerAdapter;
@@ -193,7 +192,6 @@ public class HomeFragment extends BaseMvpFragment<IMainFragmentView, MainFragmen
@Override @Override
public void initiate() { public void initiate() {
mBinding.rollView.setVisibility(View.GONE); mBinding.rollView.setVisibility(View.GONE);
this.uiHandler = new Handler();
initGuide(); initGuide();
initRefreshView(); initRefreshView();
initTitleTab(); initTitleTab();
@@ -352,16 +350,6 @@ public class HomeFragment extends BaseMvpFragment<IMainFragmentView, MainFragmen
getMvpPresenter().getHomeConcerns(); getMvpPresenter().getHomeConcerns();
} }
@Override
public void titleListSuccess(List<TagListInfo> tagListInfoList) {
}
@Override
public void titleListFail(String msg) {
SingleToastUtil.showToast(msg);
}
/** /**
* 推荐房间 * 推荐房间
* *
@@ -401,21 +389,6 @@ public class HomeFragment extends BaseMvpFragment<IMainFragmentView, MainFragmen
} }
} }
@Override
public void onGetFirstPageBannerFailed(String message) {
toast(message);
}
@Override
public void roomWorldModeCloseSuccess() {
OpenRoomHelper.openRoom(getBaseActivity());
}
@Override
public void roomWorldModeCloseFail(String error) {
toast(error);
}
@Override @Override
public void onGetHomeBannerSuccess(List<BannerInfo> bannerInfos) { public void onGetHomeBannerSuccess(List<BannerInfo> bannerInfos) {
setBanner(bannerInfos); setBanner(bannerInfos);
@@ -474,14 +447,6 @@ public class HomeFragment extends BaseMvpFragment<IMainFragmentView, MainFragmen
} }
@Override
public void getRoomShortcut(String data) {
if (TextUtils.isEmptyText(data)) {
return;
}
AVRoomActivity.start(mContext, Long.parseLong(data));
}
/** /**
* 用户信息更新 * 用户信息更新
* *

View File

@@ -1,319 +0,0 @@
package com.yizhuan.erban.home.fragment;
import android.annotation.SuppressLint;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadmoreListener;
import com.trello.rxlifecycle3.android.FragmentEvent;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseFragment;
import com.yizhuan.erban.common.NoDataFragment;
import com.yizhuan.erban.home.adapter.HomeFragmentAdapter;
import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
import com.yizhuan.xchat_android_core.home.bean.HomeItem;
import com.yizhuan.xchat_android_core.home.bean.HomeRoom;
import com.yizhuan.xchat_android_core.home.model.HomeModel;
import com.yizhuan.xchat_android_core.utils.net.RxHelper;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import com.yizhuan.xchat_android_library.utils.log.MLog;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CancellationException;
import io.reactivex.functions.BiConsumer;
import io.reactivex.functions.Function;
/**
* 语音排队 没用下拉式的tab
*/
public class HomeOtherTabFragment extends BaseFragment {
public static final int ROWS = 2;
private static final int PAGE_SIZE = 20;
private static final String PARAM_TAB_ID = "tabId";
private String tabId;
private RecyclerView recyclerView;
private SmartRefreshLayout smartRefreshLayout;
private int pageIndex = 1;
private HomeFragmentAdapter mHomeHotAdapter;
private final Object lock = new Object();
/**
* 是否包含了banner
*/
private boolean isContainsBanner = false;
/**
* 广告
*/
private HomeItem<ArrayList<BannerInfo>> bannerHomeItem;
/**
* 用于显示的数据
*/
private List<HomeItem> totalHomeItemList = new ArrayList<>();
public static HomeOtherTabFragment newInstance(int tabId) {
Bundle args = new Bundle();
args.putString(PARAM_TAB_ID, String.valueOf(tabId));
HomeOtherTabFragment fragment = new HomeOtherTabFragment();
fragment.setArguments(args);
return fragment;
}
public HomeOtherTabFragment() {
// Required empty public constructor
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
tabId = getArguments().getString(PARAM_TAB_ID);
}
}
@Override
public int getRootLayoutId() {
return R.layout.fragment_home_other_tab;
}
@Override
public void onFindViews() {
super.onFindViews();
recyclerView = mView.findViewById(R.id.recycler_view);
smartRefreshLayout = mView.findViewById(R.id.smart_refresh_layout);
initRefreshView();
initRecyclerView();
}
private void initRefreshView() {
smartRefreshLayout.setEnableRefresh(true);
smartRefreshLayout.setOnRefreshListener(new OnRefreshLoadmoreListener() {
@Override
public void onLoadmore(RefreshLayout refreshlayout) {
loadMoreData();
}
@Override
public void onRefresh(RefreshLayout refreshlayout) {
refreshData();
}
});
smartRefreshLayout.setEnableLoadmore(false);
}
/**
* 刷新数据
*/
public void refresh() {
smartRefreshLayout.autoRefresh();
}
/**
* 刷新数据
*/
private void refreshData() {
pageIndex = 1;
getData(true);
}
private void loadMoreData() {
getData(false);
}
/**
* 请求数据
*/
@SuppressLint("CheckResult")
private void getData(boolean isRefresh) {
HomeModel.get()
.getTabRoomList(pageIndex, PAGE_SIZE, tabId)
.map(new Function<List<HomeRoom>, List<HomeItem>>() {
@Override
public List<HomeItem> apply(List<HomeRoom> homeRooms) throws Exception {
if (ListUtils.isListEmpty(homeRooms)) {
return new ArrayList<>();
}
List<HomeItem> list = new ArrayList<>(homeRooms.size());
for (HomeRoom homeRoom : homeRooms) {
HomeItem homeItem = new HomeItem(HomeItem.TYPE_BLOCK_SINGLE, homeRoom);
list.add(homeItem);
}
return list;
}
})
.compose(RxHelper.handleSchedulers())
.compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
.subscribe(new BiConsumer<List<HomeItem>, Throwable>() {
@Override
public void accept(List<HomeItem> homeItems, Throwable throwable) throws Exception {
if (throwable == null) {
if (ListUtils.isListEmpty(homeItems)) {
mHomeHotAdapter.setEnableLoadMore(false);
if (isRefresh) {
totalHomeItemList.clear();
mHomeHotAdapter.notifyDataSetChanged();
}
} else {
pageIndex++;
//添加虚位以待
int count = homeItems.size() % ROWS;
if (count != 0) {
count = ROWS - count;
}
for (int i = 0; i < count; i++) {
homeItems.add(new HomeItem(HomeItem.TYPE_DOUBLE_SQUARE_EMPTY));
}
synchronized (lock) {
if (isRefresh) {
totalHomeItemList.clear();
totalHomeItemList.addAll(homeItems);
isContainsBanner = false;
recombinationData();
} else {
totalHomeItemList.addAll(homeItems);
mHomeHotAdapter.notifyDataSetChanged();
}
mHomeHotAdapter.setEnableLoadMore(true);
}
}
} else {
if (!(throwable instanceof CancellationException)) {
toast("请求失败,请稍后再试!!" + throwable.getMessage());
}
}
if (isRefresh) {
smartRefreshLayout.finishRefresh();
mHomeHotAdapter.loadMoreComplete();
} else {
mHomeHotAdapter.loadMoreComplete();
}
}
});
}
private void initRecyclerView() {
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recyclerView.setItemAnimator(null);
mHomeHotAdapter = new HomeFragmentAdapter(getContext(), totalHomeItemList);
mHomeHotAdapter.setEnableLoadMore(false);
GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), ROWS);
mHomeHotAdapter.setSpanSizeLookup(new BaseQuickAdapter.SpanSizeLookup() {
@Override
public int getSpanSize(GridLayoutManager gridLayoutManager, int position) {
HomeItem homeItem = mHomeHotAdapter.getItem(position);
if (homeItem != null && (homeItem.getItemType() == HomeItem.TYPE_BLOCK_SINGLE || homeItem.getItemType() == HomeItem.TYPE_DOUBLE_SQUARE_EMPTY)) {
return 1;
}
return gridLayoutManager.getSpanCount();
}
});
mHomeHotAdapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {
@Override
public void onLoadMoreRequested() {
loadMoreData();
}
}, recyclerView);
mHomeHotAdapter.setEnableLoadMore(false);
recyclerView.setLayoutManager(gridLayoutManager);
recyclerView.setAdapter(mHomeHotAdapter);
View emptyView = getLayoutInflater().inflate(R.layout.layout_home_empty_no_header, null);
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
emptyView.setLayoutParams(lp);
mHomeHotAdapter.setEmptyView(emptyView);
}
@Override
public void initiate() {
refresh();
initBanner();
}
private void initBanner() {
HomeModel.get()
.getTabBanner(tabId)
.map(new Function<ArrayList<BannerInfo>, HomeItem<ArrayList<BannerInfo>>>() {
@Override
public HomeItem<ArrayList<BannerInfo>> apply(ArrayList<BannerInfo> bannerInfos) throws Exception {
if (ListUtils.isListEmpty(bannerInfos)) {
return null;
}
HomeItem homeItem = new HomeItem(HomeItem.TYPE_BANNER_NO_TOP_BG, bannerInfos);
return homeItem;
}
})
.compose(RxHelper.handleSchedulers())
.compose(bindToLifecycle())
.subscribe(new BiConsumer<HomeItem<ArrayList<BannerInfo>>, Throwable>() {
@Override
public void accept(HomeItem<ArrayList<BannerInfo>> homeItem, Throwable throwable) throws Exception {
if (throwable == null) {
bannerHomeItem = homeItem;
recombinationData();
}
}
});
}
private void recombinationData() {
synchronized (lock) {
List<HomeItem> homeItems = totalHomeItemList;
if (bannerHomeItem != null && !isContainsBanner) {
totalHomeItemList.add(homeItems.size() > 4 ? 4 : homeItems.size(), bannerHomeItem);
isContainsBanner = true;
}
mHomeHotAdapter.notifyDataSetChanged();
}
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
}
@SuppressLint("ResourceType")
@Override
public void showNoData(View view, int drawable, CharSequence charSequence) {
if (!checkActivityValid()) {
return;
}
if (view == null) {
MLog.error(this, "xuwakao, showNoData view is NULL");
return;
}
View status = view.findViewById(R.id.status_layout);
if (status == null || status.getId() <= 0) {
MLog.error(this, "xuwakao, had not set layout id ");
return;
}
NoDataFragment fragment = NoDataFragment.newInstance(R.layout.layout_home_empty_no_header, drawable, charSequence);
fragment.setListener(getLoadListener());
getChildFragmentManager().beginTransaction().replace(status.getId(), fragment, STATUS_TAG).commitAllowingStateLoss();
}
}

View File

@@ -1,145 +0,0 @@
package com.yizhuan.erban.home.fragment;
import android.graphics.Color;
import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseMvpFragment;
import com.yizhuan.erban.home.adapter.KTVTypeRoomAdapter;
import com.yizhuan.erban.home.presenter.HottestKTVRoomFragmentPresenter;
import com.yizhuan.erban.home.view.IHottestKTVRoomFragmentView;
import com.yizhuan.erban.ui.widget.marqueeview.Utils;
import com.yizhuan.erban.ui.widget.recyclerview.decoration.ColorDecoration;
import com.yizhuan.xchat_android_core.home.bean.KTVRoom;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import java.util.List;
import io.reactivex.SingleObserver;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Action;
/**
* @author jack
* @Description
* @Date 2018/10/31
*/
@CreatePresenter(HottestKTVRoomFragmentPresenter.class)
public class HottestKTVRoomFragment extends BaseMvpFragment<IHottestKTVRoomFragmentView, HottestKTVRoomFragmentPresenter>
implements IHottestKTVRoomFragmentView, SwipeRefreshLayout.OnRefreshListener, BaseQuickAdapter.RequestLoadMoreListener {
private SwipeRefreshLayout srlRefreshContainer;
private RecyclerView rvList;
private KTVTypeRoomAdapter adapter;
public static Fragment newInstance() {
return new HottestKTVRoomFragment();
}
@Override
public int getRootLayoutId() {
return R.layout.fragment_hottest_ktv;
}
@Override
public void onFindViews() {
srlRefreshContainer = (SwipeRefreshLayout) getView().findViewById(R.id.srl_refresh_container);
rvList = (RecyclerView) getView().findViewById(R.id.rv_list);
rvList.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
rvList.addItemDecoration(new ColorDecoration(Color.TRANSPARENT, 0, Utils.dip2px(getContext(), 10), false));
adapter = new KTVTypeRoomAdapter(getContext(), null);
adapter.setEnableLoadMore(true);
adapter.setOnLoadMoreListener(this, rvList);
rvList.setAdapter(adapter);
}
@Override
public void onSetListener() {
srlRefreshContainer.setOnRefreshListener(this);
}
@Override
public void initiate() {
}
@Override
public void onResume() {
super.onResume();
onRefresh();
}
@Override
public void onReloadData() {
super.onReloadData();
onRefresh();
}
@Override
public void onRefresh() {
getMvpPresenter().refreshData()
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(new Action() {
@Override
public void run() throws Exception {
srlRefreshContainer.setRefreshing(false);
}
})
.subscribe(new SingleObserver<List<KTVRoom>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(List<KTVRoom> roomList) {
if (ListUtils.isListEmpty(roomList)) {
showNoData();
return;
}
hideStatus();
adapter.setNewData(roomList);
}
@Override
public void onError(Throwable e) {
showNetworkErr();
toast(e.getMessage());
}
});
}
@Override
public void onLoadMoreRequested() {
getMvpPresenter().loadMoreData()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SingleObserver<List<KTVRoom>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(List<KTVRoom> strings) {
if (!ListUtils.isListEmpty(strings)) {
adapter.addData(strings);
adapter.loadMoreComplete();
} else {
adapter.loadMoreEnd(true);
}
}
@Override
public void onError(Throwable e) {
toast(e.getMessage());
}
});
}
}

View File

@@ -1,93 +0,0 @@
package com.yizhuan.erban.home.fragment;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import android.widget.LinearLayout;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseMvpFragment;
import com.yizhuan.erban.home.adapter.CommonMagicIndicatorAdapter;
import com.yizhuan.erban.home.adapter.FragmentViewPagerAdapter;
import com.yizhuan.erban.home.presenter.KTVFragmentPresenter;
import com.yizhuan.erban.home.view.IKTVFragmentView;
import com.yizhuan.erban.ui.widget.magicindicator.MagicIndicator;
import com.yizhuan.erban.ui.widget.magicindicator.ViewPagerHelper;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator;
import com.yizhuan.xchat_android_core.home.bean.TabInfo;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import java.util.ArrayList;
import java.util.List;
/**
* @author jack
* @Description
* @Date 2018/10/29
*/
@CreatePresenter(KTVFragmentPresenter.class)
public class KTVFragment extends BaseMvpFragment<IKTVFragmentView, KTVFragmentPresenter>
implements IKTVFragmentView, CommonMagicIndicatorAdapter.OnItemSelectListener {
private MagicIndicator miIndicator;
private ViewPager vpKtv;
public static Fragment newInstance() {
return new KTVFragment();
}
@Override
public int getRootLayoutId() {
return R.layout.fragment_ktv;
}
@Override
public void onFindViews() {
miIndicator = (MagicIndicator) getView().findViewById(R.id.mi_indicator);
vpKtv = (ViewPager) getView().findViewById(R.id.vp_ktv);
}
@Override
public void onSetListener() {
}
@Override
public void initiate() {
List<TabInfo> tabInfoList = new ArrayList<>();
tabInfoList.add(new TabInfo(1, getString(R.string.home_ktv_newest)));
tabInfoList.add(new TabInfo(2, getString(R.string.home_ktv_hottest)));
List<Fragment> mTabs = new ArrayList<>();
mTabs.add(NewestKTVRoomFragment.newInstance());
mTabs.add(HottestKTVRoomFragment.newInstance());
CommonMagicIndicatorAdapter mMsgIndicatorAdapter = new CommonMagicIndicatorAdapter(mContext, tabInfoList, 5);
mMsgIndicatorAdapter.setOnItemSelectListener(this);
CommonNavigator commonNavigator = new CommonNavigator(getContext());
commonNavigator.setAdjustMode(true);
commonNavigator.setAdapter(mMsgIndicatorAdapter);
miIndicator.setNavigator(commonNavigator);
// must after setNavigator
LinearLayout titleContainer = commonNavigator.getTitleContainer();
titleContainer.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
vpKtv.setAdapter(new FragmentViewPagerAdapter(getChildFragmentManager(), mTabs));
ViewPagerHelper.bind(miIndicator, vpKtv);
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onItemSelect(int position) {
vpKtv.setCurrentItem(position);
}
}

View File

@@ -1,275 +0,0 @@
package com.yizhuan.erban.home.fragment;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseMvpFragment;
import com.yizhuan.erban.home.adapter.FragmentViewPagerAdapter;
import com.yizhuan.erban.home.adapter.TopMagicIndicatorAdapter;
import com.yizhuan.erban.home.helper.OpenRoomHelper;
import com.yizhuan.erban.home.presenter.MainFragmentPresenter;
import com.yizhuan.erban.home.view.IMainFragmentTabBg;
import com.yizhuan.erban.home.view.IMainFragmentView;
import com.yizhuan.erban.ui.search.SearchActivity;
import com.yizhuan.erban.ui.widget.magicindicator.MagicIndicator;
import com.yizhuan.erban.ui.widget.magicindicator.ViewPagerHelper;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator;
import com.yizhuan.erban.ui.widget.magicindicator.ext.MainCommonNavigatorAdapter;
import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
import com.yizhuan.xchat_android_core.home.bean.HomeConcernsInfo;
import com.yizhuan.xchat_android_core.home.bean.HomeTagInfo;
import com.yizhuan.xchat_android_core.home.bean.TagListInfo;
import com.yizhuan.xchat_android_core.market_verify.MarketVerifyModel;
import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import com.yizhuan.xchat_android_library.utils.AppMetaDataUtil;
import java.util.ArrayList;
import java.util.List;
/**
* <p>首页 fragment </p>
*
* @author Administrator
* @date 2017/11/14
* 修改 jack
*/
@CreatePresenter(MainFragmentPresenter.class)
public class MainFragment extends BaseMvpFragment<IMainFragmentView, MainFragmentPresenter>
implements IMainFragmentView, View.OnClickListener, TopMagicIndicatorAdapter.OnItemSelectListener,
IMainFragmentTabBg {
public static final String TAG = MainFragment.class.getSimpleName();
private MagicIndicator miHomeIndicator;
private ImageView ivSearchRoom;
private ImageView ivOpenRoom;
private ViewPager mainViewpager;
private LinearLayout llHomeTitle;
private boolean mIsBannerTop = true;
// 有可能出现miHomeIndicator未初始就调用handleGuide的情况
private boolean showGuide = false;
@Override
public int getRootLayoutId() {
return R.layout.fragment_main;
}
@Override
public void onFindViews() {
miHomeIndicator = mView.findViewById(R.id.mi_home_indicator);
ivSearchRoom = (ImageView) mView.findViewById(R.id.iv_search_room);
ivOpenRoom = (ImageView) mView.findViewById(R.id.iv_open_room);
mainViewpager = (ViewPager) mView.findViewById(R.id.main_viewpager);
llHomeTitle = mView.findViewById(R.id.ll_home_title);
}
@Override
public void onSetListener() {
ivSearchRoom.setOnClickListener(this);
ivOpenRoom.setOnClickListener(this);
}
@Override
public void onClick(View v) {
int id = v.getId();
if (id == ivSearchRoom.getId()) {
SearchActivity.start(getActivity());
} else if (id == ivOpenRoom.getId()) {
OpenRoomHelper.openRoom(getBaseActivity());
}
}
@Override
public void initiate() {
//初始化延迟到获取到审核结果后
if (!"baidutg".equals(AppMetaDataUtil.getChannelID())) {
getMvpPresenter().tagList();
}
}
@Override
public void requestOpenRoomResult(int openRoomFailType, Object... arg) {
}
private void initTabIndicator(List<String> mTabInfoList) {
CommonNavigator commonNavigator = new CommonNavigator(mContext, UIUtil.dip2px(mContext, 20));
MainCommonNavigatorAdapter commonNavigatorAdapter = new MainCommonNavigatorAdapter(mContext, mTabInfoList);
commonNavigatorAdapter.setOnTabClickListener(index -> mainViewpager.setCurrentItem(index));
commonNavigator.setAdapter(commonNavigatorAdapter);
miHomeIndicator.setNavigator(commonNavigator);
ViewPagerHelper.bind(miHomeIndicator, mainViewpager);
if (showGuide)
showGuide();
// mBinding.mainViewpager.setOffscreenPageLimit(7);
}
/**
* 审核包,隐藏,重新刷新
*/
@Override
public void showByMarketCheckingStatus(List<TagListInfo> tagListInfoList) {
//审核包隐藏搜索
if (MarketVerifyModel.get().isMarketChecking()) {
ivSearchRoom.setVisibility(View.INVISIBLE);
ivSearchRoom.setEnabled(false);
} else {
ivSearchRoom.setVisibility(View.VISIBLE);
ivSearchRoom.setEnabled(true);
}
List<String> mTabInfoList = new ArrayList<>();
List<Fragment> fragmentList = new ArrayList<>();
mTabInfoList.add(getResources().getString(R.string.main_tab_recommend));
fragmentList.add(RecommendFragment.newInstance(this));
for (TagListInfo tagListInfo : tagListInfoList) {
mTabInfoList.add(tagListInfo.getTitleName());
fragmentList.add(RoomTabFragment.newInstance(tagListInfo.getTitleId(), this));
}
mainViewpager.setAdapter(new FragmentViewPagerAdapter(getChildFragmentManager(), fragmentList));
initTabIndicator(mTabInfoList);
}
@Override
public void getFollowRoomsSuccess(List<HomeConcernsInfo> infos) {
}
@Override
public void getFollowRoomFail() {
}
@Override
public void exitRoom(RoomInfo roomInfo) {
}
@Override
public void titleListSuccess(List<TagListInfo> tagListInfoList) {
showByMarketCheckingStatus(tagListInfoList);
}
@Override
public void titleListFail(String msg) {
showByMarketCheckingStatus(new ArrayList<>());
}
@Override
public void onItemSelect(int position) {
mainViewpager.setCurrentItem(position);
}
public void goToKTVTab() {
mainViewpager.setCurrentItem(3, true);
}
@Override
public void isBannerTop(boolean isBannerTop) {
if (mIsBannerTop != isBannerTop) {
// if (isBannerTop) {
//
// if (llHomeTitle != null)
// llHomeTitle.setBackgroundResource(R.drawable.game_img_bg);
//
// } else {
//
// if (llHomeTitle != null)
// llHomeTitle.setBackgroundResource(R.drawable.game_img_bg2);
// }
// llHomeTitle.setBackgroundResource(R.drawable.game_img_bg2);
mIsBannerTop = isBannerTop;
}
}
/**
* 处理引导
*/
public void handleGuide() {
if (miHomeIndicator != null) {
showGuide();
} else {
showGuide = true;
}
}
private void showGuide() {
// if (TuTuGuideHelper.isNeedHiGuide(TuTuGuideHelper.KEY_GUIDE_MAIN_TAB)) {
// miHomeIndicator.post(() -> {
// if (getActivity() != null && getActivity() instanceof MainActivity) {
// if (!((MainActivity) getActivity()).isShowMainTab()) {
// return;
// }
// TuTuGuideHelper helper = new TuTuGuideHelper(mContext);
// helper.createHiGuide(() -> helper.createMainTabOverLayer(miHomeIndicator));
// TuTuGuideHelper.setNoNeedHiGuide(TuTuGuideHelper.KEY_GUIDE_MAIN_TAB);
// }
// });
// }
showGuide = false;
// if (TuTuGuideHelper.isNeedHiGuide(TuTuGuideHelper.KEY_GUIDE_MAIN_TAB)) {
// miHomeIndicator.post(() -> {
// if (getActivity() != null && getActivity() instanceof MainActivity) {
// if (!((MainActivity) getActivity()).isShowMainTab()) {
// return;
// }
// TuTuGuideHelper helper = new TuTuGuideHelper(mContext);
// helper.createHiGuide(() -> helper.createMainTabOverLayer(miHomeIndicator));
// TuTuGuideHelper.setNoNeedHiGuide(TuTuGuideHelper.KEY_GUIDE_MAIN_TAB);
// }
// });
// }
}
@Override
public void onGetFirstPageBannerFailed(String message) {
}
@Override
public void roomWorldModeCloseSuccess() {
OpenRoomHelper.openRoom(getBaseActivity());
}
@Override
public void roomWorldModeCloseFail(String error) {
toast(error);
}
@Override
public void onGetHomeBannerSuccess(List<BannerInfo> bannerInfos) {
}
@Override
public void onGetHomeTagSuccess(List<HomeTagInfo> tagInfos) {
}
@Override
public void getRoomShortcut(String data) {
}
}

View File

@@ -1,140 +0,0 @@
package com.yizhuan.erban.home.fragment;
import android.graphics.Color;
import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseMvpFragment;
import com.yizhuan.erban.home.adapter.KTVTypeRoomAdapter;
import com.yizhuan.erban.home.presenter.NewestKTVRoomFragmentPresenter;
import com.yizhuan.erban.home.view.INewestKTVRoomFragmentView;
import com.yizhuan.erban.ui.widget.marqueeview.Utils;
import com.yizhuan.erban.ui.widget.recyclerview.decoration.ColorDecoration;
import com.yizhuan.xchat_android_core.home.bean.KTVRoom;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import java.util.List;
import io.reactivex.SingleObserver;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Action;
/**
* @author jack
* @Description
* @Date 2018/10/31
*/
@CreatePresenter(NewestKTVRoomFragmentPresenter.class)
public class NewestKTVRoomFragment extends BaseMvpFragment<INewestKTVRoomFragmentView, NewestKTVRoomFragmentPresenter>
implements INewestKTVRoomFragmentView, SwipeRefreshLayout.OnRefreshListener, BaseQuickAdapter.RequestLoadMoreListener {
private SwipeRefreshLayout srlRefreshContainer;
private RecyclerView rvList;
private KTVTypeRoomAdapter adapter;
public static Fragment newInstance() {
return new NewestKTVRoomFragment();
}
@Override
public int getRootLayoutId() {
return R.layout.fragment_newest_ktv;
}
@Override
public void onFindViews() {
srlRefreshContainer = (SwipeRefreshLayout) getView().findViewById(R.id.srl_refresh_container);
rvList = (RecyclerView) getView().findViewById(R.id.rv_list);
rvList.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
rvList.addItemDecoration(new ColorDecoration(Color.TRANSPARENT, 0, Utils.dip2px(getContext(), 10), false));
adapter = new KTVTypeRoomAdapter(getContext(), null);
adapter.setEnableLoadMore(true);
adapter.setOnLoadMoreListener(this, rvList);
rvList.setAdapter(adapter);
}
@Override
public void onSetListener() {
srlRefreshContainer.setOnRefreshListener(this);
}
@Override
public void initiate() {
}
@Override
public void onResume() {
super.onResume();
onRefresh();
}
@Override
public void onRefresh() {
getMvpPresenter().refreshData()
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(new Action() {
@Override
public void run() throws Exception {
srlRefreshContainer.setRefreshing(false);
}
})
.subscribe(new SingleObserver<List<KTVRoom>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(List<KTVRoom> roomList) {
if (ListUtils.isListEmpty(roomList)) {
showNoData();
return;
}
hideStatus();
adapter.setNewData(roomList);
}
@Override
public void onError(Throwable e) {
showNetworkErr();
toast(e.getMessage());
}
});
}
@Override
public void onLoadMoreRequested() {
getMvpPresenter().loadMoreData()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SingleObserver<List<KTVRoom>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(List<KTVRoom> homeRoomList) {
if (!ListUtils.isListEmpty(homeRoomList)) {
adapter.addData(homeRoomList);
adapter.loadMoreComplete();
} else {
adapter.loadMoreEnd(true);
}
}
@Override
public void onError(Throwable e) {
toast(e.getMessage());
}
});
}
}

View File

@@ -1,229 +0,0 @@
package com.yizhuan.erban.home.fragment;
import android.annotation.SuppressLint;
import android.net.http.SslError;
import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils;
import android.view.View;
import android.webkit.SslErrorHandler;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.alibaba.fastjson.JSON;
import com.netease.nim.uikit.common.util.string.StringUtil;
import com.orhanobut.logger.Logger;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseBindingFragment;
import com.yizhuan.erban.base.TitleBar;
import com.yizhuan.erban.databinding.FragmentRankingBinding;
import com.yizhuan.erban.friend.view.SelectFriendActivity;
import com.yizhuan.erban.ui.webview.JSInterface;
import com.yizhuan.erban.ui.widget.ShareDialog;
import com.yizhuan.xchat_android_core.UriProvider;
import com.yizhuan.xchat_android_core.share.ShareModel;
import com.yizhuan.xchat_android_core.web.bean.WebJsBeanInfo;
import com.yizhuan.xchat_android_core.web.event.WebViewRefreshEvent;
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.lang.ref.WeakReference;
import cn.sharesdk.framework.Platform;
/**
* 排行榜
* 暂时继续使用 H5后面再考虑换成原生的
* Created by MadisonRong on 20/04/2018.
*/
@ActLayoutRes(R.layout.fragment_ranking)
public class RankingFragment extends BaseBindingFragment<FragmentRankingBinding>
implements ShareDialog.OnShareDialogItemClick {
public static final String TAG = "RankingFragment";
private TitleBar mTitleBar;
private WebView webView;
private ProgressBar mProgressBar;
private WebChromeClient wvcc;
private TextView mTvRightText;
private WebJsBeanInfo mWebJsBeanInfo;
private String url;
private String targetUrl;
private static final String POSITION = "position";
private int mPosition;
private int mProgress;
private Handler mHandler = new Handler();
private RankingFragment.ProgressRunnable mProgressRunnable = new RankingFragment.ProgressRunnable(this);
private static class ProgressRunnable implements Runnable {
private WeakReference<RankingFragment> mWeakReference;
ProgressRunnable(RankingFragment activity) {
mWeakReference = new WeakReference<>(activity);
}
@Override
public void run() {
RankingFragment activity = mWeakReference.get();
if (activity == null) return;
if (activity.mProgress < 96) {
activity.mProgress += 3;
activity.mProgressBar.setProgress(activity.mProgress);
activity.mHandler.postDelayed(activity.mProgressRunnable, 10);
}
}
}
@Override
protected void onInitArguments(Bundle bundle) {
url = UriProvider.JAVA_WEB_URL + "/yinyou/modules/erbanRank/index.html";
mPosition = 1;
}
@SuppressLint("SetJavaScriptEnabled")
private void initData() {
mHandler.post(mProgressRunnable);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setTextZoom(100);
JSInterface jsInterface = new JSInterface(webView, getActivity());
jsInterface.setPosition(mPosition);
webView.addJavascriptInterface(jsInterface, "androidJsObj");
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Logger.e("shouldOverrideUrlLoading--------" + url);
targetUrl = url;
view.loadUrl(url);
return true;
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
// super.onReceivedSslError(view, handler, error); //一定要去掉
// handler.cancel();// Android默认的处理方式
handler.proceed();// 接受所有网站的证书
// handleMessage(Message msg);// 进行其他处理
}
@Override
public void onPageFinished(WebView view, String url) {
Logger.e("onPageFinished--------" + url);
mProgressBar.setProgress(100);
mProgressBar.setVisibility(View.GONE);
mTvRightText.setVisibility(View.GONE);
try {
webView.evaluateJavascript("showTitleRightNoticeFuck()", value -> {
if (TextUtils.isEmpty(value) || "null".equals(value.toLowerCase())) return;
mWebJsBeanInfo = JSON.parseObject(value, WebJsBeanInfo.class);
if (mWebJsBeanInfo == null) return;
WebJsBeanInfo.DataBean data = mWebJsBeanInfo.getData();
if (data == null) return;
switch (mWebJsBeanInfo.getType()) {
case WebJsBeanInfo.TEXT:
mTvRightText.setVisibility(View.VISIBLE);
mTvRightText.setText(data.getTitle());
mTvRightText.setOnClickListener(v -> webView.loadUrl(data.getLink()));
break;
default:
}
});
} catch (Exception e) {
e.printStackTrace();
}
super.onPageFinished(view, url);
}
});
//获取webviewtitle作为titlebar的title
wvcc = new WebChromeClient() {
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
mTitleBar.setTitle(title);
}
};
// 设置setWebChromeClient对象
webView.setWebChromeClient(wvcc);
if (mTitleBar != null) {
mTitleBar.setImmersive(false);
mTitleBar.setTitleColor(getResources().getColor(R.color.back_font));
}
// 设置Webview的user-agent
webView.getSettings().setUserAgentString(webView.getSettings().getUserAgentString() + " erbanAppAndroid");
}
public void ShowWebView(String url) {
webView.loadUrl(url);
}
@Override
public void onResume() {
super.onResume();
// 强制每次点到这个 tab 的时候就刷新数据
ShowWebView(url);
}
@Override
public void onInAppSharingItemClick() {
SelectFriendActivity.start(getContext());
}
@Override
public void onSharePlatformClick(Platform platform) {
if (mWebJsBeanInfo != null && mWebJsBeanInfo.getData() != null) {
ShareModel.get().shareH5(mWebJsBeanInfo.getData(), platform).subscribe();
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onRecieveNeedRefreshWebView(WebViewRefreshEvent event) {
if (!StringUtil.isEmpty(url)) {
ShowWebView(url);
}
}
@Override
public void onDestroy() {
if (mHandler != null) {
mHandler.removeCallbacks(mProgressRunnable);
mProgressRunnable = null;
mHandler = null;
}
super.onDestroy();
}
@Override
public void onFindViews() {
webView = mBinding.webview;
mTitleBar = mBinding.title;
mProgressBar = mBinding.progressBar;
mTvRightText = mBinding.tvTitleRight;
}
@Override
public void onSetListener() {
//
}
@Override
public void initiate() {
initData();
}
}

View File

@@ -1,289 +0,0 @@
package com.yizhuan.erban.home.fragment;
import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.View;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.netease.nim.uikit.common.util.sys.NetworkUtil;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseMvpFragment;
import com.yizhuan.erban.common.NetworkErrorFragment;
import com.yizhuan.erban.common.NoDataFragment;
import com.yizhuan.erban.home.adapter.HomeFragmentAdapter;
import com.yizhuan.erban.home.presenter.RecommendFragmentPresenter;
import com.yizhuan.erban.home.view.Home3PlusNDecoration;
import com.yizhuan.erban.home.view.IMainFragmentTabBg;
import com.yizhuan.erban.home.view.IRecommendFragmentView;
import com.yizhuan.xchat_android_core.Constants;
import com.yizhuan.xchat_android_core.home.bean.HomeItem;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import com.yizhuan.xchat_android_library.utils.log.MLog;
import java.util.ArrayList;
import java.util.List;
/**
* @author jack
* @Description 推荐页面
* @Date 2018/10/29
*/
@CreatePresenter(RecommendFragmentPresenter.class)
public class RecommendFragment extends BaseMvpFragment<IRecommendFragmentView, RecommendFragmentPresenter>
implements IRecommendFragmentView, HomeFragmentAdapter.OnActionListener {
public static final String TAG = RecommendFragment.class.getSimpleName();
private SwipeRefreshLayout swipeRefreshLayout;
private RecyclerView rvMainHome;
private HomeFragmentAdapter mHomeHotAdapter;
private MainFragment mainFragment;
private IMainFragmentTabBg iMainFragmentTabBg;
public static Fragment newInstance(IMainFragmentTabBg iMainFragmentTabBg) {
RecommendFragment recommendFragment = new RecommendFragment();
recommendFragment.setiMainFragmentTabBg(iMainFragmentTabBg);
return recommendFragment;
}
@Override
public int getRootLayoutId() {
return R.layout.fragment_recommend;
}
@Override
public void onFindViews() {
swipeRefreshLayout = (SwipeRefreshLayout) mView.findViewById(R.id.swipe_refresh);
rvMainHome = (RecyclerView) mView.findViewById(R.id.rv_main_home);
}
@Override
public void onSetListener() {
swipeRefreshLayout.setOnRefreshListener(onRefreshListener);
}
@Override
public void initiate() {
LogUtil.e(TAG, "initiate~~~ ");
mainFragment = (MainFragment) getParentFragment();
mHomeHotAdapter = new HomeFragmentAdapter(mContext, new ArrayList<>());
mHomeHotAdapter.setActionListener(this);
mHomeHotAdapter.setEnableLoadMore(false);
rvMainHome.setItemAnimator(null);
rvMainHome.addItemDecoration(new Home3PlusNDecoration(mContext, mHomeHotAdapter));
GridLayoutManager manager = new GridLayoutManager(getActivity(), 3);
mHomeHotAdapter.setSpanSizeLookup(new BaseQuickAdapter.SpanSizeLookup() {
@Override
public int getSpanSize(GridLayoutManager gridLayoutManager, int position) {
int itemType = mHomeHotAdapter.getData().get(position).getItemType();
if (itemType == HomeItem.TYPE_SQUARE_PIC || itemType == HomeItem.TYPE_SQUARE_EMPTY) {
return 1;
}
return gridLayoutManager.getSpanCount();
}
});
rvMainHome.setLayoutManager(manager);
//加载更多
mHomeHotAdapter.setOnLoadMoreListener(() -> getMvpPresenter().loadMoreHomeData(), rvMainHome);
rvMainHome.setAdapter(mHomeHotAdapter);
}
@Override
public void onResume() {
super.onResume();
if (ListUtils.isListEmpty(getMvpPresenter().getmHomeItemList())) {
swipeRefreshLayout.setRefreshing(true);
getMvpPresenter().loadHomeData();
} else {
if (ListUtils.isListEmpty(this.mHomeHotAdapter.getData())) {
loadHomeDataSuccess(getMvpPresenter().getmHomeItemList());
}
}
}
private SwipeRefreshLayout.OnRefreshListener onRefreshListener = new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
if (NetworkUtil.isNetAvailable(mContext)) {
getMvpPresenter().setPage(Constants.PAGE_START);
getMvpPresenter().loadHomeData();
} else {
swipeRefreshLayout.setRefreshing(false);
}
}
};
@Override
public void onReloadData() {
super.onReloadData();
showLoading();
getMvpPresenter().loadHomeData();
}
@Override
public void loadHomeDataSuccess(List<HomeItem> data) {
hideStatus();
swipeRefreshLayout.setRefreshing(false);
mHomeHotAdapter.setNewData(data);
mHomeHotAdapter.disableLoadMoreIfNotFullPage(rvMainHome);
}
@Override
public void loadHomeDataFail(String error) {
swipeRefreshLayout.setRefreshing(false);
showNetworkErr();
}
@Override
public void onNoHomeData() {
swipeRefreshLayout.setRefreshing(false);
showNoData();
}
@Override
public void addHomeDataSuccess(List<HomeItem> data) {
mHomeHotAdapter.loadMoreComplete();
mHomeHotAdapter.notifyDataSetChanged();
}
@Override
public void onNoMoreHomeData() {
swipeRefreshLayout.setRefreshing(false);
mHomeHotAdapter.loadMoreEnd(true);
}
@Override
public void addHomeDataFail(String error) {
mHomeHotAdapter.loadMoreFail();
}
@Override
public void setEnableLoadMore(boolean b) {
mHomeHotAdapter.setEnableLoadMore(b);
}
@Override
public void setRefreshing(boolean b) {
swipeRefreshLayout.setRefreshing(b);
}
@Override
public void notifyDataSetChanged(int type, int position, Object payload) {
// if (IRecommendFragmentView.NOTIFY_DATA_SET_CHANGED == type) {
// if (position < 0) {
// mHomeHotAdapter.notifyDataSetChanged();
// } else {
// mHomeHotAdapter.notifyItemChanged(position, payload);
// }
// } else if (IRecommendFragmentView.NOTIFY_DATA_SET_REMOVE == type) {
// if (position < 0) {
// mHomeHotAdapter.notifyDataSetChanged();
// } else {
// mHomeHotAdapter.notifyItemRemoved(position);
// }
// }
mHomeHotAdapter.notifyDataSetChanged();
}
@Override
public void showByMarketCheckingStatus() {
if (getMvpPresenter() != null) {
swipeRefreshLayout.setRefreshing(true);
getMvpPresenter().loadHomeData();
}
}
@Override
public void onRefreshMakeFriendListFail(String message) {
toast(message);
}
@Override
public void onRefreshMakeFriendList() {
getMvpPresenter().refreshMakeFriendList();
}
@Override
public void onMoreKTVRoom() {
mainFragment.goToKTVTab();
}
@Override
public void onGoTalkHall() {
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (getUserVisibleHint())
changeTabBg();
}
private void changeTabBg() {
if (iMainFragmentTabBg != null && getUserVisibleHint())
iMainFragmentTabBg.isBannerTop(true);
}
public void setiMainFragmentTabBg(IMainFragmentTabBg iMainFragmentTabBg) {
this.iMainFragmentTabBg = iMainFragmentTabBg;
}
@Override
public void onDestroy() {
super.onDestroy();
iMainFragmentTabBg = null;
}
@Override
public void showNoData(View view, int drawable, CharSequence charSequence) {
if (!checkActivityValid())
return;
if (view == null) {
MLog.error(this, "xuwakao, showNoData view is NULL");
return;
}
View status = view.findViewById(R.id.status_layout);
if (status == null || status.getId() <= 0) {
MLog.error(this, "xuwakao, had not set layout id ");
return;
}
NoDataFragment fragment = NoDataFragment.newInstance(R.layout.layout_home_empty, drawable, charSequence);
fragment.setListener(getLoadListener());
getChildFragmentManager().beginTransaction().replace(status.getId(), fragment, STATUS_TAG).commitAllowingStateLoss();
}
@Override
public void showNetworkErr() {
if (!checkActivityValid()) {
return;
}
if (getView() == null) {
MLog.error(this, "xuwakao, showNetworkErr view is NULL");
return;
}
View view = getView().findViewById(R.id.status_layout);
if (view == null || view.getId() <= 0) {
MLog.error(this, "xuwakao, had not set layout id ");
return;
}
NetworkErrorFragment fragment = NetworkErrorFragment.newInstance(R.layout.layout_home_network_erro);
fragment.setListener(getLoadListener());
getChildFragmentManager().beginTransaction().replace(view.getId(), fragment, STATUS_TAG).commitAllowingStateLoss();
}
}

View File

@@ -1,411 +0,0 @@
package com.yizhuan.erban.home.fragment;
import android.annotation.SuppressLint;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.text.TextUtils;
import android.view.View;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
import com.trello.rxlifecycle3.android.FragmentEvent;
import com.yizhuan.erban.R;
import com.yizhuan.erban.UIHelper;
import com.yizhuan.erban.avroom.activity.AVRoomActivity;
import com.yizhuan.erban.base.BaseFragment;
import com.yizhuan.erban.base.BaseMvpActivity;
import com.yizhuan.erban.home.adapter.HomeFragmentAdapter;
import com.yizhuan.erban.ui.im.avtivity.NimP2PMessageActivity;
import com.yizhuan.erban.ui.widget.higuide.TuTuGuideHelper;
import com.yizhuan.erban.ui.widget.recyclerview.decoration.ColorDecoration;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
import com.yizhuan.xchat_android_core.home.bean.HomeItem;
import com.yizhuan.xchat_android_core.home.model.HomeModel;
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.bean.RecommendationUserInfo;
import com.yizhuan.xchat_android_core.user.event.LoadLoginUserInfoEvent;
import com.yizhuan.xchat_android_core.utils.net.RxHelper;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import com.yizhuan.xchat_android_library.utils.SingleToastUtil;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.BiConsumer;
import io.reactivex.functions.Function;
/**
* 推荐 合拍女神
*/
public class RecommendationFragment extends BaseFragment implements View.OnClickListener {
private static final String PARAM_TYPE = "type";
private static final int PAGE_SIZE = 20;
private String type;
private RecyclerView recyclerView;
private SmartRefreshLayout smartRefreshLayout;
private int pageIndex = 1;
private HomeItem<ArrayList<BannerInfo>> bannerHomeItem;
private List<HomeItem> totalHomeItemList = new ArrayList<>();
private boolean isContainsBanner;
private HomeFragmentAdapter mHomeFragmentAdapter;
private final Object mLock = new Object();
private Disposable mDisposable;
public RecommendationFragment() {
// Required empty public constructor
}
public static RecommendationFragment newInstance(String type) {
RecommendationFragment fragment = new RecommendationFragment();
Bundle args = new Bundle();
args.putString(PARAM_TYPE, type);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
type = getArguments().getString(PARAM_TYPE);
}
EventBus.getDefault().register(this);
}
@Override
public void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
private long mLastOpen;
private String mTabName;
public void setTypeAndName(String type, String name) {
this.type = type;
mTabName = name;
}
public void setTypeAndRefresh(String type, String name) {
setTypeAndName(type, name);
if (smartRefreshLayout != null) {
if (smartRefreshLayout.isRefreshing()) {
smartRefreshLayout.finishRefresh();
if (mDisposable != null && !mDisposable.isDisposed()) {
mDisposable.dispose();
}
}
}
if (mHomeFragmentAdapter != null) {
mHomeFragmentAdapter.loadMoreComplete();
}
refreshData();
}
@Override
public int getRootLayoutId() {
return R.layout.fragment_recommendation;
}
@Override
public void onFindViews() {
super.onFindViews();
recyclerView = mView.findViewById(R.id.recycler_view);
smartRefreshLayout = mView.findViewById(R.id.smart_refresh_layout);
initRefreshView();
initRecyclerView();
}
private void initRefreshView() {
smartRefreshLayout.setEnableLoadmore(false);
smartRefreshLayout.setEnableRefresh(true);
smartRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh(RefreshLayout refreshlayout) {
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_HOME_DROP_REFRESH, "首页-下拉刷新");
refreshNoLoading();
}
});
}
private void refreshNoLoading() {
pageIndex = 1;
loadData(true);
}
private void initRecyclerView() {
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recyclerView.addItemDecoration(new ColorDecoration(getResources().getColor(R.color.color_FAFAFA)
, 0, ScreenUtil.dip2px(8), true));
recyclerView.setItemAnimator(null);
mHomeFragmentAdapter = new HomeFragmentAdapter(getContext(), totalHomeItemList);
mHomeFragmentAdapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {
@Override
public void onLoadMoreRequested() {
loadData(false);
}
}, recyclerView);
mHomeFragmentAdapter.setEnableLoadMore(false);
recyclerView.setAdapter(mHomeFragmentAdapter);
mHomeFragmentAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
try {
List<HomeItem> items = adapter.getData();
HomeItem item;
if (items.size() > position) {
item = items.get(position);
Object obj = item.getData();
if (!(obj instanceof RecommendationUserInfo)) {
return;
}
RecommendationUserInfo info = (RecommendationUserInfo) obj;
if (info.getStatus() == RecommendationUserInfo.STATUS_RECOMMEND_ROOM) {
// 推荐房点击任何区域都进房
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_HOME_USER_LIST_STEP_INTO_ROOM, "首页-用户列表-踩进房间");
openRoom(info.getUid(), info.isRecommendRoom());
} else {
switch (view.getId()) {
case R.id.fl_avatar:
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_HOME_PAGE_PERSONAL_PAGE, "进入个人客态页");
UIHelper.showUserInfoAct(mContext, info.getUid());
break;
case R.id.ll_sub_content:
NimP2PMessageActivity.startWithChatterBox(mContext, String.valueOf(info.getUid()), null);
break;
case R.id.rl_opt:
switch (info.getStatus()) {
case RecommendationUserInfo.STATUS_KTV:
case RecommendationUserInfo.STATUS_GAME:
case RecommendationUserInfo.STATUS_ROOM:
case RecommendationUserInfo.STATUS_RECOMMEND_ROOM:
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_HOME_USER_LIST_STEP_INTO_ROOM, "首页-用户列表-踩进房间");
openRoom(info.getUid(), info.isRecommendRoom());
break;
case RecommendationUserInfo.STATUS_NORMAL:
default:
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_HOME_PAGE_HOOK_UP, "撩一下");
NimP2PMessageActivity.startWithAccost(mContext, String.valueOf(info.getUid()));
}
break;
}
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
}
@SuppressWarnings("CheckResult")
private void openRoom(long uid, boolean isRecommendRoom) {
if (System.currentTimeMillis() - mLastOpen < 1000) {
return;
}
if (mContext instanceof BaseMvpActivity) {
if (!TextUtils.isEmpty(mTabName)) {
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_MATCH_MALE_ENTER_ROOM, mTabName + "-进入房间");
}
mLastOpen = System.currentTimeMillis();
BaseMvpActivity activity = (BaseMvpActivity) mContext;
activity.getDialogManager().showProgressDialog(mContext, "请稍后...");
if (isRecommendRoom) {
AvRoomModel.get().requestRoomInfoByUser(String.valueOf(uid))
.compose(activity.bindToLifecycle())
.subscribe(roomInfo -> {
if (roomInfo != null && roomInfo.getUid() > 0) {
AVRoomActivity.start(mContext, roomInfo.getUid(), roomInfo.getType());
} else {
SingleToastUtil.showToast("对方不在房间内");
}
activity.getDialogManager().dismissDialog();
});
} else {
AvRoomModel.get()
.getUserRoom(uid)
.compose(RxHelper.singleMainResult())
.compose(RxHelper.handleSchAndExce())
.compose(activity.bindToLifecycle())
.subscribe(new BiConsumer<RoomInfo, Throwable>() {
@Override
public void accept(RoomInfo roomInfo, Throwable throwable) throws Exception {
if (throwable == null) {
if (roomInfo != null && roomInfo.getUid() > 0) {
AVRoomActivity.start(mContext, roomInfo.getUid(), roomInfo.getType());
} else {
SingleToastUtil.showToast("对方不在房间内");
}
} else {
SingleToastUtil.showToast("可能暂时不在房间哟");
}
activity.getDialogManager().dismissDialog();
}
});
}
} else {
SingleToastUtil.showToast("出现异常");
}
}
@Override
public void initiate() {
refreshData();
}
private void refreshData() {
if (smartRefreshLayout != null) {
smartRefreshLayout.autoRefresh();
}
}
@SuppressLint("CheckResult")
private void loadData(boolean isRefresh) {
long uid = AuthModel.get().getCurrentUid();
mDisposable = HomeModel.get()
.getGodList(uid, pageIndex, PAGE_SIZE, type)
.map(new Function<List<RecommendationUserInfo>, List<HomeItem<RecommendationUserInfo>>>() {
@Override
public List<HomeItem<RecommendationUserInfo>> apply(List<RecommendationUserInfo> recommendationUserInfos) throws Exception {
if (ListUtils.isListEmpty(recommendationUserInfos)) {
return new ArrayList<>();
}
List<HomeItem<RecommendationUserInfo>> homeItemList = new ArrayList<>();
for (RecommendationUserInfo recommendationUserInfo : recommendationUserInfos) {
if (recommendationUserInfo == null) {
continue;
}
//推荐房间修改状态处理
if (recommendationUserInfo.isRecommendRoom()) {
recommendationUserInfo.setStatus(RecommendationUserInfo.STATUS_RECOMMEND_ROOM);
}
homeItemList.add(new HomeItem<RecommendationUserInfo>(HomeItem.TYPE_USER_LINEAR, recommendationUserInfo));
}
return homeItemList;
}
})
.compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
.compose(RxHelper.handleSchedulers())
.subscribe(new BiConsumer<List<HomeItem<RecommendationUserInfo>>, Throwable>() {
@Override
public void accept(List<HomeItem<RecommendationUserInfo>> recommendationUserInfos, Throwable throwable) throws Exception {
if (throwable == null) {
if (!ListUtils.isListEmpty(recommendationUserInfos)) {
pageIndex++;
if (isRefresh) {
mHomeFragmentAdapter.setEnableLoadMore(true);
}
} else {
loadEnd();
}
synchronized (mLock) {
if (isRefresh) {
totalHomeItemList.clear();
totalHomeItemList.addAll(recommendationUserInfos);
isContainsBanner = false;
recombinationData();
// showGuide();
} else {
totalHomeItemList.addAll(recommendationUserInfos);
mHomeFragmentAdapter.notifyDataSetChanged();
}
}
if (isRefresh) {
smartRefreshLayout.finishRefresh();
} else {
mHomeFragmentAdapter.loadMoreComplete();
}
} else {
if (isRefresh) {
smartRefreshLayout.finishRefresh();
} else {
loadEnd();
}
}
}
});
}
private void loadEnd() {
mHomeFragmentAdapter.loadMoreComplete();
mHomeFragmentAdapter.loadMoreEnd();
mHomeFragmentAdapter.setEnableLoadMore(false);
}
/**
* 用户信息更新
*/
@Subscribe(threadMode = ThreadMode.MAIN)
public void loadLoginUserInfoEvent(LoadLoginUserInfoEvent event) {
if (smartRefreshLayout != null && !smartRefreshLayout.isRefreshing()) {
refreshData();
}
}
@Override
public void onClick(View v) {
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
}
private void recombinationData() {
synchronized (mLock) {
List<HomeItem> homeItems = totalHomeItemList;
if (bannerHomeItem != null && !isContainsBanner) {
totalHomeItemList.add(homeItems.size() > 3 ? 3 : homeItems.size(), bannerHomeItem);
isContainsBanner = true;
}
mHomeFragmentAdapter.notifyDataSetChanged();
}
}
}

View File

@@ -1,73 +0,0 @@
package com.yizhuan.erban.home.fragment;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseMvpFragment;
import com.yizhuan.erban.home.adapter.RoomCategoryIndicatorAdapter;
import com.yizhuan.erban.home.adapter.RoomCategoryViewPagerAdapter;
import com.yizhuan.erban.home.presenter.RoomCategoryFragmentPresenter;
import com.yizhuan.erban.home.view.IRoomCategoryFragmentView;
import com.yizhuan.erban.ui.widget.magicindicator.MagicIndicator;
import com.yizhuan.erban.ui.widget.magicindicator.ViewPagerHelper;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator;
import com.yizhuan.xchat_android_core.home.bean.TabInfo;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import java.util.List;
/**
* @author jack
* @Description
* @Date 2018/10/29
*/
@CreatePresenter(RoomCategoryFragmentPresenter.class)
public class RoomCategoryFragment extends BaseMvpFragment<IRoomCategoryFragmentView, RoomCategoryFragmentPresenter>
implements IRoomCategoryFragmentView, RoomCategoryIndicatorAdapter.OnItemSelectListener {
private MagicIndicator mainIndicator;
private ViewPager vpRoomCategoryViewpager;
public static Fragment newInstance() {
return new RoomCategoryFragment();
}
@Override
public int getRootLayoutId() {
return R.layout.fragment_room_category;
}
@Override
public void onFindViews() {
mainIndicator = (MagicIndicator) mView.findViewById(R.id.main_indicator);
vpRoomCategoryViewpager = (ViewPager) mView.findViewById(R.id.vp_room_category_viewpager);
}
@Override
public void onSetListener() {
}
@Override
public void initiate() {
List<TabInfo> mTabInfoList = getMvpPresenter().getTabInfoList();
if (ListUtils.isListEmpty(mTabInfoList)) {
getMvpPresenter().loadTabInfoList();
return;
}
CommonNavigator commonNavigator = new CommonNavigator(getContext());
RoomCategoryIndicatorAdapter magicIndicatorAdapter = new RoomCategoryIndicatorAdapter(getContext(), mTabInfoList);
magicIndicatorAdapter.setOnItemSelectListener(this);
commonNavigator.setAdapter(magicIndicatorAdapter);
mainIndicator.setNavigator(commonNavigator);
vpRoomCategoryViewpager.setAdapter(new RoomCategoryViewPagerAdapter(getChildFragmentManager(), mTabInfoList));
ViewPagerHelper.bind(mainIndicator, vpRoomCategoryViewpager);
}
@Override
public void onItemSelect(int position) {
vpRoomCategoryViewpager.setCurrentItem(position);
}
}

View File

@@ -1,163 +0,0 @@
package com.yizhuan.erban.home.fragment;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseMvpFragment;
import com.yizhuan.erban.constants.BundleKeys;
import com.yizhuan.erban.home.adapter.HomeRoomAdapter;
import com.yizhuan.erban.home.presenter.RoomListPresenter;
import com.yizhuan.erban.home.view.IRoomListFragmentView;
import com.yizhuan.xchat_android_core.home.bean.HomeRoomItem;
import com.yizhuan.xchat_android_core.home.bean.TabInfo;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import java.util.List;
import io.reactivex.SingleObserver;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Action;
/**
* @author jack
* @Description
* @Date 2018/11/2
*/
@CreatePresenter(RoomListPresenter.class)
public class RoomListFragment extends BaseMvpFragment<IRoomListFragmentView, RoomListPresenter>
implements IRoomListFragmentView, SwipeRefreshLayout.OnRefreshListener, BaseQuickAdapter.RequestLoadMoreListener {
private SwipeRefreshLayout swipeRefresh;
private RecyclerView recyclerView;
private HomeRoomAdapter adapter;
public static Fragment newInstance(TabInfo tabInfo) {
Fragment fragment = new RoomListFragment();
Bundle bundle = new Bundle();
bundle.putSerializable(BundleKeys.KEY_EXTRA_1, tabInfo);
fragment.setArguments(bundle);
return fragment;
}
@Override
public int getRootLayoutId() {
return R.layout.fragment_room_list;
}
@Override
public void onFindViews() {
swipeRefresh = getView().findViewById(R.id.swipe_refresh);
recyclerView = getView().findViewById(R.id.recycler_view);
}
@Override
public void onSetListener() {
swipeRefresh.setOnRefreshListener(this);
}
@Override
public void initiate() {
Bundle bundle = getArguments();
if (bundle != null) {
TabInfo tabInfo = (TabInfo) bundle.getSerializable(BundleKeys.KEY_EXTRA_1);
getMvpPresenter().setTabInfo(tabInfo);
}
adapter = new HomeRoomAdapter(getContext(), null);
adapter.setEnableLoadMore(true);
adapter.setOnLoadMoreListener(this, recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
recyclerView.setAdapter(adapter);
}
@Override
public void onResume() {
super.onResume();
if (ListUtils.isListEmpty(adapter.getData())) {
refreshData();
}
}
@Override
public void onRefresh() {
refreshData();
}
@Override
public void onLoadMoreRequested() {
loadMoreData();
}
@Override
public void onReloadData() {
super.onReloadData();
refreshData();
}
private void loadMoreData() {
getMvpPresenter().loadMoreData()
.subscribe(new SingleObserver<List<HomeRoomItem>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(List<HomeRoomItem> homeRoomItems) {
if (!ListUtils.isListEmpty(homeRoomItems)) {
adapter.addData(homeRoomItems);
adapter.loadMoreComplete();
} else {
adapter.loadMoreEnd(true);
}
}
@Override
public void onError(Throwable e) {
toast(e.getMessage());
}
});
}
private void refreshData() {
getMvpPresenter().refreshData()
.doAfterTerminate(new Action() {
@Override
public void run() throws Exception {
swipeRefresh.setRefreshing(false);
}
})
.subscribe(new SingleObserver<List<HomeRoomItem>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(List<HomeRoomItem> homeRoomItems) {
if (ListUtils.isListEmpty(homeRoomItems)) {
showNoData();
return;
}
hideStatus();
adapter.setNewData(homeRoomItems);
}
@Override
public void onError(Throwable e) {
showNetworkErr();
toast(e.getMessage());
}
});
}
}

View File

@@ -1,239 +0,0 @@
package com.yizhuan.erban.home.fragment;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.View;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseMvpFragment;
import com.yizhuan.erban.common.NetworkErrorFragment;
import com.yizhuan.erban.common.NoDataFragment;
import com.yizhuan.erban.constants.BundleKeys;
import com.yizhuan.erban.home.adapter.RoomTabAdapter;
import com.yizhuan.erban.home.presenter.RoomTabPresenter;
import com.yizhuan.erban.home.view.IMainFragmentTabBg;
import com.yizhuan.erban.home.view.IRoomTabView;
import com.yizhuan.xchat_android_core.home.bean.HomeRoomItem;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import com.yizhuan.xchat_android_library.utils.log.MLog;
import java.util.List;
import io.reactivex.SingleObserver;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Action;
@CreatePresenter(RoomTabPresenter.class)
public class RoomTabFragment extends BaseMvpFragment<IRoomTabView, RoomTabPresenter>
implements IRoomTabView, SwipeRefreshLayout.OnRefreshListener, BaseQuickAdapter.RequestLoadMoreListener {
private SwipeRefreshLayout swipeRefresh;
private RecyclerView recyclerView;
private RoomTabAdapter adapter;
private IMainFragmentTabBg iMainFragmentTabBg;
public static Fragment newInstance(long titleId, IMainFragmentTabBg iMainFragmentTabBg) {
RoomTabFragment fragment = new RoomTabFragment();
fragment.setiMainFragmentTabBg(iMainFragmentTabBg);
Bundle bundle = new Bundle();
bundle.putSerializable(BundleKeys.KEY_EXTRA_1, titleId);
fragment.setArguments(bundle);
return fragment;
}
@Override
public int getRootLayoutId() {
return R.layout.fragment_room_tab;
}
@Override
public void onFindViews() {
swipeRefresh = getView().findViewById(R.id.swipe_refresh);
recyclerView = getView().findViewById(R.id.recycler_view);
}
@Override
public void onSetListener() {
swipeRefresh.setOnRefreshListener(this);
}
@Override
public void initiate() {
Bundle bundle = getArguments();
if (bundle != null) {
long mTitleId = bundle.getLong(BundleKeys.KEY_EXTRA_1, -1);
getMvpPresenter().setmTitleId(mTitleId);
}
adapter = new RoomTabAdapter(getContext(), null);
adapter.setEnableLoadMore(true);
adapter.setOnLoadMoreListener(this, recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
recyclerView.setAdapter(adapter);
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (getUserVisibleHint())
changeTabBg();
}
@Override
public void onResume() {
super.onResume();
if (ListUtils.isListEmpty(adapter.getData())) {
refreshData();
} else
changeTabBg();
}
@Override
public void onRefresh() {
refreshData();
}
@Override
public void onLoadMoreRequested() {
loadMoreData();
}
@Override
public void onReloadData() {
super.onReloadData();
refreshData();
}
private void loadMoreData() {
getMvpPresenter().loadMoreData()
.subscribe(new SingleObserver<List<HomeRoomItem>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(List<HomeRoomItem> homeRoomItems) {
if (!ListUtils.isListEmpty(homeRoomItems)) {
adapter.addData(homeRoomItems);
adapter.loadMoreComplete();
} else {
adapter.loadMoreEnd(true);
}
}
@Override
public void onError(Throwable e) {
toast(e.getMessage());
}
});
}
@Override
public void showNetworkErr() {
if (!checkActivityValid()) {
return;
}
if (getView() == null) {
MLog.error(this, "xuwakao, showNetworkErr view is NULL");
return;
}
View view = getView().findViewById(R.id.status_layout);
if (view == null || view.getId() <= 0) {
MLog.error(this, "xuwakao, had not set layout id ");
return;
}
NetworkErrorFragment fragment = NetworkErrorFragment.newInstance(R.layout.layout_home_network_erro);
fragment.setListener(getLoadListener());
getChildFragmentManager().beginTransaction().replace(view.getId(), fragment, STATUS_TAG).commitAllowingStateLoss();
}
public void setiMainFragmentTabBg(IMainFragmentTabBg iMainFragmentTabBg) {
this.iMainFragmentTabBg = iMainFragmentTabBg;
}
private void changeTabBg() {
boolean isBannerTop = false;
if (adapter == null)
return;
List<HomeRoomItem> list = adapter.getData();
if (!ListUtils.isListEmpty(list)) {
HomeRoomItem homeRoomItem = list.get(0);
isBannerTop = homeRoomItem.getItemType() == HomeRoomItem.TYPE_BANNER;
}
if (iMainFragmentTabBg != null && getUserVisibleHint()) {
iMainFragmentTabBg.isBannerTop(isBannerTop);
}
}
@Override
public void showNoData(View view, int drawable, CharSequence charSequence) {
if (!checkActivityValid())
return;
if (view == null) {
MLog.error(this, "xuwakao, showNoData view is NULL");
return;
}
View status = view.findViewById(R.id.status_layout);
if (status == null || status.getId() <= 0) {
MLog.error(this, "xuwakao, had not set layout id ");
return;
}
NoDataFragment fragment = NoDataFragment.newInstance(R.layout.layout_home_empty, drawable, charSequence);
fragment.setListener(getLoadListener());
getChildFragmentManager().beginTransaction().replace(status.getId(), fragment, STATUS_TAG).commitAllowingStateLoss();
}
private void refreshData() {
getMvpPresenter().refreshData()
.doAfterTerminate(new Action() {
@Override
public void run() throws Exception {
swipeRefresh.setRefreshing(false);
}
})
.subscribe(new SingleObserver<List<HomeRoomItem>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(List<HomeRoomItem> homeRoomItems) {
if (ListUtils.isListEmpty(homeRoomItems)) {
showNoData();
return;
}
hideStatus();
adapter.setNewData(homeRoomItems);
changeTabBg();
}
@Override
public void onError(Throwable e) {
showNetworkErr();
toast(e.getMessage());
}
});
}
@Override
public void onDestroy() {
super.onDestroy();
iMainFragmentTabBg = null;
}
}

View File

@@ -1,33 +0,0 @@
package com.yizhuan.erban.home.helper;
import android.content.Context;
import com.orhanobut.logger.Logger;
import com.yizhuan.erban.decoration.view.DecorationStoreActivity;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_library.rxbus.RxBusHelper;
/**
* @author jack
* @Description 跳转本地页面配置
* @Date 2018/4/25
*/
public class JumpHelper {
public final static String TYPE_RANK_BOARD = "1";//1为排行榜
public final static String JUMP_RANK_BOARD_STRING = "JUMP_RANK_BOARD_STRING";
public final static String TYPE_SHOP = "2";//跳转商城
public static void jumpByType(Context context, String type){
if (TYPE_RANK_BOARD.equals(type)){
RxBusHelper.post(JUMP_RANK_BOARD_STRING);
}else if (TYPE_SHOP.equals(type)){
long uid = AuthModel.get().getCurrentUid();
if (uid > 0) {
DecorationStoreActivity.start(context, uid);
}
}else{
Logger.e("未知app原生页面 跳转类型...");
}
}
}

View File

@@ -1,150 +0,0 @@
package com.yizhuan.erban.home.presenter;
import android.os.Bundle;
import androidx.annotation.Nullable;
import android.text.TextUtils;
import com.orhanobut.logger.Logger;
import com.yizhuan.erban.base.BaseMvpPresenter;
import com.yizhuan.erban.home.view.IFamilyFragmentView;
import com.yizhuan.xchat_android_core.Constants;
import com.yizhuan.xchat_android_core.family.bean.CustomServiceInfo;
import com.yizhuan.xchat_android_core.family.bean.FamilyCustomServiceInfo;
import com.yizhuan.xchat_android_core.family.bean.FamilyInfo;
import com.yizhuan.xchat_android_core.family.bean.FindBannerInfo;
import com.yizhuan.xchat_android_core.family.bean.response.RankingFamilyInfo;
import com.yizhuan.xchat_android_core.family.bean.response.RespFamilyRankList;
import com.yizhuan.xchat_android_core.family.event.FamilyUpdateEvent;
import com.yizhuan.xchat_android_core.family.model.FamilyModel;
import com.yizhuan.xchat_android_library.base.PresenterEvent;
import com.yizhuan.xchat_android_library.rxbus.RxBusHelper;
import java.util.List;
import io.reactivex.Single;
import io.reactivex.SingleSource;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.functions.Consumer;
import io.reactivex.functions.Function;
/**
* @author jack
* @Description
* @Date 2018/10/29
*/
public class FamilyFragmentPresenter extends BaseMvpPresenter<IFamilyFragmentView> {
private CompositeDisposable compositeDisposable;
private FamilyInfo myFamily = null;
public FamilyFragmentPresenter() {
}
@Override
public void onCreatePresenter(@Nullable Bundle saveState) {
super.onCreatePresenter(saveState);
compositeDisposable = new CompositeDisposable();
addRxEvent();
}
@Override
public void onResumePresenter() {
super.onResumePresenter();
Logger.e("onResumePresenter ~~~");
}
@Override
public void onDestroyPresenter() {
super.onDestroyPresenter();
if (compositeDisposable != null) {
compositeDisposable.dispose();
compositeDisposable = null;
}
}
private void addRxEvent() {
/**
* 家族更新事件
*/
RxBusHelper.doOnMainThread(FamilyUpdateEvent.class, compositeDisposable, new Consumer<FamilyUpdateEvent>() {
@Override
public void accept(FamilyUpdateEvent familyUpdateEvent) throws Exception {
checkMyFamilyInfo();
}
});
}
public FamilyInfo getMyFamily() {
return myFamily;
}
/**
* 检查我的家族信息
*/
public void checkMyFamilyInfo() {
myFamily = FamilyModel.Instance().getMyFamily();
getMvpView().showMyFamilyInfo(myFamily);
}
public Single<List<RankingFamilyInfo>> loadWeeklyStarList() {
return FamilyModel.Instance().loadFamilyRankingList(
RespFamilyRankList.TYPE_LAST_WEEK,
String.valueOf(Constants.PAGE_START),
String.valueOf(6)
)
.compose(bindUntilEvent(PresenterEvent.DESTROY))
.flatMap(new Function<RespFamilyRankList, SingleSource<? extends List<RankingFamilyInfo>>>() {
@Override
public SingleSource<? extends List<RankingFamilyInfo>> apply(RespFamilyRankList response) throws Exception {
return Single.just(response.getFamilys());
}
});
}
/**
* 联系客服
*/
public Single<String> contactCustomerService() {
//去聊
FamilyCustomServiceInfo serviceInfo = FamilyModel.Instance().getCustomServiceInfo();
if (null == serviceInfo) {
return Single.error(new Throwable("没找到客服"));
}
String account = "";
for (int i = 0; i < serviceInfo.getServices().size(); i++) {
if (serviceInfo.getServices().get(i).getType() == CustomServiceInfo.TYPE_ONLINE) {
account = serviceInfo.getServices().get(i).getUid();
}
}
if (TextUtils.isEmpty(account)) {
return Single.error(new Throwable("没找到对应的联系方式"));
}
return Single.just(account);
}
/**
* 获取家族广场banner数据
*
* @return
*/
public Single<List<FindBannerInfo>> loadBannerDate() {
return FamilyModel.Instance().loadFamilyBanner()
.compose(bindUntilEvent(PresenterEvent.DESTROY));
}
/**
* 显示客服信息
*
* @return
*/
public Single<FamilyCustomServiceInfo> showCustomerServiceInfo() {
return FamilyModel.Instance().loadFamilyCustomServiceInfo()
.compose(bindUntilEvent(PresenterEvent.DESTROY));
}
}

View File

@@ -1,135 +0,0 @@
package com.yizhuan.erban.home.presenter;
import android.os.Bundle;
import androidx.annotation.Nullable;
import com.yizhuan.erban.base.BaseMvpPresenter;
import com.yizhuan.erban.home.view.IFindFragmentView;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.home.bean.FindInfo;
import com.yizhuan.xchat_android_core.home.bean.TopMessage;
import com.yizhuan.xchat_android_core.home.bean.VMTopMessage;
import com.yizhuan.xchat_android_core.home.bean.VMTopMessageInfo;
import com.yizhuan.xchat_android_core.home.model.HomeModel;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.SingleObserver;
import io.reactivex.disposables.Disposable;
/**
* @author jack
* @Description
* @Date 2018/5/22
*/
public class FindFragmentPresenter extends BaseMvpPresenter<IFindFragmentView> {
private FindInfo findInfo;
public FindInfo getFindInfo() {
return findInfo;
}
public FindFragmentPresenter() {
}
@Override
public void onCreatePresenter(@Nullable Bundle saveState) {
super.onCreatePresenter(saveState);
}
@Override
public void onDestroyPresenter() {
super.onDestroyPresenter();
}
public void loadData() {
long uid = AuthModel.get().getCurrentUid();
if (uid <= 0) {
onLoadFindPageDataFail("没找到uid");
return;
}
HomeModel.get().loadFindPageV2(String.valueOf(uid))
.compose(bindToLifecycle())
.subscribe(new SingleObserver<FindInfo>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(FindInfo findInfo) {
onLoadFindPageData(findInfo);
}
@Override
public void onError(Throwable e) {
onLoadFindPageDataFail(e.getMessage());
}
});
}
private void onLoadFindPageData(FindInfo findInfo) {
this.findInfo = findInfo;
if (getMvpView() != null) {
getMvpView().onLoadData(findInfo);
}
}
private void onLoadFindPageDataFail(String error) {
if (getMvpView() != null) {
getMvpView().onLoadDataFail(error);
}
}
// @SuppressLint("CheckResult")
// public void loadNewerList() {
// HomeModel.get().loadNewUserList("1", "3")
// .compose(bindUntilEvent(PresenterEvent.DESTROY))
// .subscribe((userInfoList, throwable) -> {
// if (throwable == null) {
// getMvpView().onLoadNewUserList(userInfoList);
// } else {
// getMvpView().onLoadDataFail(throwable.getMessage());
// }
// });
// }
/**
* 把服务器返回的model 数据转换成 需要显示的 ViewModel
*
* @return
*/
public VMTopMessageInfo transformHomeData2TopMessageInfos(List<TopMessage> topMessages) {
if (ListUtils.isListEmpty(topMessages)) {
return null;
}
VMTopMessageInfo topMessageInfo = new VMTopMessageInfo();
topMessageInfo.setTitle("音游头条");
List<VMTopMessage> vmTopMessageList = new ArrayList<>();
//组装成2个2个一组
final int groupSize = 2;
VMTopMessage vmTopMessage = null;
final int maxSize = topMessages.size() <= 6 ? topMessages.size() : 6;
for (int i = 0; i < maxSize; i++) {
if ((i % groupSize) == 0) {
vmTopMessage = new VMTopMessage();
vmTopMessage.setTopMessageList(new ArrayList<>());
vmTopMessageList.add(vmTopMessage);
}
if (vmTopMessage != null) {
vmTopMessage.getTopMessageList().add(topMessages.get(i));
}
}
topMessageInfo.setVmTopMessageList(vmTopMessageList);
return topMessageInfo;
}
}

View File

@@ -1,7 +0,0 @@
package com.yizhuan.erban.home.presenter;
import com.yizhuan.erban.base.BaseMvpPresenter;
import com.yizhuan.erban.home.view.IFindTabFragmentView;
public class FindTabFragmentPresenter extends BaseMvpPresenter<IFindTabFragmentView> {
}

View File

@@ -1,41 +0,0 @@
package com.yizhuan.erban.home.presenter;
import com.yizhuan.erban.base.BaseMvpPresenter;
import com.yizhuan.erban.home.helper.LoadPageDataHelper;
import com.yizhuan.erban.home.view.IHottestKTVRoomFragmentView;
import com.yizhuan.xchat_android_core.home.bean.KTVRoom;
import com.yizhuan.xchat_android_core.home.model.HomeModel;
import java.util.List;
import io.reactivex.Single;
/**
* @author jack
* @Description
* @Date 2018/10/31
*/
public class HottestKTVRoomFragmentPresenter extends BaseMvpPresenter<IHottestKTVRoomFragmentView>
implements LoadPageDataHelper.LoadData<List<KTVRoom>> {
LoadPageDataHelper<List<KTVRoom>> loadPageDataHelper;
public HottestKTVRoomFragmentPresenter() {
loadPageDataHelper = new LoadPageDataHelper<>(this);
}
@Override
public Single<List<KTVRoom>> loadData(int curPage) {
return HomeModel.get().loadKTVList(String.valueOf(curPage), String.valueOf(10), String.valueOf(2))
.compose(bindToLifecycle());
}
public Single<List<KTVRoom>> refreshData() {
return loadPageDataHelper.refreshData();
}
public Single<List<KTVRoom>> loadMoreData() {
return loadPageDataHelper.loadMoreData();
}
}

View File

@@ -1,12 +0,0 @@
package com.yizhuan.erban.home.presenter;
import com.yizhuan.erban.base.BaseMvpPresenter;
import com.yizhuan.erban.home.view.IKTVFragmentView;
/**
* @author jack
* @Description
* @Date 2018/10/29
*/
public class KTVFragmentPresenter extends BaseMvpPresenter<IKTVFragmentView> {
}

View File

@@ -2,30 +2,19 @@ package com.yizhuan.erban.home.presenter;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.os.Bundle; import android.os.Bundle;
import android.text.TextUtils;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.netease.nim.uikit.common.util.log.LogUtil; import com.netease.nim.uikit.common.util.log.LogUtil;
import com.yizhuan.erban.base.BaseMvpPresenter; import com.yizhuan.erban.base.BaseMvpPresenter;
import com.yizhuan.erban.home.view.IMainFragmentView; import com.yizhuan.erban.home.view.IMainFragmentView;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.home.bean.BannerInfo; import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
import com.yizhuan.xchat_android_core.home.bean.HomeTagInfo; import com.yizhuan.xchat_android_core.home.bean.HomeTagInfo;
import com.yizhuan.xchat_android_core.home.bean.TagListInfo;
import com.yizhuan.xchat_android_core.home.model.GameHomeModel; import com.yizhuan.xchat_android_core.home.model.GameHomeModel;
import com.yizhuan.xchat_android_core.home.model.HomeModel;
import com.yizhuan.xchat_android_core.market_verify.event.MarketVerifyUpdateEvent; import com.yizhuan.xchat_android_core.market_verify.event.MarketVerifyUpdateEvent;
import com.yizhuan.xchat_android_core.miniworld.model.MiniWorldModel;
import com.yizhuan.xchat_android_core.patriarch.exception.PmRoomLimitException;
import com.yizhuan.xchat_android_core.room.bean.RoomInfo; import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
import com.yizhuan.xchat_android_core.room.model.AvRoomModel; import com.yizhuan.xchat_android_core.room.model.AvRoomModel;
import com.yizhuan.xchat_android_core.user.AttentionModel;
import com.yizhuan.xchat_android_core.user.bean.AttentionInfo;
import com.yizhuan.xchat_android_core.utils.net.BeanObserver;
import com.yizhuan.xchat_android_core.utils.net.DontWarnObserver;
import com.yizhuan.xchat_android_core.utils.net.RxHelper; import com.yizhuan.xchat_android_core.utils.net.RxHelper;
import com.yizhuan.xchat_android_library.base.PresenterEvent;
import com.yizhuan.xchat_android_library.net.rxnet.callback.CallBack; import com.yizhuan.xchat_android_library.net.rxnet.callback.CallBack;
import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.EventBus;
@@ -33,10 +22,8 @@ import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode; import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import java.util.List;
import io.reactivex.Single;
import io.reactivex.SingleObserver; import io.reactivex.SingleObserver;
import io.reactivex.disposables.CompositeDisposable; import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
@@ -50,8 +37,6 @@ import io.reactivex.disposables.Disposable;
public class MainFragmentPresenter extends BaseMvpPresenter<IMainFragmentView> { public class MainFragmentPresenter extends BaseMvpPresenter<IMainFragmentView> {
private final static String TAG = MainFragmentPresenter.class.getSimpleName();
public static final int OPEN_ROOM_SUCCESS = 1; public static final int OPEN_ROOM_SUCCESS = 1;
public static final int OPEN_ROOM_FAIL_TYPE_IN_ROOM = 2; public static final int OPEN_ROOM_FAIL_TYPE_IN_ROOM = 2;
public static final int OPEN_ROOM_FAIL = 3; public static final int OPEN_ROOM_FAIL = 3;
@@ -60,15 +45,9 @@ public class MainFragmentPresenter extends BaseMvpPresenter<IMainFragmentView> {
* 青少年限制时长的报错 * 青少年限制时长的报错
*/ */
public static final int OPEN_ROOM_FAIL_PM_LIMIT_TIME = 5; public static final int OPEN_ROOM_FAIL_PM_LIMIT_TIME = 5;
private final static String TAG = MainFragmentPresenter.class.getSimpleName();
private int roomType = RoomInfo.ROOMTYPE_HOME_PARTY;
private CompositeDisposable mCompositeDisposable;
private final AvRoomModel avRoomModel; private final AvRoomModel avRoomModel;
private CompositeDisposable mCompositeDisposable;
private Disposable mDisposable;
public MainFragmentPresenter() { public MainFragmentPresenter() {
avRoomModel = AvRoomModel.get(); avRoomModel = AvRoomModel.get();
@@ -110,118 +89,6 @@ public class MainFragmentPresenter extends BaseMvpPresenter<IMainFragmentView> {
} }
/**
* 开启房间
*/
public void requestOpenRoom(int type) {
roomType = type;
AvRoomModel.get().requestRoomInfoV2(String.valueOf(AuthModel.get().getCurrentUid()), 0)
.compose(bindUntilEvent(PresenterEvent.DESTROY))
.subscribe(new DontWarnObserver<RoomInfo>() {
@Override
public void acceptThrowable(RoomInfo roomInfo, Throwable throwable) {
super.acceptThrowable(roomInfo, throwable);
if (roomInfo != null) {
onGetRoomInfo(roomInfo);
} else {
if (throwable instanceof PmRoomLimitException) {
if (getMvpView() != null) {
getMvpView().requestOpenRoomResult(OPEN_ROOM_FAIL_PM_LIMIT_TIME,
throwable.getMessage());
}
} else if (!TextUtils.isEmpty(throwable.getMessage())) {
if (getMvpView() != null) {
getMvpView().requestOpenRoomResult(OPEN_ROOM_FAIL,
throwable.getMessage());
}
}
}
}
});
}
/**
* 请求退出房间
*/
public void requestExitRoom(int type) {
if (roomType != type) {
requestCloseRoom(type);
return;
}
roomType = type;
avRoomModel.exitRoom(new CallBack<RoomInfo>() {
@Override
public void onSuccess(RoomInfo data) {
openRoom();
}
@Override
public void onFail(int code, String error) {
getMvpView().requestOpenRoomResult(OPEN_ROOM_FAIL, error);
}
});
}
/**
* 请求关闭房间
*/
private void requestCloseRoom(int type) {
roomType = type;
AvRoomModel.get()
.quitRoomForOurService(new CallBack<String>() {
@Override
public void onSuccess(String data) {
onCloseRoomInfo();
}
@Override
public void onFail(int code, String error) {
onCloseRoomInfoFail(error);
}
});
}
@SuppressLint("CheckResult")
private void openRoom() {
AvRoomModel.get().openRoom(
AuthModel.get().getCurrentUid(), roomType, null, null, null, null)
.compose(bindToLifecycle())
.subscribe((roomResult, throwable) -> {
if (throwable != null) {
onOpenRoomFail(throwable.getMessage());
} else if (roomResult != null && roomResult.isSuccess()) {
onOpenRoom(roomResult.getData());
} else if (roomResult != null && !roomResult.isSuccess()) {
if (roomResult.getCode() == 1500) {
onAlreadyOpenedRoom(roomResult.getData());
} else {
onOpenRoomFail(roomResult.getError());
}
} else {
onOpenRoomFail("未知错误");
}
});
}
private void onGetRoomInfo(RoomInfo roomInfo) {
if (roomInfo != null) {
if (roomInfo.isValid()) {
if (roomInfo.getType() != roomType) {
requestCloseRoom(roomType);
} else {
getMvpView().requestOpenRoomResult(OPEN_ROOM_SUCCESS, roomInfo);
}
} else {
openRoom();
}
} else {
openRoom();
}
}
@Override @Override
public IMainFragmentView getMvpView() { public IMainFragmentView getMvpView() {
if (super.getMvpView() == null) { if (super.getMvpView() == null) {
@@ -231,80 +98,11 @@ public class MainFragmentPresenter extends BaseMvpPresenter<IMainFragmentView> {
} }
} }
private void onCloseRoomInfoFail(String error) {
getMvpView().requestOpenRoomResult(OPEN_ROOM_FAIL, error);
}
private void onCloseRoomInfo() {
openRoom();
}
private void onOpenRoom(RoomInfo roomInfo) {
getMvpView().requestOpenRoomResult(OPEN_ROOM_SUCCESS, roomInfo);
}
private void onOpenRoomFail(String error) {
getMvpView().requestOpenRoomResult(OPEN_ROOM_FAIL, error);
}
private void onAlreadyOpenedRoom(RoomInfo roomInfo) {
getMvpView().requestOpenRoomResult(OPEN_ROOM_FAIL_ALREADY_OPENED_ROOM, roomInfo);
}
@Subscribe(threadMode = ThreadMode.MAIN) @Subscribe(threadMode = ThreadMode.MAIN)
public void onMarketVerifyUpdateEvent(MarketVerifyUpdateEvent event) { public void onMarketVerifyUpdateEvent(MarketVerifyUpdateEvent event) {
getMvpView().showByMarketCheckingStatus(new ArrayList<>()); getMvpView().showByMarketCheckingStatus(new ArrayList<>());
} }
public void tagList() {
HomeModel.get().tagList(AuthModel.get().getCurrentUid())
.compose(bindToLifecycle())
.subscribe(new SingleObserver<List<TagListInfo>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(List<TagListInfo> tagListInfoList) {
IMainFragmentView iMainFragmentView = getMvpView();
if (iMainFragmentView != null)
iMainFragmentView.titleListSuccess(tagListInfoList);
}
@Override
public void onError(Throwable e) {
IMainFragmentView iMainFragmentView = getMvpView();
if (iMainFragmentView != null)
iMainFragmentView.titleListFail(e.getMessage());
}
});
}
public Single<List<AttentionInfo>> getAttentionList() {
return AttentionModel.get().getAttentionList(
AuthModel.get().getCurrentUid(),
1,
100)
.flatMap(attentionInfos -> {
if (attentionInfos != null) {
Iterator<AttentionInfo> iterator = attentionInfos.iterator();
while (iterator.hasNext()) {
if (iterator.next().getUserInRoom() == null) {
iterator.remove();
}
}
if (attentionInfos.size() > 20) {
attentionInfos = attentionInfos.subList(0, 20);
attentionInfos.add(new AttentionInfo());
}
}
return Single.just(attentionInfos);
});
}
/** /**
* 获取首页banner * 获取首页banner
*/ */
@@ -361,25 +159,6 @@ public class MainFragmentPresenter extends BaseMvpPresenter<IMainFragmentView> {
}); });
} }
public void roomWorldModeClose(long roomUid) {
MiniWorldModel.getInstance().roomWorldModeClose(roomUid).subscribe(new BeanObserver<String>() {
@Override
public void onErrorMsg(String error) {
if (mMvpView != null)
mMvpView.roomWorldModeCloseFail(error);
}
@Override
public void onSuccess(String s) {
if (mMvpView != null)
mMvpView.roomWorldModeCloseSuccess();
}
});
}
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
public void getHomeConcerns() { public void getHomeConcerns() {
GameHomeModel.get().getHomeConcerns().compose(RxHelper.handleException()) GameHomeModel.get().getHomeConcerns().compose(RxHelper.handleException())

View File

@@ -1,41 +0,0 @@
package com.yizhuan.erban.home.presenter;
import com.yizhuan.erban.base.BaseMvpPresenter;
import com.yizhuan.erban.home.helper.LoadPageDataHelper;
import com.yizhuan.erban.home.view.INewestKTVRoomFragmentView;
import com.yizhuan.xchat_android_core.home.bean.KTVRoom;
import com.yizhuan.xchat_android_core.home.model.HomeModel;
import java.util.List;
import io.reactivex.Single;
/**
* @author jack
* @Description
* @Date 2018/10/31
*/
public class NewestKTVRoomFragmentPresenter extends BaseMvpPresenter<INewestKTVRoomFragmentView>
implements LoadPageDataHelper.LoadData<List<KTVRoom>> {
LoadPageDataHelper<List<KTVRoom>> loadPageDataHelper;
public NewestKTVRoomFragmentPresenter() {
loadPageDataHelper = new LoadPageDataHelper<>(this);
}
@Override
public Single<List<KTVRoom>> loadData(int curPage) {
return HomeModel.get().loadKTVList(String.valueOf(curPage), String.valueOf(10), String.valueOf(1))
.compose(bindToLifecycle());
}
public Single<List<KTVRoom>> refreshData() {
return loadPageDataHelper.refreshData();
}
public Single<List<KTVRoom>> loadMoreData() {
return loadPageDataHelper.loadMoreData();
}
}

View File

@@ -1,750 +0,0 @@
package com.yizhuan.erban.home.presenter;
import android.os.Bundle;
import android.os.Parcelable;
import androidx.annotation.Nullable;
import android.text.TextUtils;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.yizhuan.erban.base.BaseMvpPresenter;
import com.yizhuan.erban.home.view.IRecommendFragmentView;
import com.yizhuan.xchat_android_core.Constants;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.bean.response.ServiceResult;
import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
import com.yizhuan.xchat_android_core.home.bean.HomeImpDataType;
import com.yizhuan.xchat_android_core.home.bean.HomeInfo;
import com.yizhuan.xchat_android_core.home.bean.HomeItem;
import com.yizhuan.xchat_android_core.home.bean.HomeRoom;
import com.yizhuan.xchat_android_core.home.bean.MakeFriendsInfo;
import com.yizhuan.xchat_android_core.home.bean.TopMessage;
import com.yizhuan.xchat_android_core.home.bean.VMTopMessage;
import com.yizhuan.xchat_android_core.home.bean.VMTopMessageInfo;
import com.yizhuan.xchat_android_core.home.model.HomeModel;
import com.yizhuan.xchat_android_core.market_verify.event.MarketVerifyUpdateEvent;
import com.yizhuan.xchat_android_core.monsterhunting.bean.MonsterProtocol;
import com.yizhuan.xchat_android_core.monsterhunting.rxevent.MonsterUpdateEvent;
import com.yizhuan.xchat_android_core.utils.net.BeanObserver;
import com.yizhuan.xchat_android_core.utils.net.RxHelper;
import com.yizhuan.xchat_android_library.base.PresenterEvent;
import com.yizhuan.xchat_android_library.rxbus.RxBusHelper;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import io.reactivex.SingleObserver;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
/**
* @author jack
* @Description
* @Date 2018/10/29
*/
public class RecommendFragmentPresenter extends BaseMvpPresenter<IRecommendFragmentView> {
private final static String TAG = RecommendFragmentPresenter.class.getSimpleName();
private List<HomeItem> mHomeItemList;
/**
* 用于保存热门推荐的房间
*/
private List<HomeItem> hotList = new ArrayList<>();
/**
* 热门标签
*/
private HomeItem<String> hotTitleItem = new HomeItem<>(HomeItem.TYPE_BLOCK_TITLE);
private List<HomeInfo> homeInfos;
private int mPage = Constants.PAGE_START;
private CompositeDisposable mCompositeDisposable;
public RecommendFragmentPresenter() {
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
LogUtil.d(TAG, "onSaveInstanceState~~");
if (!ListUtils.isListEmpty(mHomeItemList)) {
outState.putParcelableArrayList(Constants.KEY_HOME_LIST, (ArrayList<? extends Parcelable>) mHomeItemList);
}
}
@Override
public void onCreatePresenter(@Nullable Bundle saveState) {
super.onCreatePresenter(saveState);
LogUtil.d(TAG, "onCreatePresenter~~");
if (saveState != null) {
mHomeItemList = saveState.getParcelableArrayList(Constants.KEY_HOME_LIST);
}
if (mCompositeDisposable == null) {
mCompositeDisposable = new CompositeDisposable();
}
addRxBusEvent();
EventBus.getDefault().register(this);
}
/**
* 添加RXBus 事件
*/
private void addRxBusEvent() {
RxBusHelper.doOnMainThread(MonsterUpdateEvent.class, mCompositeDisposable, new Consumer<MonsterUpdateEvent>() {
@Override
public void accept(MonsterUpdateEvent monsterUpdateEvent) throws Exception {
syncMonsterData(monsterUpdateEvent.getMonsterList());
}
});
}
@Override
public void onDestroyPresenter() {
super.onDestroyPresenter();
if (mCompositeDisposable != null) {
mCompositeDisposable.dispose();
mCompositeDisposable = null;
}
EventBus.getDefault().unregister(this);
}
/**
* 获取首页数据
*/
public void loadHomeData() {
String ticket = AuthModel.get().getTicket();
if (TextUtils.isEmpty(ticket)) {
return;
}
HomeModel.get().loadHomeListV4(
String.valueOf(AuthModel.get().getCurrentUid())
)
.compose(bindUntilEvent(PresenterEvent.DESTROY))
.subscribe(new SingleObserver<ServiceResult<List<HomeInfo>>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(ServiceResult<List<HomeInfo>> listServiceResult) {
if (listServiceResult.isSuccess()) {
onGetHomeDataSuccess(listServiceResult.getData());
} else {
onGetHomeDataFail(listServiceResult.getError());
}
}
@Override
public void onError(Throwable e) {
onGetHomeDataFail(e.getMessage());
}
});
}
/**
* 获取首页分页数据
*/
public void loadMoreHomeData() {
String ticket = AuthModel.get().getTicket();
if (TextUtils.isEmpty(ticket)) {
return;
}
HomeModel.get().loadMoreHomeData(mPage, 15)
.compose(bindUntilEvent(PresenterEvent.DESTROY))
.subscribe(new BeanObserver<List<HomeRoom>>() {
@Override
public void onErrorMsg(String error) {
getMvpView().addHomeDataFail(error);
}
@Override
public void onSuccess(List<HomeRoom> list) {
if (list.size() == 0) {
getMvpView().onNoMoreHomeData();
return;
}
//兼容后台首页热门数据不够3个但是翻页加载第二页却有数据
//据说是后台缓存导致
if (mHomeItemList == null) {
return;
}
//将热门项移除先
List<HomeItem> notHotList = new ArrayList<>();
for (HomeItem index : mHomeItemList) {
if (!index.isHotItem()) {
notHotList.add(index);
}
}
mHomeItemList.clear();
mHomeItemList.addAll(notHotList);
//先移除热门项的虚位以待
List<HomeItem> notRemoveList = new ArrayList<>();
for(HomeItem item : hotList) {
if (item.getItemType() != HomeItem.TYPE_SQUARE_EMPTY) {
notRemoveList.add(item);
}
}
hotList.clear();
hotList.addAll(notRemoveList);
//把加载到的数据添加hotlist
for(HomeRoom item : list) {
HomeItem<HomeRoom> homeItem;
if (hotList.size() < 3) {
homeItem = new HomeItem<>(
HomeItem.TYPE_SQUARE_PIC, item, true);
} else {
homeItem = new HomeItem<>(
HomeItem.TYPE_LINEAR_LITTLE_PIC, item, true);
}
hotList.add(homeItem);
}
//计算要添加的虚位以待
if (hotList.size() >= 1 && hotList.size() < 3) {
int emptyNum = 3 - hotList.size();
for (int i = 0; i < emptyNum; i++) {
HomeItem<HomeRoom> emptyItem = new HomeItem<>(
HomeItem.TYPE_SQUARE_EMPTY, new HomeRoom(), true);
hotList.add(emptyItem);
}
}
for (int i = 0; i < hotList.size(); i++) {
if (i < 3) {
hotList.get(i).setDividerDesc(i);
} else if (i == hotList.size() - 1) {
hotList.get(i).setDividerDesc(-2);
} else {
hotList.get(i).setDividerDesc(-1);
}
}
if (!mHomeItemList.contains(hotTitleItem)) {
mHomeItemList.add(hotTitleItem);
}
mHomeItemList.addAll(hotList);
getMvpView().addHomeDataSuccess(hotList);
mPage++;
}
});
}
/**
* 首页数据成功
*
* @param homeInfoList
*/
private void onGetHomeDataSuccess(List<HomeInfo> homeInfoList) {
if (!ListUtils.isListEmpty(homeInfoList)) {
if (!ListUtils.isListEmpty(mHomeItemList)) {
mHomeItemList.clear();
}
if (mHomeItemList == null) {
mHomeItemList = new ArrayList<>();
}
hotList.clear();
transformHomeData(homeInfoList);
getMvpView().loadHomeDataSuccess(mHomeItemList);
//3.1.2之后推荐页不显示怪兽
//MonsterHuntingModel.get().getMonsterList("", AuthModel.get().getTicket());
} else {
getMvpView().onNoHomeData();
}
}
/**
* 刷新交友的房间列表
*/
public void refreshMakeFriendList() {
HomeModel.get().loadMakeFriendList()
.compose(RxHelper.handleBeanData())
.compose(bindUntilEvent(PresenterEvent.DESTROY))
.subscribe(new SingleObserver<List<HomeRoom>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(List<HomeRoom> roomList) {
setToHomeItemList(roomList);
}
@Override
public void onError(Throwable e) {
getMvpView().onRefreshMakeFriendListFail(e.getMessage());
}
});
}
private void setToHomeItemList(List<HomeRoom> roomList) {
HomeItem<MakeFriendsInfo> makeFriendsInfoHomeItem = findHomeItemByType(HomeItem.TYPE_MAKE_FRIENDS);
if (makeFriendsInfoHomeItem == null) {
return;
}
MakeFriendsInfo makeFriendsInfo = (MakeFriendsInfo) makeFriendsInfoHomeItem.getData();
if (makeFriendsInfo == null) {
return;
}
makeFriendsInfo.setVmIsLoading(false);
makeFriendsInfo.setRoomList(roomList);
int position = mHomeItemList.indexOf(makeFriendsInfoHomeItem);
getMvpView().notifyDataSetChanged(IRecommendFragmentView.NOTIFY_DATA_SET_CHANGED, position, null);
}
@Nullable
private <T extends Serializable> HomeItem<T> findHomeItemByType(int type) {
for (HomeItem homeItem : this.mHomeItemList) {
if (homeItem.getItemType() == type) {
return homeItem;
}
}
return null;
}
private void removeEmptyHomeItem() {
Iterator<HomeItem> iterator = this.mHomeItemList.iterator();
while (iterator.hasNext()) {
HomeItem homeItem = iterator.next();
if (null == homeItem.getData()
&& homeItem.getItemType() != HomeItem.TYPE_DIV_1
&& homeItem.getItemType() != HomeItem.TYPE_DIV_2) {
iterator.remove();
}
}
}
/**
* 转换成我们的viewModel
*
* @param homeInfoList
*/
private void transformHomeData(List<HomeInfo> homeInfoList) {
if (null == this.mHomeItemList) {
return;
}
if (null == homeInfoList) {
return;
}
//banner
mHomeItemList.add(new HomeItem<ArrayList<BannerInfo>>(HomeItem.TYPE_BANNER));
//因为可配置模块不止1个并且位置一定要在墙裂推荐和热门推荐之间
//所以可配置模块独立获取
List<HomeItem> configList = new ArrayList<>();
//热门推荐
hotList.clear();
this.homeInfos = homeInfoList;
for (HomeInfo homeInfo : homeInfoList) {
if (null == homeInfo) continue;
if (homeInfo.getType() == HomeItem.TYPE_BANNER) {
//top Banner
HomeItem<ArrayList<BannerInfo>> topBannerInfoHomeItem = findHomeItemByType(HomeItem.TYPE_BANNER);
ArrayList<BannerInfo> topBannerInfoList = new Gson().fromJson(homeInfo.getData(),
new TypeToken<List<BannerInfo>>() {
}.getType());
if (!ListUtils.isListEmpty(topBannerInfoList)) {
topBannerInfoHomeItem.setData(topBannerInfoList);
}
} else if (homeInfo.getType() == HomeItem.TYPE_TOP_MESSAGE) {
//音游头条数据
//3.1.2开始不处理
} else if (homeInfo.getType() == HomeItem.TYPE_RECOMMEND ||
homeInfo.getType() == HomeItem.TYPE_CONFIG) {
//此版本推荐和可配置模块数据和ui都一样所以一起处理
HomeItem<String> titleItem = new HomeItem<>(HomeItem.TYPE_BLOCK_TITLE,
homeInfo.getTitle());
List<HomeItem> tmpList = handleSubListToMainList(homeInfo, -1, false);
if (!ListUtils.isListEmpty(tmpList)) {
// 推荐位第三个位置展示半小时榜图标
if (homeInfo.getType() == HomeItem.TYPE_RECOMMEND && tmpList.size() >= 3) {
tmpList.get(2).setShowRankHalfIcon(true);
}
configList.add(titleItem);
configList.addAll(tmpList);
}
} else if (homeInfo.getType() == HomeItem.TYPE_KTV) {
//KTV 房间列表
//3.1.2开始不处理
} else if (homeInfo.getType() == HomeItem.TYPE_HALL) {
//交友的大厅
} else if (homeInfo.getType() == HomeItem.TYPE_MAKE_FRIENDS) {
//佛系交友大厅
//3.1.2开始不处理
} else if (homeInfo.getType() == HomeImpDataType.HOT) {
hotTitleItem.setData(homeInfo.getTitle());
hotList.addAll(handleSubListToMainList(homeInfo, 3, true));
}
}
/**************************************************************************/
//移除没内容的块
removeEmptyHomeItem();
//添加可配置模块
mHomeItemList.addAll(configList);
//添加热门
//为了兼容后台,热门第一页没数据,第二页居然有数据的骚操作
//客户端进行兼容
if (hotList.size() > 0) {
//添加标题
if (TextUtils.isEmpty(hotTitleItem.getData())) {
hotTitleItem.setData("热门推荐");
}
mHomeItemList.add(hotTitleItem);
mHomeItemList.addAll(hotList);
}
}
/**
* 由于接口的数据是分模块返回的,
* 所以将模块的数据处理后合成一条list
*/
private List<HomeItem> handleSubListToMainList(HomeInfo homeInfo, int customSquareNum, boolean isHot) {
List<HomeItem> resultList = new ArrayList<>();
if (null != homeInfo.getData() && homeInfo.getData().isJsonArray()
&& homeInfo.getData().getAsJsonArray().size() > 0) {
//判断不为空
List<HomeRoom> homeRoomList = new Gson().fromJson(homeInfo.getData(),
new TypeToken<List<HomeRoom>>() {
}.getType());
if (homeRoomList == null) {
homeRoomList = new ArrayList<>();
}
int maxNum;
//表示方格子的个数如果不足3的倍数则补足3的倍数
//处理热门数据,前三个为格子,其他为普通布局,如果不足三个,则补虚位以待
if (customSquareNum >= 0) {
maxNum = customSquareNum;
} else {
maxNum = homeInfo.getMaxNum();
}
List<HomeItem> squareList = new ArrayList<>();
List<HomeItem> linearList = new ArrayList<>();
for (int i = 0; i < homeRoomList.size(); i++) {
HomeItem<HomeRoom> item;
HomeRoom room = homeRoomList.get(i);
if (i < maxNum) {
item = new HomeItem<>(HomeItem.TYPE_SQUARE_PIC, room, isHot);
squareList.add(item);
} else {
item = new HomeItem<>(HomeItem.TYPE_LINEAR_LITTLE_PIC, room, isHot);
linearList.add(item);
}
}
//添加虚位以待
int needEmptySize;
if (squareList.size() == 0) {
//如果方形推荐位为空添加3个虚位以待
//如果方块列表为空maxnum = 0不配置虚位以待
needEmptySize = 0;
} else if (squareList.size() % 3 == 0) {
//如果刚好是3的倍数则不需要添加
needEmptySize = 0;
} else {
//其余情况补足
needEmptySize = 3 - squareList.size() % 3;
}
//添加虚位以待
if (needEmptySize > 0) {
for (int i = 0; i < needEmptySize; i++) {
HomeItem item = new HomeItem<>(HomeItem.TYPE_SQUARE_EMPTY, new HomeRoom(), isHot);
squareList.add(item);
}
}
//加个防错机制保证方形是3的倍数
while (squareList.size() % 3 != 0) {
if (squareList.size() > 0) {
squareList.remove(squareList.size() - 1);
}
}
//添加分割线
for (int i = 0; i < squareList.size(); i++) {
squareList.get(i).setDividerDesc(i % 3);
}
//分割线
for (int i = 0; i < linearList.size(); i++) {
if (i == linearList.size() - 1) {
linearList.get(i).setDividerDesc(-2);
} else {
linearList.get(i).setDividerDesc(-1);
}
}
resultList.addAll(squareList);
resultList.addAll(linearList);
}
return resultList;
}
/**
* 整理推荐数据
*
* @param homeRoomList
*/
private void handleErbanRoomList(List<HomeRoom> homeRoomList) {
if (ListUtils.isListEmpty(homeRoomList)) {
return;
}
//做下简单的数据处理对前3项特别处理
for (int i = 0; i < homeRoomList.size(); i++) {
if (i < 3) {
homeRoomList.get(i).setItemStarType(HomeRoom.TYPE_GIRD);
} else {
homeRoomList.get(i).setItemStarType(HomeRoom.TYPE_LINEAR);
}
}
//不足三项的情况下,添加虚位以待的格子
if (homeRoomList.size() > 0 && homeRoomList.size() < 3) {
List<HomeRoom> emptyList = new ArrayList<>();
for (int i = 0; i < (3 - homeRoomList.size()); i++) {
HomeRoom homeRoom = new HomeRoom();
homeRoom.setItemStarType(HomeRoom.TYPE_GIRD_EMPTY);
emptyList.add(homeRoom);
}
homeRoomList.addAll(emptyList);
}
}
/**
* 把服务器返回的model 数据转换成 需要显示的 ViewModel
*
* @param homeInfo
* @return
*/
private VMTopMessageInfo transformHomeData2TopMessageInfos(HomeInfo homeInfo) {
List<TopMessage> topMessages = new Gson().fromJson(homeInfo.getData(), new TypeToken<List<TopMessage>>() {
}.getType());
VMTopMessageInfo topMessageInfo = new VMTopMessageInfo();
topMessageInfo.setTitle(homeInfo.getTitle());
List<VMTopMessage> vmTopMessageList = new ArrayList<>();
//组装成2个2个一组
final int groupSize = 2;
VMTopMessage vmTopMessage = null;
final int maxSize = topMessages.size() <= 6 ? topMessages.size() : 6;
for (int i = 0; i < maxSize; i++) {
if ((i % groupSize) == 0) {
vmTopMessage = new VMTopMessage();
vmTopMessage.setTopMessageList(new ArrayList<>());
vmTopMessageList.add(vmTopMessage);
}
if (vmTopMessage != null) {
vmTopMessage.getTopMessageList().add(topMessages.get(i));
}
}
topMessageInfo.setVmTopMessageList(vmTopMessageList);
return topMessageInfo;
}
/**
* 获取首页数据失败
*
* @param error
*/
private void onGetHomeDataFail(String error) {
getMvpView().loadHomeDataFail(error);
}
public int getPage() {
return this.mPage;
}
public void setPage(int page) {
this.mPage = page;
}
public List<HomeItem> getmHomeItemList() {
return mHomeItemList;
}
@Override
public IRecommendFragmentView getMvpView() {
if (super.getMvpView() == null) {
return new IRecommendFragmentView.FakeIMainFragmentView();
} else {
return super.getMvpView();
}
}
/**
* 同步怪兽数据
*
* @param monsterList
*/
private void syncMonsterData(List<MonsterProtocol.DataBean> monsterList) {
//查找更新怪兽,没有的话添加怪兽
for (int i = 0; i < monsterList.size(); i++) {
MonsterProtocol.DataBean monsterSource = monsterList.get(i);
boolean isFindMonster = false;
for (int j = 0; j < mHomeItemList.size(); j++) {
HomeItem homeItem = mHomeItemList.get(j);
if (homeItem.getItemType() == HomeItem.TYPE_MONSTER) {
MonsterProtocol.DataBean monsterTarget = (MonsterProtocol.DataBean) homeItem.getData();
if (monsterTarget.getMonsterId() == monsterSource.getMonsterId()) {
isFindMonster = true;
homeItem.setData(monsterSource);
break;
}
}
}
if (!isFindMonster) {
HomeItem<MonsterProtocol.DataBean> homeItem = new HomeItem<>(HomeItem.TYPE_MONSTER);
homeItem.setData(monsterSource);
mHomeItemList.add(1, homeItem);
}
}
//当前列表存在怪兽列表不存在的怪兽,移除该怪兽
Iterator<HomeItem> itemIterator = mHomeItemList.iterator();
while (itemIterator.hasNext()) {
HomeItem homeItem = itemIterator.next();
if (homeItem.getItemType() == HomeItem.TYPE_MONSTER) {
MonsterProtocol.DataBean monsterSource = (MonsterProtocol.DataBean) homeItem.getData();
boolean isNeedRemove = true;
for (int i = 0; i < monsterList.size(); i++) {
MonsterProtocol.DataBean monsterTarget = monsterList.get(i);
if (monsterTarget.getMonsterId() == monsterSource.getMonsterId()) {
isNeedRemove = false;
break;
}
}
int position = mHomeItemList.indexOf(homeItem);
if (isNeedRemove) {
itemIterator.remove();
getMvpView().notifyDataSetChanged(IRecommendFragmentView.NOTIFY_DATA_SET_CHANGED, IRecommendFragmentView.NOTIFY_DATA_SET_REMOVE, position);
} else {
getMvpView().notifyDataSetChanged(IRecommendFragmentView.NOTIFY_DATA_SET_CHANGED, IRecommendFragmentView.NOTIFY_DATA_SET_CHANGED, position);
}
}
}
}
/**
* 列表中存在这个怪兽
*
* @param data
* @return
*/
private boolean findMonster(MonsterProtocol.DataBean data) {
for (HomeItem homeItem : mHomeItemList) {
if (HomeItem.TYPE_MONSTER == homeItem.getItemType()) {
MonsterProtocol.DataBean monsterInfos = (MonsterProtocol.DataBean) homeItem.getData();
if (monsterInfos.getMonsterId() == data.getMonsterId()) {
return true;
}
}
}
return false;
}
/**
* 刷新头条消息,全部全服广播到来时候刷新
*/
public void refreshTopMessageList() {
HomeModel.get().loadHomeListV4(
String.valueOf(AuthModel.get().getCurrentUid())
)
.compose(bindUntilEvent(PresenterEvent.DESTROY))
.subscribe(new SingleObserver<ServiceResult<List<HomeInfo>>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(ServiceResult<List<HomeInfo>> listServiceResult) {
if (listServiceResult.isSuccess()) {
updateTopMessages(listServiceResult.getData());
}
}
@Override
public void onError(Throwable e) {
}
});
}
/**
* 更新头条信息
*
* @param data
*/
private void updateTopMessages(List<HomeInfo> data) {
//新获取到首页排序与旧的不一致,直接刷新首页
if (homeInfos == null || homeInfos.size() != data.size()) {
loadHomeData();
return;
}
for (int i = 0; i < homeInfos.size(); i++) {
if (homeInfos.get(i).getType() != data.get(i).getType()) {
loadHomeData();
return;
}
}
//新获取到首页排序与旧的一致,更新头条数据
VMTopMessageInfo vmTopMessageInfo = null;
for (HomeInfo datum : data) {
if (datum.getType() == HomeItem.TYPE_TOP_MESSAGE) {
vmTopMessageInfo = transformHomeData2TopMessageInfos(datum);
break;
}
}
if (null != vmTopMessageInfo) {
for (int i = 0; i < mHomeItemList.size(); i++) {
HomeItem homeItem = mHomeItemList.get(i);
if (homeItem.getItemType() == HomeItem.TYPE_TOP_MESSAGE) {
homeItem.setData(vmTopMessageInfo);
getMvpView().notifyDataSetChanged(IRecommendFragmentView.NOTIFY_DATA_SET_CHANGED, IRecommendFragmentView.NOTIFY_DATA_SET_CHANGED, i);
break;
}
}
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMarketVerifyUpdateEvent(MarketVerifyUpdateEvent event) {
getMvpView().showByMarketCheckingStatus();
}
}

View File

@@ -1,78 +0,0 @@
package com.yizhuan.erban.home.presenter;
import android.os.Bundle;
import android.os.Parcelable;
import androidx.annotation.Nullable;
import com.yizhuan.erban.base.BaseMvpPresenter;
import com.yizhuan.erban.home.view.IRoomCategoryFragmentView;
import com.yizhuan.xchat_android_core.Constants;
import com.yizhuan.xchat_android_core.home.bean.TabInfo;
import com.yizhuan.xchat_android_core.home.model.HomeModel;
import com.yizhuan.xchat_android_library.base.PresenterEvent;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.SingleObserver;
import io.reactivex.disposables.Disposable;
/**
* @author jack
* @Description
* @Date 2018/10/29
*/
public class RoomCategoryFragmentPresenter extends BaseMvpPresenter<IRoomCategoryFragmentView> {
private static final String TAG = RoomCategoryFragmentPresenter.class.getSimpleName();
private List<TabInfo> mTabInfoList;
@Override
public void onCreatePresenter(@Nullable Bundle saveState) {
super.onCreatePresenter(saveState);
if (saveState != null) {
mTabInfoList = saveState.getParcelableArrayList(Constants.KEY_MAIN_TAB_LIST);
}else{
mTabInfoList = HomeModel.get().getmTabInfoList();
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
if (!ListUtils.isListEmpty(mTabInfoList)) {
outState.putParcelableArrayList(Constants.KEY_MAIN_TAB_LIST, (ArrayList<? extends Parcelable>) mTabInfoList);
}
}
public List<TabInfo> getTabInfoList() {
return this.mTabInfoList;
}
/**
* 从服务器获取房间分类列表
*/
public void loadTabInfoList() {
HomeModel.get().getMainTabData()
.compose(bindUntilEvent(PresenterEvent.DESTROY))
.subscribe(new SingleObserver<List<TabInfo>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(List<TabInfo> tabInfos) {
mTabInfoList = tabInfos;
getMvpView().initiate();
}
@Override
public void onError(Throwable e) {
//获取不到
}
});
}
}

View File

@@ -1,87 +0,0 @@
package com.yizhuan.erban.home.presenter;
import com.trello.rxlifecycle3.android.FragmentEvent;
import com.yizhuan.erban.base.BaseMvpPresenter;
import com.yizhuan.erban.home.helper.LoadPageDataHelper;
import com.yizhuan.erban.home.view.IRoomListFragmentView;
import com.yizhuan.xchat_android_core.Constants;
import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
import com.yizhuan.xchat_android_core.home.bean.ClassifiedRoomInfo;
import com.yizhuan.xchat_android_core.home.bean.HomeRoom;
import com.yizhuan.xchat_android_core.home.bean.HomeRoomItem;
import com.yizhuan.xchat_android_core.home.bean.TabInfo;
import com.yizhuan.xchat_android_core.home.model.HomeModel;
import com.yizhuan.xchat_android_library.base.PresenterEvent;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.Single;
import io.reactivex.SingleSource;
import io.reactivex.functions.Function;
/**
* @author jack
* @Description
* @Date 2018/11/2
*/
public class RoomListPresenter extends BaseMvpPresenter<IRoomListFragmentView>
implements LoadPageDataHelper.LoadData<List<HomeRoomItem>> {
private LoadPageDataHelper<List<HomeRoomItem>> loadPageDataHelper;
private TabInfo tabInfo;
public RoomListPresenter() {
loadPageDataHelper = new LoadPageDataHelper<>(this);
}
public void setTabInfo(TabInfo tabInfo) {
this.tabInfo = tabInfo;
}
@Override
public Single<List<HomeRoomItem>> loadData(int curPage) {
if (tabInfo == null) {
return Single.error(new Throwable("没找到房间类型"));
}
return HomeModel.get().getMainDataByTab(tabInfo.getId(), curPage, Constants.PAGE_SIZE)
.compose(bindUntilEvent(PresenterEvent.DESTROY))
.flatMap(new Function<ClassifiedRoomInfo, SingleSource<? extends List<HomeRoomItem>>>() {
@Override
public SingleSource<? extends List<HomeRoomItem>> apply(ClassifiedRoomInfo classifiedRoomInfo) throws Exception {
List<HomeRoomItem> list = new ArrayList<>();
List<HomeRoom> homeRooms = classifiedRoomInfo.getRooms();
if (!ListUtils.isListEmpty(homeRooms)) {
for (HomeRoom homeRoom : homeRooms) {
list.add(new HomeRoomItem<>(HomeRoomItem.TYPE_HOME_ROOM, homeRoom));
}
}
if (!ListUtils.isListEmpty(classifiedRoomInfo.getBanners()) && curPage == Constants.PAGE_START) {
if (list.size() <= 4) {
list.add(new HomeRoomItem<>(HomeRoomItem.TYPE_BANNER, classifiedRoomInfo.getBanners()));
} else {
list.add(4, new HomeRoomItem<>(HomeRoomItem.TYPE_BANNER, classifiedRoomInfo.getBanners()));
}
}
if (ListUtils.isListEmpty(list)) {
return Single.just(new ArrayList<>());
} else {
return Single.just(list);
}
}
});
}
public Single<List<HomeRoomItem>> refreshData() {
return loadPageDataHelper.refreshData();
}
public Single<List<HomeRoomItem>> loadMoreData() {
return loadPageDataHelper.loadMoreData();
}
}

View File

@@ -1,106 +0,0 @@
package com.yizhuan.erban.home.presenter;
import com.yizhuan.erban.base.BaseMvpPresenter;
import com.yizhuan.erban.home.helper.LoadPageDataHelper;
import com.yizhuan.erban.home.view.IRoomTabView;
import com.yizhuan.xchat_android_core.Constants;
import com.yizhuan.xchat_android_core.home.bean.HomeRoom;
import com.yizhuan.xchat_android_core.home.bean.HomeRoomItem;
import com.yizhuan.xchat_android_core.home.bean.TitleIndexInfo;
import com.yizhuan.xchat_android_core.home.model.HomeModel;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.Single;
import io.reactivex.SingleSource;
import io.reactivex.functions.Function;
public class RoomTabPresenter extends BaseMvpPresenter<IRoomTabView> implements LoadPageDataHelper.LoadData<List<HomeRoomItem>> {
private LoadPageDataHelper<List<HomeRoomItem>> loadPageDataHelper;
private long mTitleId = -1;
public RoomTabPresenter() {
loadPageDataHelper = new LoadPageDataHelper<>(this);
}
public void setmTitleId(long titleId) {
this.mTitleId = titleId;
}
@Override
public Single<List<HomeRoomItem>> loadData(int curPage) {
if (mTitleId < 0) {
return Single.error(new Throwable("没找到房间类型"));
}
return HomeModel.get().titleIndex(mTitleId, curPage, Constants.PAGE_SIZE)
.compose(bindToLifecycle())
.flatMap(new Function<TitleIndexInfo, SingleSource<? extends List<HomeRoomItem>>>() {
@Override
public SingleSource<? extends List<HomeRoomItem>> apply(TitleIndexInfo classifiedRoomInfo) throws Exception {
List<HomeRoomItem> list = new ArrayList<>();
List<HomeRoom> homeRooms = classifiedRoomInfo.getRooms();
if (!ListUtils.isListEmpty(homeRooms)) {
if (curPage == Constants.PAGE_START) {
// 空白占位
list.add(new HomeRoomItem<>(HomeRoomItem.TYPE_TOP_EMPTY, null));
int topThree = 0;
ArrayList<HomeRoom> roomList = new ArrayList<>();
while (homeRooms.size() > 0 && topThree < 3) {
HomeRoom homeRoom = homeRooms.remove(0);
homeRoom.setItemStarType(HomeRoom.TYPE_GIRD);
roomList.add(homeRoom);
topThree++;
}
while (roomList.size() < 3) {
HomeRoom homeRoom = new HomeRoom();
homeRoom.setItemStarType(HomeRoom.TYPE_GIRD_EMPTY);
roomList.add(homeRoom);
}
list.add(new HomeRoomItem<>(HomeRoomItem.TYPE_TOP_THREE, roomList));
}
for (HomeRoom homeRoom : homeRooms) {
list.add(new HomeRoomItem<>(HomeRoomItem.TYPE_HOME_ROOM, homeRoom));
}
}
if (!ListUtils.isListEmpty(classifiedRoomInfo.getBanner()) && curPage == Constants.PAGE_START) {
HomeRoomItem bannerItems = new HomeRoomItem<>(HomeRoomItem.TYPE_BANNER, classifiedRoomInfo.getBanner());
if (list.size() <= 5) {
if (list.size() == 0)
bannerItems.setBannerInTop(true);
list.add(bannerItems);
} else {
list.add(5, bannerItems);
}
}
if (ListUtils.isListEmpty(list)) {
return Single.just(new ArrayList<>());
} else {
return Single.just(list);
}
}
});
}
public Single<List<HomeRoomItem>> refreshData() {
return loadPageDataHelper.refreshData();
}
public Single<List<HomeRoomItem>> loadMoreData() {
return loadPageDataHelper.loadMoreData();
}
}

View File

@@ -1,98 +0,0 @@
package com.yizhuan.erban.home.view;
import android.content.Context;
import android.graphics.Rect;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.View;
import com.yizhuan.erban.R;
import com.yizhuan.erban.home.adapter.HomeFragmentAdapter;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil;
/**
* 首页3+n的边框划线
* Created by lvzebiao on 2019/2/20.
*/
public class Home3PlusNDecoration extends RecyclerView.ItemDecoration {
private int gridDividerPx;
private HomeFragmentAdapter adapter;
private Drawable lineDrawable;
private int lineLeftPaddingPx;
private int lineHeightPx = 1;
public Home3PlusNDecoration(Context context, HomeFragmentAdapter adapter) {
gridDividerPx = UIUtil.dip2px(context, 15);
lineLeftPaddingPx = UIUtil.dip2px(context, 86);
this.adapter = adapter;
lineDrawable = new ColorDrawable(context.getResources().getColor(R.color.line_color));
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
if (!(parent.getLayoutManager() instanceof GridLayoutManager)) {
return;
}
GridLayoutManager manager = (GridLayoutManager) parent.getLayoutManager();
int position = parent.getChildAdapterPosition(view);
if (position >= adapter.getData().size()) {
outRect.set(0, 0, 0, 0);
return;
}
int dividerDesc = adapter.getData().get(position).getDividerDesc();
int left, right;
if (dividerDesc == -3) {
left = 0;
right = 0;
} else if (dividerDesc >= 0) {
left = gridDividerPx - gridDividerPx * dividerDesc / manager.getSpanCount();
right = gridDividerPx * (dividerDesc + 1) / manager.getSpanCount();
} else {
left = gridDividerPx;
right = gridDividerPx;
}
int bottom = 0;
//首页去除画线
// if (dividerDesc == -3) {
// bottom = 0;
// } else if (dividerDesc == -1) {
// bottom = lineHeightPx;
// } else {
// bottom = 0;
// }
outRect.set(left, 0, right, bottom);
}
//首页去除画线
// @Override
// public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
// super.onDraw(c, parent, state);
// int left = lineLeftPaddingPx;
// int right = parent.getWidth() - gridDividerPx;
// for (int i = 0; i < parent.getChildCount(); i++) {
// View childView = parent.getChildAt(i);
// RecyclerView.LayoutParams childViewParams = (RecyclerView.LayoutParams) childView.getLayoutParams();
// int position = childViewParams.getViewAdapterPosition();
// if (position < adapter.getData().size()) {
// int dividerDesc = adapter.getData().get(position).getDividerDesc();
// if (dividerDesc == -1) {
// //int traX = (int)(ViewCompat.getTranslationX(childView)); 偏移值,暂时没用到
// //int traY = (int)(ViewCompat.getTranslationY(childView));
// final int top = childView.getTop() + childView.getHeight();
// final int bottom = top + lineHeightPx;
// //drawable.setBounds(left + traX, top + traY, right + traX, bottom + traY);
// lineDrawable.setBounds(left, top, right, bottom);
// lineDrawable.draw(c);
// }
// }
// }
// }
}

View File

@@ -1,69 +0,0 @@
package com.yizhuan.erban.home.view;
import android.content.Context;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.util.AttributeSet;
import android.widget.TextView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.yizhuan.erban.R;
import com.yizhuan.erban.home.adapter.ErbanRecommendAdapter;
import com.yizhuan.erban.home.adapter.RecommendThreeNModelDecoration;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil;
import com.yizhuan.xchat_android_core.home.bean.HomeRoom;
import com.yizhuan.xchat_android_core.home.bean.RecommendInfo;
import com.yizhuan.xchat_android_library.widget.ShapeConstrainLayout;
import java.util.List;
/**
* 可配置模块3N+M布局封装
* Created by lvzebiao on 2019/2/19.
*/
public class HomeConfigModule extends ShapeConstrainLayout {
private TextView tvTitle;
private RecyclerView recyclerView;
public HomeConfigModule(Context context) {
this(context, null);
}
public HomeConfigModule(Context context, AttributeSet attrs) {
super(context, attrs);
inflate(context, R.layout.home_module_title_recycler_view, this);
tvTitle = findViewById(R.id.tv_title);
recyclerView = findViewById(R.id.rv_list);
}
public void setData(RecommendInfo info) {
if (info == null) {
return;
}
tvTitle.setText(info.getTitle());
List<HomeRoom> roomList = info.getRoomList();
recyclerView.setItemAnimator(null);
recyclerView.setFocusable(false);
Context context = getContext();
GridLayoutManager manager = new GridLayoutManager(context, 3);
recyclerView.setLayoutManager(manager);
if (recyclerView.getItemDecorationCount() == 0) {
int px = UIUtil.dip2px(context, 15);
recyclerView.addItemDecoration(new RecommendThreeNModelDecoration(px));
}
ErbanRecommendAdapter erbanRecommendAdapter = new ErbanRecommendAdapter(context, roomList);
recyclerView.setAdapter(erbanRecommendAdapter);
erbanRecommendAdapter.setSpanSizeLookup(new BaseQuickAdapter.SpanSizeLookup() {
@Override
public int getSpanSize(GridLayoutManager gridLayoutManager, int position) {
if (position < 3) {
return 1;
}
return manager.getSpanCount();
}
});
}
}

View File

@@ -1,18 +0,0 @@
package com.yizhuan.erban.home.view;
import com.yizhuan.xchat_android_core.family.bean.FamilyCustomServiceInfo;
import com.yizhuan.xchat_android_core.family.bean.FamilyInfo;
import com.yizhuan.xchat_android_library.base.IMvpBaseView;
/**
* @author jack
* @Description
* @Date 2018/10/29
*/
public interface IFamilyFragmentView extends IMvpBaseView {
void showMyFamilyInfo(FamilyInfo familyInfo);
void onCustomServiceInfo(FamilyCustomServiceInfo customServiceInfo);
void onCustomServiceFail(String reason);
}

View File

@@ -1,20 +0,0 @@
package com.yizhuan.erban.home.view;
import com.yizhuan.xchat_android_core.home.bean.FindInfo;
import com.yizhuan.xchat_android_library.base.IMvpBaseView;
/**
* @author jack
* @Description
* @Date 2018/5/22
*/
public interface IFindFragmentView extends IMvpBaseView {
public void onLoadData(FindInfo findInfo);
void onLoadDataFail(String error);
// void onLoadNewUserList(List<UserInfo> userInfoList);
}

View File

@@ -1,6 +0,0 @@
package com.yizhuan.erban.home.view;
import com.yizhuan.xchat_android_library.base.IMvpBaseView;
public interface IFindTabFragmentView extends IMvpBaseView {
}

View File

@@ -1,11 +0,0 @@
package com.yizhuan.erban.home.view;
import com.yizhuan.xchat_android_library.base.IMvpBaseView;
/**
* @author jack
* @Description
* @Date 2018/10/31
*/
public interface IHottestKTVRoomFragmentView extends IMvpBaseView {
}

View File

@@ -1,11 +0,0 @@
package com.yizhuan.erban.home.view;
import com.yizhuan.xchat_android_library.base.IMvpBaseView;
/**
* @author jack
* @Description
* @Date 2018/10/29
*/
public interface IKTVFragmentView extends IMvpBaseView {
}

View File

@@ -1,5 +0,0 @@
package com.yizhuan.erban.home.view;
public interface IMainFragmentTabBg {
void isBannerTop(boolean isBannerTop);
}

View File

@@ -20,6 +20,7 @@ public interface IMainFragmentView extends IMvpBaseView {
/** /**
* 请求打开房间结果 * 请求打开房间结果
*
* @param openRoomFailType * @param openRoomFailType
* @param arg * @param arg
*/ */
@@ -36,10 +37,14 @@ public interface IMainFragmentView extends IMvpBaseView {
*/ */
void exitRoom(RoomInfo roomInfo); void exitRoom(RoomInfo roomInfo);
void onGetHomeBannerSuccess(List<BannerInfo> bannerInfos);
void onGetHomeTagSuccess(List<HomeTagInfo> tagInfos);
/** /**
* 假实现用于在View销毁后 调用View方法导致空指针问题的一种解决方案 * 假实现用于在View销毁后 调用View方法导致空指针问题的一种解决方案
*/ */
class FakeIMainFragmentView implements IMainFragmentView{ class FakeIMainFragmentView implements IMainFragmentView {
@Override @Override
public void requestOpenRoomResult(int openRoomFailType, Object... arg) { public void requestOpenRoomResult(int openRoomFailType, Object... arg) {
@@ -66,33 +71,6 @@ public interface IMainFragmentView extends IMvpBaseView {
} }
@Override
public void titleListSuccess(List<TagListInfo> tagListInfoList) {
}
@Override
public void titleListFail(String msg) {
}
@Override
public void onGetFirstPageBannerFailed(String message) {
}
@Override
public void roomWorldModeCloseSuccess() {
}
@Override
public void roomWorldModeCloseFail(String error) {
}
@Override @Override
public void onGetHomeBannerSuccess(List<BannerInfo> bannerInfos) { public void onGetHomeBannerSuccess(List<BannerInfo> bannerInfos) {
@@ -103,29 +81,7 @@ public interface IMainFragmentView extends IMvpBaseView {
} }
@Override
public void getRoomShortcut(String data) {
}
} }
void titleListSuccess(List<TagListInfo> tagListInfoList);
void titleListFail(String msg);
/**
* 获取首页banner失败
* @param message
*/
void onGetFirstPageBannerFailed(String message);
void roomWorldModeCloseSuccess();
void roomWorldModeCloseFail(String error);
void onGetHomeBannerSuccess(List<BannerInfo> bannerInfos);
void onGetHomeTagSuccess(List<HomeTagInfo> tagInfos);
void getRoomShortcut(String data);
} }

View File

@@ -1,11 +0,0 @@
package com.yizhuan.erban.home.view;
import com.yizhuan.xchat_android_library.base.IMvpBaseView;
/**
* @author jack
* @Description
* @Date 2018/10/31
*/
public interface INewestKTVRoomFragmentView extends IMvpBaseView {
}

View File

@@ -1,124 +0,0 @@
package com.yizhuan.erban.home.view;
import com.yizhuan.xchat_android_core.home.bean.HomeItem;
import com.yizhuan.xchat_android_library.base.IMvpBaseView;
import java.util.List;
/**
* @author jack
* @Description
* @Date 2018/10/29
*/
public interface IRecommendFragmentView extends IMvpBaseView {
public static int NOTIFY_DATA_SET_CHANGED = 1;
public static int NOTIFY_DATA_SET_REMOVE = 2;
/**
* 设置首页数据
*
* @param data 首页数据
*/
void loadHomeDataSuccess(List<HomeItem> data);
/**
* 没有首页数据
*/
void onNoHomeData();
/**
* 获取首页数据失败
*
* @param error
*/
void loadHomeDataFail(String error);
/**
* 加载第二页数据
*
* @param data 首页数据
*/
void addHomeDataSuccess(List<HomeItem> data);
/**
* 没有更多房间数据了
*/
void onNoMoreHomeData();
/**
* 加载第二页数据失败
*
* @param error
*/
void addHomeDataFail(String error);
void setEnableLoadMore(boolean b);
void setRefreshing(boolean b);
void notifyDataSetChanged(int type, int position, Object payloads);
void showByMarketCheckingStatus();
void onRefreshMakeFriendListFail(String message);
public class FakeIMainFragmentView implements IRecommendFragmentView {
@Override
public void loadHomeDataSuccess(List<HomeItem> data) {
}
@Override
public void onNoHomeData() {
}
@Override
public void loadHomeDataFail(String error) {
}
@Override
public void addHomeDataSuccess(List<HomeItem> data) {
}
@Override
public void onNoMoreHomeData() {
}
@Override
public void addHomeDataFail(String error) {
}
@Override
public void setEnableLoadMore(boolean b) {
}
@Override
public void setRefreshing(boolean b) {
}
@Override
public void notifyDataSetChanged(int type, int position, Object payloads) {
}
@Override
public void showByMarketCheckingStatus() {
}
@Override
public void onRefreshMakeFriendListFail(String message) {
}
}
}

View File

@@ -1,12 +0,0 @@
package com.yizhuan.erban.home.view;
import com.yizhuan.xchat_android_library.base.IMvpBaseView;
/**
* @author jack
* @Description
* @Date 2018/10/29
*/
public interface IRoomCategoryFragmentView extends IMvpBaseView {
public void initiate();
}

View File

@@ -1,11 +0,0 @@
package com.yizhuan.erban.home.view;
import com.yizhuan.xchat_android_library.base.IMvpBaseView;
/**
* @author jack
* @Description
* @Date 2018/11/2
*/
public interface IRoomListFragmentView extends IMvpBaseView {
}

View File

@@ -1,6 +0,0 @@
package com.yizhuan.erban.home.view;
import com.yizhuan.xchat_android_library.base.IMvpBaseView;
public interface IRoomTabView extends IMvpBaseView {
}

View File

@@ -142,6 +142,7 @@ public class MessageFragment extends TFragment implements ModuleProxy, MessageLi
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.nim_msg_fragment, container, false); rootView = inflater.inflate(R.layout.nim_msg_fragment, container, false);
EventBus.getDefault().register(this); EventBus.getDefault().register(this);
tvChatLimit = rootView.findViewById(R.id.tv_chat_limit);
return rootView; return rootView;
} }

View File

@@ -1,194 +0,0 @@
package com.yizhuan.erban.ui.widget.marqueeview;
import android.content.Context;
import androidx.annotation.AnimRes;
import android.util.AttributeSet;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.animation.Animation;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.load.resource.bitmap.CircleCrop;
import com.netease.nim.uikit.support.glide.GlideApp;
import com.yizhuan.erban.R;
import com.yizhuan.xchat_android_core.home.bean.RankingInfo;
import java.util.List;
/**
* 首页排行榜
* Created by ${Seven} on 2017/11/2.
*/
public class HomeRankingView extends MarqueeView {
private SparseArray<List<RankingInfo.Ranking>> mListMap;
private Context mContext;
public HomeRankingView(Context context) {
this(context, null);
}
public HomeRankingView(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
}
public void setHomeNoticeInfoList(RankingInfo rankingInfo) {
if (rankingInfo == null) return;
initData(rankingInfo);
}
private void initData(RankingInfo rankingInfo) {
if (mListMap == null)
mListMap = new SparseArray<>();
mListMap.put(0, rankingInfo.starList);
mListMap.put(1, rankingInfo.nobleList);
mListMap.put(2, rankingInfo.roomList);
}
/**
* 根据通知列表,启动翻页公告
*
* @param rankingInfo 字符串列表
*/
public void startWithLists(RankingInfo rankingInfo) {
startWithLists(rankingInfo, inAnimResId, outAnimResId);
}
/**
* 根据通知列表,启动翻页公告
*
* @param rankingInfo 通知列表
* @param inAnimResId 进入动画的resID
* @param outAnimResID 离开动画的resID
*/
public void startWithLists(RankingInfo rankingInfo, @AnimRes int inAnimResId, @AnimRes int outAnimResID) {
setHomeNoticeInfoList(rankingInfo);
start(inAnimResId, outAnimResID);
}
@Override
protected boolean start(int inAnimResId, int outAnimResID) {
removeAllViews();
clearAnimation();
position = 0;
addView(createView(mListMap.get(position)));
if (mListMap.size() > 1) {
setInAndOutAnimation(inAnimResId, outAnimResID);
startFlipping();
}
if (getInAnimation() != null) {
getInAnimation().setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
position++;
if (position >= mListMap.size()) {
position = 0;
}
if (position < mListMap.size()) {
View view = createView(mListMap.get(position));
if (view.getParent() == null) {
addView(view);
}
}
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
}
return true;
}
private View createView(final List<RankingInfo.Ranking> rankingList) {
int index = (getDisplayedChild() + 1) % 3;
View view = getChildAt(index);
if (view == null) {
view = LayoutInflater.from(getContext()).inflate(R.layout.layout_home_notice, null);
// textView.setGravity(gravity);
// textView.setTextColor(textColor);
// textView.setTextSize(textSize);
// textView.setSingleLine(singleLine);
}
// textView.setText(text);
TextView noticeTitle = (TextView) view.findViewById(R.id.tv_notice_title);
ImageView noticeCover1 = (ImageView) view.findViewById(R.id.iv_cover_1);
ImageView noticeCover2 = (ImageView) view.findViewById(R.id.iv_cover_2);
ImageView noticeCover3 = (ImageView) view.findViewById(R.id.iv_cover_3);
ImageView arrowRight = (ImageView) view.findViewById(R.id.iv_arrow_right);
if (position == 0) {
noticeTitle.setText(R.string.star_list_title);
bindAvater(rankingList, noticeCover1, noticeCover2, noticeCover3);
} else if (position == 1) {
noticeTitle.setText(R.string.noble_list_title);
bindAvater(rankingList, noticeCover1, noticeCover2, noticeCover3);
} else if (position == 2) {
noticeTitle.setText(R.string.room_list_title);
bindAvater(rankingList, noticeCover1, noticeCover2, noticeCover3);
}
setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (noticeClickListener != null) {
noticeClickListener.onNoticeClick(getPosition(), rankingList);
}
}
});
view.setTag(this.position);
return view;
}
private void bindAvater(List<RankingInfo.Ranking> rankingList, ImageView noticeCover1, ImageView noticeCover2, ImageView noticeCover3) {
if (rankingList != null) {
int size = rankingList.size();
if (size > 0) {
bindAvater(noticeCover3, rankingList.get(0));
}
if (size > 1) {
bindAvater(noticeCover2, rankingList.get(1));
}
if (size > 2) {
bindAvater(noticeCover1, rankingList.get(2));
}
}
}
private void bindAvater(ImageView imageView, RankingInfo.Ranking ranking) {
if (ranking != null) {
GlideApp.with(mContext)
.load(ranking.getAvatar())
// .transform(new GlideCircleTransform(mContext))
.transform(new CircleCrop())
.placeholder(R.drawable.default_avatar)
.error(R.drawable.default_avatar)
.into(imageView);
} else {
imageView.setImageResource(R.drawable.default_avatar);
}
}
private NoticeClickListener noticeClickListener;
public void setNoticeClickListener(NoticeClickListener noticeClickListener) {
this.noticeClickListener = noticeClickListener;
}
public interface NoticeClickListener {
void onNoticeClick(int position, List<RankingInfo.Ranking> rankingList);
}
}

View File

@@ -1,98 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="click"
type="android.view.View.OnClickListener" />
</data>
<LinearLayout
android:layout_width="311dp"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="20dp"
android:background="@drawable/shape_white_solid_round">
<!--<LinearLayout-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_marginTop="29dp"-->
<!--android:gravity="center_vertical">-->
<!--<TextView-->
<!--android:layout_width="0dp"-->
<!--android:layout_weight="1"-->
<!--android:layout_height="wrap_content"-->
<!--android:text="房间说明"-->
<!--android:textColor="#ffff894f"-->
<!--android:textSize="18sp" />-->
<!--<ImageView-->
<!--android:id="@+id/iv_close"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:src="@drawable/ic_dialog_close"-->
<!--android:layout_marginRight="10dp" />-->
<!--</LinearLayout>-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="9dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="房间说明"
android:textColor="#ffff894f"
android:textSize="18sp" />
<ImageView
android:id="@+id/iv_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_dialog_close"
android:layout_alignParentRight="true"
android:layout_marginRight="9dp" />
</RelativeLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="什么是陪伴房?"
android:textColor="#ff333333"
android:textSize="14sp"
android:layout_marginTop="30dp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:text="陪伴房给你更私密的空间,在房间中,你们可以一起听自己喜欢的音乐、陪连麦、玩游戏、用声音感觉你在身边。相互感觉彼此!"
android:textColor="#ff333333"
android:layout_marginRight="25dp"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="什么是普通房?"
android:textColor="#ff333333"
android:textSize="14sp"
android:layout_marginTop="30dp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="在普通房可以和七八个朋友一起谈天说地、K歌欢唱找声音好听的小哥哥小姐姐一起共同开启声音盛宴"
android:textColor="#ff333333"
android:textSize="14sp"
android:layout_marginTop="15dp"
android:layout_marginRight="25dp"
android:layout_marginBottom="35dp" />
</LinearLayout>
</layout>

View File

@@ -1,136 +0,0 @@
<?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="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:overScrollMode="never"
android:scrollbars="none">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FAFAFA"
android:orientation="vertical">
<com.yizhuan.erban.ui.widget.rollviewpager.RollPagerView
android:id="@+id/roll_view"
android:layout_width="match_parent"
android:layout_height="120dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="1dp"
android:background="#FAFAFA"
android:visibility="gone"
app:rollviewpager_hint_gravity="left"
app:rollviewpager_hint_paddingBottom="8dp"
app:rollviewpager_hint_paddingLeft="@dimen/dp_10"
tools:visibility="visible" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_entrance"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginTop="13dp"
android:layout_marginEnd="20dp"
android:layout_marginBottom="3dp"
android:clipToPadding="false" />
<include
android:id="@+id/list_item_home_erban_top_message"
layout="@layout/list_item_home_erban_top_message" />
<androidx.cardview.widget.CardView
android:id="@+id/ll_newer_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginTop="15dp"
android:layout_marginRight="20dp"
app:cardBackgroundColor="#ffffff"
app:cardCornerRadius="10dp"
app:cardElevation="0dp">
<LinearLayout
android:id="@+id/ll_mentoring_relationship"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingLeft="15dp"
android:paddingRight="15dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableEnd="@drawable/icon_find_mentor"
android:drawablePadding="@dimen/dp_10"
android:text="@string/me_mentoring_relationship_title"
android:textColor="@color/color_333333"
android:textSize="@dimen/dp_15"
tools:ignore="SpUsage" />
<View
android:layout_width="0dp"
android:layout_height="10dp"
android:layout_weight="1" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableEnd="@mipmap/common_ic_more_arrow"
android:drawablePadding="6dp"
android:text="@string/me_mentoring_relationship_hint"
android:textColor="@color/color_FF7162"
android:textSize="@dimen/dp_12"
tools:ignore="SpUsage" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginTop="15dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="10dp"
android:background="@color/white"
app:cardCornerRadius="10dp"
app:cardElevation="0dp">
<com.yizhuan.erban.ui.widget.InterceptTouchLayout
android:id="@+id/ll_public_chat_hall_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="visible">
<include
android:id="@+id/list_item_home_hall"
layout="@layout/list_item_home_hall" />
</com.yizhuan.erban.ui.widget.InterceptTouchLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</LinearLayout>

View File

@@ -1,18 +0,0 @@
<com.scwang.smartrefresh.layout.SmartRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/smart_refresh_layout"
tools:context="com.yizhuan.erban.home.fragment.HomeOtherTabFragment">
<androidx.recyclerview.widget.RecyclerView
android:paddingStart="12.5dp"
android:paddingEnd="12.5dp"
android:paddingTop="2dp"
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>

View File

@@ -1,8 +1,7 @@
<com.yizhuan.erban.common.widget.StatusLayout xmlns:android="http://schemas.android.com/apk/res/android" <com.yizhuan.erban.common.widget.StatusLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent">
tools:context="com.yizhuan.erban.home.fragment.HomeOtherTabFragment">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh" android:id="@+id/swipe_refresh"

View File

@@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<com.yizhuan.erban.common.widget.StatusLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/srl_refresh_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingBottom="12dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingTop="12dp" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</com.yizhuan.erban.common.widget.StatusLayout>

View File

@@ -1,23 +1,20 @@
<com.yizhuan.erban.common.widget.StatusLayout xmlns:android="http://schemas.android.com/apk/res/android" <com.yizhuan.erban.common.widget.StatusLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent">
tools:context="com.yizhuan.erban.home.fragment.HomeOtherTabFragment">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh" android:id="@+id/swipe_refresh"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent">
>
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:paddingStart="12.5dp"
android:paddingEnd="12.5dp"
android:paddingTop="2dp"
android:id="@+id/recycler_view" android:id="@+id/recycler_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
/> android:paddingStart="12.5dp"
android:paddingTop="2dp"
android:paddingEnd="12.5dp" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout> </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<com.yizhuan.erban.common.widget.StatusLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_F5F5F5"
android:orientation="vertical">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/srl_refresh_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingBottom="12dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingTop="12dp" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</com.yizhuan.erban.common.widget.StatusLayout>

View File

@@ -1,31 +0,0 @@
<com.scwang.smartrefresh.layout.SmartRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/smart_refresh_layout"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.yizhuan.erban.home.fragment.RecommendationFragment">
<!--<android.support.v4.widget.NestedScrollView-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content">-->
<!--<LinearLayout-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:orientation="vertical">-->
<!---->
<!---->
<!--</LinearLayout>-->
<!--</android.support.v4.widget.NestedScrollView>-->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</com.scwang.smartrefresh.layout.SmartRefreshLayout>

View File

@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="60dp"
android:background="@color/white">
<com.yizhuan.erban.ui.widget.magicindicator.MagicIndicator
android:id="@+id/main_indicator"
android:layout_width="wrap_content"
android:layout_height="match_parent" />
</FrameLayout>
<androidx.viewpager.widget.ViewPager
android:id="@+id/vp_room_category_viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>

View File

@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="15dp">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textColor="#ff333333"
android:textSize="18dp"
android:textStyle="bold"
android:layout_marginTop="10dp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>

View File

@@ -1,74 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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"
xmlns:tools="http://schemas.android.com/tools"
android:background="@color/white">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.yizhuan.erban.ui.widget.rollviewpager.RollPagerView
android:id="@+id/roll_view"
android:layout_width="match_parent"
android:layout_height="120dp"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_15"
app:rollviewpager_hint_gravity="left"
app:rollviewpager_hint_paddingLeft="@dimen/dp_10"
app:rollviewpager_hint_paddingBottom="8dp"
android:visibility="gone"/>
<LinearLayout
android:id="@+id/ll_panel_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_15"
android:orientation="horizontal"
tools:visibility="visible"
android:visibility="gone">
<com.yizhuan.erban.ui.widget.RectLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
app:hw_ratio="0.39">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/siv_icon1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop" />
</com.yizhuan.erban.ui.widget.RectLayout>
<View
android:layout_width="@dimen/dp_10"
android:layout_height="@dimen/dp_10" />
<com.yizhuan.erban.ui.widget.RectLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
app:hw_ratio="0.39">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/siv_icon2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop" />
</com.yizhuan.erban.ui.widget.RectLayout>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dp_5" />
</LinearLayout>
</FrameLayout>

View File

@@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dp_5"
android:background="@color/color_F5F5F5" />
</LinearLayout>

View File

@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<View
android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_15"
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/color_ececec"/>
</LinearLayout>

View File

@@ -1,41 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_15"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_5"
android:textColor="@color/color_333333"
android:textSize="@dimen/dp_18"
android:textStyle="bold"
tools:text="和而我一起嗨" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_15"
android:overScrollMode="never" />
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dp_15" />
</LinearLayout>

View File

@@ -1,41 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView 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:id="@+id/ll_top_msg_container"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_60"
android:layout_marginStart="20dp"
android:layout_marginTop="15dp"
android:layout_marginEnd="20dp"
android:background="@color/white"
app:cardCornerRadius="10dp"
app:cardElevation="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_width="45dp"
android:layout_height="41dp"
android:src="@drawable/icon_headline"
tools:ignore="ContentDescription" />
<com.yizhuan.erban.ui.widget.marqueeview.BetterMarqueeView xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/bmv_marquee_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/bg_home_notice"
app:mvAnimDuration="1000"
app:mvDirection="bottom_to_top"
app:mvGravity="left"
app:mvInterval="3000" />
</LinearLayout>
</androidx.cardview.widget.CardView>

View File

@@ -1,81 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_15">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_5"
android:textColor="@color/color_333333"
android:textSize="@dimen/dp_18"
tools:text="和而我一起嗨"
android:textStyle="bold" />
<View
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_width="1dp"
android:layout_height="10dp"
android:background="@color/color_999999" />
<TextView
android:id="@+id/tv_sub_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_5"
android:textColor="@color/color_999999"
android:textSize="@dimen/dp_13"
tools:text="k歌是一种生活方式" />
<View
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_weight="1" />
<TextView
android:id="@+id/tv_more"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/dp_13"
android:text="@string/home_more"
android:textColor="@color/color_999999"
android:drawablePadding="5dp"
android:drawableRight="@mipmap/ic_home_block_more" />
</LinearLayout>
<com.yizhuan.erban.ui.widget.ContentWrapViewPager
android:id="@+id/vp_rooms"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_15"
android:overScrollMode="never">
</com.yizhuan.erban.ui.widget.ContentWrapViewPager>
<com.yizhuan.erban.ui.widget.magicindicator.MagicIndicator
android:layout_marginTop="5dp"
android:id="@+id/mi_indicator"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dp_15" />
</LinearLayout>

View File

@@ -1,75 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_15"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_5"
android:textColor="@color/color_333333"
android:textSize="@dimen/dp_18"
android:textStyle="bold"
tools:text="和而我一起嗨" />
<View
android:layout_width="1dp"
android:layout_height="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@color/color_999999" />
<TextView
android:id="@+id/tv_sub_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_5"
android:textColor="@color/color_999999"
android:textSize="@dimen/dp_13"
tools:text="k歌是一种生活方式" />
<View
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_weight="1" />
<TextView
android:id="@+id/tv_refresh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/home_refresh"
android:textColor="@color/color_999999"
android:textSize="@dimen/dp_13"
android:layout_marginRight="5dp" />
<ImageView
android:id="@+id/iv_refresh_arrow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_home_block_refresh" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_15"
android:overScrollMode="never" />
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dp_15" />
</LinearLayout>

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<com.yizhuan.erban.home.view.HomeConfigModule xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/home_config_module"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</com.yizhuan.erban.home.view.HomeConfigModule>

View File

@@ -18,8 +18,7 @@ import com.yizhuan.erban.base.BaseFragment;
import com.yizhuan.erban.common.widget.DragLayout; import com.yizhuan.erban.common.widget.DragLayout;
import com.yizhuan.erban.community.publish.view.PublishActivity; import com.yizhuan.erban.community.publish.view.PublishActivity;
import com.yizhuan.erban.home.adapter.TopMagicIndicatorAdapter; import com.yizhuan.erban.home.adapter.TopMagicIndicatorAdapter;
import com.yizhuan.erban.home.fragment.CommunityNoticeAct; import com.yizhuan.erban.home.activity.CommunityNoticeAct;
import com.yizhuan.erban.home.fragment.FindTabFragment;
import com.yizhuan.erban.ui.widget.OnPageSelectedListener; import com.yizhuan.erban.ui.widget.OnPageSelectedListener;
import com.yizhuan.erban.ui.widget.magicindicator.MagicIndicator; import com.yizhuan.erban.ui.widget.magicindicator.MagicIndicator;
import com.yizhuan.erban.ui.widget.magicindicator.ViewPagerHelper; import com.yizhuan.erban.ui.widget.magicindicator.ViewPagerHelper;

View File

@@ -1,7 +0,0 @@
package com.yizhuan.xchat_android_core.constant;
public class SharePreferenceKey {
/**是否显示首页的遮罩*/
public static final String KEY_SHOW_HOME_COVER = "SHOW_HOME_COVER";
}

View File

@@ -1,53 +0,0 @@
package com.yizhuan.xchat_android_core.home;
import com.yizhuan.xchat_android_core.home.bean.TabInfo;
import com.yizhuan.xchat_android_library.coremanager.IBaseCore;
import java.util.List;
/**
* 主页接口逻辑处理
* Created by zhouxiangfeng on 2017/5/17.
*/
public interface IHomeCore extends IBaseCore {
//全局数据--------------------------
List<TabInfo> getMainTabInfos();
void setMainTabInfos(List<TabInfo> tabInfoList);
//接口数据------------------------------
void getHomeData(int page, int pageSize);
void getLightChatData(int tabType);
void getHotData(int tabType);
void getHomePartyData(int tabType);
void commitFeedback(long uid, String feedbackDesc, String contact);
void getHomeBanner();
/** 获取首页排行数据 */
void getRankingData();
/** 获取首页tab数据 */
void getMainTabData();
/**
* 获取tab下的数据
*
* @param tagId tab的id
* @param pageNum 当前页数
* @param pageSize 页的总数
*/
void getMainDataByTab(int tagId, int pageNum, int pageSize);
/**
* 获取发现页数据
* @param udi
*/
void loadFindPage(String udi);
}

View File

@@ -1,75 +0,0 @@
package com.yizhuan.xchat_android_core.home;
import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
import com.yizhuan.xchat_android_core.home.bean.FindInfo;
import com.yizhuan.xchat_android_core.home.bean.HomeRoom;
import com.yizhuan.xchat_android_core.home.bean.HomeRoomList;
import com.yizhuan.xchat_android_library.coremanager.ICoreClient;
import java.util.List;
/**
*
* @author zhouxiangfeng
* @date 2017/5/17
*/
public interface IHomeCoreClient extends ICoreClient {
String METHOD_ON_GET_HOME_DATA = "onGetHomeData";
String METHOD_GET_HOME_LIST_ERROR = "onGetHomeListFail";
String METHOD_ON_GET_DATA_BY_TAB = "onGetHomeDataByTab";
String METHOD_ON_GET_DATA_BY_TAB_ERROR = "onGetHomeDataByTabFail";
public static final String METHOD_ON_GET_HOT_DATA = "onGetHotData";
public static final String METHOD_ON_GET_HOT_DATA_FAIL = "onGetHotDataFail";
public static final String METHOD_ON_GET_LIGHT_CHAT_DATA = "onGetLightChatData";
public static final String METHOD_ON_GET_LIGHT_CHAT_DATA_FAIL = "onGetLightChatDataFail";
public static final String METHOD_ON_GET_HOME_PARTY_DATA = "onGetHomePartyData";
public static final String METHOD_ON_GET_HOME_PARTY_DATA_FAIL = "onGetHomePartyDataFail";
public static final String METHOD_ON_COMMIT_BACK = "onCommitFeedback";
public static final String METHOD_ON_COMMIT_BACK_FAIL = "onCommitFeedbackFail";
public static final String METHOD_ON_GET_BANNER_LIST = "onGetBannerList";
public static final String METHOD_ON_GET_BANNER_LIST_FAIL = "onGetBannerListFail";
String METHOD_ON_GET_HOME_RANKING_LIST = "onGetHomeRankingList";
String METHOD_ON_GET_HOME_RANKING_LIST_ERROR = "onGetHomeRankingListFail";
String METHOD_ON_GET_HOME_TAB_LIST = "onGetHomeTabList";
String METHOD_ON_GET_HOME_TAB_LIST_ERROR = "onGetHomeTabListFail";
public void onGetHomeData(List<HomeRoom> homeDataList);
public void onGetHomeListFail(String error);
public void onGetHotData(HomeRoomList homeRoomList);
public void onGetHotDataFail(String error);
public void onGetLightChatData(HomeRoomList homeRoomList);
public void onGetLightChatDataFail(String error);
public void onGetHomePartyData(HomeRoomList homeRoomList);
public void onGetHomePartyDataFail(String error);
void onGetBannerList(List<BannerInfo> bannerInfoList);
void onGetBannerListFail();
void onCommitFeedback();
void onCommitFeedbackFail(String error);
String METHOD_ON_LOAD_FIND_PAGE_DATA = "onLoadFindPageData";
void onLoadFindPageData(FindInfo findInfo);
String METHOD_ON_LOAD_FIND_PAGE_DATA_FAIL = "onLoadFindPageDataFail";
void onLoadFindPageDataFail(String error);
}

View File

@@ -7,7 +7,10 @@ import java.util.List;
public interface IHomeTabMapView extends IMvpBaseView { public interface IHomeTabMapView extends IMvpBaseView {
void homeTabMapSuccess(List<HomeTabMapInfo> list); void homeTabMapSuccess(List<HomeTabMapInfo> list);
void homeTabMapFails(String error); void homeTabMapFails(String error);
void homeTabMapLoadMoreSuccess(List<HomeTabMapInfo> list); void homeTabMapLoadMoreSuccess(List<HomeTabMapInfo> list);
void homeTabMapLoadMoreFails(String error); void homeTabMapLoadMoreFails(String error);
} }

View File

@@ -1,57 +0,0 @@
package com.yizhuan.xchat_android_core.home.bean;
import android.os.Parcel;
import android.os.Parcelable;
import java.io.Serializable;
import java.util.List;
import lombok.Data;
/**
* @author jack
* @Description
* @Date 2018/4/17
*/
@Data
public class CategoryInfo implements Parcelable,Serializable {
private String icon;
private String title;
private List<TabInfo> tabInfos;
public CategoryInfo() {
}
protected CategoryInfo(Parcel in) {
icon = in.readString();
title = in.readString();
tabInfos = in.createTypedArrayList(TabInfo.CREATOR);
}
public static final Creator<CategoryInfo> CREATOR = new Creator<CategoryInfo>() {
@Override
public CategoryInfo createFromParcel(Parcel in) {
return new CategoryInfo(in);
}
@Override
public CategoryInfo[] newArray(int size) {
return new CategoryInfo[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(icon);
dest.writeString(title);
dest.writeTypedList(tabInfos);
}
}

View File

@@ -1,17 +0,0 @@
package com.yizhuan.xchat_android_core.home.bean;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
/**
* @author jack
* @Description
* @Date 2018/11/15
*/
@Data
public class ClassifiedRoomInfo {
private List<HomeRoom> rooms;
private ArrayList<BannerInfo> banners;
}

View File

@@ -1,68 +0,0 @@
package com.yizhuan.xchat_android_core.home.bean;
import lombok.Data;
/**
* @author jack
* @Description
* @Date 2018/5/24
*/
@Data
public class FindEntranceInfo {
public final static int TYPE_H5 = 1;
public final static int TYPE_ROOM = 2;
public final static int TYPE_GAME = 3;
public final static int TYPE_DECORATION = 4;
/**
* 如果type=5表示转到{@link com.yizhuan.xchat_android_core.im.custom.bean.RouterType} 处理
*/
public final static int TYPE_TO_ROUTERTYPE = 5;
/**
* 签到入口
*/
public final static int ACTIVITYTYPE_SIGN_IN = 1;
/**
* 任务入口
*/
public final static int ACTIVITYTYPE_TASK = 2;
private int id;
private String pic;
private int type;//'跳转类型1是链接 2是房间 3是游戏 4是装扮商城',
private String param;
//start**********以下3.2.4之后接入
/**
* {@link com.yizhuan.xchat_android_core.im.custom.bean.RouterType}
*/
private int routerType;//3.2.4之后接入优先获取旧版的type得不到结果再处理routerType
private String routerValue;
/**
* 今日未完成的任务数量,任务和签到的时候用到
*/
private int missionNum;
/**
* 活动类型1签到2任务
*/
private int activityType;
/**
* 今日是否已经签到
*/
private boolean signStatus;
/**
* 小图
*/
private String minPic;
/**
* 名称
*/
private String name;
//end********
}

View File

@@ -1,24 +0,0 @@
package com.yizhuan.xchat_android_core.home.bean;
import com.yizhuan.xchat_android_core.family.bean.FamilyInfo;
import java.util.List;
import lombok.Data;
/**
* @author jack
* @Description
* @Date 2018/5/31
*/
@Data
public class FindInfo {
private List<FindEntranceInfo> banners;
private FamilyInfo family;
/**
* 发现也banner
*/
private List<BannerInfo> bannerVos;
private List<TopMessage> topLineVos;
}

View File

@@ -1,554 +0,0 @@
package com.yizhuan.xchat_android_core.home.bean;
import java.util.List;
public class GameHomeInfo {
private List<RoomVosBean> roomVos;
public List<RoomVosBean> getRoomVos() {
return roomVos;
}
public void setRoomVos(List<RoomVosBean> roomVos) {
this.roomVos = roomVos;
}
public static class RoomVosBean {
/**
* data : [{"uid":902385,"officeUser":1,"roomId":59451609,"title":"神啊救救我啊的房间","type":3,"meetingName":"5521f0cd18c142cdacb64b4914d164af","valid":true,"operatorStatus":1,"avatar":"https://image.zhongjialx.com/picture_1552544625116.jpg?imageslim","roomDesc":"","backPic":"","openTime":"Mar 20, 2019 5:21:48 PM","onlineNum":0,"abChannelType":1,"gender":2,"nick":"神啊救救我啊","erbanNo":9090518,"roomPwd":"","roomTag":"聊天","calcSumDataIndex":0,"tagId":8,"tagPict":"https://image.zhongjialx.com/new_tag_%E8%81%8A%E5%A4%A9@3x.png","recomSeq":0,"badge":"https://image.zhongjialx.com/Fs-YL5F0qpA2bZbmRcwQInh12NXg?imageslim","isPermitRoom":1,"isRecom":0,"count":0,"hasAnimationEffect":true,"audioQuality":1,"isCloseScreen":false,"hasDragonGame":false,"hasKTVPriv":true,"isOpenKTV":false,"isOpenGame":false,"roomModeType":3,"limitType":"lock","roomGame":{"roomId":59451609,"uid":902385,"startUid":0,"gameId":"","gameName":"","status":2,"createTime":"Mar 19, 2019 10:59:43 AM","updateTime":"Mar 20, 2019 11:01:57 AM"},"isPureMode":false,"isExceptionClose":false}]
* title : 102
* type : 3
* moduleId : 42
* seqNo : 1
*/
private String title;
private int type;
private int moduleId;
private int seqNo;
private List<DataBean> data;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public int getModuleId() {
return moduleId;
}
public void setModuleId(int moduleId) {
this.moduleId = moduleId;
}
public int getSeqNo() {
return seqNo;
}
public void setSeqNo(int seqNo) {
this.seqNo = seqNo;
}
public List<DataBean> getData() {
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
public static class DataBean {
/**
* uid : 902385
* officeUser : 1
* roomId : 59451609
* title : 神啊救救我啊的房间
* type : 3
* meetingName : 5521f0cd18c142cdacb64b4914d164af
* valid : true
* operatorStatus : 1
* avatar : https://image.zhongjialx.com/picture_1552544625116.jpg?imageslim
* roomDesc :
* backPic :
* openTime : Mar 20, 2019 5:21:48 PM
* onlineNum : 0
* abChannelType : 1
* gender : 2
* nick : 神啊救救我啊
* erbanNo : 9090518
* roomPwd :
* roomTag : 聊天
* calcSumDataIndex : 0
* tagId : 8
* tagPict : https://image.zhongjialx.com/new_tag_%E8%81%8A%E5%A4%A9@3x.png
* recomSeq : 0
* badge : https://image.zhongjialx.com/Fs-YL5F0qpA2bZbmRcwQInh12NXg?imageslim
* isPermitRoom : 1
* isRecom : 0
* count : 0
* hasAnimationEffect : true
* audioQuality : 1
* isCloseScreen : false
* hasDragonGame : false
* hasKTVPriv : true
* isOpenKTV : false
* isOpenGame : false
* roomModeType : 3
* limitType : lock
* roomGame : {"roomId":59451609,"uid":902385,"startUid":0,"gameId":"","gameName":"","status":2,"createTime":"Mar 19, 2019 10:59:43 AM","updateTime":"Mar 20, 2019 11:01:57 AM"}
* isPureMode : false
* isExceptionClose : false
*/
private int uid;
private int officeUser;
private int roomId;
private String title;
private int type;
private String meetingName;
private boolean valid;
private int operatorStatus;
private String avatar;
private String roomDesc;
private String backPic;
private String openTime;
private int onlineNum;
private int abChannelType;
private int gender;
private String nick;
private int erbanNo;
private String roomPwd;
private String roomTag;
private int calcSumDataIndex;
private int tagId;
private String tagPict;
private int recomSeq;
private String badge;
private int isPermitRoom;
private int isRecom;
private int count;
private boolean hasAnimationEffect;
private int audioQuality;
private boolean isCloseScreen;
private boolean hasDragonGame;
private boolean hasKTVPriv;
private boolean isOpenKTV;
private boolean isOpenGame;
private int roomModeType;
private String limitType;
private RoomGameBean roomGame;
private boolean isPureMode;
private boolean isExceptionClose;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public int getOfficeUser() {
return officeUser;
}
public void setOfficeUser(int officeUser) {
this.officeUser = officeUser;
}
public int getRoomId() {
return roomId;
}
public void setRoomId(int roomId) {
this.roomId = roomId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getMeetingName() {
return meetingName;
}
public void setMeetingName(String meetingName) {
this.meetingName = meetingName;
}
public boolean isValid() {
return valid;
}
public void setValid(boolean valid) {
this.valid = valid;
}
public int getOperatorStatus() {
return operatorStatus;
}
public void setOperatorStatus(int operatorStatus) {
this.operatorStatus = operatorStatus;
}
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
public String getRoomDesc() {
return roomDesc;
}
public void setRoomDesc(String roomDesc) {
this.roomDesc = roomDesc;
}
public String getBackPic() {
return backPic;
}
public void setBackPic(String backPic) {
this.backPic = backPic;
}
public String getOpenTime() {
return openTime;
}
public void setOpenTime(String openTime) {
this.openTime = openTime;
}
public int getOnlineNum() {
return onlineNum;
}
public void setOnlineNum(int onlineNum) {
this.onlineNum = onlineNum;
}
public int getAbChannelType() {
return abChannelType;
}
public void setAbChannelType(int abChannelType) {
this.abChannelType = abChannelType;
}
public int getGender() {
return gender;
}
public void setGender(int gender) {
this.gender = gender;
}
public String getNick() {
return nick;
}
public void setNick(String nick) {
this.nick = nick;
}
public int getErbanNo() {
return erbanNo;
}
public void setErbanNo(int erbanNo) {
this.erbanNo = erbanNo;
}
public String getRoomPwd() {
return roomPwd;
}
public void setRoomPwd(String roomPwd) {
this.roomPwd = roomPwd;
}
public String getRoomTag() {
return roomTag;
}
public void setRoomTag(String roomTag) {
this.roomTag = roomTag;
}
public int getCalcSumDataIndex() {
return calcSumDataIndex;
}
public void setCalcSumDataIndex(int calcSumDataIndex) {
this.calcSumDataIndex = calcSumDataIndex;
}
public int getTagId() {
return tagId;
}
public void setTagId(int tagId) {
this.tagId = tagId;
}
public String getTagPict() {
return tagPict;
}
public void setTagPict(String tagPict) {
this.tagPict = tagPict;
}
public int getRecomSeq() {
return recomSeq;
}
public void setRecomSeq(int recomSeq) {
this.recomSeq = recomSeq;
}
public String getBadge() {
return badge;
}
public void setBadge(String badge) {
this.badge = badge;
}
public int getIsPermitRoom() {
return isPermitRoom;
}
public void setIsPermitRoom(int isPermitRoom) {
this.isPermitRoom = isPermitRoom;
}
public int getIsRecom() {
return isRecom;
}
public void setIsRecom(int isRecom) {
this.isRecom = isRecom;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public boolean isHasAnimationEffect() {
return hasAnimationEffect;
}
public void setHasAnimationEffect(boolean hasAnimationEffect) {
this.hasAnimationEffect = hasAnimationEffect;
}
public int getAudioQuality() {
return audioQuality;
}
public void setAudioQuality(int audioQuality) {
this.audioQuality = audioQuality;
}
public boolean isIsCloseScreen() {
return isCloseScreen;
}
public void setIsCloseScreen(boolean isCloseScreen) {
this.isCloseScreen = isCloseScreen;
}
public boolean isHasDragonGame() {
return hasDragonGame;
}
public void setHasDragonGame(boolean hasDragonGame) {
this.hasDragonGame = hasDragonGame;
}
public boolean isHasKTVPriv() {
return hasKTVPriv;
}
public void setHasKTVPriv(boolean hasKTVPriv) {
this.hasKTVPriv = hasKTVPriv;
}
public boolean isIsOpenKTV() {
return isOpenKTV;
}
public void setIsOpenKTV(boolean isOpenKTV) {
this.isOpenKTV = isOpenKTV;
}
public boolean isIsOpenGame() {
return isOpenGame;
}
public void setIsOpenGame(boolean isOpenGame) {
this.isOpenGame = isOpenGame;
}
public int getRoomModeType() {
return roomModeType;
}
public void setRoomModeType(int roomModeType) {
this.roomModeType = roomModeType;
}
public String getLimitType() {
return limitType;
}
public void setLimitType(String limitType) {
this.limitType = limitType;
}
public RoomGameBean getRoomGame() {
return roomGame;
}
public void setRoomGame(RoomGameBean roomGame) {
this.roomGame = roomGame;
}
public boolean isIsPureMode() {
return isPureMode;
}
public void setIsPureMode(boolean isPureMode) {
this.isPureMode = isPureMode;
}
public boolean isIsExceptionClose() {
return isExceptionClose;
}
public void setIsExceptionClose(boolean isExceptionClose) {
this.isExceptionClose = isExceptionClose;
}
public static class RoomGameBean {
/**
* roomId : 59451609
* uid : 902385
* startUid : 0
* gameId :
* gameName :
* status : 2
* createTime : Mar 19, 2019 10:59:43 AM
* updateTime : Mar 20, 2019 11:01:57 AM
*/
private int roomId;
private int uid;
private int startUid;
private String gameId;
private String gameName;
private int status;
private String createTime;
private String updateTime;
public int getRoomId() {
return roomId;
}
public void setRoomId(int roomId) {
this.roomId = roomId;
}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public int getStartUid() {
return startUid;
}
public void setStartUid(int startUid) {
this.startUid = startUid;
}
public String getGameId() {
return gameId;
}
public void setGameId(String gameId) {
this.gameId = gameId;
}
public String getGameName() {
return gameName;
}
public void setGameName(String gameName) {
this.gameName = gameName;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getUpdateTime() {
return updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
}
}
}
}

View File

@@ -1,12 +0,0 @@
package com.yizhuan.xchat_android_core.home.bean;
import java.util.List;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
public class HomeDynamicResult {
List<HomeDynamicInfo> data;
}

Some files were not shown because too many files have changed in this diff Show More