diff --git a/common/src/main/java/com/yunbao/common/bean/LiveOpenTipsBean.java b/common/src/main/java/com/yunbao/common/bean/LiveOpenTipsBean.java new file mode 100644 index 000000000..3a255058b --- /dev/null +++ b/common/src/main/java/com/yunbao/common/bean/LiveOpenTipsBean.java @@ -0,0 +1,25 @@ +package com.yunbao.common.bean; + +/** + * 开播提示 + */ +public class LiveOpenTipsBean extends BaseModel{ + private String content; + private String english_content; + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getEnglish_content() { + return english_content; + } + + public void setEnglish_content(String english_content) { + this.english_content = english_content; + } +} diff --git a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java index aa7831883..7447a28e8 100644 --- a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java +++ b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java @@ -1,105 +1,7 @@ package com.yunbao.common.http; import com.alibaba.fastjson.JSONObject; -import com.yunbao.common.bean.ActiveBean; -import com.yunbao.common.bean.ActiveModel; -import com.yunbao.common.bean.AnchorRecommendItemModel; -import com.yunbao.common.bean.AnchorRecommendModel; -import com.yunbao.common.bean.AvatarBean; -import com.yunbao.common.bean.BaseModel; -import com.yunbao.common.bean.BattlePassPoints; -import com.yunbao.common.bean.BattlePassTask; -import com.yunbao.common.bean.BattlePassUserInfoBean; -import com.yunbao.common.bean.BlindBoxInfoModel; -import com.yunbao.common.bean.CareerBean; -import com.yunbao.common.bean.CheckLiveModel; -import com.yunbao.common.bean.CheckRemainingBalance; -import com.yunbao.common.bean.CheckUpgradesModel; -import com.yunbao.common.bean.ContributeModel; -import com.yunbao.common.bean.CoolConfig; -import com.yunbao.common.bean.CreateSudRoomModel; -import com.yunbao.common.bean.CustomSidebarInfoModel; -import com.yunbao.common.bean.DiscountsModel; -import com.yunbao.common.bean.EnterRoomNewModel; -import com.yunbao.common.bean.FaceBookUpModel; -import com.yunbao.common.bean.FansCheckRed; -import com.yunbao.common.bean.FansGroupGiftPack; -import com.yunbao.common.bean.FansGroupGiftPackInfo; -import com.yunbao.common.bean.FirstLoginBean; -import com.yunbao.common.bean.GiftAlreadyWallModel; -import com.yunbao.common.bean.GiftGuideModel; -import com.yunbao.common.bean.GiftNamingInfoModel; -import com.yunbao.common.bean.GiftWallBean; -import com.yunbao.common.bean.GiftWallGiftDetail; -import com.yunbao.common.bean.GiftWallInfoBean; -import com.yunbao.common.bean.GiftWallMainTab2ClassicInfoBean; -import com.yunbao.common.bean.GiftWallModel; -import com.yunbao.common.bean.GiftWallTab2Bean; -import com.yunbao.common.bean.GuardGetGuardOpenInfoModel; -import com.yunbao.common.bean.GuardGetGuardUserInfoModel; -import com.yunbao.common.bean.HomeUserExhibitInfoBean; -import com.yunbao.common.bean.HomeUserInfoBean; -import com.yunbao.common.bean.HourRank; -import com.yunbao.common.bean.HttpCallbackModel; -import com.yunbao.common.bean.IMLoginModel; -import com.yunbao.common.bean.LinkMicUserBeanV2; -import com.yunbao.common.bean.ListInfoMessageModel; -import com.yunbao.common.bean.LiveAiRobotBean; -import com.yunbao.common.bean.LiveAnchorCallMeModel; -import com.yunbao.common.bean.LiveAnchorSayModel; -import com.yunbao.common.bean.LiveBattlePassRewardsBean; -import com.yunbao.common.bean.LiveDataInfoModel; -import com.yunbao.common.bean.LiveInfoModel; -import com.yunbao.common.bean.LiveRoomActivityBanner; -import com.yunbao.common.bean.LiveRoomVoteModel; -import com.yunbao.common.bean.LiveStetUpStatusModel; -import com.yunbao.common.bean.LiveTaskModel; -import com.yunbao.common.bean.LiveUserMailBoxModel; -import com.yunbao.common.bean.MainMessageChatListTimer; -import com.yunbao.common.bean.MedalAchievementModel; -import com.yunbao.common.bean.MessageChatIsAnchor; -import com.yunbao.common.bean.MessageChatUserBean; -import com.yunbao.common.bean.MessageHiBean; -import com.yunbao.common.bean.MessageSayHiBean; -import com.yunbao.common.bean.MessageSayHiStartBean; -import com.yunbao.common.bean.MessageUserInfoBean; -import com.yunbao.common.bean.MsgSwitchDetailModel; -import com.yunbao.common.bean.NewPeopleInfo; -import com.yunbao.common.bean.NobleRankHideUserListModel; -import com.yunbao.common.bean.NobleTrumpetModel; -import com.yunbao.common.bean.OpenAdModel; -import com.yunbao.common.bean.PkRankBean; -import com.yunbao.common.bean.PrankGiftResultBean; -import com.yunbao.common.bean.PrankHttpTurntableBean; -import com.yunbao.common.bean.PrankProgressBean; -import com.yunbao.common.bean.QiniuLog; -import com.yunbao.common.bean.QuickGiftSendGiftModel; -import com.yunbao.common.bean.RandomPkUserBean; -import com.yunbao.common.bean.RankPkInfoBean; -import com.yunbao.common.bean.RedPacketDetailsBean; -import com.yunbao.common.bean.RedPacketGiftModel; -import com.yunbao.common.bean.RedPacketInfoModel; -import com.yunbao.common.bean.RedPacketListBean; -import com.yunbao.common.bean.RoomMicStatusModel; -import com.yunbao.common.bean.SearchModel; -import com.yunbao.common.bean.SendMoneyLongModel; -import com.yunbao.common.bean.SetAttentsModel; -import com.yunbao.common.bean.ShareBean; -import com.yunbao.common.bean.SlideInBannerModel; -import com.yunbao.common.bean.StarChallengeStatusModel; -import com.yunbao.common.bean.SudGameInfoBean; -import com.yunbao.common.bean.SudGameScoreBean; -import com.yunbao.common.bean.SudGameUserModel; -import com.yunbao.common.bean.SudRoomListModel; -import com.yunbao.common.bean.SudgameCodeModel; -import com.yunbao.common.bean.SwTokenModel; -import com.yunbao.common.bean.UserAreaBean; -import com.yunbao.common.bean.UserAvatarSelectBean; -import com.yunbao.common.bean.UserBean; -import com.yunbao.common.bean.VipModel; -import com.yunbao.common.bean.WishListGiftConfModel; -import com.yunbao.common.bean.WishListModel; -import com.yunbao.common.bean.sendMoneyLongListModel; +import com.yunbao.common.bean.*; import com.yunbao.common.event.CheckCurrencyModel; import java.util.List; @@ -1489,4 +1391,10 @@ public interface PDLiveApi { @Query("live_uid")String liveUid ); + /** + * 获取開播提示 + */ + @GET("/api/public/?service=live.getStartTips") + Observable>> getLiveDataInfo(); + } diff --git a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java index bbf5d0bde..dc454ac73 100644 --- a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java +++ b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java @@ -54,6 +54,7 @@ import com.yunbao.common.bean.LiveAnchorSayModel; import com.yunbao.common.bean.LiveBattlePassRewardsBean; import com.yunbao.common.bean.LiveDataInfoModel; import com.yunbao.common.bean.LiveInfoModel; +import com.yunbao.common.bean.LiveOpenTipsBean; import com.yunbao.common.bean.LiveRoomActivityBanner; import com.yunbao.common.bean.LiveRoomVoteModel; import com.yunbao.common.bean.LiveStetUpStatusModel; @@ -4268,6 +4269,31 @@ public class LiveNetManager { } + + /** + * 获取开播提示信息 + */ + public void getLiveOpenTips(HttpCallback> callback) { + API.get().pdLiveApi(mContext) + .getLiveDataInfo() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(roomMicStatusModelResponseModel -> { + if (callback != null) { + callback.onSuccess(roomMicStatusModelResponseModel.getData().getInfo()); + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + throwable.printStackTrace(); + if (callback != null) { + callback.onError(mContext.getString(R.string.net_error)); + } + } + }).isDisposed(); + } + + /** * 直播间取消网络请求 */ diff --git a/common/src/main/res/layout/dialog_live_interaction.xml b/common/src/main/res/layout/dialog_live_interaction.xml new file mode 100644 index 000000000..b5711499a --- /dev/null +++ b/common/src/main/res/layout/dialog_live_interaction.xml @@ -0,0 +1,338 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/mipmap-xxhdpi/icon_interaction_anchor_say.png b/common/src/main/res/mipmap-xxhdpi/icon_interaction_anchor_say.png new file mode 100644 index 000000000..46c35149e Binary files /dev/null and b/common/src/main/res/mipmap-xxhdpi/icon_interaction_anchor_say.png differ diff --git a/common/src/main/res/mipmap-xxhdpi/icon_interaction_beauty.png b/common/src/main/res/mipmap-xxhdpi/icon_interaction_beauty.png new file mode 100644 index 000000000..7f8d82c91 Binary files /dev/null and b/common/src/main/res/mipmap-xxhdpi/icon_interaction_beauty.png differ diff --git a/common/src/main/res/mipmap-xxhdpi/icon_interaction_camera.png b/common/src/main/res/mipmap-xxhdpi/icon_interaction_camera.png new file mode 100644 index 000000000..223abadbc Binary files /dev/null and b/common/src/main/res/mipmap-xxhdpi/icon_interaction_camera.png differ diff --git a/common/src/main/res/mipmap-xxhdpi/icon_interaction_game.png b/common/src/main/res/mipmap-xxhdpi/icon_interaction_game.png new file mode 100644 index 000000000..7d2ce81fb Binary files /dev/null and b/common/src/main/res/mipmap-xxhdpi/icon_interaction_game.png differ diff --git a/common/src/main/res/mipmap-xxhdpi/icon_interaction_leave.png b/common/src/main/res/mipmap-xxhdpi/icon_interaction_leave.png new file mode 100644 index 000000000..db910b9cf Binary files /dev/null and b/common/src/main/res/mipmap-xxhdpi/icon_interaction_leave.png differ diff --git a/common/src/main/res/mipmap-xxhdpi/icon_interaction_live_data.png b/common/src/main/res/mipmap-xxhdpi/icon_interaction_live_data.png new file mode 100644 index 000000000..1e5f672cd Binary files /dev/null and b/common/src/main/res/mipmap-xxhdpi/icon_interaction_live_data.png differ diff --git a/common/src/main/res/mipmap-xxhdpi/icon_interaction_mic.png b/common/src/main/res/mipmap-xxhdpi/icon_interaction_mic.png new file mode 100644 index 000000000..2ebaa8360 Binary files /dev/null and b/common/src/main/res/mipmap-xxhdpi/icon_interaction_mic.png differ diff --git a/common/src/main/res/mipmap-xxhdpi/icon_interaction_msg.png b/common/src/main/res/mipmap-xxhdpi/icon_interaction_msg.png new file mode 100644 index 000000000..8d35b1d6b Binary files /dev/null and b/common/src/main/res/mipmap-xxhdpi/icon_interaction_msg.png differ diff --git a/common/src/main/res/mipmap-xxhdpi/icon_interaction_qa.png b/common/src/main/res/mipmap-xxhdpi/icon_interaction_qa.png new file mode 100644 index 000000000..d68e9ee09 Binary files /dev/null and b/common/src/main/res/mipmap-xxhdpi/icon_interaction_qa.png differ diff --git a/common/src/main/res/mipmap-xxhdpi/icon_interaction_robot.png b/common/src/main/res/mipmap-xxhdpi/icon_interaction_robot.png new file mode 100644 index 000000000..d5d6cfa7d Binary files /dev/null and b/common/src/main/res/mipmap-xxhdpi/icon_interaction_robot.png differ diff --git a/common/src/main/res/mipmap-xxhdpi/icon_interaction_wish.png b/common/src/main/res/mipmap-xxhdpi/icon_interaction_wish.png new file mode 100644 index 000000000..c4ab0f825 Binary files /dev/null and b/common/src/main/res/mipmap-xxhdpi/icon_interaction_wish.png differ diff --git a/common/src/main/res/mipmap-xxhdpi/icon_interaction_zg.png b/common/src/main/res/mipmap-xxhdpi/icon_interaction_zg.png new file mode 100644 index 000000000..3631a20ea Binary files /dev/null and b/common/src/main/res/mipmap-xxhdpi/icon_interaction_zg.png differ diff --git a/common/src/main/res/values-en-rUS/strings.xml b/common/src/main/res/values-en-rUS/strings.xml index 8ee2e1502..5800e22aa 100644 --- a/common/src/main/res/values-en-rUS/strings.xml +++ b/common/src/main/res/values-en-rUS/strings.xml @@ -268,8 +268,8 @@ Live cover Change cover Live broadcast title - Write a title for the live broadcast - channel + Please write a title for the live broadcast room + Select Channel Select live channel During the live broadcast, if the operator finds that the selected channel does not match the live content, he / she will adjust your live channel. Please set room password @@ -291,9 +291,9 @@ Mirroring Trickster MultiplayerPK - Voice Link + Voice connection billboard - LeaveTemporarily + leave temporarily ResumeLive Flash lamp accompaniment @@ -1004,10 +1004,10 @@ Limited ride And limited avatar frame Ultra hd After determining the definition of the broadcast, you need to restart the broadcast to change Confirmation of broadcast Settings - clarity + Clarity Live channel broadcast - robot + Robot set Not set no @@ -1127,7 +1127,7 @@ Limited ride And limited avatar frame language setting Traditional Chinese Add gifts, nobles, and guardian wishes - GoddessSaid + goddess say Contact information unfollow Where is the host doing badly~\nBrother, are you sure you want to unfollow? @@ -1173,7 +1173,7 @@ Limited ride And limited avatar frame VIP Open Guard Open Fan group - QA + Ask a question submit cancel question: @@ -1328,7 +1328,7 @@ Limited ride And limited avatar frame say something No match was found Add - Interactive Games + Interaction Game Room list Game: All @@ -1476,4 +1476,7 @@ Limited ride And limited avatar frame Chat Records Set the following functions to receive more rewards Get Started! + Interaction + Broadcaster Rights + Live streaming tools diff --git a/common/src/main/res/values-zh/strings.xml b/common/src/main/res/values-zh/strings.xml index a5bad5089..97c718129 100644 --- a/common/src/main/res/values-zh/strings.xml +++ b/common/src/main/res/values-zh/strings.xml @@ -217,7 +217,7 @@ 直播封面 更換封面 直播標題 - 給直播寫個標題吧 + 給直播間寫個標題吧~ 選擇頻道 選擇直播頻道 注意選擇適合自己的頻道。 @@ -1606,5 +1606,8 @@ 處罰時間: 添加以下設定將有機會獲得更多收益 馬上開播! + 互動 + 主播權益 + 直播工具 diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index 721236e12..a2806ad80 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -214,8 +214,8 @@ Live cover Change cover Live broadcast title - Write a title for the live broadcast - channel + Please write a title for the live broadcast room + Select Channel Select live channel During the live broadcast, if the operator finds that the selected channel does not match the live content, he / she will adjust your live channel. Please set room password @@ -234,9 +234,9 @@ Flip Trickster MultiplayerPK - Voice Link + Voice connection billboard - LeaveTemporarily + leave temporarily ResumeLive share SinglePK @@ -837,10 +837,10 @@ Limited ride And limited avatar frame Ultra hd After determining the definition of the broadcast, you need to restart the broadcast to change Confirmation of broadcast Settings - clarity + Clarity Live channel broadcast - robot + Robot set Not set no @@ -951,7 +951,7 @@ Limited ride And limited avatar frame language setting Traditional Chinese Add gifts, nobles, and guardian wishes - GoddessSaid + goddess say Contact information unfollow Where is the host doing badly~\nBrother, are you sure you want to unfollow? @@ -987,7 +987,7 @@ Limited ride And limited avatar frame VIP Open Guard Open Fan group - QA + Ask a question submit cancel question: @@ -1153,7 +1153,7 @@ Limited ride And limited avatar frame say something No match was found Add - Interactive Games + Interaction Game Room list Game: Threshold: @@ -1414,5 +1414,8 @@ Limited ride And limited avatar frame Honors Set the following functions to receive more rewards Get Started! + Interaction + Broadcaster Rights + Live streaming tools diff --git a/live/src/main/java/com/yunbao/live/activity/LiveSwAnchorActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveSwAnchorActivity.java index 7343d9ae7..717fefab2 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveSwAnchorActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveSwAnchorActivity.java @@ -94,8 +94,10 @@ import com.yunbao.live.bean.LiveReceiveGiftBean; import com.yunbao.live.bean.NewAllServerNotifyGuardEvent; import com.yunbao.live.dialog.FreePkDialogFragment; import com.yunbao.live.dialog.LiveInputDialogFragment; +import com.yunbao.live.dialog.LiveInteractionDialogFragment; import com.yunbao.live.dialog.LiveNewFunctionDialogFragment; import com.yunbao.live.dialog.LivePrankDialogFragment; +import com.yunbao.live.dialog.LiveTaskDialog; import com.yunbao.live.dialog.LiveWishListDialogFragment4Audience; import com.yunbao.live.dialog.RandomPkDialogFragment; import com.yunbao.live.event.LinkMicTxMixStreamEvent; @@ -710,6 +712,38 @@ public class LiveSwAnchorActivity extends LiveActivity implements LiveFunctionCl fragment.show(getSupportFragmentManager(), "LiveFunctionDialogFragment"); } + /** + * 打开主播任务弹窗 + */ + public void showTaskDialog() { + LiveTaskDialog taskDialog = new LiveTaskDialog(mContext); + taskDialog.setLiveUid(mLiveUid); + taskDialog.updateLiveTimer(mLiveAnchorViewHolder.getmAnchorLiveTime()); + taskDialog.showDialog(); + } + + /** + * 打开功能栏 + */ + public void showMenuDialog(boolean isInteraction) { + LiveInteractionDialogFragment fragment = new LiveInteractionDialogFragment(); + Bundle bundle = new Bundle(); + boolean hasGame = false; + if (CommonAppConfig.GAME_ENABLE && mGameList != null) { + hasGame = mGameList.size() > 0; + } + bundle.putBoolean(Constants.HAS_GAME, hasGame); + bundle.putInt("leave", leave); + bundle.putString("liveUid", mLiveUid); + bundle.putBoolean("isPk", isDRPK == 1 || PKing || mLivePushViewHolder.isPking()); + bundle.putBoolean(Constants.OPEN_FLASH, mLivePushViewHolder != null && mLivePushViewHolder.isFlashOpen()); + bundle.putBoolean("isShowZgRed",mLiveAnchorViewHolder.isShowMenuRed()); + bundle.putBoolean("isInteraction",isInteraction); + fragment.setArguments(bundle); + fragment.setFunctionClickListener(this); + fragment.show(getSupportFragmentManager(), "LiveInteractionDialogFragment"); + } + /** * 打开主播连麦窗口 */ diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveInteractionDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/LiveInteractionDialogFragment.java new file mode 100644 index 000000000..fbc443b67 --- /dev/null +++ b/live/src/main/java/com/yunbao/live/dialog/LiveInteractionDialogFragment.java @@ -0,0 +1,282 @@ +package com.yunbao.live.dialog; + +import static com.yunbao.common.Constants.LIVE_FUNC_BEAUTY; +import static com.yunbao.common.Constants.LIVE_FUNC_CAMERA; +import static com.yunbao.common.Constants.LIVE_FUNC_MIC; +import static com.yunbao.common.Constants.LIVE_FUNC_WISHLIST; +import static com.yunbao.common.Constants.LIVE_FUNC_ZG; +import static com.yunbao.common.Constants.LIVE_FUNC_ZSLK; +import static com.yunbao.common.Constants.LIVE_ROBOT; + +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.os.SystemClock; +import android.view.Gravity; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.lxj.xpopup.XPopup; +import com.yunbao.common.Constants; +import com.yunbao.common.bean.CustomSidebarInfoModel; +import com.yunbao.common.bean.LiveAnchorSayModel; +import com.yunbao.common.dialog.AbsDialogFragment; +import com.yunbao.common.dialog.SudGameListPopup; +import com.yunbao.common.http.base.HttpCallback; +import com.yunbao.common.http.live.LiveNetManager; +import com.yunbao.common.interfaces.OnItemClickListener; +import com.yunbao.common.utils.ToastUtil; +import com.yunbao.common.utils.WordUtil; +import com.yunbao.common.views.LiveAnchorMessageCustomPopup; +import com.yunbao.live.R; +import com.yunbao.live.activity.LiveRyAnchorActivity; +import com.yunbao.live.activity.LiveSwAnchorActivity; +import com.yunbao.live.interfaces.LiveFunctionClickListener; + +import java.util.List; + +/** + * Created by cxf on 2018/10/9. + */ + +public class LiveInteractionDialogFragment extends AbsDialogFragment implements View.OnClickListener { + + private View mWishView, mPrankView, mBeautyView, mCameraView, mLeaveView, mMicView,liveToolLiveData; + private LiveFunctionClickListener mFunctionClickListener; + private int leave = 0; + private boolean isPk; + private LinearLayout equityLayout,interactionLayout; + + private String liveUid; + private boolean isInteraction; + + // boolean isRy = false; + private boolean isShowRed; + @Override + protected int getLayoutId() { + return R.layout.dialog_live_interaction; + } + + @Override + protected int getDialogStyle() { + return R.style.dialog2; + } + + @Override + protected boolean canCancel() { + return true; + } + + + @Override + protected void setWindowAttributes(Window window) { + window.setWindowAnimations(R.style.bottomToTopAnim); + WindowManager.LayoutParams params = window.getAttributes(); + params.width = WindowManager.LayoutParams.MATCH_PARENT; + params.height = WindowManager.LayoutParams.WRAP_CONTENT; + params.gravity = Gravity.BOTTOM; + window.setAttributes(params); + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + boolean hasGame = false; + boolean openFlash = false; + Bundle bundle = getArguments(); + if (bundle != null) { + hasGame = bundle.getBoolean(Constants.HAS_GAME, false); + openFlash = bundle.getBoolean(Constants.OPEN_FLASH, false); + leave = bundle.getInt("leave", 0); + isPk = bundle.getBoolean("isPk", false); +// isRy = bundle.getBoolean("isRy", false); + mAnchorLiveTime = bundle.getLong("liveTime"); + liveUid = bundle.getString("liveUid"); + isShowRed = bundle.getBoolean("isShowZgRed"); + isInteraction = bundle.getBoolean("isInteraction",false); + } + equityLayout= (LinearLayout) findViewById(R.id.equityLayout); + interactionLayout= (LinearLayout) findViewById(R.id.interactionLayout); + if(isInteraction){ + interactionLayout.setVisibility(View.VISIBLE); + equityLayout.setVisibility(View.GONE); + }else{ + interactionLayout.setVisibility(View.GONE); + equityLayout.setVisibility(View.VISIBLE); + } + mWishView = findViewById(R.id.live_tool_wish); + mPrankView = findViewById(R.id.live_tool_prank); + mBeautyView = findViewById(R.id.live_tool_beauty); + mCameraView = findViewById(R.id.live_tool_camera); + mLeaveView = findViewById(R.id.live_tool_leave); + mMicView = findViewById(R.id.live_tool_mic); + liveToolLiveData = findViewById(R.id.live_tool_live_data); + mWishView.setOnClickListener(this); + mPrankView.setOnClickListener(this); + mBeautyView.setOnClickListener(this); + mCameraView.setOnClickListener(this); + mLeaveView.setOnClickListener(this); + mMicView.setOnClickListener(this); + liveToolLiveData.setOnClickListener(this); + findViewById(R.id.live_tool_robot).setOnClickListener(this); + findViewById(R.id.live_tool_anchor_say).setOnClickListener(this); + findViewById(R.id.live_tool_qa).setOnClickListener(this); + findViewById(R.id.live_tool_game).setOnClickListener(this); + + if (leave == 0) { + ((ImageView) mLeaveView.findViewById(R.id.live_tool_leave_img)).setImageResource(R.mipmap.icon_leave); + ((TextView) mLeaveView.findViewById(R.id.live_tool_leave_text)).setText(mContext.getString(R.string.live_zslk)); + } else { + ((ImageView) mLeaveView.findViewById(R.id.live_tool_leave_img)).setImageResource(R.mipmap.icon_leave_p); + ((TextView) mLeaveView.findViewById(R.id.live_tool_leave_text)).setText(mContext.getString(R.string.live_zslk1)); + } + mLiveRoomHandler = new LiveRoomHandler(); + startAnchorLiveTime(); + } + + public void setFunctionClickListener(LiveFunctionClickListener functionClickListener) { + mFunctionClickListener = functionClickListener; + } + + @Override + public void onDestroy() { +// if(isRy == false) { +// ((LiveAnchorActivity) mContext).setBtnFunctionDark(); +// }else{ + if (mContext instanceof LiveSwAnchorActivity) { + ((LiveSwAnchorActivity) mContext).setBtnFunctionDark(); + } else { + ((LiveRyAnchorActivity) mContext).setBtnFunctionDark(); + } +// } + super.onDestroy(); + } + + @Override + public void onClick(View view) { + dismiss(); + int id = view.getId(); + if (id == R.id.live_tool_wish) { + mFunctionClickListener.onClick(LIVE_FUNC_WISHLIST); + } else if (id == R.id.live_tool_prank) { + mFunctionClickListener.onClick(LIVE_FUNC_ZG); + } else if (id == R.id.live_tool_beauty) { + mFunctionClickListener.onClick(LIVE_FUNC_BEAUTY); + } else if (id == R.id.live_tool_camera) { + mFunctionClickListener.onClick(LIVE_FUNC_CAMERA); + } else if (id == R.id.live_tool_leave) { + if (isPk) { + ToastUtil.show(WordUtil.isNewZh() ? "PK中禁止离开" : "Do not leave in PK"); + return; + } + mFunctionClickListener.onClick(LIVE_FUNC_ZSLK); + } else if (id == R.id.live_tool_mic) { + mFunctionClickListener.onClick(LIVE_FUNC_MIC); + }else if(id == R.id.live_tool_live_data) { + //主播数据 + new LiveDataInfoDialog(mContext, liveUid).showDialog(); + dismiss(); + }else if (id == R.id.live_tool_robot) { + mFunctionClickListener.onClick(LIVE_ROBOT); + dismiss(); + } else if (id == R.id.message_linear) { + new XPopup.Builder(getContext()).asCustom(new LiveAnchorMessageCustomPopup(getContext(), liveUid)).show(); + dismiss(); + } else if (id == R.id.broadcast_data) { + //主播数据 + new LiveDataInfoDialog(mContext, liveUid).showDialog(); + dismiss(); + } else if (id == R.id.anchor_task) { + //主播任务 + taskDialog = new LiveTaskDialog(mContext); + taskDialog.setLiveUid(liveUid); + taskDialog.updateLiveTimer(mAnchorLiveTime); + taskDialog.showDialog(); + } else if (id == R.id.live_tool_call_me) { + new LiveAnchorEditCallMeDialog(mContext).setLiveUid(liveUid).showDialog(); + } else if (id == R.id.live_tool_anchor_say) { + new LiveAnchorSayPopDialog(mContext).setLiveUid(liveUid).setOnItemClickListener(new OnItemClickListener() { + @Override + public void onItemClick(LiveAnchorSayModel bean, int position) { + mLiveRoomHandler.postDelayed(new Runnable() { + @Override + public void run() { + if (mContext instanceof LiveSwAnchorActivity) { + ((LiveSwAnchorActivity) (mContext)).mLiveRoomViewHolder.initAnchorSayData(); + } else { + ((LiveRyAnchorActivity) (mContext)).mLiveRoomViewHolder.initAnchorSayData(); + } + } + }, 1000); + } + }).showDialog(); + } else if (id == R.id.live_tool_qa) { + new LiveAnchorCreateQADialog(mContext).setLiveUid(liveUid).showDialog(); + } else if (id == R.id.live_tool_game) { + LiveNetManager.get(mContext).getCustomSidebarInfo("1", new HttpCallback>() { + @Override + public void onSuccess(List data) { + for (CustomSidebarInfoModel datum : data) { + if (datum.getType().equals("6")) { + //直播间来的 + new XPopup.Builder(mContext).enableDrag(false).moveUpToKeyboard(false) +// .dismissOnTouchOutside(false) +// .dismissOnBackPressed(false) + .asCustom(new SudGameListPopup(mContext, 0, datum.getChild(), liveUid)) + + .show(); + return; + } + } + } + + @Override + public void onError(String error) { + + } + }); + dismiss(); + } + } + + private final int WHAT_ANCHOR_LIVE_TIME = 3;//直播间主播计时 + private LiveRoomHandler mLiveRoomHandler; + private long mAnchorLiveTime;//主播直播时间 + private LiveTaskDialog taskDialog; + + public void startAnchorLiveTime() { + if (mLiveRoomHandler != null) { + mLiveRoomHandler.sendEmptyMessageAtTime(WHAT_ANCHOR_LIVE_TIME, getNextTime(1000)); + } + } + + private class LiveRoomHandler extends Handler { + @Override + public void handleMessage(Message msg) { + + switch (msg.what) { + + case WHAT_ANCHOR_LIVE_TIME: + break; + + + } + } + + public void release() { + removeCallbacksAndMessages(null); + } + } + + private long getNextTime(int time) { + long now = SystemClock.uptimeMillis(); + if (time < 1000) { + return now + time; + } + return now + time + -now % 1000; + } +} diff --git a/live/src/main/java/com/yunbao/live/views/LiveNewReadySwViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveNewReadySwViewHolder.java index fe6dba102..632eca47f 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveNewReadySwViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveNewReadySwViewHolder.java @@ -14,25 +14,33 @@ import android.os.Looper; import android.text.Html; import android.text.TextUtils; import android.util.Log; +import android.view.Gravity; +import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.ImageView; +import android.widget.LinearLayout; import android.widget.TextView; +import android.widget.ViewFlipper; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.core.content.ContextCompat; +import com.alibaba.fastjson.JSON; import com.lxj.xpopup.XPopup; import com.lxj.xpopup.core.BasePopupView; import com.lxj.xpopup.interfaces.XPopupCallback; import com.yunbao.common.CommonAppConfig; import com.yunbao.common.Constants; +import com.yunbao.common.activity.WebViewActivity; +import com.yunbao.common.bean.HotStrategyBean; import com.yunbao.common.bean.IMLoginModel; import com.yunbao.common.bean.LiveAnchorCallMeModel; import com.yunbao.common.bean.LiveAnchorSayModel; import com.yunbao.common.bean.LiveClassBean; +import com.yunbao.common.bean.LiveOpenTipsBean; import com.yunbao.common.bean.LiveRoomTypeBean; import com.yunbao.common.bean.UserBean; import com.yunbao.common.event.LiveNewWishListCloseEvent; @@ -41,12 +49,14 @@ import com.yunbao.common.glide.ImgLoader; import com.yunbao.common.http.HttpCallback; import com.yunbao.common.http.LiveHttpConsts; import com.yunbao.common.http.LiveHttpUtil; +import com.yunbao.common.http.live.LiveNetManager; import com.yunbao.common.interfaces.CommonCallback; import com.yunbao.common.interfaces.ImageResultCallback; import com.yunbao.common.interfaces.OnItemClickListener; import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.utils.Bus; import com.yunbao.common.utils.DialogUitl; +import com.yunbao.common.utils.DpUtil; import com.yunbao.common.utils.L; import com.yunbao.common.utils.ProcessImageUtil; import com.yunbao.common.utils.RouteUtil; @@ -76,6 +86,7 @@ import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.io.File; +import java.util.List; import java.util.Locale; import io.agora.beautyapi.faceunity.agora.SWManager; @@ -104,6 +115,7 @@ public class LiveNewReadySwViewHolder extends AbsViewHolder implements View.OnCl private LiveOpenCustomPopup liveOpenCustomPopup; private boolean selector = true; private String mLiveUid; + private ViewFlipper liveOpenVf; public LiveNewReadySwViewHolder(Context context, ViewGroup parentView, int liveSdk) { super(context, parentView, liveSdk); @@ -134,7 +146,7 @@ public class LiveNewReadySwViewHolder extends AbsViewHolder implements View.OnCl imm.hideSoftInputFromWindow(view.getWindowToken(), 0); } }); - + liveOpenVf = findViewById(R.id.live_open_vf); mAvatar = (ConstraintLayout) findViewById(R.id.avatar); mAvatar.setOnClickListener(this); UserBean u = CommonAppConfig.getInstance().getUserBean(); @@ -297,6 +309,37 @@ public class LiveNewReadySwViewHolder extends AbsViewHolder implements View.OnCl selectorProtocol.setSelected(selector); } }); + //获取开播提示信息 + getOpenLiveTips(); + } + + private void getOpenLiveTips() { + LiveNetManager.get(mContext).getLiveOpenTips(new com.yunbao.common.http.base.HttpCallback>() { + @Override + public void onSuccess(List data) { + if(data!=null){ + for (int i = 0; i yaoqing = new HashMap<>(); @@ -261,39 +265,17 @@ public class LiveRyAnchorViewHolder extends AbsLiveViewHolder { int i = v.getId(); if (i == R.id.btn_close) { close(); - } else if (i == R.id.btn_function) { showFunctionDialog(); - } else if (i == R.id.btn_close_game) { } else if (i == R.id.btn_pk) { applyLinkMicPk(); - } else if (i == R.id.btn_link_mic) { changeLinkMicEnable(); - } } - /** - * 设置游戏按钮是否可见 - */ - public void setGameBtnVisible(boolean show) { - if (mBtnGameClose != null) { - if (show) { - if (mBtnGameClose.getVisibility() != View.VISIBLE) { - mBtnGameClose.setVisibility(View.VISIBLE); - } - } else { - if (mBtnGameClose.getVisibility() == View.VISIBLE) { - mBtnGameClose.setVisibility(View.INVISIBLE); - } - } - } - } - - /** * 关闭直播 */ @@ -315,14 +297,7 @@ public class LiveRyAnchorViewHolder extends AbsLiveViewHolder { * 显示功能弹窗 */ private void showFunctionDialog() { - if (mBtnFunction != null) { - mBtnFunction.setImageDrawable(mDrawable1); - } - if (isSw) { - ((LiveSwAnchorActivity) mContext).showFunctionDialog(); - } else { - ((LiveRyAnchorActivity) mContext).showFunctionDialog(); - } + ((LiveSwAnchorActivity) mContext).showMenuDialog(false); } /** @@ -330,7 +305,7 @@ public class LiveRyAnchorViewHolder extends AbsLiveViewHolder { */ public void setBtnFunctionDark() { if (mBtnFunction != null) { - mBtnFunction.setImageDrawable(mDrawable0); + //mBtnFunction.setImageDrawable(mDrawable0); } } @@ -405,16 +380,7 @@ public class LiveRyAnchorViewHolder extends AbsLiveViewHolder { public void updateStart(LiveAudienceEvent event) { if (event.getType() == START_MESSAGE) { MsgModel msgModel = event.getMsgModel(); - StarChallengeStatusModel model = new StarChallengeStatusModel(activityUrl) - .setTaskNum(msgModel.getTaskNum()) - .setTaskName1(msgModel.getTaskName1()) - .setTaskName2(msgModel.getTaskName2()) - .setStarSrc(msgModel.getStarSrc()) - .setCurrentStarVal(msgModel.getCurrentStarVal()) - .setTargetStarVal(msgModel.getTargetStarVal()) - .setAssistSrc(msgModel.getAssistSrc()) - .setTargetAssistNum(msgModel.getTargetAssistNum()) - .setCurrentAssistNum(msgModel.getCurrentAssistNum()); + StarChallengeStatusModel model = new StarChallengeStatusModel(activityUrl).setTaskNum(msgModel.getTaskNum()).setTaskName1(msgModel.getTaskName1()).setTaskName2(msgModel.getTaskName2()).setStarSrc(msgModel.getStarSrc()).setCurrentStarVal(msgModel.getCurrentStarVal()).setTargetStarVal(msgModel.getTargetStarVal()).setAssistSrc(msgModel.getAssistSrc()).setTargetAssistNum(msgModel.getTargetAssistNum()).setCurrentAssistNum(msgModel.getCurrentAssistNum()); Log.i("测试", "更新星级任务=" + model); showStart(model); } else if (event.getType() == WISH_LIST_UPDATE) { @@ -423,21 +389,20 @@ public class LiveRyAnchorViewHolder extends AbsLiveViewHolder { } public void initStarData() { - LiveNetManager.get(mContext) - .getStarChallengeStatus(mLiveUid, new com.yunbao.common.http.base.HttpCallback() { - @Override - public void onSuccess(StarChallengeStatusModel data1) { - activityUrl = data1.getActivityUrl(); - showStart(data1); - Log.e("PortraitLiveManager", data1.toString()); - } + LiveNetManager.get(mContext).getStarChallengeStatus(mLiveUid, new com.yunbao.common.http.base.HttpCallback() { + @Override + public void onSuccess(StarChallengeStatusModel data1) { + activityUrl = data1.getActivityUrl(); + showStart(data1); + Log.e("PortraitLiveManager", data1.toString()); + } - @Override - public void onError(String error) { - Log.e("PortraitLiveManager", error); - ToastUtil.show(mContext.getString(R.string.net_error)); - } - }); + @Override + public void onError(String error) { + Log.e("PortraitLiveManager", error); + ToastUtil.show(mContext.getString(R.string.net_error)); + } + }); } public void initWishList() { @@ -535,124 +500,67 @@ public class LiveRyAnchorViewHolder extends AbsLiveViewHolder { public void showBanner() { if (mBannerList != null && mBanner != null) { if (mBannerList.size() == 1) { - mBanner.setAutoPlay(false) - .setPages(mBannerList, new CustomViewHolder()) - .setDelayTime(3200) - .setBannerStyle(BannerConfig.NOT_INDICATOR) - .setOnBannerClickListener(new OnBannerClickListener() { - @Override - public void onBannerClick(List datas, int p) { - if (mBannerList != null) { - if (p >= 0 && p < mBannerList.size()) { - IMLoginModel userInfo = IMLoginManager.get(mContext).getUserInfo(); - BannerBean bean = mBannerList.get(p); - String type = ""; - StringBuffer htmlUrl = new StringBuffer(); - //判断是否是星级活动 - if (bean.isStart()) { - type = bean.getModel().getType(); - htmlUrl.append(CommonAppConfig.HOST) - .append("/") - .append(bean.getModel().getActivityUrl()) - .append("&nickname=") - .append(userInfo.getUserNicename()) - .append("&token=") - .append(userInfo.getToken()) - .append("&anchorUid=") - .append(mLiveUid) - .append("&uid=") - .append(userInfo.getId()) - .append("&k=") - .append(System.currentTimeMillis()).append("&isZh=") - .append(WordUtil.isNewZh() ? "1" : 0); - } else { - type = bean.getShow_type(); - htmlUrl.append(bean.getLink()) - .append("?uid=") - .append(userInfo.getId()) - .append("&token=") - .append(userInfo.getToken()) - .append("&anchorUid=") - .append(mLiveUid) - .append("&t=") - .append(System.currentTimeMillis()).append("&isZh=") - .append(WordUtil.isNewZh() ? "1" : 0); - } - if (TextUtils.equals(type, "1")) { - ZhuangBanActivity.forward(mContext, htmlUrl.toString(), false, 0); - } else { - Bundle bundle = new Bundle(); - bundle.putString("url", htmlUrl.toString()); - LiveHDDialogFragment fragment = new LiveHDDialogFragment(); - fragment.setArguments(bundle); - fragment.show(((LiveSwAnchorActivity) mContext).getSupportFragmentManager(), "LiveHDDialogFragment"); - } - } + mBanner.setAutoPlay(false).setPages(mBannerList, new CustomViewHolder()).setDelayTime(3200).setBannerStyle(BannerConfig.NOT_INDICATOR).setOnBannerClickListener(new OnBannerClickListener() { + @Override + public void onBannerClick(List datas, int p) { + if (mBannerList != null) { + if (p >= 0 && p < mBannerList.size()) { + IMLoginModel userInfo = IMLoginManager.get(mContext).getUserInfo(); + BannerBean bean = mBannerList.get(p); + String type = ""; + StringBuffer htmlUrl = new StringBuffer(); + //判断是否是星级活动 + if (bean.isStart()) { + type = bean.getModel().getType(); + htmlUrl.append(CommonAppConfig.HOST).append("/").append(bean.getModel().getActivityUrl()).append("&nickname=").append(userInfo.getUserNicename()).append("&token=").append(userInfo.getToken()).append("&anchorUid=").append(mLiveUid).append("&uid=").append(userInfo.getId()).append("&k=").append(System.currentTimeMillis()).append("&isZh=").append(WordUtil.isNewZh() ? "1" : 0); + } else { + type = bean.getShow_type(); + htmlUrl.append(bean.getLink()).append("?uid=").append(userInfo.getId()).append("&token=").append(userInfo.getToken()).append("&anchorUid=").append(mLiveUid).append("&t=").append(System.currentTimeMillis()).append("&isZh=").append(WordUtil.isNewZh() ? "1" : 0); + } + if (TextUtils.equals(type, "1")) { + ZhuangBanActivity.forward(mContext, htmlUrl.toString(), false, 0); + } else { + Bundle bundle = new Bundle(); + bundle.putString("url", htmlUrl.toString()); + LiveHDDialogFragment fragment = new LiveHDDialogFragment(); + fragment.setArguments(bundle); + fragment.show(((LiveSwAnchorActivity) mContext).getSupportFragmentManager(), "LiveHDDialogFragment"); } } - }) - .start(); + } + } + }).start(); } else { - mBanner.setAutoPlay(true) - .setPages(mBannerList, new CustomViewHolder()) - .setDelayTime(3200) - .setBannerStyle(BannerConfig.NOT_INDICATOR) - .setOnBannerClickListener(new OnBannerClickListener() { - @Override - public void onBannerClick(List datas, int p) { - if (mBannerList != null) { - if (p >= 0 && p < mBannerList.size()) { - IMLoginModel userInfo = IMLoginManager.get(mContext).getUserInfo(); - BannerBean bean = mBannerList.get(p); - String type = ""; - StringBuffer htmlUrl = new StringBuffer(); - //判断是否是星级活动 - if (bean.isStart()) { - type = bean.getModel().getType(); - htmlUrl.append(CommonAppConfig.HOST) - .append("/") - .append(bean.getModel().getActivityUrl()) - .append("&nickname=") - .append(userInfo.getUserNicename()) - .append("&token=") - .append(userInfo.getToken()) - .append("&anchorUid=") - .append(mLiveUid) - .append("&uid=") - .append(userInfo.getId()) - .append("&k=") - .append(System.currentTimeMillis()).append("&isZh=") - .append(WordUtil.isNewZh() ? "1" : 0); - } else { - type = bean.getShow_type(); - htmlUrl.append(bean.getLink()) - .append(bean.getLink().contains("?") ? "&uid=" : "?uid=") - .append(userInfo.getId()) - .append("&token=") - .append(userInfo.getToken()) - .append("&anchorUid=") - .append(mLiveUid) - .append("&liveUid=") - .append(mLiveUid) - .append("&t=") - .append(System.currentTimeMillis()) - .append("&g=Appapi&m=Wish&a=index").append("&isZh=") - .append(WordUtil.isNewZh() ? "1" : 0); - } - if (TextUtils.equals(type, "1")) { - ZhuangBanActivity.forward(mContext, htmlUrl.toString(), false, 0); - } else { - Bundle bundle = new Bundle(); - bundle.putString("url", htmlUrl.toString()); - LiveHDDialogFragment fragment = new LiveHDDialogFragment(); - fragment.setArguments(bundle); - fragment.show(((LiveSwAnchorActivity) mContext).getSupportFragmentManager(), "LiveHDDialogFragment"); - } - } + mBanner.setAutoPlay(true).setPages(mBannerList, new CustomViewHolder()).setDelayTime(3200).setBannerStyle(BannerConfig.NOT_INDICATOR).setOnBannerClickListener(new OnBannerClickListener() { + @Override + public void onBannerClick(List datas, int p) { + if (mBannerList != null) { + if (p >= 0 && p < mBannerList.size()) { + IMLoginModel userInfo = IMLoginManager.get(mContext).getUserInfo(); + BannerBean bean = mBannerList.get(p); + String type = ""; + StringBuffer htmlUrl = new StringBuffer(); + //判断是否是星级活动 + if (bean.isStart()) { + type = bean.getModel().getType(); + htmlUrl.append(CommonAppConfig.HOST).append("/").append(bean.getModel().getActivityUrl()).append("&nickname=").append(userInfo.getUserNicename()).append("&token=").append(userInfo.getToken()).append("&anchorUid=").append(mLiveUid).append("&uid=").append(userInfo.getId()).append("&k=").append(System.currentTimeMillis()).append("&isZh=").append(WordUtil.isNewZh() ? "1" : 0); + } else { + type = bean.getShow_type(); + htmlUrl.append(bean.getLink()).append(bean.getLink().contains("?") ? "&uid=" : "?uid=").append(userInfo.getId()).append("&token=").append(userInfo.getToken()).append("&anchorUid=").append(mLiveUid).append("&liveUid=").append(mLiveUid).append("&t=").append(System.currentTimeMillis()).append("&g=Appapi&m=Wish&a=index").append("&isZh=").append(WordUtil.isNewZh() ? "1" : 0); + } + if (TextUtils.equals(type, "1")) { + ZhuangBanActivity.forward(mContext, htmlUrl.toString(), false, 0); + } else { + Bundle bundle = new Bundle(); + bundle.putString("url", htmlUrl.toString()); + LiveHDDialogFragment fragment = new LiveHDDialogFragment(); + fragment.setArguments(bundle); + fragment.show(((LiveSwAnchorActivity) mContext).getSupportFragmentManager(), "LiveHDDialogFragment"); } } - }) - .start(); + } + } + }).start(); } } } @@ -723,11 +631,11 @@ public class LiveRyAnchorViewHolder extends AbsLiveViewHolder { return now + time + -now % 1000; } - public void closeMenuRed(){ + public void closeMenuRed() { menuRed.setVisibility(View.GONE); } - public boolean isShowMenuRed(){ - return menuRed.getVisibility()==View.VISIBLE; + public boolean isShowMenuRed() { + return menuRed.getVisibility() == View.VISIBLE; } } diff --git a/live/src/main/res/layout/view_live_end_hot.xml b/live/src/main/res/layout/view_live_end_hot.xml index 7ea985b7a..0b91c8d43 100644 --- a/live/src/main/res/layout/view_live_end_hot.xml +++ b/live/src/main/res/layout/view_live_end_hot.xml @@ -17,6 +17,6 @@ android:scrollHorizontally="true" android:singleLine="true" android:textColor="#FFFFFFFF" - android:textSize="10sp" /> + android:textSize="12sp" /> \ No newline at end of file diff --git a/live/src/main/res/layout/view_live_open_tips.xml b/live/src/main/res/layout/view_live_open_tips.xml new file mode 100644 index 000000000..0b91c8d43 --- /dev/null +++ b/live/src/main/res/layout/view_live_open_tips.xml @@ -0,0 +1,22 @@ + + + + + + \ No newline at end of file diff --git a/live/src/main/res/layout/view_new_live_ready.xml b/live/src/main/res/layout/view_new_live_ready.xml index a46c97608..e714adadf 100644 --- a/live/src/main/res/layout/view_new_live_ready.xml +++ b/live/src/main/res/layout/view_new_live_ready.xml @@ -57,12 +57,12 @@ app:layout_constraintTop_toTopOf="parent" /> @@ -162,32 +164,33 @@ - + android:flipInterval="5000" + android:inAnimation="@anim/anim_marquee_in" + android:outAnimation="@anim/anim_marquee_out" /> @@ -195,9 +198,9 @@ android:id="@+id/btn_live_anchor_say" android:layout_width="wrap_content" android:layout_height="30dp" + android:layout_marginLeft="15dp" android:layout_marginTop="10dp" android:background="@drawable/border_grey1_50" - android:layout_marginLeft="15dp" android:gravity="center" android:orientation="horizontal" app:layout_constraintStart_toStartOf="parent" @@ -232,8 +235,8 @@ diff --git a/live/src/main/res/layout/view_ry_live_anchor.xml b/live/src/main/res/layout/view_ry_live_anchor.xml index d0d586434..38c4cbad0 100644 --- a/live/src/main/res/layout/view_ry_live_anchor.xml +++ b/live/src/main/res/layout/view_ry_live_anchor.xml @@ -164,103 +164,109 @@ android:visibility="gone" tools:visibility="visible" /> - - - - - - - - - + android:layout_width="match_parent" + android:gravity="center_vertical" + android:layout_height="match_parent"> - + - + - + + + + + + + + + + + + + + + + + + + + + - \ No newline at end of file diff --git a/live/src/main/res/mipmap-xhdpi/live_anchor_fz.png b/live/src/main/res/mipmap-xhdpi/live_anchor_fz.png new file mode 100644 index 000000000..9e3965092 Binary files /dev/null and b/live/src/main/res/mipmap-xhdpi/live_anchor_fz.png differ diff --git a/live/src/main/res/mipmap-xhdpi/live_anchor_menu.png b/live/src/main/res/mipmap-xhdpi/live_anchor_menu.png new file mode 100644 index 000000000..2435b003d Binary files /dev/null and b/live/src/main/res/mipmap-xhdpi/live_anchor_menu.png differ diff --git a/live/src/main/res/mipmap-xhdpi/live_anchor_msg.png b/live/src/main/res/mipmap-xhdpi/live_anchor_msg.png new file mode 100644 index 000000000..5dda933d4 Binary files /dev/null and b/live/src/main/res/mipmap-xhdpi/live_anchor_msg.png differ diff --git a/live/src/main/res/mipmap-xhdpi/live_anchor_msg_notify.png b/live/src/main/res/mipmap-xhdpi/live_anchor_msg_notify.png new file mode 100644 index 000000000..c548a326e Binary files /dev/null and b/live/src/main/res/mipmap-xhdpi/live_anchor_msg_notify.png differ diff --git a/live/src/main/res/mipmap-xhdpi/live_anchor_pk.png b/live/src/main/res/mipmap-xhdpi/live_anchor_pk.png new file mode 100644 index 000000000..91bb3fa75 Binary files /dev/null and b/live/src/main/res/mipmap-xhdpi/live_anchor_pk.png differ diff --git a/live/src/main/res/mipmap-xhdpi/live_anchor_task.png b/live/src/main/res/mipmap-xhdpi/live_anchor_task.png new file mode 100644 index 000000000..31e488d67 Binary files /dev/null and b/live/src/main/res/mipmap-xhdpi/live_anchor_task.png differ diff --git a/live/src/main/res/mipmap-zh/live_anchor_pk.png b/live/src/main/res/mipmap-zh/live_anchor_pk.png new file mode 100644 index 000000000..f6a667d75 Binary files /dev/null and b/live/src/main/res/mipmap-zh/live_anchor_pk.png differ