From 2db61155340f9a9bd275a64d646e2f100782e7a9 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Tue, 9 Aug 2022 16:54:30 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=B4=E6=92=AD=E5=85=B3=E9=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/weight}/ClipPathCircleImage.java | 2 +- .../common/views/weight/FloatBannerView.java | 143 ++++++++ .../src/main/res/anim/vice_banner_come_in.xml | 7 + .../main/res/anim/vice_screen_come_out.xml | 8 + .../background_new_home_folat_banner.xml | 10 + .../src/main/res/drawable/bg_white_clip.xml | 5 + .../res/layout/view_home_float_banner.xml | 36 ++ .../layout/view_home_float_banner_item.xml | 34 ++ common/src/main/res/values/strings.xml | 1 + .../live/activity/LiveAnchorActivity.java | 142 +------- .../live/activity/LiveAudienceActivity.java | 31 +- .../live/activity/LiveRyAnchorActivity.java | 34 +- .../adapter/SearchRecommendBodyAdapter.java | 59 ++++ .../java/com/yunbao/live/bean/LiveBean.java | 13 + .../yunbao/live/event/JumpUserHomeEvent.java | 22 ++ .../yunbao/live/socket/SocketRyClient.java | 4 +- .../com/yunbao/live/utils/MainIconUtil.java | 41 +++ .../yunbao/live/views/LiveEndViewHolder.java | 322 ++++++++++++++--- .../live/views/LivePushTxViewHolder.java | 61 ---- .../yunbao/live/views/LiveRoomViewHolder.java | 3 +- .../SearchRecommendBodyItemViewHolder.java | 118 +++++++ .../drawable/background_anchor_live_end.xml | 9 + .../main/res/drawable/background_live_end.xml | 9 + .../res/drawable/background_live_end_btn.xml | 9 + .../main/res/layout/item_main_home_lives.xml | 273 +++++++++++++++ live/src/main/res/layout/view_live_end.xml | 331 +++++++++++++++++- .../res/mipmap-xhdpi/bg_main_item_bottom.png | Bin 0 -> 4278 bytes .../main/res/mipmap-xhdpi/icon_cash_ali.png | Bin 0 -> 1452 bytes .../main/res/mipmap-xhdpi/icon_cash_bank.png | Bin 0 -> 1625 bytes .../main/res/mipmap-xhdpi/icon_cash_wx.png | Bin 0 -> 1319 bytes .../res/mipmap-xhdpi/icon_main_live_num.png | Bin 0 -> 1538 bytes .../mipmap-xhdpi/icon_main_live_type_0.png | Bin 0 -> 2347 bytes .../mipmap-xhdpi/icon_main_live_type_1.png | Bin 0 -> 3256 bytes .../mipmap-xhdpi/icon_main_live_type_2.png | Bin 0 -> 2394 bytes .../mipmap-xhdpi/icon_main_live_type_3.png | Bin 0 -> 2378 bytes .../mipmap-xhdpi/icon_main_live_type_4.png | Bin 0 -> 543 bytes .../res/mipmap-xhdpi/icon_main_rest_spot.png | Bin 0 -> 138 bytes .../res/mipmap-xhdpi/icon_main_rest_work.png | Bin 0 -> 138 bytes live/src/main/res/mipmap-xhdpi/live_zt.png | Bin 0 -> 751 bytes .../main/res/mipmap-xhdpi/multiplayerpk.png | Bin 0 -> 11285 bytes .../main/res/mipmap-xxxhdpi/icon_cange.png | Bin 0 -> 8890 bytes live/src/main/res/mipmap-xxxhdpi/img_xian.png | Bin 0 -> 706 bytes .../yunbao/main/activity/MainActivity.java | 41 ++- .../fragment/SearchResultsItemFragment.java | 8 +- main/src/main/res/layout/view_homemain.xml | 15 +- .../view_search_results_item_holder.xml | 2 +- 46 files changed, 1484 insertions(+), 309 deletions(-) rename {main/src/main/java/com/yunbao/main/views => common/src/main/java/com/yunbao/common/views/weight}/ClipPathCircleImage.java (97%) create mode 100644 common/src/main/java/com/yunbao/common/views/weight/FloatBannerView.java create mode 100644 common/src/main/res/anim/vice_banner_come_in.xml create mode 100644 common/src/main/res/anim/vice_screen_come_out.xml create mode 100644 common/src/main/res/drawable/background_new_home_folat_banner.xml create mode 100644 common/src/main/res/drawable/bg_white_clip.xml create mode 100644 common/src/main/res/layout/view_home_float_banner.xml create mode 100644 common/src/main/res/layout/view_home_float_banner_item.xml create mode 100644 live/src/main/java/com/yunbao/live/adapter/SearchRecommendBodyAdapter.java create mode 100644 live/src/main/java/com/yunbao/live/event/JumpUserHomeEvent.java create mode 100644 live/src/main/java/com/yunbao/live/utils/MainIconUtil.java create mode 100644 live/src/main/java/com/yunbao/live/views/SearchRecommendBodyItemViewHolder.java create mode 100644 live/src/main/res/drawable/background_anchor_live_end.xml create mode 100644 live/src/main/res/drawable/background_live_end.xml create mode 100644 live/src/main/res/drawable/background_live_end_btn.xml create mode 100644 live/src/main/res/layout/item_main_home_lives.xml create mode 100644 live/src/main/res/mipmap-xhdpi/bg_main_item_bottom.png create mode 100644 live/src/main/res/mipmap-xhdpi/icon_cash_ali.png create mode 100644 live/src/main/res/mipmap-xhdpi/icon_cash_bank.png create mode 100644 live/src/main/res/mipmap-xhdpi/icon_cash_wx.png create mode 100644 live/src/main/res/mipmap-xhdpi/icon_main_live_num.png create mode 100644 live/src/main/res/mipmap-xhdpi/icon_main_live_type_0.png create mode 100644 live/src/main/res/mipmap-xhdpi/icon_main_live_type_1.png create mode 100644 live/src/main/res/mipmap-xhdpi/icon_main_live_type_2.png create mode 100644 live/src/main/res/mipmap-xhdpi/icon_main_live_type_3.png create mode 100644 live/src/main/res/mipmap-xhdpi/icon_main_live_type_4.png create mode 100644 live/src/main/res/mipmap-xhdpi/icon_main_rest_spot.png create mode 100644 live/src/main/res/mipmap-xhdpi/icon_main_rest_work.png create mode 100644 live/src/main/res/mipmap-xhdpi/live_zt.png create mode 100644 live/src/main/res/mipmap-xhdpi/multiplayerpk.png create mode 100644 live/src/main/res/mipmap-xxxhdpi/icon_cange.png create mode 100644 live/src/main/res/mipmap-xxxhdpi/img_xian.png diff --git a/main/src/main/java/com/yunbao/main/views/ClipPathCircleImage.java b/common/src/main/java/com/yunbao/common/views/weight/ClipPathCircleImage.java similarity index 97% rename from main/src/main/java/com/yunbao/main/views/ClipPathCircleImage.java rename to common/src/main/java/com/yunbao/common/views/weight/ClipPathCircleImage.java index 839b141ba..4bdbcc84d 100644 --- a/main/src/main/java/com/yunbao/main/views/ClipPathCircleImage.java +++ b/common/src/main/java/com/yunbao/common/views/weight/ClipPathCircleImage.java @@ -1,4 +1,4 @@ -package com.yunbao.main.views; +package com.yunbao.common.views.weight; import android.content.Context; import android.graphics.Canvas; diff --git a/common/src/main/java/com/yunbao/common/views/weight/FloatBannerView.java b/common/src/main/java/com/yunbao/common/views/weight/FloatBannerView.java new file mode 100644 index 000000000..01981d02a --- /dev/null +++ b/common/src/main/java/com/yunbao/common/views/weight/FloatBannerView.java @@ -0,0 +1,143 @@ +package com.yunbao.common.views.weight; + +import android.animation.Animator; +import android.content.Context; +import android.graphics.Canvas; +import android.os.Handler; +import android.util.AttributeSet; +import android.view.View; +import android.view.animation.DecelerateInterpolator; +import android.view.animation.TranslateAnimation; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.ViewFlipper; + +import com.yunbao.common.R; +import com.yunbao.common.bean.AnchorRecommendItemModel; +import com.yunbao.common.glide.ImgLoader; + +import java.util.List; + +/** + * 首页精彩推荐banner自定义组件 + */ +public class FloatBannerView extends RelativeLayout { + private View rootView; + private LinearLayout rootLayout; + private ViewFlipper homeBanner; + private FrameLayout bannerLayout, bannerLayout2, bannerLayoutC; + private ClipPathCircleImage clipImage, bigclipImage; + private List list; + //默认定时器时间 + private int delayMillis = 800; + //Handler定时加载下一张的数据 + private Handler bannerHandler = new Handler(); + private int index = 0; + + public FloatBannerView(Context context) { + super(context); + } + + public FloatBannerView(Context context, AttributeSet attrs) { + super(context, attrs); + rootView = View.inflate(context, R.layout.view_home_float_banner, this); + homeBanner = rootView.findViewById(R.id.banner); +// bigclipImage = rootView.findViewById(R.id.banner_layout_image); +// bannerLayout = rootView.findViewById(R.id.banner_layout); +// bannerLayout2 = rootView.findViewById(R.id.banner_layout2); +// bannerLayoutC = rootView.findViewById(R.id.banner_layout_c); + } + + @Override + protected void onDraw(Canvas canvas) { + + super.onDraw(canvas); + } + + + /** + * 设置轮播数据 + * + * @param list + */ + public void showBanner(List list) { + for (int i = 0; i < list.size(); i++) { + View contextView = View.inflate(getContext(), R.layout.view_home_float_banner_item, null); + ImageView imageView = contextView.findViewById(R.id.clip_image); + ImgLoader.display2(getContext(), list.get(i).getAvatar(), imageView); + homeBanner.addView(contextView); + } + TranslateAnimation translateAnimation = new TranslateAnimation(homeBanner.getX(), homeBanner.getY(), homeBanner.getX() / 3 * 2, homeBanner.getY() / 3 * 2); + homeBanner.setOutAnimation(translateAnimation); + post(new Runnable() { + @Override + public void run() { + bannerHandler.removeCallbacks(mFlipRunnable); + bannerHandler.postDelayed(mFlipRunnable, delayMillis); + } + }); + + + } + + //轮播动起来 + private void carouselMoving() { + if (null == list || list.size() <= 0) return; + //获取轮播展示的下标 + //如果轮播展示的是最后一张底图展示第一张 + if (index == (list.size() - 1)) { + ImgLoader.display2(getContext(), list.get(0).getAvatar(), clipImage); + } else { + ImgLoader.display2(getContext(), list.get(index + 1).getAvatar(), clipImage); + } + } + + private final Runnable mFlipRunnable = new Runnable() { + @Override + public void run() { + homeBanner.showNext(); + bannerHandler.postDelayed(mFlipRunnable, delayMillis); + } + }; + + /**/ + private void moveViewToTargetView(View view, View targetView) { + final float x = view.getX() / 3 * 2; + final float y = view.getY() / 2; + + final float targetX = targetView.getX() / 3 * 2; + final float targetY = targetView.getY() / 2; + view.animate() + .translationX(-(x - targetX)) + .translationY(-(y - targetY)) + .scaleX(1.2f) + .scaleY(1.2f) + .setDuration(700) + .setInterpolator(new DecelerateInterpolator()) + .withLayer() + .setListener(new Animator.AnimatorListener() { + @Override + public void onAnimationStart(Animator animation) { + + } + + @Override + public void onAnimationEnd(Animator animation) { + view.animate().cancel(); + } + + @Override + public void onAnimationCancel(Animator animation) { + + } + + @Override + public void onAnimationRepeat(Animator animation) { + + } + }) + .start(); + } +} diff --git a/common/src/main/res/anim/vice_banner_come_in.xml b/common/src/main/res/anim/vice_banner_come_in.xml new file mode 100644 index 000000000..a24947702 --- /dev/null +++ b/common/src/main/res/anim/vice_banner_come_in.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/common/src/main/res/anim/vice_screen_come_out.xml b/common/src/main/res/anim/vice_screen_come_out.xml new file mode 100644 index 000000000..1c10e75ad --- /dev/null +++ b/common/src/main/res/anim/vice_screen_come_out.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/common/src/main/res/drawable/background_new_home_folat_banner.xml b/common/src/main/res/drawable/background_new_home_folat_banner.xml new file mode 100644 index 000000000..9447655f0 --- /dev/null +++ b/common/src/main/res/drawable/background_new_home_folat_banner.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/drawable/bg_white_clip.xml b/common/src/main/res/drawable/bg_white_clip.xml new file mode 100644 index 000000000..f26997d4a --- /dev/null +++ b/common/src/main/res/drawable/bg_white_clip.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/common/src/main/res/layout/view_home_float_banner.xml b/common/src/main/res/layout/view_home_float_banner.xml new file mode 100644 index 000000000..80efacd87 --- /dev/null +++ b/common/src/main/res/layout/view_home_float_banner.xml @@ -0,0 +1,36 @@ + + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/layout/view_home_float_banner_item.xml b/common/src/main/res/layout/view_home_float_banner_item.xml new file mode 100644 index 000000000..067acd5ee --- /dev/null +++ b/common/src/main/res/layout/view_home_float_banner_item.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index 96b17a871..676b0c183 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -870,4 +870,5 @@ 猜你喜歡 主播 更多 + 精彩直播 diff --git a/live/src/main/java/com/yunbao/live/activity/LiveAnchorActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveAnchorActivity.java index a3460b510..99ae87e51 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveAnchorActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveAnchorActivity.java @@ -141,17 +141,7 @@ public class LiveAnchorActivity extends LiveActivity implements LiveFunctionClic mLiveBean.setGoodNum(u.getGoodName()); mLiveBean.setCity(u.getCity()); mBeautySdkType = CommonAppConfig.getInstance().getBeautySdkType(); - //添加推流预览控件 -// if (mLiveSDK == Constants.LIVE_SDK_TX) { -// if ("3".equals(mBeautySdkType)){ -// mLivePushViewHolder = new LivePushTxViewHolder360Beauty(mContext, (ViewGroup) findViewById(R.id.preview_container)); -// } -// else { mLivePushViewHolder = new LivePushTxViewHolder(mContext, (ViewGroup) findViewById(R.id.preview_container)); -// } -// } else { -// mLivePushViewHolder = new LivePushKsyViewHolder(mContext, (ViewGroup) findViewById(R.id.preview_container), mLiveKsyConfigBean); -// } mLivePushViewHolder.setLivePushListener(new LivePushListener() { @Override public void onPreviewStart() { @@ -208,70 +198,6 @@ public class LiveAnchorActivity extends LiveActivity implements LiveFunctionClic break; case Constants.LIVE_FUNC_DR://多人PK ToastUtil.show("敬請期待"); -// -// DialogUitl.showSimpleDialog(mContext, "是否確認進行多人PK(確認後扣除1點次數)當日剩餘次數:3", false, -// new DialogUitl.SimpleCallback2() { -// @Override -// public void onConfirmClick(Dialog dialog, String content) { -// HttpClient.getInstance().get("live.createDRPKroom", "live.createDRPKroom") -// .params("uid", CommonAppConfig.getInstance().getUid()) -// .params("type", "1") -// .params("sign", "1") -// .execute(new HttpCallback() { -// @Override -// public void onSuccess(int code, String msg, String[] info) { -// -// if (code == 0) { -// ToastUtil.show("多人房间ok"); -// btn_start_dr_pk.setVisibility(View.VISIBLE); -// dr_pk_view.setVisibility(View.VISIBLE); -// final SocketSendBean msg1 = new SocketSendBean() -// .param("_method_", Constants.SOCKET_LIVE_DRPK) -// .param("action", 9) -// .param("msgtype", 1) -// .param("ct", "直播关闭"); -// msg1.create(); -// V2TIMManager.getInstance().sendGroupTextMessage(msg1.mResult.toString(), "g" + mLiveUid, V2TIMMessage.V2TIM_PRIORITY_NORMAL, new V2TIMSendCallback() { -// @Override -// public void onProgress(int progress) { -// Log.i("tx", "发送中" + progress); -// -// } -// -// @Override -// public void onSuccess(V2TIMMessage v2TIMMessage) { -// Log.i("tx", "发送成功"); -// isDRPK = 1; -// btn_start_dr_pk_view.setVisibility(View.VISIBLE); -// dr_pk_view.setVisibility(View.VISIBLE); -// LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mPreView.getLayoutParams(); -// params.width = mPreView.getWidth() / 2; -// params.height = DpUtil.dp2px(250); -// params.topMargin = DpUtil.dp2px(130); -// mPreView.setLayoutParams(params); -// -// } -// -// @Override -// public void onError(int code, String desc) { -// Log.i("tx", code + "发送失败" + desc); -// -// } -// }); -// } else { -// ToastUtil.show("多人房间不ok"); -// ToastUtil.show(msg); -// } -// } -// }); -// -// } -// -// @Override -// public void onCancelClick() { -// -// } -// }); break; case Constants.LIVE_FUNC_BEAUTY://美颜 @@ -417,41 +343,6 @@ public class LiveAnchorActivity extends LiveActivity implements LiveFunctionClic * 设置美颜 */ public void beauty() { -// Log.d("设置美颜","type="+mBeautySdkType); -// if (mLiveBeautyViewHolder == null) { -//// if (CommonAppConfig.getInstance().isTiBeautyEnable()) { -//// mLiveBeautyViewHolder = new TiBeautyViewHolder(mContext, mContainer); -//// } else { -//// mLiveBeautyViewHolder = new DefaultBeautyViewHolder(mContext, mContainer); -//// } -//// String mBeautySdkType= CommonAppConfig.getInstance().getBeautySdkType(); -// if ("2".equals(mBeautySdkType)) { -// mLiveBeautyViewHolder = new TiBeautyViewHolder(mContext, mContainer); -// } else if ("3".equals(mBeautySdkType)){ -//// mLiveBeautyViewHolder = new Beauty360ViewHolder(mContext, mContainer); -// mLiveBeautyViewHolder = new Beauty360ViewHolder(this, mContainer); -// }else { -// mLiveBeautyViewHolder = new DefaultBeautyViewHolder(mContext, mContainer); -// } -// -// -// mLiveBeautyViewHolder.setVisibleListener(new BeautyViewHolder.VisibleListener() { -// @Override -// public void onVisibleChanged(boolean visible) { -// if (mLiveReadyViewHolder != null) { -// if (visible) { -// mLiveReadyViewHolder.hide(); -// } else { -// mLiveReadyViewHolder.show(); -// } -// } -// } -// }); -// if (mLivePushViewHolder != null) { -// mLiveBeautyViewHolder.setEffectListener(mLivePushViewHolder.getEffectListener()); -// } -// } -// mLiveBeautyViewHolder.show(); if (mLiveReadyViewHolder != null) { mLiveReadyViewHolder.hide(); } @@ -466,7 +357,6 @@ public class LiveAnchorActivity extends LiveActivity implements LiveFunctionClic */ public void light() { if (mLiveRoomViewHolder != null) { -// mLiveRoomViewHolder.playLightAnim(); } } @@ -550,21 +440,8 @@ public class LiveAnchorActivity extends LiveActivity implements LiveFunctionClic ToastUtil.show(R.string.live_link_mic_cannot_game); return; } -// if (mGamePresenter != null) { -// GameDialogFragment fragment = new GameDialogFragment(); -// fragment.setGamePresenter(mGamePresenter); -// fragment.show(getSupportFragmentManager(), "GameDialogFragment"); -// } } - /** - * 关闭游戏 - */ -// public void closeGame() { -// if (mGamePresenter != null) { -// mGamePresenter.closeGame(); -// } -// } /** * 开播成功 @@ -665,23 +542,6 @@ public class LiveAnchorActivity extends LiveActivity implements LiveFunctionClic } } - //游戏相关 -// if (CommonAppConfig.GAME_ENABLE) { -// mGameList = JSON.parseArray(obj.getString("game_switch"), Integer.class); -// GameParam param = new GameParam(); -// param.setContext(mContext); -// param.setParentView(mContainerWrap); -// param.setTopView(mContainer); -// param.setInnerContainer(mLiveRoomViewHolder.getInnerContainer()); -// param.setGameActionListener(new GameActionListenerImpl(LiveAnchorActivity.this, mSocketClient)); -// param.setLiveUid(mLiveUid); -// param.setStream(mStream); -// param.setAnchor(true); -// param.setCoinName(mCoinName); -// param.setObj(obj); -// mGamePresenter = new GamePresenter(param); -// mGamePresenter.setGameList(mGameList); -// } } /** @@ -768,7 +628,7 @@ public class LiveAnchorActivity extends LiveActivity implements LiveFunctionClic } } if (mLiveEndViewHolder == null) { - mLiveEndViewHolder = new LiveEndViewHolder(mContext, mRoot); + mLiveEndViewHolder = new LiveEndViewHolder(mContext, mRoot,mLiveBean.getUid()); mLiveEndViewHolder.subscribeActivityLifeCycle(); mLiveEndViewHolder.addToParent(); mLiveEndViewHolder.showData(mLiveBean, mStream); diff --git a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java index da0cb470c..efa936588 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java @@ -8,13 +8,6 @@ import android.os.Bundle; import android.os.CountDownTimer; import android.os.Handler; import android.os.Looper; - -import androidx.annotation.IdRes; -import androidx.annotation.NonNull; -import androidx.viewpager.widget.PagerAdapter; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; @@ -24,9 +17,14 @@ import android.view.ViewParent; import android.widget.FrameLayout; import android.widget.ImageView; +import androidx.annotation.IdRes; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.viewpager.widget.PagerAdapter; + import com.adjust.sdk.Adjust; import com.adjust.sdk.AdjustEvent; -import com.alibaba.android.arouter.launcher.ARouter; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.opensource.svgaplayer.SVGAImageView; @@ -39,7 +37,6 @@ import com.yunbao.common.HtmlConfig; import com.yunbao.common.bean.UserBean; import com.yunbao.common.custom.MyViewPager; import com.yunbao.common.dialog.LiveChargeDialogFragment; -import com.yunbao.common.event.UpdateTablePoint; import com.yunbao.common.http.CommonHttpConsts; import com.yunbao.common.http.CommonHttpUtil; import com.yunbao.common.http.HttpCallback; @@ -106,11 +103,8 @@ import io.rong.imlib.model.Conversation; import io.rong.message.TextMessage; import pl.droidsonroids.gif.GifImageView; - import static com.yunbao.common.CommonAppContext.logger; import static com.yunbao.common.CommonAppContext.mFirebaseAnalytics; -import static com.yunbao.common.utils.RouteUtil.PATH_GOOGLE; -import static com.yunbao.common.utils.RouteUtil.PATH_MAIN; import static com.yunbao.live.presenter.LiveLinkMicPresenter.mBannerList2; import static com.yunbao.live.views.LivePlayKsyViewHolder.setViewUP; import static com.yunbao.live.views.LivePlayRyViewHolder.Micing; @@ -164,6 +158,7 @@ public class LiveAudienceActivity extends LiveActivity { public static int backIndex = 0;//0=未判断,1=已判断 public static ProcessResultUtil mProcessResultUtil; private LiveImDeletUtil liveImDeletUtil; + public static int isattention; @Override public T findViewById(@IdRes int id) { @@ -391,19 +386,15 @@ public class LiveAudienceActivity extends LiveActivity { } private void clearRoomData() { -// if (isRy == false) { if (mSocketClient != null) { mSocketClient.disConnect(); mSocketClient = null; } -// } else { if (mSocketRyClient != null) { mSocketRyClient.disConnect(); mSocketRyClient = null; } -// } - if (mLivePlayViewHolder != null) { mLivePlayViewHolder.stopPlay(); } @@ -415,9 +406,6 @@ public class LiveAudienceActivity extends LiveActivity { if (mLiveRoomViewHolder != null) { mLiveRoomViewHolder.clearData(); } -// if (mGamePresenter != null) { -// mGamePresenter.clearGame(); -// } if (mLiveEndViewHolder != null) { mLiveEndViewHolder.removeFromParent(); } @@ -532,7 +520,7 @@ public class LiveAudienceActivity extends LiveActivity { mLiveRoomViewHolder.setVotes(obj.getString("votestotal")); //真爱排行 数量 mLiveRoomViewHolder.setMedaRankNum(obj.getString("medalRankNum")); - int isattention = obj.getIntValue("isattention"); + isattention =obj.getIntValue("isattention"); if (isattention == 0) { if (countDownTimer != null) { countDownTimer.cancel(); @@ -803,10 +791,11 @@ public class LiveAudienceActivity extends LiveActivity { } } if (mLiveEndViewHolder == null) { - mLiveEndViewHolder = new LiveEndViewHolder(mContext, mSecondPage); + mLiveEndViewHolder = new LiveEndViewHolder(mContext, mSecondPage, mLiveBean.getUid()); mLiveEndViewHolder.subscribeActivityLifeCycle(); mLiveEndViewHolder.addToParent(); } + mLiveBean.setIsattention(isattention + ""); mLiveEndViewHolder.showData(mLiveBean, mStream); } diff --git a/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java index 07c7aa105..a133ccf82 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java @@ -4,13 +4,14 @@ import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.os.Bundle; -import androidx.fragment.app.DialogFragment; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; +import androidx.fragment.app.DialogFragment; + import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.lzy.okgo.callback.Callback; @@ -77,7 +78,6 @@ import java.util.List; import cn.rongcloud.rtc.api.RCRTCEngine; import cn.rongcloud.rtc.api.callback.IRCRTCResultCallback; import cn.rongcloud.rtc.base.RTCErrorCode; -//import cn.rongcloud.rtc.jni.video.RCRect; import io.rong.imlib.IRongCallback; import io.rong.imlib.RongIMClient; import io.rong.imlib.model.Conversation; @@ -90,15 +90,16 @@ import static com.tencent.trtc.TRTCCloudDef.TRTC_VIDEO_MIRROR_TYPE_DISABLE; import static com.tencent.trtc.TRTCCloudDef.TRTC_VIDEO_MIRROR_TYPE_ENABLE; import static com.yunbao.common.Constants.SOCKET_LIVE_DRPK; import static com.yunbao.live.views.AbsRyLivePushViewHolder.mPreView; - -import static com.yunbao.live.views.LivePushRyViewHolder.rtcRoom; import static com.yunbao.live.views.LivePushRyViewHolder.dr_pk_view; +import static com.yunbao.live.views.LivePushRyViewHolder.rtcRoom; import static com.yunbao.live.views.LiveRyAnchorViewHolder.btn_dr_pk_nub; import static com.yunbao.live.views.LiveRyAnchorViewHolder.btn_start_dr_pk; import static com.yunbao.live.views.LiveRyAnchorViewHolder.btn_start_dr_pk_view; //import cn.rongcloud.rtc.jni.video.RCRect; +//import cn.rongcloud.rtc.jni.video.RCRect; + /** * Created by cxf on 2018/10/7. * 主播直播间 @@ -239,13 +240,13 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl Bundle bundle = new Bundle(); bundle.putString(Constants.LIVE_UID, mLiveUid); bundle.putString(Constants.STREAM, mStream); - bundle.putString("By", "1"); + bundle.putString("By", "1"); fragment.setArguments(bundle); fragment.show(((LiveRyAnchorActivity) mContext).getSupportFragmentManager(), "LiveUserMoreDialogFragment"); LiveMicUserDialogFragment.activity = ((LiveRyAnchorActivity) mContext); break; case Constants.LIVE_FUNC_DR://多人PK - if(isDRPK != 1) { + if (isDRPK != 1) { HttpClient.getInstance().get("live.getdrnum", "live.getdrnum") .execute(new HttpCallback() { @Override @@ -308,7 +309,7 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl @Override public void onError(Message message, RongIMClient.ErrorCode errorCode) { - Log.i("tx", "发送失败"+errorCode+message); + Log.i("tx", "发送失败" + errorCode + message); } }); @@ -331,7 +332,7 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl } } }); - }else{ + } else { ToastUtil.show("您已在PK中"); } break; @@ -417,9 +418,9 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl ZhuangBanActivity.forward(mContext, url, false); break; case Constants.LIVE_FUNC_LINK_MIC://连麦 - if(isDRPK != 1) { + if (isDRPK != 1) { openLinkMicAnchorWindow(false); - }else{ + } else { ToastUtil.show("您已在PK中"); } break; @@ -523,7 +524,7 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl mLiveReadyViewHolder.hide(); } LiveBeautyDialogFragment fragment = new LiveBeautyDialogFragment(); - fragment.setiBeautyModule(BeautyManager.iBeautyModule, BeautyManager.iLookupModule,BeautyManager.iBeautyBodyModule); + fragment.setiBeautyModule(BeautyManager.iBeautyModule, BeautyManager.iLookupModule, BeautyManager.iBeautyBodyModule); fragment.show(getSupportFragmentManager(), "LiveBeautyDialogFragment"); } @@ -658,7 +659,7 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl } mLiveReadyViewHolder = null; if (mLiveRoomViewHolder == null) { - mLiveRoomViewHolder = new LiveRoomViewHolder(true,2, mContext, mContainer, (GifImageView) findViewById(R.id.gift_gif), (SVGAImageView) findViewById(R.id.gift_svga), mContainerWrap, getWindowManager()); + mLiveRoomViewHolder = new LiveRoomViewHolder(true, 2, mContext, mContainer, (GifImageView) findViewById(R.id.gift_gif), (SVGAImageView) findViewById(R.id.gift_svga), mContainerWrap, getWindowManager()); mLiveRoomViewHolder.addToParent(); mLiveRoomViewHolder.subscribeActivityLifeCycle(); mLiveRoomViewHolder.setLiveInfo(mLiveUid, mStream, obj.getIntValue("userlist_time") * 1000); @@ -792,7 +793,6 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl }); - if (mLivePushViewHolder != null) { mLivePushViewHolder.release(); } @@ -842,7 +842,7 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl JSONObject obj = JSON.parseObject(info[0]); JSONObject datas = obj.getJSONObject("data"); - SocketRyChatUtil.closeLive( datas.getString("votes"), datas.getString("length"), datas.getString("nums") ,mLiveUid, mSocketRyClient); + SocketRyChatUtil.closeLive(datas.getString("votes"), datas.getString("length"), datas.getString("nums"), mLiveUid, mSocketRyClient); //断开socket if (mSocketRyClient != null) { @@ -850,7 +850,7 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl } if (mLiveEndViewHolder == null) { - mLiveEndViewHolder = new LiveEndViewHolder(mContext, mRoot); + mLiveEndViewHolder = new LiveEndViewHolder(mContext, mRoot,mLiveBean.getUid()); mLiveEndViewHolder.subscribeActivityLifeCycle(); mLiveEndViewHolder.addToParent(); mLiveEndViewHolder.showData(mLiveBean, mStream); @@ -1204,9 +1204,9 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl * @param stream 对方主播的stream */ @Override - public void onLinkMicPkApply(UserBean u,String stream,int forwhat) { + public void onLinkMicPkApply(UserBean u, String stream, int forwhat) { if (mLiveRyLinkMicPkPresenter != null) { - mLiveRyLinkMicPkPresenter.onLinkMicPkApply(u, stream,0); + mLiveRyLinkMicPkPresenter.onLinkMicPkApply(u, stream, 0); } } diff --git a/live/src/main/java/com/yunbao/live/adapter/SearchRecommendBodyAdapter.java b/live/src/main/java/com/yunbao/live/adapter/SearchRecommendBodyAdapter.java new file mode 100644 index 000000000..d217e0224 --- /dev/null +++ b/live/src/main/java/com/yunbao/live/adapter/SearchRecommendBodyAdapter.java @@ -0,0 +1,59 @@ +package com.yunbao.live.adapter; + +import android.app.Activity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.yunbao.common.bean.AnchorRecommendItemModel; +import com.yunbao.common.utils.DeviceUtils; +import com.yunbao.live.R; +import com.yunbao.live.views.SearchRecommendBodyItemViewHolder; + +import java.util.ArrayList; +import java.util.List; + +/** + * 猜你喜欢适配器 + */ +public class SearchRecommendBodyAdapter extends RecyclerView.Adapter { + List itemModelList = new ArrayList<>(); + private Activity activity; + + public SearchRecommendBodyAdapter(Activity activity) { + this.activity = activity; + } + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View herdView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_main_home_lives, parent, false); + return new SearchRecommendBodyItemViewHolder(herdView); + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + int height = DeviceUtils.getScreenHeight(activity); + if (holder instanceof SearchRecommendBodyItemViewHolder) { + SearchRecommendBodyItemViewHolder bodyItemViewHolder = (SearchRecommendBodyItemViewHolder) holder; + bodyItemViewHolder.showData(itemModelList.get(position), height); + } + } + + @Override + public int getItemCount() { + return itemModelList.size(); + } + + /** + * 设置数据源 + */ + public void showData(List list) { + itemModelList.clear(); + itemModelList.addAll(list); + notifyDataSetChanged(); + } +} diff --git a/live/src/main/java/com/yunbao/live/bean/LiveBean.java b/live/src/main/java/com/yunbao/live/bean/LiveBean.java index dd9378d7d..cd1df88a8 100644 --- a/live/src/main/java/com/yunbao/live/bean/LiveBean.java +++ b/live/src/main/java/com/yunbao/live/bean/LiveBean.java @@ -5,6 +5,7 @@ import android.os.Parcelable; import android.text.TextUtils; import com.alibaba.fastjson.annotation.JSONField; +import com.google.gson.annotations.SerializedName; import com.yunbao.common.bean.WeekListBean; import com.yunbao.common.utils.WordUtil; import com.yunbao.live.R; @@ -48,6 +49,18 @@ public class LiveBean implements Parcelable { private String url; private String drpk_status; private int is_rong; + //是否關注 1,關注 2,未關注 + private String isattention = ""; + + public String getIsattention() { + return isattention; + } + + public LiveBean setIsattention(String isattention) { + this.isattention = isattention; + return this; + } + private List mWeekList = new ArrayList<>(); public List getmWeekList() { diff --git a/live/src/main/java/com/yunbao/live/event/JumpUserHomeEvent.java b/live/src/main/java/com/yunbao/live/event/JumpUserHomeEvent.java new file mode 100644 index 000000000..4b19e0bf8 --- /dev/null +++ b/live/src/main/java/com/yunbao/live/event/JumpUserHomeEvent.java @@ -0,0 +1,22 @@ +package com.yunbao.live.event; + +import com.yunbao.common.bean.BaseModel; +import com.yunbao.common.bean.SearchModel; + +public class JumpUserHomeEvent extends BaseModel { + //携带用户信息 + private SearchModel model = new SearchModel(); + + public JumpUserHomeEvent(SearchModel model) { + this.model = model; + } + + public SearchModel getModel() { + return model; + } + + public JumpUserHomeEvent setModel(SearchModel model) { + this.model = model; + return this; + } +} diff --git a/live/src/main/java/com/yunbao/live/socket/SocketRyClient.java b/live/src/main/java/com/yunbao/live/socket/SocketRyClient.java index 69c100433..7a1cb9514 100644 --- a/live/src/main/java/com/yunbao/live/socket/SocketRyClient.java +++ b/live/src/main/java/com/yunbao/live/socket/SocketRyClient.java @@ -309,9 +309,7 @@ public class SocketRyClient { int action = map.getIntValue("action"); if (action == 18) { mListener.onLiveEnd(); - if (LiveEndViewHolder.mDuration != null) { - LiveEndViewHolder.upData(map.getString("votes"), map.getString("length"), map.getIntValue("nums")); - } + LiveEndViewHolder.upData(map.getString("votes"), map.getString("length"), map.getIntValue("nums"),map.getString("uname")); } else if (action == 19) { mListener.onAnchorInvalid(); } diff --git a/live/src/main/java/com/yunbao/live/utils/MainIconUtil.java b/live/src/main/java/com/yunbao/live/utils/MainIconUtil.java new file mode 100644 index 000000000..5b860ec91 --- /dev/null +++ b/live/src/main/java/com/yunbao/live/utils/MainIconUtil.java @@ -0,0 +1,41 @@ +package com.yunbao.live.utils; + +import android.util.SparseIntArray; + +import com.yunbao.common.Constants; +import com.yunbao.live.R; + +/** + * Created by cxf on 2018/10/11. + */ + +public class MainIconUtil { + private static SparseIntArray sLiveTypeMap;//直播间类型图标 + private static SparseIntArray sCashTypeMap;//提现图片 + + static { + sLiveTypeMap = new SparseIntArray(); +// sLiveTypeMap.put(Constants.LIVE_TYPE_NORMAL, R.mipmap.icon_main_live_type_0); + sLiveTypeMap.put(Constants.LIVE_TYPE_PWD, R.mipmap.icon_main_live_type_1); + sLiveTypeMap.put(Constants.LIVE_TYPE_PAY, R.mipmap.icon_main_live_type_2); + sLiveTypeMap.put(Constants.LIVE_TYPE_TIME, R.mipmap.icon_main_live_type_3); + sLiveTypeMap.put(Constants.LIVE_TYPE_RESTING, R.mipmap.icon_main_live_type_4); + + + sCashTypeMap = new SparseIntArray(); + sCashTypeMap.put(Constants.CASH_ACCOUNT_ALI, R.mipmap.icon_cash_ali); + sCashTypeMap.put(Constants.CASH_ACCOUNT_WX, R.mipmap.icon_cash_wx); + sCashTypeMap.put(Constants.CASH_ACCOUNT_BANK, R.mipmap.icon_cash_bank); + + } + + public static int getLiveTypeIcon(int key) { + return sLiveTypeMap.get(key); + } + + + public static int getCashTypeIcon(int key) { + return sCashTypeMap.get(key); + } + +} diff --git a/live/src/main/java/com/yunbao/live/views/LiveEndViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveEndViewHolder.java index 5b0f5af94..c658d1517 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveEndViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveEndViewHolder.java @@ -1,30 +1,50 @@ package com.yunbao.live.views; +import android.app.Activity; import android.content.Context; +import android.text.TextUtils; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; import android.widget.TextView; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.yunbao.common.CommonAppConfig; +import androidx.fragment.app.FragmentActivity; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.blankj.utilcode.util.GsonUtils; +import com.yunbao.common.bean.AnchorRecommendModel; +import com.yunbao.common.bean.IMLoginModel; +import com.yunbao.common.bean.LiveInfoModel; +import com.yunbao.common.bean.SetAttentsModel; +import com.yunbao.common.dialog.LoadingDialog; import com.yunbao.common.glide.ImgLoader; -import com.yunbao.common.http.HttpCallback; +import com.yunbao.common.http.base.HttpCallback; +import com.yunbao.common.http.live.LiveNetManager; +import com.yunbao.common.http.main.MainNetManager; +import com.yunbao.common.manager.IMLoginManager; +import com.yunbao.common.utils.Bus; +import com.yunbao.common.utils.RouteUtil; import com.yunbao.common.utils.StringUtil; -import com.yunbao.common.utils.WordUtil; +import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.views.AbsViewHolder; +import com.yunbao.common.views.weight.ClipPathCircleImage; import com.yunbao.live.R; import com.yunbao.live.activity.LiveAnchorActivity; import com.yunbao.live.activity.LiveAudienceActivity; import com.yunbao.live.activity.LiveRyAnchorActivity; +import com.yunbao.live.adapter.SearchRecommendBodyAdapter; import com.yunbao.live.bean.LiveBean; +import com.yunbao.live.event.JumpUserHomeEvent; import com.yunbao.live.http.LiveHttpConsts; import com.yunbao.live.http.LiveHttpUtil; +import com.yunbao.live.presenter.LiveRoomCheckLivePresenter; -import java.text.SimpleDateFormat; -import java.util.Date; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; /** * Created by cxf on 2018/10/9. @@ -38,9 +58,27 @@ public class LiveEndViewHolder extends AbsViewHolder implements View.OnClickList public static TextView mDuration;//直播时长 public static TextView mVotes;//收获映票 public static TextView mWatchNum;//观看人数 + //直播类型 + private static LiveOfType type; - public LiveEndViewHolder(Context context, ViewGroup parentView) { + private static TextView liveDurationUser, liveNameUser, + goHomeUser, anchorName, liveDurationAnchor, liveVotes, liveWatchNum; + private RelativeLayout userLiveEnd, anchorLiveEnd; + private ClipPathCircleImage clipImageUser, clipImageanchor; + private LinearLayout followUser; + private ImageView changeBatchUser; + private RecyclerView likeList; + private SearchRecommendBodyAdapter adapter; + private IMLoginModel model = null; + + public LiveEndViewHolder(Context context, ViewGroup parentView,String uid) { super(context, parentView); + model = IMLoginManager.get(mContext).getUserInfo(); + if (TextUtils.equals(model.getId()+"",uid)){ + type = LiveOfType.ANCHOR; + }else { + type = LiveOfType.USER; + } } @Override @@ -50,49 +88,176 @@ public class LiveEndViewHolder extends AbsViewHolder implements View.OnClickList @Override public void init() { + Bus.getOn(this); mAvatar1 = (ImageView) findViewById(R.id.avatar_1); - mAvatar2 = (ImageView) findViewById(R.id.avatar_2); - mName = (TextView) findViewById(R.id.name); - mDuration = (TextView) findViewById(R.id.duration); - mVotes = (TextView) findViewById(R.id.votes); - mWatchNum = (TextView) findViewById(R.id.watch_num); - findViewById(R.id.btn_back).setOnClickListener(this); - TextView votesName = (TextView) findViewById(R.id.votes_name); - votesName.setText(WordUtil.getString(R.string.live_votes) + CommonAppConfig.getInstance().getVotesName()); + userLiveEnd = (RelativeLayout) findViewById(R.id.user_live_end); + anchorLiveEnd = (RelativeLayout) findViewById(R.id.anchor_live_end); +// mAvatar2 = (ImageView) findViewById(R.id.avatar_2); +// mName = (TextView) findViewById(R.id.name); +// mDuration = (TextView) findViewById(R.id.duration); +// mVotes = (TextView) findViewById(R.id.votes); +// mWatchNum = (TextView) findViewById(R.id.watch_num); +// findViewById(R.id.btn_back).setOnClickListener(this); +// TextView votesName = (TextView) findViewById(R.id.votes_name); +// votesName.setText(WordUtil.getString(R.string.live_votes) + CommonAppConfig.getInstance().getVotesName()); + + + if (type == LiveOfType.USER) { + initViewOfUser(); + initDataOfUser(); + anchorLiveEnd.setVisibility(View.GONE); + } else { + userLiveEnd.setVisibility(View.GONE); + initViewOfAnchor(); + } + } - public static void upData(String votes,String length,int nums){ - Log.e("收",votes+"votes"+length+"length"+nums+"nums"); + /** + * 加载用户猜你喜欢数据 + */ + private void initDataOfUser() { + //展示网络请求弹窗 + LoadingDialog fragment = new LoadingDialog(); + fragment.show(((FragmentActivity) mContext).getSupportFragmentManager(), "LoadingDialog"); + MainNetManager.get((Activity) mContext) + .anchorRecommend("3", new HttpCallback() { + @Override + public void onSuccess(AnchorRecommendModel data) { + fragment.dismiss(); + //组装搜索历史数据 + adapter.showData(data.getList()); - mVotes.setText(votes); - mDuration.setText(length); - mWatchNum.setText(StringUtil.toWan(nums)); + } + + @Override + public void onError(String error) { + fragment.dismiss(); + } + }); + } + + /** + * 用户界面控件初始化 + */ + private void initViewOfUser() { + liveDurationUser = (TextView) findViewById(R.id.live_duration_user); + + liveNameUser = (TextView) findViewById(R.id.live_name_user); + goHomeUser = (TextView) findViewById(R.id.go_home_user); + + clipImageUser = (ClipPathCircleImage) findViewById(R.id.clip_image_user); + + followUser = (LinearLayout) findViewById(R.id.follow_user); + changeBatchUser = (ImageView) findViewById(R.id.change_batch_user); + likeList = (RecyclerView) findViewById(R.id.like_list); + goHomeUser.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (mContext instanceof LiveAnchorActivity) { + ((LiveAnchorActivity) mContext).superBackPressed(); + } else if (mContext instanceof LiveAudienceActivity) { + ((LiveAudienceActivity) mContext).exitLiveRoom(); + } else if (mContext instanceof LiveRyAnchorActivity) { + ((LiveRyAnchorActivity) mContext).superBackPressed(); + + } + } + }); + GridLayoutManager gridLayoutManager = new GridLayoutManager(mContext, 3); + likeList.setLayoutManager(gridLayoutManager); + adapter = new SearchRecommendBodyAdapter((Activity) mContext); + likeList.setAdapter(adapter); + changeBatchUser.setOnClickListener(v -> initDataOfUser()); + + } + + /** + * 主播界面控件初始化 + */ + private void initViewOfAnchor() { + clipImageanchor = (ClipPathCircleImage) findViewById(R.id.clip_image_anchor); + anchorName = (TextView) findViewById(R.id.anchor_name); + liveDurationAnchor = (TextView) findViewById(R.id.live_duration_anchor); + liveVotes = (TextView) findViewById(R.id.live_votes); + liveWatchNum = (TextView) findViewById(R.id.live_watch_num); + findViewById(R.id.go_home_anchor) + .setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (mContext instanceof LiveAnchorActivity) { + ((LiveAnchorActivity) mContext).superBackPressed(); + } else if (mContext instanceof LiveAudienceActivity) { + ((LiveAudienceActivity) mContext).exitLiveRoom(); + } else if (mContext instanceof LiveRyAnchorActivity) { + ((LiveRyAnchorActivity) mContext).superBackPressed(); + + } + } + }); + } + + public static void upData(String votes, String length, int nums,String uname) { + Log.e("收", votes + "votes" + length + "length" + nums + "nums"); + +// mVotes.setText(votes); +// mDuration.setText(length); +// mWatchNum.setText(StringUtil.toWan(nums)); + if (type == LiveOfType.USER) { + liveDurationUser.setText(length); + liveNameUser.setText(uname); + } else { + liveDurationAnchor.setText(length); + liveVotes.setText(votes); + liveWatchNum.setText(StringUtil.toWan(nums)); + } } public void showData(LiveBean liveBean, final String stream) { - if (liveBean != null) { - mName.setText(liveBean.getUserNiceName()); - ImgLoader.displayBlur(mContext, liveBean.getAvatar(), mAvatar1); - ImgLoader.displayAvatar(mContext, liveBean.getAvatar(), mAvatar2); + if (TextUtils.equals(model.getId()+"",liveBean.getUid())){ + type = LiveOfType.ANCHOR; + }else { + type = LiveOfType.USER; } -// mParentView.postDelayed(new Runnable() { -// @Override -// public void run() { -// -// LiveHttpUtil.getLiveEndInfo(stream, new HttpCallback() { -// @Override -// public void onSuccess(int code, String msg, String[] info) { -// if (code == 0 && info.length > 0) { -// JSONObject obj = JSON.parseObject(info[0]); -// mVotes.setText(obj.getString("votes")); -// mDuration.setText(obj.getString("length")); -// mWatchNum.setText(StringUtil.toWan(obj.getLongValue("nums"))); -// } -// } -// }); -// } -// }, 500); + if (type == LiveOfType.USER) { + initViewOfUser(); + initDataOfUser(); + anchorLiveEnd.setVisibility(View.GONE); + userLiveEnd.setVisibility(View.VISIBLE); + } else { + anchorLiveEnd.setVisibility(View.VISIBLE); + userLiveEnd.setVisibility(View.GONE); + initViewOfAnchor(); + } + if (liveBean != null && type == LiveOfType.USER) { + model = IMLoginManager.get(mContext).getUserInfo(); + ImgLoader.displayAvatar(mContext, liveBean.getAvatar(), clipImageUser); + + followUser.setVisibility(TextUtils.equals(liveBean.getIsattention(), "1") ? View.GONE : View.VISIBLE); + followUser.setOnClickListener(v -> { + LoadingDialog fragment = new LoadingDialog(); + fragment.show(((FragmentActivity) mContext).getSupportFragmentManager(), "LoadingDialog"); + LiveNetManager.get(mContext) + .setAttents(String.valueOf(liveBean.getUid()), new HttpCallback() { + @Override + public void onSuccess(SetAttentsModel data) { + followUser.setVisibility(View.GONE); + fragment.dismiss(); + } + + @Override + public void onError(String error) { + ToastUtil.show(error); + fragment.dismiss(); + } + }); + }); + } else { + anchorName.setText(liveBean.getUserNiceName()); + ImgLoader.displayAvatar(mContext, liveBean.getAvatar(), clipImageanchor); + } + ImgLoader.displayBlur(mContext, liveBean.getAvatar(), mAvatar1); } @Override @@ -101,7 +266,7 @@ public class LiveEndViewHolder extends AbsViewHolder implements View.OnClickList ((LiveAnchorActivity) mContext).superBackPressed(); } else if (mContext instanceof LiveAudienceActivity) { ((LiveAudienceActivity) mContext).exitLiveRoom(); - }else if(mContext instanceof LiveRyAnchorActivity){ + } else if (mContext instanceof LiveRyAnchorActivity) { ((LiveRyAnchorActivity) mContext).superBackPressed(); } @@ -110,6 +275,77 @@ public class LiveEndViewHolder extends AbsViewHolder implements View.OnClickList @Override public void onDestroy() { LiveHttpUtil.cancel(LiveHttpConsts.GET_LIVE_END_INFO); + Bus.getOff(this); + } + + /** + * 结束的类型 + */ + public enum LiveOfType { + USER(0, "用户"), + ANCHOR(1, "主播"); + private int type = 0; + private String name = ""; + + LiveOfType(int type, String name) { + this.type = type; + this.name = name; + } + + public int getType() { + return type; + } + + public LiveOfType setType(int type) { + this.type = type; + return this; + } + + public String getName() { + return name; + } + + public LiveOfType setName(String name) { + this.name = name; + return this; + } + } + + /** + * 跳转用户首页 + */ + @Subscribe(threadMode = ThreadMode.MAIN) + public void onJumpUserHome(JumpUserHomeEvent event) { + //展示网络请求弹窗 + LoadingDialog fragment = new LoadingDialog(); + fragment.show(((FragmentActivity) mContext).getSupportFragmentManager(), "LoadingDialog"); + LiveNetManager.get(mContext) + .getLiveInfo(String.valueOf(event.getModel().getId()), new HttpCallback() { + @Override + public void onSuccess(LiveInfoModel data) { + fragment.dismiss(); + LiveRoomCheckLivePresenter mCheckLivePresenter = new LiveRoomCheckLivePresenter(mContext, (liveBean, liveType, liveTypeVal, liveSdk) -> { + if (liveBean == null) { + return; + } + LiveAudienceActivity.forward(mContext, liveBean, liveType, liveTypeVal, "", 0, liveSdk); + + }); + //讲数据转成json + String json = GsonUtils.toJson(data); + LiveBean liveBean = GsonUtils.fromJson(json, LiveBean.class); + mCheckLivePresenter.checkLive(liveBean); + } + + @Override + public void onError(String error) { + fragment.dismiss(); + + RouteUtil.forwardUserHome(mContext, String.valueOf(event.getModel().getId()), 0); + + } + }); + } } diff --git a/live/src/main/java/com/yunbao/live/views/LivePushTxViewHolder.java b/live/src/main/java/com/yunbao/live/views/LivePushTxViewHolder.java index 490c4f583..248dca882 100644 --- a/live/src/main/java/com/yunbao/live/views/LivePushTxViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LivePushTxViewHolder.java @@ -359,53 +359,6 @@ public class LivePushTxViewHolder extends AbsLivePushViewHolder implements ITXLi Log.i("uid", "打" + s); } -// @Override -// public void onConnectOtherRoom(String s, int i, String s1) { -// Log.d(TAG, "onConnectOtherRoom111: s = " + s + " , i = " + i + " , s1 = " + s1 + getLiveStream()); -// TRTCCloudDef.TRTCTranscodingConfig config = new TRTCCloudDef.TRTCTranscodingConfig(); -// config.videoWidth = 960; -// config.videoHeight = 540; -// config.videoBitrate = 1500; -// config.videoFramerate = 20; -// config.videoGOP = 2; -// config.audioSampleRate = 48000; -// config.audioBitrate = 64; -// config.audioChannels = 2; -// config.streamId = getLiveStream(); -// -// config.mode = TRTCCloudDef.TRTC_TranscodingConfigMode_Manual; -// config.mixUsers = new ArrayList<>(); -// -//// 主播自己 -// TRTCCloudDef.TRTCMixUser mixUser = new TRTCCloudDef.TRTCMixUser(); -// mixUser.userId = CommonAppConfig.getInstance().getUid(); -// mixUser.zOrder = 0; -// mixUser.x = 0; -// mixUser.y = 0; -// -// mixUser.width = 480; -// mixUser.height = 540; -//// mixUser.roomId = CommonAppConfig.getInstance().getUid(); -// config.mixUsers.add(mixUser); -// -// -// //连麦者画面位置 -// TRTCCloudDef.TRTCMixUser remote = new TRTCCloudDef.TRTCMixUser(); -// remote.userId = s; -// remote.streamType = TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG; -// -// remote.zOrder = 1; -// remote.x = 480; -// remote.y = 0; -// remote.width = 480; -// remote.height = 540; -// remote.roomId = s; -// config.mixUsers.add(remote); -// -// mTRTCCloud.setMixTranscodingConfig(config); -// -// } - @Override public void onDisConnectOtherRoom(int i, String s) { Log.d(TAG, "onConnectOtherRoom0: s = " + s + " , i = " + i); @@ -527,20 +480,6 @@ public class LivePushTxViewHolder extends AbsLivePushViewHolder implements ITXLi super.release(); LiveHttpUtil.cancel(LiveHttpConsts.LINK_MIC_TX_MIX_STREAM); mTRTCCloud = null; -// if (mLivePusher != null) { -// mLivePusher.stopBGM(); -// mLivePusher.stopPusher(); -// mLivePusher.stopScreenCapture(); -// mLivePusher.stopCameraPreview(false); -// mLivePusher.setVideoProcessListener(null); -// mLivePusher.setBGMNofify(null); -// mLivePusher.setPushListener(null); -// } -// mLivePusher = null; -// if (mLivePushConfig != null) { -// mLivePushConfig.setPauseImg(null); -// } -// mLivePushConfig = null; } @Override diff --git a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java index 920c7f55a..caa374185 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java @@ -8,7 +8,6 @@ import android.os.Message; import android.os.SystemClock; import android.text.TextUtils; import android.util.Log; -import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; @@ -17,7 +16,6 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; -import android.widget.Toast; import androidx.annotation.Nullable; import androidx.recyclerview.widget.LinearLayoutManager; @@ -1000,6 +998,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis */ public void setAttention(int attention) { Log.i("tssx", attention + ""); + LiveAudienceActivity.isattention = attention; isAttention = attention; if (mBtnFollow != null) { if (attention == 0) { diff --git a/live/src/main/java/com/yunbao/live/views/SearchRecommendBodyItemViewHolder.java b/live/src/main/java/com/yunbao/live/views/SearchRecommendBodyItemViewHolder.java new file mode 100644 index 000000000..9c8ce5a65 --- /dev/null +++ b/live/src/main/java/com/yunbao/live/views/SearchRecommendBodyItemViewHolder.java @@ -0,0 +1,118 @@ +package com.yunbao.live.views; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.squareup.picasso.Picasso; +import com.yunbao.common.Constants; +import com.yunbao.common.bean.AnchorRecommendItemModel; +import com.yunbao.common.bean.SearchModel; +import com.yunbao.common.custom.RatioRoundImageView; +import com.yunbao.common.glide.ImgLoader; +import com.yunbao.common.utils.Bus; +import com.yunbao.common.utils.formatBigNum; +import com.yunbao.live.R; +import com.yunbao.live.event.JumpUserHomeEvent; +import com.yunbao.live.utils.MainIconUtil; + +public class SearchRecommendBodyItemViewHolder extends RecyclerView.ViewHolder { + private ImageView mCover, liveType, mLiveIco, mType, pkico, drPkIco, pkAvatar; + private RatioRoundImageView bgs; + private View views; + private TextView mLiveState, mTitle, mName, mNum; + + public SearchRecommendBodyItemViewHolder(@NonNull View itemView) { + super(itemView); + //展示普通布局,隐藏周星榜布局 + itemView.findViewById(R.id.live_info_view).setVisibility(View.VISIBLE); + itemView.findViewById(R.id.lt_week_list).setVisibility(View.GONE); + mCover = itemView.findViewById(R.id.cover); + bgs = itemView.findViewById(R.id.bgs); + liveType = itemView.findViewById(R.id.live_type); + views = itemView.findViewById(R.id.views); + mLiveIco = (ImageView) itemView.findViewById(R.id.tv_live_ico); + mLiveState = (TextView) itemView.findViewById(R.id.tv_live_state); + mType = (ImageView) itemView.findViewById(R.id.type); + mTitle = (TextView) itemView.findViewById(R.id.title); + mName = (TextView) itemView.findViewById(R.id.name); + mNum = (TextView) itemView.findViewById(R.id.num); + pkico = (ImageView) itemView.findViewById(R.id.pk_ico); + drPkIco = (ImageView) itemView.findViewById(R.id.dr_pk_ico); + pkAvatar = (ImageView) itemView.findViewById(R.id.pk_avatar); + + + } + + public void showData(AnchorRecommendItemModel model, int height) { + Context mContext = itemView.getContext(); + liveType.setImageDrawable(null); + if (model.getContentPicSizeTwo() != null && !model.getContentPicSizeTwo().equals("") && height <= 1920) { + Picasso.with(mContext) + .load(model.getContentPicSizeTwo()) + .into(liveType); + } else if (model.getContentPicSizeThree() != null && !model.getContentPicSizeThree().equals("") && height > 1920) { + Picasso.with(mContext) + .load(model.getContentPicSizeThree()) + .into(liveType); + } + ImgLoader.display(itemView.getContext(), model.getThumb(), mCover); + bgs.setVisibility(View.VISIBLE); + pkico.setVisibility(View.GONE); + pkAvatar.setVisibility(View.GONE); + drPkIco.setVisibility(View.GONE); + if (model.getDrpkStatus() != null && model.getDrpkStatus().equals("1")) { + drPkIco.setVisibility(View.VISIBLE); + } + if (model.getPkAvatarThumb() != null && !model.getPkAvatarThumb().equals("")) { + ImgLoader.display(mContext, model.getPkAvatarThumb(), pkAvatar); + pkico.setVisibility(View.VISIBLE); + pkAvatar.setVisibility(View.VISIBLE); + } + mName.setText(model.getUserNicename()); + if (TextUtils.isEmpty(model.getTitle())) { + if (mTitle.getVisibility() == View.VISIBLE) { + mTitle.setVisibility(View.GONE); + } + } else { + if (mTitle.getVisibility() != View.VISIBLE) { + mTitle.setVisibility(View.VISIBLE); + } + mTitle.setText(model.getTitle()); + } + mNum.setText(formatBigNum.formatBigNum(String.valueOf(model.getHotNum()))); + views.setVisibility(View.GONE); + if (model.getIslive() == 1) { + views.setVisibility(View.VISIBLE); + //直播中 + mType.setImageResource(MainIconUtil.getLiveTypeIcon(model.getType())); + mType.setVisibility(View.VISIBLE); + mLiveIco.setImageResource(R.mipmap.icon_main_rest_work); + mNum.setVisibility(View.VISIBLE); + liveType.setVisibility(View.VISIBLE); + mLiveState.setText(R.string.lives_state); + } else { + views.setVisibility(View.VISIBLE); + //休息中 + mType.setImageResource(MainIconUtil.getLiveTypeIcon(Constants.LIVE_TYPE_RESTING)); + mType.setVisibility(View.GONE); + mLiveIco.setImageResource(R.mipmap.icon_main_rest_spot); + mLiveState.setText(R.string.rest_state); + liveType.setVisibility(View.GONE); + mNum.setVisibility(View.GONE); + } + mCover.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + SearchModel searchModel = new SearchModel(); + searchModel.setId(model.getUid()); + Bus.get().post(new JumpUserHomeEvent(searchModel)); + } + }); + } +} diff --git a/live/src/main/res/drawable/background_anchor_live_end.xml b/live/src/main/res/drawable/background_anchor_live_end.xml new file mode 100644 index 000000000..d1cddd332 --- /dev/null +++ b/live/src/main/res/drawable/background_anchor_live_end.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/drawable/background_live_end.xml b/live/src/main/res/drawable/background_live_end.xml new file mode 100644 index 000000000..8727e9313 --- /dev/null +++ b/live/src/main/res/drawable/background_live_end.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/drawable/background_live_end_btn.xml b/live/src/main/res/drawable/background_live_end_btn.xml new file mode 100644 index 000000000..3aab95e7b --- /dev/null +++ b/live/src/main/res/drawable/background_live_end_btn.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/layout/item_main_home_lives.xml b/live/src/main/res/layout/item_main_home_lives.xml new file mode 100644 index 000000000..bc032eab4 --- /dev/null +++ b/live/src/main/res/layout/item_main_home_lives.xml @@ -0,0 +1,273 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/layout/view_live_end.xml b/live/src/main/res/layout/view_live_end.xml index f4b274bbd..7ad791403 100644 --- a/live/src/main/res/layout/view_live_end.xml +++ b/live/src/main/res/layout/view_live_end.xml @@ -14,7 +14,8 @@ + android:background="#b3000000" + android:visibility="gone"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/mipmap-xhdpi/bg_main_item_bottom.png b/live/src/main/res/mipmap-xhdpi/bg_main_item_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..f8efdde702d6e508d5ad15d606ac3fe602536706 GIT binary patch literal 4278 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 literal 0 HcmV?d00001 diff --git a/live/src/main/res/mipmap-xhdpi/icon_cash_ali.png b/live/src/main/res/mipmap-xhdpi/icon_cash_ali.png new file mode 100644 index 0000000000000000000000000000000000000000..e21b3b51ac8a4ab2d90e7721a181883966560dd1 GIT binary patch literal 1452 zcmYk54>;3#9LK-%r!op*qkovAZg;{ZR8wX>GaNgd9PNZ6S4&qb*XEu^{$G?oIX!if zvDsW>JZU4>H2qPbb4k`eWhc^^KSM>__xJnhd3v7jzQ51s^L>5ZpZD*(Et?TYGd8p~ z1OOP*eW}6lNkKkKbm9ImXH*3rdhy=hdIKOmjhl_uhq=y?U>XHTI#vzA_$?zKbO-HF z01!@qDsDD0a6?TC+5NYJQBkqJS~5{(2J-+Knuh} zKs@r9&IF>5!N`tckgP*Ruo18*fS4A=rhpKer3Kf~#&aks&?3E%ha}W#K#L+c4(l2R zd^CW{{7D2u;7{YQMz|v;(ItTXF)8%zAdi?wUl8shXa=656GdaF4vbOF1q|g8DU^W$ zbOixyhp8Cr!VJK46uCMPHU%|+S%PYCLAZAK({$_!gL z0!qRW6;ntG4M40Mky874{RV#oe0FeP2;d#knk*eXQ&yWksQyQ`f@L?ody&q^@b|d$ zRrL(I(elgBLbe+`eK4l@Dc-PfZuZGR=d{(thfF=O{s)({op|cv{3t^4jMd2Bs|s!_ z4>bD3whm`XzpLEu(Hs0q=pfi-;hPat$BwHx)_x^f<@)#$>9y1PYR8uB(#TDl_YIuP znn;lMc^Y#9y6^DcncnSx`If8O6mjF0{m;kEemT0f`3TuEk7VT!z@i#D)jKp?`K%;9 zN#$&wu|uJA-zZMF2iX3(v6@~#eITxot!bVv9eU2yRBlu8{-bUx(4T7aWIf+Nm?3xO zvuo5`V?|D(GU2LX>t5-W)t(@uTbWuBZ?*nXs{yX~GL=$Gv8b~%x@GWvTf;`YrP#cQ zfa~%rb(^rZlZXg-$F^uoqnoYK9{QO~@(m}Cuiltiw&-*d`>y8>t|cj^m~Mve5jp4V&+sFv;KRbFB-X;cIPaaptz&ZfEvDN?#F?n#S_R%*^V8*6!^eZbqRsYPkLwRN<}X@2=}Vx&1!HPth$o>=+9f4d^7)8$=?jZ=SK#@2AXWUG8K zz;9tzsCr-Dvb9N0jwke%oOdi*rViPKTP8J`eM4HDlu4O6+7$CJgq+MbeBifJ+#uYi zzmXXiVHLEq;86hM-^2S3CRn?i=+(z~KM@ literal 0 HcmV?d00001 diff --git a/live/src/main/res/mipmap-xhdpi/icon_cash_bank.png b/live/src/main/res/mipmap-xhdpi/icon_cash_bank.png new file mode 100644 index 0000000000000000000000000000000000000000..9505b6aed6e03a71df6c76f58f1736b3d3b50a2f GIT binary patch literal 1625 zcmeAS@N?(olHy`uVBq!ia0vp^P9V&|3?#2~eYgdrBuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztF!cragt)pF`1}tEWH@jMNNRLkh9DppA_9?uv*BF0N?Z(} z7KjwYSO^y`h$aOW2QrWmP#J^^VIXtiY={E5EkG{Zk#IpE1H#5M2O^Fv3unU>0~v5Z zAOmOx+;)f*+>sDj2nlfsTm+~Rq8KOw(GFq2O@JtXa3O4<0*H3F8n_mq2*eo>HE;zG zakvyj99a#74R;$v0Yn#&gdn(jI2Xcz>jEmkv;wXeSqdl!Q4G-wX5^ZtWc%ucs0WeRRh*Le8f%W-|0 zmvHW!mFB0kIWukC-_}LW)J#&j{?_gSAJ3(2b(2z($|ot?O-pimCQ#$_euGlX8m(=! zYEDhpDWCOf=ii2D32ruXp6{BMQh8>|l_&?!$TtEG8?JL-xx!uN`L8T0oP)QLOY8S3 zKF@V8r?|Y@{+m&~r0N={LYj;EhlWkNHtEEvZ2x^|A~5sSdAc};L>zv5-L*KxQKaqR zbb(d|MK7Tap-B(kA%i^gpXM^F)Od=s`R-@n zCC`8OPq}j1dVlbqf{t*F39nD(d4zR%WP}|4sG{Vr@kH#MT)RtaM{Ci!`79M32IhtQ zOva*0Y*N*o0sMhSe9tuSxOPmd%heZrr+CNd9p{Ol4vUxJUxoVI_B5-scC>r-&8$$V z=H!~l#jn$0EFkkFo`b7RP3(x8M=0M!g|D?@M{GL6J5)4GPxvhP(qz$kqN%rUW`<_; zMXrgA?{zy43oPcC*|_0;lLgmCu8A6NKZ+fR=?Ljav3NS8bNMFWr2;Pnk{oLqyH6!d zopSJ3j-yOV@+rl0-aF^A7E0x59!Zm2b1hBjsZ339$Hs!=hQfbSlDnOFT4stJ;rp?Y z<8;b~ZxI683)ec?OwJ4EPLeqj-r;RvdDdsnl+yav8?19>jW06hO%GsOZQZj)A?~ot zQ-S;?Qdy2VEjPIgS-iFz3EvD(*y$wGVAwZvhRW$Qu8mS+5dzW)tx7do%(^-q@&&$% z+q^zEv0h}8(>_v`F)vNc?Zm4IPCV`WeKRAN^QRs>70L5jr$g1iNAR3i;VjmVELK`B z@{(&f)0BRz*@Sc){BX%o*f(`!xZ*zNcsSqC*)*J3SBCy(pIH7omw&y;qJ39h{S-V@ z`~E@ryTe+oEBHeH$SPg=u3F$?C$8xtoAIKb<3nx#n$~$;7Z&JT`J(KyBhGd6gI!Kn nCi$g)|8KW`(Vsu@KUt&BoYmVkW!eE?W@GSl^>bP0l+XkKuK@#G literal 0 HcmV?d00001 diff --git a/live/src/main/res/mipmap-xhdpi/icon_cash_wx.png b/live/src/main/res/mipmap-xhdpi/icon_cash_wx.png new file mode 100644 index 0000000000000000000000000000000000000000..323dd216fee974ccd9bdd9f61ddbabf6604fab88 GIT binary patch literal 1319 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�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 literal 0 HcmV?d00001 diff --git a/live/src/main/res/mipmap-xhdpi/icon_main_live_type_2.png b/live/src/main/res/mipmap-xhdpi/icon_main_live_type_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0ec8c24738558419c5db90d2adf4b9ba25a61759 GIT binary patch literal 2394 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 literal 0 HcmV?d00001 diff --git a/live/src/main/res/mipmap-xhdpi/icon_main_live_type_4.png b/live/src/main/res/mipmap-xhdpi/icon_main_live_type_4.png new file mode 100644 index 0000000000000000000000000000000000000000..d2c8de5cb9bb76d3cbae3cf8e0bbc160c89bca36 GIT binary patch literal 543 zcmV+)0^t3LP)2 z|KNrH=9~ZV$p1OCG9&;1019+cPE!E?|Nk5R{|F{m%OHIl0004kNklbR#+U$v|hlF`yVO=5Q zBqhxdw#f;vhQK_x*K3jso}7bBXww*hd~OwUatKIw}PV18%UD`j_?#FK}cU+=~1A4GRE`UjpW{R3~V{<#P0ov!qo h_xwG+yf%Ls{sGZ+NLB0JPNx6>002ovPDHLkV1hGA{IUQ5 literal 0 HcmV?d00001 diff --git a/live/src/main/res/mipmap-xhdpi/icon_main_rest_spot.png b/live/src/main/res/mipmap-xhdpi/icon_main_rest_spot.png new file mode 100644 index 0000000000000000000000000000000000000000..8a542ea4415ca5760670ba25baa1b3d6c43ae03a GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDUbuaMQj}6Q>wTlF*VJ`{t z3uc(0uwcGGKdaJCbD)rvr;B3<$Mxg{1@RV3N6AO60d1B&3o~4{tz?+>nMr2(72Quj ORScf4elF{r5}E+>cQ1_q literal 0 HcmV?d00001 diff --git a/live/src/main/res/mipmap-xhdpi/icon_main_rest_work.png b/live/src/main/res/mipmap-xhdpi/icon_main_rest_work.png new file mode 100644 index 0000000000000000000000000000000000000000..9c763f30e302ceebd0ca8198d0d8c043e1f75994 GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDUbuaLd{G}=JUqkAbhQNOX zAPMA3{n8ZDbMptPVJ`{t3uc(0us~pbe{et|A5cij)5S4_<9c#}g7^+rN6AO60d1B& e3o~4{tz?+>m`TR{qo^HF6@#a%pUXO@geCxHsV2h! literal 0 HcmV?d00001 diff --git a/live/src/main/res/mipmap-xhdpi/live_zt.png b/live/src/main/res/mipmap-xhdpi/live_zt.png new file mode 100644 index 0000000000000000000000000000000000000000..f80386392536e9e0d49e5d7bd6bb0e9ed9683301 GIT binary patch literal 751 zcmV1v5D-;wGiAzCRDHC|nws(&Z1RM2JS`HwaPs1Bl9mMrc&xk{}Wq8YB|M zNQ?x7yeoU3tU30X+2@SmtZ&|(oND&j^S$r0*E(x`Ykg~k!LAWt6|e?a2`mGa01JTy zgFVvUsvP(MdN8b&2GjOz6c@A6-+^nWk$&DPaM#-l=S}y)A`3hVCzH|e2*IYc?j(|>A zUAJImrOr5s5r(jmA(w%%8t?&NcNlpVA_pD-cLi9VbJb#jt%>7+7Ar0a?rPv<99>qD zIdD~g_W=8COGpP&7kwPq7*d`^y%gY6z;b&L(t(cxeBQ~8kZ>hxT!1fl{u>tXgaLY5RDn1kBb!BOsv(ffd zd{(=pmVD54N<;tBXvBP{yXDqVww5@tTjp&SRL!o^J)XQow literal 0 HcmV?d00001 diff --git a/live/src/main/res/mipmap-xhdpi/multiplayerpk.png b/live/src/main/res/mipmap-xhdpi/multiplayerpk.png new file mode 100644 index 0000000000000000000000000000000000000000..0f391b3df8fbd8e055cf62b0afef921b7f855301 GIT binary patch literal 11285 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 literal 0 HcmV?d00001 diff --git a/main/src/main/java/com/yunbao/main/activity/MainActivity.java b/main/src/main/java/com/yunbao/main/activity/MainActivity.java index e9a4ed7d0..188c8722c 100644 --- a/main/src/main/java/com/yunbao/main/activity/MainActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/MainActivity.java @@ -31,9 +31,6 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.android.billingclient.api.Purchase; import com.android.billingclient.api.SkuDetails; -import com.google.android.gms.ads.identifier.AdvertisingIdClient; -import com.google.android.gms.common.GooglePlayServicesNotAvailableException; -import com.google.android.gms.common.GooglePlayServicesRepairableException; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.tencent.imsdk.v2.V2TIMCallback; @@ -45,14 +42,15 @@ import com.yunbao.common.CommonAppConfig; import com.yunbao.common.Constants; import com.yunbao.common.activity.AbsActivity; import com.yunbao.common.adapter.ViewPagerAdapter; +import com.yunbao.common.bean.AnchorRecommendModel; import com.yunbao.common.bean.ChatRemarksBean; import com.yunbao.common.bean.ConfigBean; import com.yunbao.common.bean.IMLoginModel; import com.yunbao.common.bean.LiveSvgGiftBean; -import com.yunbao.common.bean.NoviceInstructorModel; import com.yunbao.common.bean.UpdataListBean; import com.yunbao.common.custom.TabButtonGroup; import com.yunbao.common.dialog.InstructorOperationDialog; +import com.yunbao.common.dialog.LoadingDialog; import com.yunbao.common.event.InstructorOperationEvent; import com.yunbao.common.event.MessageIMEvent; import com.yunbao.common.event.NoviceInstructorEvent; @@ -60,6 +58,7 @@ import com.yunbao.common.event.RongIMConnectionStatusEvent; import com.yunbao.common.event.UpdateTablePointMe; import com.yunbao.common.http.CommonHttpConsts; import com.yunbao.common.http.HttpCallback; +import com.yunbao.common.http.main.MainNetManager; import com.yunbao.common.interfaces.CommonCallback; import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.manager.NoviceInstructorManager; @@ -77,6 +76,7 @@ import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.VersionUtil; import com.yunbao.common.utils.WordUtil; import com.yunbao.common.views.AbsMainViewHolder; +import com.yunbao.common.views.weight.FloatBannerView; import com.yunbao.live.bean.LiveBean; import com.yunbao.live.http.LiveHttpConsts; import com.yunbao.live.http.LiveHttpUtil; @@ -106,7 +106,6 @@ import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.io.File; -import java.io.IOException; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Arrays; @@ -161,6 +160,8 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene private boolean isFirstOpen = true; private int messageNumber = 0, numberMe = 1; private ImageView waitingTip; + private FloatBannerView floatBanner; + @Override protected int getLayoutId() { @@ -268,6 +269,7 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene boolean showInvite = getIntent().getBooleanExtra(Constants.SHOW_INVITE, false); mRootView = (ViewGroup) findViewById(R.id.rootView); + floatBanner = findViewById(R.id.float_banner_home); mTabButtonGroup = (TabButtonGroup) findViewById(R.id.tab_group); mViewPager = (ViewPager) findViewById(R.id.viewPager); waitingTip = findViewById(R.id.waiting_tip); @@ -361,8 +363,31 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene mViewPager.setCurrentItem(0); mTabButtonGroup.setCurPosition(0); isInstructor(); - //测试代码要删除 - NoviceInstructorManager.get(this).setNoviceInstructor(new NoviceInstructorModel()); + initAnchorRecommendBanner(); + + } + + /** + * 首页推荐位 + */ + private void initAnchorRecommendBanner() { + //展示网络请求弹窗 + LoadingDialog fragment = new LoadingDialog(); + fragment.show(getSupportFragmentManager(), "LoadingDialog"); + MainNetManager.get(mContext) + .anchorRecommend("10", new com.yunbao.common.http.base.HttpCallback() { + @Override + public void onSuccess(AnchorRecommendModel data) { + fragment.dismiss(); + floatBanner.showBanner(data.getList()); + + } + + @Override + public void onError(String error) { + fragment.dismiss(); + } + }); } @@ -746,7 +771,7 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene @Subscribe(threadMode = ThreadMode.MAIN) public void onViewPagerScroll(String str) { if ("oneUesrOver".equals(str)) { - if(IMLoginManager.get(mContext).isisNewUserOne()==false) { + if (IMLoginManager.get(mContext).isisNewUserOne() == false) { getD(); } } diff --git a/main/src/main/java/com/yunbao/main/fragment/SearchResultsItemFragment.java b/main/src/main/java/com/yunbao/main/fragment/SearchResultsItemFragment.java index 2079a6bbe..96330e563 100644 --- a/main/src/main/java/com/yunbao/main/fragment/SearchResultsItemFragment.java +++ b/main/src/main/java/com/yunbao/main/fragment/SearchResultsItemFragment.java @@ -69,9 +69,7 @@ public class SearchResultsItemFragment extends BaseFragment { * @param type 類型 */ public void setSearchKey(String searchKey, int type) { - //展示网络请求弹窗 - LoadingDialog fragment = new LoadingDialog(); - fragment.show(getChildFragmentManager(), "LoadingDialog"); + this.searchKey = searchKey; this.type = type; if (type == 1) { @@ -86,12 +84,10 @@ public class SearchResultsItemFragment extends BaseFragment { } else { itemAdapter.showData(data, type); } - fragment.dismiss(); } @Override public void onError(String error) { - fragment.dismiss(); ToastUtil.show(error); } }); @@ -114,12 +110,10 @@ public class SearchResultsItemFragment extends BaseFragment { } } - fragment.dismiss(); } @Override public void onError(String error) { - fragment.dismiss(); ToastUtil.show(error); } }); diff --git a/main/src/main/res/layout/view_homemain.xml b/main/src/main/res/layout/view_homemain.xml index 7f1d29526..a129af697 100644 --- a/main/src/main/res/layout/view_homemain.xml +++ b/main/src/main/res/layout/view_homemain.xml @@ -160,12 +160,12 @@ android:id="@+id/waiting_tip" android:layout_width="0dp" android:layout_height="wrap_content" + android:layout_marginStart="57dp" android:layout_weight="1" android:clickable="true" - android:visibility="gone" - android:layout_marginStart="57dp" + android:focusable="true" android:src="@mipmap/waiting_tip" - android:focusable="true" /> + android:visibility="gone" /> + + diff --git a/main/src/main/res/layout/view_search_results_item_holder.xml b/main/src/main/res/layout/view_search_results_item_holder.xml index 2cc5c43de..a0f71819d 100644 --- a/main/src/main/res/layout/view_search_results_item_holder.xml +++ b/main/src/main/res/layout/view_search_results_item_holder.xml @@ -10,7 +10,7 @@ android:layout_width="60dp" android:layout_height="60dp"> -