From 8d823f7a079e0851e183f59171307d33bc67b648 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Sat, 18 Feb 2023 13:21:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BB=E6=92=AD=E6=B6=88=E6=81=AF=E4=B8=AD?= =?UTF-8?q?=E5=BF=83=E5=8A=9F=E8=83=BD=E6=9E=84=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/LiveSystemMessageAdapter.java | 52 ++ .../common/bean/ListInfoMessageModel.java | 96 +++ .../com/yunbao/common/http/PDLiveApi.java | 6 + .../common/http/live/LiveNetManager.java | 13 + .../views/LiveAnchorMessageCustomPopup.java | 72 ++ .../views/LiveSystemMessageViewHolder.java | 47 ++ .../src/main/res/drawable/bg_live_anchor.xml | 5 + .../res/drawable/bg_live_anchor_message.xml | 7 + .../res/layout/dialog_live_anchor_message.xml | 21 + .../res/layout/dialog_live_new_function.xml | 656 ++++++++++-------- .../res/layout/view_live_system_message.xml | 94 +++ .../src/main/res/mipmap-xxhdpi}/icon_more.png | Bin .../main/res/mipmap-xxhdpi/live_icon_data.png | Bin 0 -> 3872 bytes .../main/res/mipmap-xxhdpi/live_icon_news.png | Bin 0 -> 3188 bytes common/src/main/res/values-en/strings.xml | 112 +-- common/src/main/res/values/strings.xml | 3 + .../dialog/LiveNewFunctionDialogFragment.java | 24 +- 17 files changed, 874 insertions(+), 334 deletions(-) create mode 100644 common/src/main/java/com/yunbao/common/adapter/LiveSystemMessageAdapter.java create mode 100644 common/src/main/java/com/yunbao/common/bean/ListInfoMessageModel.java create mode 100644 common/src/main/java/com/yunbao/common/views/LiveAnchorMessageCustomPopup.java create mode 100644 common/src/main/java/com/yunbao/common/views/LiveSystemMessageViewHolder.java create mode 100644 common/src/main/res/drawable/bg_live_anchor.xml create mode 100644 common/src/main/res/drawable/bg_live_anchor_message.xml create mode 100644 common/src/main/res/layout/dialog_live_anchor_message.xml create mode 100644 common/src/main/res/layout/view_live_system_message.xml rename {live/src/main/res/mipmap-xhdpi => common/src/main/res/mipmap-xxhdpi}/icon_more.png (100%) create mode 100644 common/src/main/res/mipmap-xxhdpi/live_icon_data.png create mode 100644 common/src/main/res/mipmap-xxhdpi/live_icon_news.png diff --git a/common/src/main/java/com/yunbao/common/adapter/LiveSystemMessageAdapter.java b/common/src/main/java/com/yunbao/common/adapter/LiveSystemMessageAdapter.java new file mode 100644 index 000000000..2fb288925 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/adapter/LiveSystemMessageAdapter.java @@ -0,0 +1,52 @@ +package com.yunbao.common.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.yunbao.common.R; +import com.yunbao.common.bean.ListInfoMessageModel; +import com.yunbao.common.views.LiveSystemMessageViewHolder; + +import java.util.ArrayList; +import java.util.List; + +/** + * 主播消息中心适配器 + */ +public class LiveSystemMessageAdapter extends RecyclerView.Adapter { + private Context mContext; + private LayoutInflater mInflater; + private List listInfoMessageModels = new ArrayList<>(); + + public LiveSystemMessageAdapter(Context mContext) { + this.mContext = mContext; + mInflater = LayoutInflater.from(mContext); + } + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new LiveSystemMessageViewHolder(mInflater.inflate(R.layout.view_live_system_message, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + LiveSystemMessageViewHolder messageViewHolder = (LiveSystemMessageViewHolder) holder; + messageViewHolder.setViewData(listInfoMessageModels.get(position)); + } + + @Override + public int getItemCount() { + return listInfoMessageModels.size(); + } + + public void addData(List list) { + listInfoMessageModels.addAll(list); + notifyDataSetChanged(); + + } +} diff --git a/common/src/main/java/com/yunbao/common/bean/ListInfoMessageModel.java b/common/src/main/java/com/yunbao/common/bean/ListInfoMessageModel.java new file mode 100644 index 000000000..3261a8c1b --- /dev/null +++ b/common/src/main/java/com/yunbao/common/bean/ListInfoMessageModel.java @@ -0,0 +1,96 @@ +package com.yunbao.common.bean; + +import android.text.TextUtils; + +import com.google.gson.annotations.SerializedName; + +import java.text.SimpleDateFormat; +import java.util.Date; + +public class ListInfoMessageModel extends BaseModel { + @SerializedName("id") + private int id; + @SerializedName("title") + private String title; + @SerializedName("banner") + private String banner; + @SerializedName("content") + private String content; + @SerializedName("link") + private String link; + @SerializedName("addtime") + private String addtime; + + public int getId() { + return id; + } + + public ListInfoMessageModel setId(int id) { + this.id = id; + return this; + } + + public String getTitle() { + return title; + } + + public ListInfoMessageModel setTitle(String title) { + this.title = title; + return this; + } + + public String getBanner() { + return banner; + } + + public ListInfoMessageModel setBanner(String banner) { + this.banner = banner; + return this; + } + + public String getContent() { + return content; + } + + public ListInfoMessageModel setContent(String content) { + this.content = content; + return this; + } + + public String getLink() { + return link; + } + + public ListInfoMessageModel setLink(String link) { + this.link = link; + return this; + } + + public String getAddtime() { + return addtime; + } + + public ListInfoMessageModel setAddtime(String addtime) { + this.addtime = addtime; + return this; + } + + /** + * 会话列表展示时间 + */ + public String getLastDate(String type) { + if (!TextUtils.isEmpty(addtime) && !TextUtils.equals(addtime, "0")) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Date currenTimeZone; + if (TextUtils.equals(type, "-1")) { + currenTimeZone = new Date(Long.parseLong(addtime)); + } else { + currenTimeZone = new Date(Long.parseLong(addtime + "000")); + } + return sdf.format(currenTimeZone); + } else { + return ""; + } + + } +} 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 dee1a5e78..fc686a611 100644 --- a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java +++ b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java @@ -12,6 +12,7 @@ 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.LiveInfoModel; import com.yunbao.common.bean.LiveRoomActivityBanner; @@ -542,4 +543,9 @@ public interface PDLiveApi { Observable> jieshuDRPK( @Query("roomid") String roomId, @Query("uid") String uid); + + @GET("/api/public/?service=Message.getListInfo") + Observable>> getListInfo( + @Query("type") String type, + @Query("p") int p); } 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 a1aa6c25d..fcdcbb48f 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 @@ -14,6 +14,7 @@ import com.yunbao.common.bean.EnterRoomNewModel; import com.yunbao.common.bean.HttpCallbackModel; import com.yunbao.common.bean.LinkMicUserBean; import com.yunbao.common.bean.LinkMicUserBeanV2; +import com.yunbao.common.bean.ListInfoMessageModel; import com.yunbao.common.bean.LiveAiRobotBean; import com.yunbao.common.bean.LiveInfoModel; import com.yunbao.common.bean.LiveRoomActivityBanner; @@ -1075,6 +1076,18 @@ public class LiveNetManager { }).isDisposed(); } + public void getListInfo(String type, int p, HttpCallback> callback) { + API.get().pdLiveApi(mContext) + .getListInfo(type, p) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(listResponseModel -> { + callback.onSuccess(listResponseModel.getData().getInfo()); + }, throwable -> { + callback.onError(throwable.getMessage()); + }).isDisposed(); + } + /** * 直播间取消网络请求 */ diff --git a/common/src/main/java/com/yunbao/common/views/LiveAnchorMessageCustomPopup.java b/common/src/main/java/com/yunbao/common/views/LiveAnchorMessageCustomPopup.java new file mode 100644 index 000000000..ff91ff65a --- /dev/null +++ b/common/src/main/java/com/yunbao/common/views/LiveAnchorMessageCustomPopup.java @@ -0,0 +1,72 @@ +package com.yunbao.common.views; + +import android.content.Context; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.lxj.xpopup.core.BottomPopupView; +import com.yunbao.common.R; +import com.yunbao.common.adapter.LiveSystemMessageAdapter; +import com.yunbao.common.bean.ListInfoMessageModel; +import com.yunbao.common.http.base.HttpCallback; +import com.yunbao.common.http.live.LiveNetManager; +import com.yunbao.common.utils.ToastUtil; + +import java.util.List; + +/** + * 主播消息中心 + */ +public class LiveAnchorMessageCustomPopup extends BottomPopupView { + private LiveSystemMessageAdapter adapter; + private RecyclerView liveMessage; + + public LiveAnchorMessageCustomPopup(@NonNull Context context) { + super(context); + } + + // 返回自定义弹窗的布局 + @Override + protected int getImplLayoutId() { + return R.layout.dialog_live_anchor_message; + } + + // 执行初始化操作,比如:findView,设置点击,或者任何你弹窗内的业务逻辑 + @Override + protected void onCreate() { + super.onCreate(); + initView(); + initDate(); + } + + private void initDate() { + LiveNetManager.get(getContext()) + .getListInfo("1", 1, new HttpCallback>() { + @Override + public void onSuccess(List data) { + adapter.addData(data); + } + + @Override + public void onError(String error) { + ToastUtil.show(error); + } + }); + + } + + private void initView() { + liveMessage = findViewById(R.id.live_message); + liveMessage.setHasFixedSize(false); + liveMessage.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false)); + adapter = new LiveSystemMessageAdapter(getContext()); + liveMessage.setAdapter(adapter); + } + + @Override + public void onDestroy() { + super.onDestroy(); + } +} diff --git a/common/src/main/java/com/yunbao/common/views/LiveSystemMessageViewHolder.java b/common/src/main/java/com/yunbao/common/views/LiveSystemMessageViewHolder.java new file mode 100644 index 000000000..e1ffea244 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/views/LiveSystemMessageViewHolder.java @@ -0,0 +1,47 @@ +package com.yunbao.common.views; + +import android.text.TextUtils; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.cardview.widget.CardView; +import androidx.recyclerview.widget.RecyclerView; + +import com.yunbao.common.R; +import com.yunbao.common.bean.ListInfoMessageModel; +import com.yunbao.common.glide.ImgLoader; + +public class LiveSystemMessageViewHolder extends RecyclerView.ViewHolder { + private TextView titleText, timeText, contextLayout, toView; + private CardView bannerCard; + private ImageView bannerImage; + + public LiveSystemMessageViewHolder(@NonNull View itemView) { + super(itemView); + titleText = itemView.findViewById(R.id.title_text); + timeText = itemView.findViewById(R.id.time_text); + contextLayout = itemView.findViewById(R.id.context_layout); + toView = itemView.findViewById(R.id.to_view); + bannerCard = itemView.findViewById(R.id.banner_card); + bannerImage = itemView.findViewById(R.id.banner_image); + } + + public void setViewData(ListInfoMessageModel model) { + titleText.setText(model.getTitle()); + timeText.setText(model.getLastDate("1")); + if (TextUtils.isEmpty(model.getBanner())) { + bannerCard.setVisibility(View.GONE); + } else { + bannerCard.setVisibility(View.VISIBLE); + ImgLoader.display(itemView.getContext(), model.getBanner(), bannerImage); + } + contextLayout.setText(model.getContent()); + if (TextUtils.isEmpty(model.getLink())) { + toView.setVisibility(View.GONE); + } else { + toView.setVisibility(View.VISIBLE); + } + } +} diff --git a/common/src/main/res/drawable/bg_live_anchor.xml b/common/src/main/res/drawable/bg_live_anchor.xml new file mode 100644 index 000000000..97e93b52b --- /dev/null +++ b/common/src/main/res/drawable/bg_live_anchor.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/common/src/main/res/drawable/bg_live_anchor_message.xml b/common/src/main/res/drawable/bg_live_anchor_message.xml new file mode 100644 index 000000000..9ff74fedd --- /dev/null +++ b/common/src/main/res/drawable/bg_live_anchor_message.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/common/src/main/res/layout/dialog_live_anchor_message.xml b/common/src/main/res/layout/dialog_live_anchor_message.xml new file mode 100644 index 000000000..1c017ccf9 --- /dev/null +++ b/common/src/main/res/layout/dialog_live_anchor_message.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/layout/dialog_live_new_function.xml b/common/src/main/res/layout/dialog_live_new_function.xml index 4182a2fc9..6a9271e98 100644 --- a/common/src/main/res/layout/dialog_live_new_function.xml +++ b/common/src/main/res/layout/dialog_live_new_function.xml @@ -1,329 +1,433 @@ - - - - + android:layout_marginBottom="8dp" + android:orientation="horizontal"> + android:layout_marginStart="10dp" + android:background="@drawable/bg_live_anchor" + android:gravity="center" + android:paddingStart="6dp" + android:paddingTop="4dp" + android:paddingEnd="6dp" + android:paddingBottom="4dp"> - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_marginStart="5dp" + android:text="00:00" + android:textColor="@color/white" + android:textSize="12sp" /> - - - - - + + android:layout_marginStart="10dp" + android:background="@drawable/bg_live_anchor" + android:gravity="center_vertical" + android:paddingStart="6dp" + android:paddingTop="4dp" - + + + + + - - - - - - - - - - - - - - - - - - - - + android:layout_marginStart="6dp" + android:text="@string/broadcast_data" + android:textColor="@color/white" + android:textSize="10sp" /> - - - - + + + + + + + + + + + + android:layout_marginTop="30dp" + android:text="@string/value_added_benefits" + android:textColor="@color/white" + android:textSize="14sp" /> + + + android:layout_marginStart="16dp" + android:layout_marginTop="10dp" + android:paddingEnd="16dp"> - - - + android:gravity="center" + android:orientation="vertical"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:layout_marginStart="16dp" + android:layout_marginTop="10dp" + android:layout_marginBottom="20dp" + android:paddingEnd="16dp"> - - - - - + android:gravity="center" + android:orientation="vertical"> - + - + + + + android:layout_marginStart="23dp" + android:gravity="center" + android:orientation="vertical"> + + + + + + + + + + + + + + + + + + + android:layout_marginStart="16dp" + android:layout_marginTop="10dp" + android:layout_marginBottom="20dp" + android:paddingEnd="16dp"> - - - - + android:gravity="center" + android:orientation="vertical"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - \ No newline at end of file diff --git a/common/src/main/res/layout/view_live_system_message.xml b/common/src/main/res/layout/view_live_system_message.xml new file mode 100644 index 000000000..968f41186 --- /dev/null +++ b/common/src/main/res/layout/view_live_system_message.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/mipmap-xhdpi/icon_more.png b/common/src/main/res/mipmap-xxhdpi/icon_more.png similarity index 100% rename from live/src/main/res/mipmap-xhdpi/icon_more.png rename to common/src/main/res/mipmap-xxhdpi/icon_more.png diff --git a/common/src/main/res/mipmap-xxhdpi/live_icon_data.png b/common/src/main/res/mipmap-xxhdpi/live_icon_data.png new file mode 100644 index 0000000000000000000000000000000000000000..f23f08440a7952a00cc7abd90f1558e5c6c3b079 GIT binary patch literal 3872 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 a!~X#`C#Z=Q(NG%z0000 In a batch Chat - Congratulations %s have won %s in the Lucky Angel! The next lucky angel will be you! - Congratulations on %s winning %s in Luck 100 %%! Go pass on the good luck! - Guardian group %s people - receive - To complete - Already collected - Image quality selection - More Settings + Congratulations %s have won %s in the Lucky Angel! The next lucky angel will be you! + Congratulations on %s winning %s in Luck 100 %%! Go pass on the good luck! + Guardian group %s people + receive + To complete + Already collected + Image quality selection + More Settings view more The gift is on the way... The gift is on the way @@ -955,52 +955,54 @@ Limited ride And limited avatar frame End \nPK Time %s - accept - refuse - Persist in refusing - Random PK hint + accept + refuse + Persist in refusing + Random PK hint - Automatic speech robot setup - Robot switch - Robot name setting - The word limit is 2 to 8 word - Automatic greeting setting - Number of configured items - Set automatic message sending - Go to set - Thank you for sending gifts, PK start, PK end automatic robot message, \n does not support customization. - Add content - At regular intervals, the robot automatically says the following sentence at random。 - Fill in the content recommendation, such as: send wish list, add fan group, etc - Automatic speech interval (minutes) - At least once every 5 minutes - When a user enters the studio, the robot will @the user and automatically - The following sentence is random. Set a minimum of 1 to a maximum of 20. - Robot setup - High definition - fluency - Ultra hd - After determining the definition of the broadcast, you need to restart the broadcast to change - Confirmation of broadcast Settings - clarity - Live channel - broadcast - robot - set - Not set - no - yes - Ultra HD hint - In the case of unstable network speed, the selection of ultra HD may lead to the delay of the picture in the broadcast room. Do you confirm the selection? - Stick to choice - Network prompt - The system detects that your network is unstable and insufficient device memory will affect the fluency of your live broadcast. Therefore, it is recommended that you choose fluency and clarity. - check version - Update - Latest Version - updating - There is no choice, the anchor is not turned on FHD live. - There is no choice, the anchor is not turned on HD live. - Sorry, this feature is on hold. - phone + Automatic speech robot setup + Robot switch + Robot name setting + The word limit is 2 to 8 word + Automatic greeting setting + Number of configured items + Set automatic message sending + Go to set + Thank you for sending gifts, PK start, PK end automatic robot message, \n does not support customization. + Add content + At regular intervals, the robot automatically says the following sentence at random。 + Fill in the content recommendation, such as: send wish list, add fan group, etc + Automatic speech interval (minutes) + At least once every 5 minutes + When a user enters the studio, the robot will @the user and automatically + The following sentence is random. Set a minimum of 1 to a maximum of 20. + Robot setup + High definition + fluency + Ultra hd + After determining the definition of the broadcast, you need to restart the broadcast to change + Confirmation of broadcast Settings + clarity + Live channel + broadcast + robot + set + Not set + no + yes + Ultra HD hint + In the case of unstable network speed, the selection of ultra HD may lead to the delay of the picture in the broadcast room. Do you confirm the selection? + Stick to choice + Network prompt + The system detects that your network is unstable and insufficient device memory will affect the fluency of your live broadcast. Therefore, it is recommended that you choose fluency and clarity. + check version + Update + Latest Version + updating + There is no choice, the anchor is not turned on FHD live. + There is no choice, the anchor is not turned on HD live. + Sorry, this feature is on hold. + phone + Broadcast + Click To View diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index bcfe413f2..af39ae8b1 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -785,6 +785,7 @@ 暫時還沒有人給予作者鼓勵T_T 點擊查看更多 + 客服 設定 每日13:00PM-1:00AM @@ -1023,4 +1024,6 @@ 無法選擇,該主播未開啟高清直播。 抱歉,該功能暫停使用中。 手機號 + 開播數據 + 點擊查看 diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java index 48e7168ef..f022040d8 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java @@ -1,6 +1,16 @@ package com.yunbao.live.dialog; -import static com.yunbao.common.Constants.*; +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_DR; +import static com.yunbao.common.Constants.LIVE_FUNC_LINK_MIC; +import static com.yunbao.common.Constants.LIVE_FUNC_MIC; +import static com.yunbao.common.Constants.LIVE_FUNC_RANDOM_PK; +import static com.yunbao.common.Constants.LIVE_FUNC_WISHLIST; +import static com.yunbao.common.Constants.LIVE_FUNC_WKS; +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.view.Gravity; @@ -10,10 +20,11 @@ import android.view.WindowManager; import android.widget.ImageView; import android.widget.TextView; +import com.lxj.xpopup.XPopup; import com.yunbao.common.Constants; import com.yunbao.common.dialog.AbsDialogFragment; -import com.yunbao.common.utils.DpUtil; import com.yunbao.common.utils.ToastUtil; +import com.yunbao.common.views.LiveAnchorMessageCustomPopup; import com.yunbao.live.R; import com.yunbao.live.activity.LiveRyAnchorActivity; import com.yunbao.live.interfaces.LiveFunctionClickListener; @@ -92,6 +103,8 @@ public class LiveNewFunctionDialogFragment extends AbsDialogFragment implements mMultiPkView.setOnClickListener(this); mMicView.setOnClickListener(this); mRandomPk.setOnClickListener(this); + findViewById(R.id.message_linear).setOnClickListener(this); + findViewById(R.id.live_tool_robot).setOnClickListener(this); if (leave == 0) { @@ -146,9 +159,14 @@ public class LiveNewFunctionDialogFragment extends AbsDialogFragment implements mFunctionClickListener.onClick(LIVE_FUNC_MIC); } else if (id == R.id.live_tool_random_pk) { mFunctionClickListener.onClick(LIVE_FUNC_RANDOM_PK); - }else if (id==R.id.live_tool_robot){ + } 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())) + .show(); + dismiss(); } } }