From 2b31767a809515e05d307fe7273d0d82c6351aff Mon Sep 17 00:00:00 2001 From: oujunhui <313127320@qq.com> Date: Mon, 27 Apr 2020 17:46:30 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yizhuan/erban/MainActivity.java | 2 +- .../home/activity/HomeMoreRoomActivity.java | 14 +- .../home/adapter/HomeConcernsAdapter.java | 17 +- .../home/adapter/HomeRoomFragmentAdapter.java | 69 ++--- .../adapter/MainMagicIndicatorAdapter.java | 40 ++- .../erban/home/bean/HomeTabMapInfo.java | 17 +- .../erban/home/fragment/GameHomeFragment.java | 272 +++++++----------- .../home/fragment/HomeDynamicFragment.java | 6 +- .../home/fragment/HomeTabHomeFragment.java | 31 +- .../home/fragment/HomeTabMapFragment.java | 21 +- .../erban/home/fragment/MainFragment.java | 11 + .../erban/home/fragment/MeFragment.java | 11 + .../home/presenter/MainFragmentPresenter.java | 72 +++-- .../erban/home/view/IMainFragmentView.java | 15 + .../main/res/drawable/bg_living_my_room.xml | 11 + app/src/main/res/layout/activity_charge.xml | 8 + .../res/layout/activity_home_more_room.xml | 2 +- app/src/main/res/layout/activity_main.xml | 2 +- .../main/res/layout/fragment_game_home.xml | 188 ++++++------ .../main/res/layout/item_erban_grid_empty.xml | 14 +- .../main/res/layout/item_home_concerns.xml | 12 +- app/src/main/res/layout/item_home_tab_map.xml | 5 +- app/src/main/res/values/colors.xml | 1 + .../res/layout/fragment_home_dynamic.xml | 10 - 24 files changed, 487 insertions(+), 364 deletions(-) create mode 100644 app/src/main/res/drawable/bg_living_my_room.xml diff --git a/app/src/main/java/com/yizhuan/erban/MainActivity.java b/app/src/main/java/com/yizhuan/erban/MainActivity.java index 82333dec2..79b23352b 100644 --- a/app/src/main/java/com/yizhuan/erban/MainActivity.java +++ b/app/src/main/java/com/yizhuan/erban/MainActivity.java @@ -573,7 +573,7 @@ public class MainActivity extends BaseMvpActivity private void initMaterialView() { avatarLayout.setVisibility(View.GONE); - avatarImage.setOnClickListener(v -> { + avatarLayout.setOnClickListener(v -> { RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo; if (roomInfo != null) { if (AvRoomDataManager.get().isParty()) { diff --git a/app/src/main/java/com/yizhuan/erban/home/activity/HomeMoreRoomActivity.java b/app/src/main/java/com/yizhuan/erban/home/activity/HomeMoreRoomActivity.java index accd9bdab..39fd69a8c 100644 --- a/app/src/main/java/com/yizhuan/erban/home/activity/HomeMoreRoomActivity.java +++ b/app/src/main/java/com/yizhuan/erban/home/activity/HomeMoreRoomActivity.java @@ -73,9 +73,7 @@ public class HomeMoreRoomActivity extends BaseMvpActivity list = adapter.getData(); if (position >= 0 && position < list.size()) { -//// ImeUtil.hideIME(HomeMoreRoomActivity.this, tvSearch); HomeConcernsInfo record = list.get(position); -// if (record.isValid()) { -// list.remove(position); -// list.add(0, record); -// mFollowRoomsAdapter.setNewData(list); -// } AVRoomActivity.start(HomeMoreRoomActivity.this, record.getRoomUid()); } } @@ -173,14 +164,11 @@ public class HomeMoreRoomActivity extends BaseMvpActivity 首页热门adapter

* * @author Administrator * @date 2017/11/16 */ -public class HomeRoomFragmentAdapter extends BaseQuickAdapter { +public class HomeRoomFragmentAdapter extends BaseMultiItemQuickAdapter { private int mBadgeHeight; private Context mContext; /** * 校验跳转房间的频率 */ - public HomeRoomFragmentAdapter(Context context) { - super(R.layout.item_home_tab_map); + public HomeRoomFragmentAdapter(Context context, List data) { + super(data); + addItemType(HomeTabMapInfo.TYPE_NORMAL,R.layout.item_home_tab_map); + addItemType(HomeTabMapInfo.TYPE_EMPTY,R.layout.item_erban_grid_empty); this.mContext = context; mBadgeHeight = (int) context.getResources().getDimension(R.dimen.tag_height); @@ -45,24 +44,22 @@ public class HomeRoomFragmentAdapter extends BaseQuickAdapter mTitleList; + private boolean mIsShowIndicator; - public MainMagicIndicatorAdapter(Context context, List charSequences) { + public MainMagicIndicatorAdapter(Context context, List charSequences,boolean isShowIndicator) { this.mContext = context; this.mTitleList = charSequences; + this.mIsShowIndicator = isShowIndicator; } @Override @@ -31,9 +38,9 @@ public class MainMagicIndicatorAdapter extends CommonNavigatorAdapter { @Override public IPagerTitleView getTitleView(Context context, final int i) { ScaleTransitionPagerTitleView scaleTransitionPagerTitleView = new ScaleTransitionPagerTitleView(context, true, 8); - scaleTransitionPagerTitleView.setNormalColor(ContextCompat.getColor(mContext, R.color.color_white)); - scaleTransitionPagerTitleView.setSelectedColor(ContextCompat.getColor(mContext, R.color.color_white)); - scaleTransitionPagerTitleView.setMinScale(0.7f); + scaleTransitionPagerTitleView.setNormalColor(mIsShowIndicator?ContextCompat.getColor(mContext, R.color.color_white):ContextCompat.getColor(mContext, R.color.color_666666)); + scaleTransitionPagerTitleView.setSelectedColor(mIsShowIndicator?ContextCompat.getColor(mContext, R.color.color_white):ContextCompat.getColor(mContext, R.color.color_333333)); + scaleTransitionPagerTitleView.setMinScale(0.8f); scaleTransitionPagerTitleView.setTextSize(18); int padding = UIUtil.dip2px(context, 5); scaleTransitionPagerTitleView.setPadding(padding,0,padding,0); @@ -43,6 +50,10 @@ public class MainMagicIndicatorAdapter extends CommonNavigatorAdapter { if (mOnItemSelectListener != null) { mOnItemSelectListener.onItemSelect(i, scaleTransitionPagerTitleView); } + + if (mOnBottomItemSelectListener != null) { + mOnBottomItemSelectListener.onBottomItemSelect(i, scaleTransitionPagerTitleView); + } }); return scaleTransitionPagerTitleView; } @@ -50,7 +61,16 @@ public class MainMagicIndicatorAdapter extends CommonNavigatorAdapter { @Override public IPagerIndicator getIndicator(Context context) { - return null; + LinePagerIndicator indicator = new LinePagerIndicator(context); + indicator.setMode(LinePagerIndicator.MODE_EXACTLY); + indicator.setLineHeight(UIUtil.dip2px(mContext, 5)); + indicator.setRoundRadius(UIUtil.dip2px(mContext, 5)); + indicator.setLineWidth(UIUtil.dip2px(mContext, 9)); + indicator.setColors(context.getResources().getColor(R.color.white)); + FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); + lp.bottomMargin = 0; + indicator.setLayoutParams(lp); + return mIsShowIndicator?indicator:null; } private OnItemSelectListener mOnItemSelectListener; @@ -62,4 +82,14 @@ public class MainMagicIndicatorAdapter extends CommonNavigatorAdapter { public interface OnItemSelectListener { void onItemSelect(int position, TextView view); } + + private OnBottomItemSelectListener mOnBottomItemSelectListener; + + public void setOnBottomItemSelectListener(OnBottomItemSelectListener onBottomItemSelectListener) { + mOnBottomItemSelectListener = onBottomItemSelectListener; + } + + public interface OnBottomItemSelectListener { + void onBottomItemSelect(int position, TextView view); + } } diff --git a/app/src/main/java/com/yizhuan/erban/home/bean/HomeTabMapInfo.java b/app/src/main/java/com/yizhuan/erban/home/bean/HomeTabMapInfo.java index ebc89e01a..a0f7c9a34 100644 --- a/app/src/main/java/com/yizhuan/erban/home/bean/HomeTabMapInfo.java +++ b/app/src/main/java/com/yizhuan/erban/home/bean/HomeTabMapInfo.java @@ -1,6 +1,10 @@ package com.yizhuan.erban.home.bean; -public class HomeTabMapInfo { +import com.chad.library.adapter.base.entity.MultiItemEntity; + +import java.io.Serializable; + +public class HomeTabMapInfo implements MultiItemEntity, Serializable { /** * onlineNum : 1 @@ -17,6 +21,9 @@ public class HomeTabMapInfo { private String avatar; private int seq; private boolean isTop; + public static final int TYPE_EMPTY = 0; + public static final int TYPE_NORMAL = 1; + private int itemType=0; public int getOnlineNum() { return onlineNum; @@ -66,4 +73,12 @@ public class HomeTabMapInfo { this.isTop = isTop; } + public void setItemType(int itemType) { + this.itemType = itemType; + } + + @Override + public int getItemType() { + return itemType; + } } diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/GameHomeFragment.java b/app/src/main/java/com/yizhuan/erban/home/fragment/GameHomeFragment.java index c63de5d73..54f1dac6d 100644 --- a/app/src/main/java/com/yizhuan/erban/home/fragment/GameHomeFragment.java +++ b/app/src/main/java/com/yizhuan/erban/home/fragment/GameHomeFragment.java @@ -5,28 +5,19 @@ import android.annotation.SuppressLint; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.os.Bundle; import android.text.Spannable; -import android.text.SpannableString; import android.text.SpannableStringBuilder; -import android.text.Spanned; -import android.text.style.DynamicDrawableSpan; import android.text.style.ForegroundColorSpan; -import android.text.style.ImageSpan; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; -import android.widget.ArrayAdapter; -import android.widget.CheckBox; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; -import android.widget.ListView; -import android.widget.PopupWindow; import android.widget.TextView; import androidx.annotation.NonNull; @@ -35,7 +26,6 @@ import androidx.core.content.ContextCompat; import androidx.databinding.DataBindingUtil; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; import com.amap.api.location.AMapLocation; import com.amap.api.location.AMapLocationClient; @@ -44,6 +34,8 @@ import com.amap.api.location.AMapLocationListener; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; import com.bumptech.glide.load.resource.bitmap.BitmapTransformation; import com.bumptech.glide.request.RequestOptions; +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.coorchice.library.utils.LogUtils; import com.google.android.material.appbar.AppBarLayout; import com.jude.rollviewpager.Util; import com.jude.rollviewpager.hintview.ColorPointHintView; @@ -57,42 +49,36 @@ import com.yizhuan.erban.avroom.activity.AVRoomActivity; import com.yizhuan.erban.avroom.adapter.RoomContributeListAdapter; import com.yizhuan.erban.avroom.game.MatchActivity; import com.yizhuan.erban.base.BaseMvpFragment; -import com.yizhuan.erban.base.list.BaseViewHolder; -import com.yizhuan.erban.base.list.CommonAdapter; import com.yizhuan.erban.bindadapter.BaseAdapter; import com.yizhuan.erban.common.widget.dialog.DialogManager; import com.yizhuan.erban.databinding.FragmentGameHomeBinding; import com.yizhuan.erban.home.activity.HomeMoreRoomActivity; import com.yizhuan.erban.home.adapter.BannerAdapter; +import com.yizhuan.erban.home.adapter.HomeConcernsAdapter; import com.yizhuan.erban.home.adapter.MainMagicIndicatorAdapter; import com.yizhuan.erban.home.bean.HomeTagInfo; import com.yizhuan.erban.home.dialog.CreateRoomDialog; import com.yizhuan.erban.home.event.RefreshHomeDataEvent; -import com.yizhuan.erban.home.model.HomeModel; import com.yizhuan.erban.home.presenter.MainFragmentPresenter; import com.yizhuan.erban.home.view.IMainFragmentView; import com.yizhuan.erban.location.LocationManager; import com.yizhuan.erban.location.LocationUploadEvent; import com.yizhuan.erban.radish.signin.SignInActivity; -import com.yizhuan.erban.ui.indicator_impl.IndicatorHelper; import com.yizhuan.erban.ui.search.SearchActivity; -import com.yizhuan.erban.ui.utils.ImageLoadUtils; import com.yizhuan.erban.ui.webview.CommonWebViewActivity; import com.yizhuan.erban.ui.widget.OnPageSelectedListener; import com.yizhuan.erban.ui.widget.higuide.TuTuGuideHelper; 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.utils.CommonJumpHelper; +import com.yizhuan.erban.ui.widget.recyclerview.decoration.VerticalDecoration; import com.yizhuan.xchat_android_core.DemoCache; import com.yizhuan.xchat_android_core.UriProvider; import com.yizhuan.xchat_android_core.auth.AuthModel; import com.yizhuan.xchat_android_core.certification.CertificationModel; -import com.yizhuan.xchat_android_core.family.bean.HomeBannerInfo; -import com.yizhuan.xchat_android_core.family.bean.HomeTitleInfo; 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.TagListInfo; -import com.yizhuan.xchat_android_core.im.custom.bean.RouterType; import com.yizhuan.xchat_android_core.manager.AvRoomDataManager; import com.yizhuan.xchat_android_core.market_verify.MarketVerifyModel; import com.yizhuan.xchat_android_core.room.bean.RoomInfo; @@ -108,8 +94,8 @@ import com.yizhuan.xchat_android_core.utils.SharedPreferenceUtils; import com.yizhuan.xchat_android_core.utils.net.RxHelper; import com.yizhuan.xchat_android_library.base.factory.CreatePresenter; import com.yizhuan.xchat_android_library.net.rxnet.callback.CallBack; -import com.yizhuan.xchat_android_library.utils.JavaUtil; import com.yizhuan.xchat_android_library.utils.ListUtils; +import com.yizhuan.xchat_android_library.utils.SizeUtils; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; @@ -119,7 +105,6 @@ import java.security.MessageDigest; import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import java.util.Objects; import io.reactivex.Observable; import io.reactivex.ObservableOnSubscribe; @@ -131,16 +116,13 @@ import io.reactivex.schedulers.Schedulers; import static com.yizhuan.xchat_android_core.certification.CertificationModel.CER_TYPE_FORCE; import static com.yizhuan.xchat_android_core.certification.CertificationModel.CER_TYPE_GUIDE; import static com.yizhuan.xchat_android_core.certification.CertificationModel.CER_TYPE_NONE; -import static com.yizhuan.xchat_android_core.home.bean.BannerInfo.SKIP_TYPE_ROUTER; -import static com.yizhuan.xchat_android_core.home.bean.BannerInfo.SKIP_TYP_APP; -import static com.yizhuan.xchat_android_core.home.bean.BannerInfo.SKIP_TYP_H5; /** * 66星球首页 */ @CreatePresenter(MainFragmentPresenter.class) public class GameHomeFragment extends BaseMvpFragment - implements IMainFragmentView, View.OnClickListener, MainMagicIndicatorAdapter.OnItemSelectListener { + implements IMainFragmentView, View.OnClickListener, MainMagicIndicatorAdapter.OnItemSelectListener, MainMagicIndicatorAdapter.OnBottomItemSelectListener { public static final String TAG = "GameHomeFragment"; private FragmentGameHomeBinding mBinding; @@ -166,6 +148,7 @@ public class GameHomeFragment extends BaseMvpFragment mFragments; + private List mFragmentsBottom; private volatile boolean isUserLogin; /** @@ -182,6 +165,8 @@ public class GameHomeFragment extends BaseMvpFragment { +// if (verticalOffset == 0) +// { +// LogUtils.e("展开状态"); +// mBinding.collapsingLayout.setContentScrim(null); +// } +// else if (Math.abs(verticalOffset) >= appBarLayout.getTotalScrollRange()) +// { +// LogUtils.e("折叠状态"); +// mBinding.collapsingLayout.setContentScrimResource(R.color.color_7154EE); +// } +// else +// { +// LogUtils.e("中间状态"); +// mBinding.collapsingLayout.setContentScrimResource(R.color.color_7154EE); +// } +// }); } private void initRefreshView() { - mBinding.appBar.addOnOffsetChangedListener((AppBarLayout.OnOffsetChangedListener) (appBarLayout, i) -> { + mBinding.appBar.addOnOffsetChangedListener((appBarLayout, i) -> { if (i >= 0) { mBinding.refreshLayout.setEnabled(true); //当滑动到顶部的时候开启 } else { @@ -273,6 +277,7 @@ public class GameHomeFragment extends BaseMvpFragment tagList = new ArrayList<>(); - List fragmentList = new ArrayList<>(); + mFragmentsBottom = new ArrayList<>(); tagList.add(getResources().getString(R.string.home_tab_dynamic)); tagList.add(getResources().getString(R.string.home_tab_caht)); - fragmentList.add(HomeDynamicFragment.newInstance()); - fragmentList.add(HomePlayFragment.newInstance()); + mFragmentsBottom.add(HomeDynamicFragment.newInstance()); + mFragmentsBottom.add(HomePlayFragment.newInstance()); //init viewpager - mBinding.viewPagerBottom.setAdapter(new RoomContributeListAdapter(getChildFragmentManager(), fragmentList)); - +// mBinding.viewPagerBottom.setAdapter(new RoomContributeListAdapter(getChildFragmentManager(), fragmentList)); +// +// mBinding.viewPagerBottom.addOnPageChangeListener(new OnPageSelectedListener() { +// @Override +// public void onPageSelected(int position) { +// StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_SQUARE_RECOMMEND_FOLLOW, +// "切换推荐和关注tab-区分-" + ((position == 0) ? "动态" : "聊天交友")); +// } +// }); + CommonNavigator commonNavigator = new CommonNavigator(getContext()); + MainMagicIndicatorAdapter magicIndicatorAdapter = new MainMagicIndicatorAdapter(getContext(), tagList,false); + magicIndicatorAdapter.setOnBottomItemSelectListener(this); + commonNavigator.setAdapter(magicIndicatorAdapter); + mBinding.magicIndicatorBottom.setNavigator(commonNavigator); + commonNavigator.getTitleContainer().setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + mBinding.viewPagerBottom.setOffscreenPageLimit(5); + mBinding.viewPagerBottom.setAdapter(new RoomContributeListAdapter(getChildFragmentManager(), mFragmentsBottom)); mBinding.viewPagerBottom.addOnPageChangeListener(new OnPageSelectedListener() { @Override public void onPageSelected(int position) { - StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_SQUARE_RECOMMEND_FOLLOW, - "切换推荐和关注tab-区分-" + ((position == 0) ? "动态" : "聊天交友")); + } }); - - CommonNavigator commonNavigator = new CommonNavigator(getContext()); - MainMagicIndicatorAdapter magicIndicatorAdapter = new MainMagicIndicatorAdapter(getContext(), tagList); - magicIndicatorAdapter.setOnItemSelectListener(this); - - commonNavigator.setAdapter(magicIndicatorAdapter); - mBinding.magicIndicatorBottom.setNavigator(commonNavigator); - //init indicator - IndicatorHelper.handle(getContext(), mBinding.viewPagerBottom, mBinding.magicIndicatorBottom, tagList); + ViewPagerHelper.bind(mBinding.magicIndicatorBottom, mBinding.viewPagerBottom); } @@ -556,6 +566,46 @@ public class GameHomeFragment extends BaseMvpFragment list) { + if (list != null && list.size() > 0) { + mBinding.rvFollowRoom.setVisibility(View.VISIBLE); + mFollowRoomsAdapter.setNewData(list); + } else { + mBinding.rvFollowRoom.setVisibility(View.GONE); + } + } + + @Override + public void getFollowRoomFail() { + + } + + /** + * 顶部关注房间 + */ + private void initRoomConcern() { + mFollowRoomsAdapter = new HomeConcernsAdapter(null,mContext); + mBinding.rvFollowRoom.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false)); + mBinding.rvFollowRoom.addItemDecoration(new VerticalDecoration(SizeUtils.dp2px(mContext, 10), false, true)); + mFollowRoomsAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { + @Override + public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { + StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_SEARCH_RECENT_ENTER_ROOM, "最近进房记录"); + List list = adapter.getData(); + if (position >= 0 && position < list.size()) { + HomeConcernsInfo record = list.get(position); + AVRoomActivity.start(mContext, record.getRoomUid()); + } + } + }); + mBinding.rvFollowRoom.setAdapter(mFollowRoomsAdapter); + } + + private void getHomeConcern(){ + getMvpPresenter().getHomeConcerns(); + } + @Override public void titleListSuccess(List tagListInfoList) { @@ -566,11 +616,13 @@ public class GameHomeFragment extends BaseMvpFragment convert(@NonNull List homeTitleInfos) { - List list = new ArrayList<>(homeTitleInfos.size()); - for (HomeTitleInfo homeTitleInfo : homeTitleInfos) { - list.add(homeTitleInfo.getName()); - } - return list; } /** - * 显示下拉框 - * - * @param opts 下拉列表 + * 底部动态聊天交友 + * @param position + * @param view */ - private void showPopup(List opts, TextView targetView, int itemPosition) { - List labels = convert(opts); - - int currentPosition = 0; - if (targetView.getTag() == null) { - for (int i = 0; i < opts.size(); i++) { - HomeTitleInfo item = opts.get(i); - if (targetView.getText().toString().startsWith(item.getName())) { - currentPosition = i; - break; - } - } - } else { - currentPosition = (Integer) targetView.getTag(); - } - - View view = getLayoutInflater().inflate(R.layout.layout_home_pop_list, null); - PopupWindow popupWindow = new PopupWindow(view, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true); - popupWindow.setOutsideTouchable(true); - popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - popupWindow.setFocusable(true); - ListView listView = popupWindow.getContentView().findViewById(R.id.listView); - - - int finalCurrentPosition = currentPosition; - listView.setAdapter(new ArrayAdapter(getContext(), R.layout.item_pop_list, labels) { - @NonNull - @Override - public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { - CheckBox tv = (CheckBox) super.getView(position, convertView, parent); - tv.setChecked(finalCurrentPosition == position); - tv.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - targetView.setText(labels.get(position)); - targetView.setTag(position); - popupWindow.dismiss(); - refreshFragment(itemPosition, String.valueOf(opts.get(position).getId()), opts.get(position).getName()); - opts.get(position).saveDefault(); - } - }); - return tv; - } - }); - - popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() { - @Override - public void onDismiss() { - setTabArrow(targetView, false); - backgroundAlpha(1.0f); - } - }); - popupWindow.showAsDropDown(targetView, ScreenUtil.dip2px(6), 0); - backgroundAlpha(0.6f); - setTabArrow(targetView, true); - } - - private void refreshFragment(int itemPosition, String type, String name) { - if (mFragments == null) { + @Override + public void onBottomItemSelect(int position, TextView view) { + if (mFragmentsBottom == null || mFragmentsBottom.isEmpty()) { return; } - Fragment fragment = mFragments.get(itemPosition); + Fragment fragment = mFragmentsBottom.get(position); if (fragment == null) { return; } - if (fragment instanceof RecommendationFragment) { - StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_HOME_GODDESS_OF_HARMONY, "首页-" + name); - ((RecommendationFragment) fragment).setTypeAndRefresh(type, name); - } - + mBinding.viewPagerBottom.setCurrentItem(position); } - private void setTabArrow(TextView tv, boolean isUp) { - String text = tv.getText().toString(); - SpannableString ss = getArrowSpannableString(isUp, text); - tv.setText(ss); - LogUtil.i("test", tv.getText().toString()); - } - - /** - * 转换成带箭头的文本 - */ - private SpannableString getArrowSpannableString(boolean isUp, String text) { - if (!text.endsWith("[arrow]")) { - text = text + " [arrow]"; - } - SpannableString ss = new SpannableString(text); - ss.setSpan(new ImageSpan(getContext(), isUp ? R.drawable.ic_home_arrow_up_black : R.drawable.ic_home_arrow_down_black, DynamicDrawableSpan.ALIGN_BASELINE), text.length() - "[arrow]".length(), text.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - return ss; - } @Override public void onGetFirstPageBannerFailed(String message) { @@ -731,14 +695,11 @@ public class GameHomeFragment extends BaseMvpFragment bannerList){ //审核中状态,去掉跳转房间banner if (MarketVerifyModel.get().isMarketChecking()) { diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeDynamicFragment.java b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeDynamicFragment.java index 0b96790f0..bfe057bcc 100644 --- a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeDynamicFragment.java +++ b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeDynamicFragment.java @@ -1,5 +1,6 @@ package com.yizhuan.erban.home.fragment; +import android.annotation.SuppressLint; import android.graphics.Rect; import android.os.Bundle; import androidx.annotation.Nullable; @@ -40,8 +41,6 @@ public class HomeDynamicFragment extends BaseFragment{ Unbinder unbinder; @BindView(R.id.recycler_view) RecyclerView recyclerView; -// @BindView(R.id.refresh_layout) -// SwipeRefreshLayout refreshLayout; private boolean isLoading = false; @@ -100,6 +99,7 @@ public class HomeDynamicFragment extends BaseFragment{ getHomeDynamic(); } + @SuppressLint("CheckResult") private void getHomeDynamic(){ HomeModel.get().getHomeDynamic().subscribe((serviceResult, throwable) -> { if (throwable != null) { @@ -118,6 +118,8 @@ public class HomeDynamicFragment extends BaseFragment{ }); } + + @Override public void onReloadData() { loadData(); diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabHomeFragment.java b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabHomeFragment.java index 652a6544d..bc4502734 100644 --- a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabHomeFragment.java +++ b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabHomeFragment.java @@ -15,6 +15,7 @@ import com.yizhuan.erban.R; import com.yizhuan.erban.base.BaseFragment; import com.yizhuan.erban.common.NoDataFragment; import com.yizhuan.erban.home.adapter.HomeRoomFragmentAdapter; +import com.yizhuan.erban.home.bean.HomeTabMapInfo; import com.yizhuan.erban.home.model.HomeModel; import com.yizhuan.xchat_android_core.home.bean.HomeItem; import com.yizhuan.xchat_android_core.utils.net.RxHelper; @@ -106,7 +107,7 @@ public class HomeTabHomeFragment extends BaseFragment { showNoData(); mHomeRoomAdapter.notifyDataSetChanged(); } - mHomeRoomAdapter.setNewData(serviceResult); + mHomeRoomAdapter.setNewData(getMultipleItemData(serviceResult)); mHomeRoomAdapter.notifyDataSetChanged(); } else { @@ -120,7 +121,7 @@ public class HomeTabHomeFragment extends BaseFragment { private void initRecyclerView() { recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); recyclerView.setItemAnimator(null); - mHomeRoomAdapter = new HomeRoomFragmentAdapter(getContext()); + mHomeRoomAdapter = new HomeRoomFragmentAdapter(getContext(),null); mHomeRoomAdapter.setEnableLoadMore(false); GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), ROWS); mHomeRoomAdapter.setEnableLoadMore(false); @@ -134,6 +135,32 @@ public class HomeTabHomeFragment extends BaseFragment { } + //重点转化方法啊, + /** + * 添加布局Itemtype + * @param itemList + * @return + */ + private List getMultipleItemData(List itemList) { + if (null==itemList||itemList.size()<=0){ + return null; + } + + final int ROOM_COUNT = 6; + final int ADD_COUNT = ROOM_COUNT - itemList.size(); + + for (int i = 0; i < ADD_COUNT; i++) { + HomeTabMapInfo info = new HomeTabMapInfo(); + info.setItemType(HomeTabMapInfo.TYPE_EMPTY); + itemList.add(info); + } + + for (int i = 0; i < itemList.size(); i++) { + itemList.get(i).setItemType(itemList.get(i).getRoomTitle() == null?HomeTabMapInfo.TYPE_EMPTY:HomeTabMapInfo.TYPE_NORMAL); + } + return itemList; + } + @Override public void initiate() { refreshData(); diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabMapFragment.java b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabMapFragment.java index 5f7766d86..bcda57401 100644 --- a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabMapFragment.java +++ b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabMapFragment.java @@ -12,7 +12,6 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import com.chad.library.adapter.base.BaseQuickAdapter; import com.yizhuan.erban.R; import com.yizhuan.erban.base.BaseMvpFragment; -import com.yizhuan.erban.community.publish.presenter.WorldChoosePresenter; import com.yizhuan.erban.home.adapter.HomeRoomFragmentAdapter; import com.yizhuan.erban.home.bean.HomeTabMapInfo; import com.yizhuan.erban.home.presenter.HomeTabMapPresenter; @@ -91,15 +90,16 @@ public class HomeTabMapFragment extends BaseMvpFragment getMultipleItemData(List itemList) { + if (null==itemList||itemList.size()<=0){ + return null; + } + + for (int i = 0; i < itemList.size(); i++) { + itemList.get(i).setItemType(HomeTabMapInfo.TYPE_NORMAL); + } + return itemList; + } + @Override public void homeTabMapFails(String error) { hideStatus(); diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/MainFragment.java b/app/src/main/java/com/yizhuan/erban/home/fragment/MainFragment.java index 07ca195e8..1a0be6c8a 100644 --- a/app/src/main/java/com/yizhuan/erban/home/fragment/MainFragment.java +++ b/app/src/main/java/com/yizhuan/erban/home/fragment/MainFragment.java @@ -35,6 +35,7 @@ import com.yizhuan.xchat_android_core.auth.AuthModel; import com.yizhuan.xchat_android_core.certification.CertificationModel; import com.yizhuan.xchat_android_core.family.bean.HomeBannerInfo; 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.TagListInfo; import com.yizhuan.xchat_android_core.manager.AvRoomDataManager; import com.yizhuan.xchat_android_core.market_verify.MarketVerifyModel; @@ -315,6 +316,16 @@ public class MainFragment extends BaseMvpFragment infos) { + + } + + @Override + public void getFollowRoomFail() { + + } + @Override public void titleListSuccess(List tagListInfoList) { showByMarketCheckingStatus(tagListInfoList); diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.java b/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.java index 2132153e6..efee303d2 100644 --- a/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.java +++ b/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.java @@ -39,6 +39,7 @@ import com.yizhuan.xchat_android_core.customer_server.CustomerServerModel; import com.yizhuan.xchat_android_core.decoration.headwear.bean.HeadWearInfo; import com.yizhuan.xchat_android_core.family.bean.HomeBannerInfo; 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.TagListInfo; import com.yizhuan.xchat_android_core.manager.AvRoomDataManager; import com.yizhuan.xchat_android_core.manager.IMNetEaseManager; @@ -647,6 +648,16 @@ public class MeFragment extends BaseMvpFragment infos) { + + } + + @Override + public void getFollowRoomFail() { + + } + @Override public void titleListSuccess(List tagListInfoList) { diff --git a/app/src/main/java/com/yizhuan/erban/home/presenter/MainFragmentPresenter.java b/app/src/main/java/com/yizhuan/erban/home/presenter/MainFragmentPresenter.java index 1921bc50b..b6a0ca331 100644 --- a/app/src/main/java/com/yizhuan/erban/home/presenter/MainFragmentPresenter.java +++ b/app/src/main/java/com/yizhuan/erban/home/presenter/MainFragmentPresenter.java @@ -5,6 +5,7 @@ import android.os.Bundle; import androidx.annotation.Nullable; import android.text.TextUtils; +import com.netease.nim.uikit.common.util.log.LogUtil; import com.yizhuan.erban.base.BaseMvpPresenter; import com.yizhuan.erban.home.bean.HomeTagInfo; import com.yizhuan.erban.home.view.IMainFragmentView; @@ -290,42 +291,56 @@ public class MainFragmentPresenter extends BaseMvpPresenter { * 获取首页banner */ public void getHomeBanner(String type) { - if (mDisposable != null && !mDisposable.isDisposed()) { - return; - } - mDisposable = com.yizhuan.erban.home.model.HomeModel.get() + com.yizhuan.erban.home.model.HomeModel.get() .getHomeBanner(type) - .compose(bindUntilEvent(PresenterEvent.DESTROY)) - .subscribe(new BiConsumer, Throwable>() { + .compose(bindToLifecycle()) + .subscribe(new SingleObserver>() { @Override - public void accept(List infos, Throwable throwable) throws Exception { - if (throwable == null) { + public void onSubscribe(Disposable d) { + + } + + @Override + public void onSuccess(List infos) { + IMainFragmentView iMainFragmentView = getMvpView(); + if (iMainFragmentView != null) getMvpView().onGetHomeBannerSuccess(infos); - } + + } + + @Override + public void onError(Throwable e) { + LogUtil.e(e.getMessage()); } }); - mCompositeDisposable.add(mDisposable); } /** - * 获取首页banner和tab + * 获取首页tag */ public void getHomeTag() { - if (mDisposable != null && !mDisposable.isDisposed()) { - return; - } - mDisposable = com.yizhuan.erban.home.model.HomeModel.get() + com.yizhuan.erban.home.model.HomeModel.get() .getHomeTag() - .compose(bindUntilEvent(PresenterEvent.DESTROY)) - .subscribe(new BiConsumer, Throwable>() { + .compose(bindToLifecycle()) + .subscribe(new SingleObserver>() { @Override - public void accept(List infos, Throwable throwable) throws Exception { - if (throwable == null) { + public void onSubscribe(Disposable d) { + + } + + @Override + public void onSuccess(List infos) { + IMainFragmentView iMainFragmentView = getMvpView(); + if (iMainFragmentView != null) getMvpView().onGetHomeTagSuccess(infos); - } + + } + + @Override + public void onError(Throwable e) { + LogUtil.e(e.getMessage()); } }); - mCompositeDisposable.add(mDisposable); } public void uploadAddress(long uid, String address, int adcode, double longitude, double latitude) { @@ -355,4 +370,19 @@ public class MainFragmentPresenter extends BaseMvpPresenter { }); } + @SuppressLint("CheckResult") + public void getHomeConcerns(){ + com.yizhuan.erban.home.model.HomeModel.get().getHomeConcerns().subscribe((result, throwable) -> { + if (throwable != null) { + if (mMvpView != null) { + mMvpView.getFollowRoomFail(); + } + } else { + if (mMvpView != null) { + mMvpView.getFollowRoomsSuccess(result); + } + } + }); + } + } diff --git a/app/src/main/java/com/yizhuan/erban/home/view/IMainFragmentView.java b/app/src/main/java/com/yizhuan/erban/home/view/IMainFragmentView.java index c3b5fe5bf..aa3ad0d10 100644 --- a/app/src/main/java/com/yizhuan/erban/home/view/IMainFragmentView.java +++ b/app/src/main/java/com/yizhuan/erban/home/view/IMainFragmentView.java @@ -3,6 +3,7 @@ package com.yizhuan.erban.home.view; import com.yizhuan.erban.home.bean.HomeTagInfo; import com.yizhuan.xchat_android_core.family.bean.HomeBannerInfo; 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.TagListInfo; import com.yizhuan.xchat_android_library.base.IMvpBaseView; import com.yizhuan.xchat_android_core.home.bean.HomeItem; @@ -27,6 +28,9 @@ public interface IMainFragmentView extends IMvpBaseView { void showByMarketCheckingStatus(List tagListInfoList); + void getFollowRoomsSuccess(List infos); + + void getFollowRoomFail(); /** * 假实现,用于在View销毁后 调用View方法导致空指针问题,的一种解决方案 @@ -43,6 +47,16 @@ public interface IMainFragmentView extends IMvpBaseView { } + @Override + public void getFollowRoomsSuccess(List infos) { + + } + + @Override + public void getFollowRoomFail() { + + } + @Override public void titleListSuccess(List tagListInfoList) { @@ -98,4 +112,5 @@ public interface IMainFragmentView extends IMvpBaseView { void onGetHomeTagSuccess(List tagInfos); + } diff --git a/app/src/main/res/drawable/bg_living_my_room.xml b/app/src/main/res/drawable/bg_living_my_room.xml new file mode 100644 index 000000000..bcd7d8874 --- /dev/null +++ b/app/src/main/res/drawable/bg_living_my_room.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_charge.xml b/app/src/main/res/layout/activity_charge.xml index e1066bec8..8c2a26b77 100644 --- a/app/src/main/res/layout/activity_charge.xml +++ b/app/src/main/res/layout/activity_charge.xml @@ -259,6 +259,14 @@ android:textSize="@dimen/dp_15" android:layout_marginBottom="@dimen/dp_40" app:layout_constraintBottom_toBottomOf="parent" /> + + + + + diff --git a/app/src/main/res/layout/activity_home_more_room.xml b/app/src/main/res/layout/activity_home_more_room.xml index 9e6574539..cf3ad871a 100644 --- a/app/src/main/res/layout/activity_home_more_room.xml +++ b/app/src/main/res/layout/activity_home_more_room.xml @@ -36,7 +36,7 @@ diff --git a/app/src/main/res/layout/fragment_game_home.xml b/app/src/main/res/layout/fragment_game_home.xml index 26bf1397e..23980ef58 100644 --- a/app/src/main/res/layout/fragment_game_home.xml +++ b/app/src/main/res/layout/fragment_game_home.xml @@ -52,107 +52,115 @@ - + + + + android:minHeight="55dp" + app:layout_constraintTop_toTopOf="parent" /> - - - - - - - + - - + - - - - - - - - - + android:layout_height="48dp" + android:gravity="center" + android:text="更多房间" + android:onClick="@{click}" + android:textColor="@color/white" + android:textSize="@dimen/dp_12" + android:drawablePadding="@dimen/dp_5" + android:drawableRight="@drawable/arrow_right_white" + /> + - + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_erban_grid_empty.xml b/app/src/main/res/layout/item_erban_grid_empty.xml index e66b22b45..e62c0c32f 100644 --- a/app/src/main/res/layout/item_erban_grid_empty.xml +++ b/app/src/main/res/layout/item_erban_grid_empty.xml @@ -6,17 +6,24 @@ android:layout_height="wrap_content" xmlns:tools="http://schemas.android.com/tools" tools:layout_width="108dp" + android:layout_marginStart="3dp" + android:layout_marginEnd="3dp" + android:layout_marginTop="1.5dp" + android:background="@drawable/bg_corner_shadow_12" android:orientation="vertical"> + android:layout_height="match_parent" + android:layout_marginStart="@dimen/dp_2" + android:layout_marginEnd="@dimen/dp_2" + android:layout_marginBottom="@dimen/dp_4"> @@ -36,6 +43,7 @@ + android:layout_height="@dimen/dp_15" + /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_home_concerns.xml b/app/src/main/res/layout/item_home_concerns.xml index c0ad48f29..e862519ce 100644 --- a/app/src/main/res/layout/item_home_concerns.xml +++ b/app/src/main/res/layout/item_home_concerns.xml @@ -10,7 +10,7 @@ @@ -19,16 +19,19 @@ android:id="@+id/civ_room_avatar" android:layout_width="50dp" android:layout_height="50dp" - app:civ_border_width="1dp" + app:civ_border_width="2dp" + tools:src="@color/multiple_image_select_accent" app:civ_border_color="@color/appColor"/> @@ -29,9 +30,9 @@ #F770FF #EFEBFF + #FF6B82 diff --git a/app/src/module_community/res/layout/fragment_home_dynamic.xml b/app/src/module_community/res/layout/fragment_home_dynamic.xml index 8c5cefa2c..a5a8b4b8b 100644 --- a/app/src/module_community/res/layout/fragment_home_dynamic.xml +++ b/app/src/module_community/res/layout/fragment_home_dynamic.xml @@ -3,14 +3,6 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - - - - - - - - - \ No newline at end of file