私聊页面添加直播飞机票

This commit is contained in:
18401019693
2022-09-06 14:35:46 +08:00
parent ff6fb98a8e
commit cb50c00a06
25 changed files with 846 additions and 39 deletions

View File

@@ -51,6 +51,7 @@ import com.yunbao.common.utils.DialogUitl;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.L;
import com.yunbao.common.utils.ProcessResultUtil;
import com.yunbao.common.utils.RouteUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.views.weight.VerticalViewPager;
import com.yunbao.live.R;
@@ -67,6 +68,7 @@ import com.yunbao.live.dialog.SidebarLiveAudience;
import com.yunbao.live.event.LinkMicTxAccEvent;
import com.yunbao.live.event.LiveAudienceEvent;
import com.yunbao.live.event.LiveRoomChangeEvent;
import com.yunbao.live.event.RecommendLiveRoomEvent;
import com.yunbao.live.http.ImHttpUtil;
import com.yunbao.live.http.LiveHttpConsts;
import com.yunbao.live.http.LiveHttpUtil;
@@ -848,6 +850,8 @@ public class LiveAudienceActivity extends LiveActivity {
}
});
}
@Override
public boolean canBackPressed() {
return super.canBackPressed();

View File

@@ -25,13 +25,22 @@ import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.manager.InstructorRemarkManager;
import com.yunbao.common.manager.imrongcloud.MessageIMManager;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.RouteUtil;
import com.yunbao.live.R;
import com.yunbao.live.adapter.SystemChatMessageAdapter;
import com.yunbao.live.bean.ImUserBean;
import com.yunbao.live.bean.LiveBean;
import com.yunbao.live.bean.SearchUserBean;
import com.yunbao.live.http.ImHttpUtil;
import com.yunbao.live.event.LiveRoomChangeEvent;
import com.yunbao.live.event.RecommendLiveRoomEvent;
import com.yunbao.live.http.LiveHttpUtil;
import com.yunbao.live.presenter.LiveRoomCheckLivePresenter;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@@ -56,6 +65,7 @@ public class PDLIiveChatActivity extends FragmentActivity {
windowColor();
initView();
initData();
Bus.getOn(this);
}
@@ -181,4 +191,32 @@ public class PDLIiveChatActivity extends FragmentActivity {
}, true);
}
@Override
protected void onDestroy() {
super.onDestroy();
Bus.getOff(this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onRecommendLiveRoomEvent(RecommendLiveRoomEvent event) {
LiveHttpUtil.getLiveInfo(event.getLiveuid(), new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0 && info.length > 0) {
LiveBean liveBean = JSON.parseObject(info[0], LiveBean.class);
LiveRoomCheckLivePresenter mCheckLivePresenter = new LiveRoomCheckLivePresenter(mContext, (liveBean1, liveType, liveTypeVal, liveSdk) -> {
if (liveBean1 == null) {
return;
}
EventBus.getDefault().post(new LiveRoomChangeEvent(liveBean, liveType, liveTypeVal));
finish();
});
mCheckLivePresenter.checkLive(liveBean);
} else {
RouteUtil.forwardUserHome(mContext, event.getLiveuid(), 0);
}
}
});
}
}

View File

@@ -2,6 +2,7 @@ package com.yunbao.live.bean;
import android.text.TextUtils;
import com.google.gson.annotations.SerializedName;
import com.yunbao.common.bean.BaseModel;
import java.text.SimpleDateFormat;
@@ -27,6 +28,17 @@ public class ImUserBean extends BaseModel {
String is_admin;
String isDelet;
String _method_ = "";//融雲消息類型
@SerializedName("new_image")
private String newImage;
public String getNewImage() {
return newImage;
}
public ImUserBean setNewImage(String newImage) {
this.newImage = newImage;
return this;
}
public String getTitle() {
return title;

View File

@@ -0,0 +1,222 @@
package com.yunbao.live.dialog;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import com.adjust.sdk.Adjust;
import com.adjust.sdk.AdjustEvent;
import com.blankj.utilcode.util.GsonUtils;
import com.facebook.appevents.AppEventsLogger;
import com.google.firebase.analytics.FirebaseAnalytics;
import com.yunbao.common.activity.SelectImageActivity;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.bean.ImageEntity;
import com.yunbao.common.bean.NoviceInstructorModel;
import com.yunbao.common.dialog.AbsDialogFragment;
import com.yunbao.common.http.CommonHttpUtil;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.manager.NoviceInstructorManager;
import com.yunbao.live.R;
import com.yunbao.live.bean.SearchUserBean;
import com.yunbao.live.views.InputPanelViewHolder;
import com.yunbao.live.views.PDLiveConversationFragment;
import java.util.ArrayList;
import io.rong.imkit.userinfo.RongUserInfoManager;
import io.rong.imlib.RongIMClient;
import io.rong.imlib.model.Conversation;
import io.rong.imlib.model.UserInfo;
/**
* 半屏聊天框
*/
public class PDLIiveChatConversationFragment extends AbsDialogFragment implements View.OnClickListener {
private PDLiveConversationFragment conversationFragment;
private InputPanelViewHolder inputPanel;
private TextView titleView;
private ImageView imgMore, imBack;
private String targetId = "";
private final int PERMISSION_REQUEST_CODE = 0;
private final int SELECT_VIDEO_REQUEST = 0x0002;
private final int SELECT_IMAGE_REQUEST = 0x0001;
private ArrayList<ImageEntity> mSelectImages = new ArrayList<>();
private boolean isAdmin = false;
@Override
protected int getLayoutId() {
return R.layout.fragment_chat_conversation;
}
@Override
protected int getDialogStyle() {
return R.style.dialog;
}
@Override
protected boolean canCancel() {
return false;
}
@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);
initView();
initData();
}
/**
* 初始化
*/
private void initView() {
// 添加会话界面
targetId = getArguments().getString("targetId");
conversationFragment = new PDLiveConversationFragment();
conversationFragment.initConversation(targetId, Conversation.ConversationType.PRIVATE, null);
FragmentManager manager = getChildFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.container, conversationFragment);
transaction.commit();
inputPanel = (InputPanelViewHolder) findViewById(R.id.input_panel);
titleView = (TextView) findViewById(R.id.titleView);
imgMore = (ImageView) findViewById(R.id.img_more);
imBack = (ImageView) findViewById(R.id.btn_back);
imgMore.setOnClickListener(this);
imBack.setOnClickListener(this);
inputPanel.addMediaMessageCallback(new InputPanelViewHolder.MediaMessageCallback() {
@Override
public void choosePic(int intoIndex) {
jumpPic(intoIndex);
}
});
}
/**
* 数据的设置
*/
private void initData() {
NoviceInstructorModel model = NoviceInstructorManager.get(getActivity()).getNoviceInstructor();
if (model != null && !TextUtils.isEmpty(model.getMsgZdySendText())) {
inputPanel.setPresetInformation(model.getMsgZdySendText());
}
//绑定聊天用户id
inputPanel.setTargetId(targetId);
//获取用户信息
UserInfo userInfo = RongUserInfoManager.getInstance().getUserInfo(targetId);
if (null != userInfo) {
titleView.setText(userInfo.getName());
if (!TextUtils.isEmpty(userInfo.getExtra())) {
SearchUserBean userBean = GsonUtils.fromJson(userInfo.getExtra(), SearchUserBean.class);
//新手指导员
if (!TextUtils.isEmpty(userBean.getIs_admin()) && TextUtils.equals(userBean.getIs_admin(), "1")) {
isAdmin = true;
imgMore.setVisibility(View.GONE);
AdjustEvent adjustEvent1 = new AdjustEvent("exlgn3");
Adjust.trackEvent(adjustEvent1);
CommonHttpUtil.setAdvertisingChannels("exlgn3", new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0) {
FirebaseAnalytics.getInstance(mContext).logEvent("FS_director_read", null);
AppEventsLogger.newLogger(mContext).logEvent("FB_director_read");
}
}
});
} else {//非指导员
isAdmin = false;
imgMore.setVisibility(View.VISIBLE);
}
inputPanel.setAdmin(isAdmin);
Log.e("PDLiveConversation", userInfo.getExtra());
}
} else {
titleView.setText("系統消息");
inputPanel.setVisibility(View.GONE);
}
getDraft();
}
@Override
public void onClick(View v) {
int id = v.getId();
//菜单
if (id == R.id.img_more) {
IMLoginModel model = IMLoginManager.get(mContext).getUserInfo();
new MenuPopuwWindow(getActivity()).setIsAdmin(model.getIsAdmin(), targetId).show(imgMore);
} else if (id == R.id.btn_back) {//返回
dismiss();
}
}
//intoIndex 1=调用相机,2=照片选取,3=视频选取
public void jumpPic(int intoIndex) {
//选择图片
int isPermission1 = ContextCompat.checkSelfPermission(mContext, Manifest.permission.READ_EXTERNAL_STORAGE);
int isPermission2 = ContextCompat.checkSelfPermission(mContext, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (isPermission1 == PackageManager.PERMISSION_GRANTED && isPermission2 == PackageManager.PERMISSION_GRANTED) {
startActivity(intoIndex);
} else {
//申请权限
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE);
}
}
private void startActivity(int intoIndex) {
mSelectImages.clear();
Intent intent = new Intent(mContext, SelectImageActivity.class);
intent.putParcelableArrayListExtra("selected_images", mSelectImages);
intent.putExtra("intoIndex", intoIndex);
if (intoIndex == 3) {
startActivityForResult(intent, SELECT_VIDEO_REQUEST);
} else {
startActivityForResult(intent, SELECT_IMAGE_REQUEST);
}
}
/**
* 获取草稿箱信息系
*/
private void getDraft() {
RongIMClient.getInstance().getTextMessageDraft(Conversation.ConversationType.PRIVATE, targetId, new RongIMClient.ResultCallback<String>() {
@Override
public void onSuccess(String s) {
if (!TextUtils.isEmpty(inputPanel.getPresetInformation()))
inputPanel.setPresetInformation(s);
}
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
}
});
}
}

View File

@@ -17,6 +17,7 @@ public class LiveAudienceEvent extends BaseModel {
private int liveType;
private int liveTypeVal;
public int getLiveType() {
return liveType;
}

View File

@@ -0,0 +1,21 @@
package com.yunbao.live.event;
import com.google.gson.annotations.SerializedName;
import com.yunbao.common.bean.BaseModel;
/**
* 聊天界面跳转直播间
*/
public class RecommendLiveRoomEvent extends BaseModel {
@SerializedName("liveuid")
private String liveuid;
public String getLiveuid() {
return liveuid;
}
public RecommendLiveRoomEvent setLiveuid(String liveuid) {
this.liveuid = liveuid;
return this;
}
}

View File

@@ -0,0 +1,78 @@
package com.yunbao.live.views;
import android.content.Context;
import android.net.Uri;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.TextUtils;
import android.view.ViewGroup;
import com.google.gson.Gson;
import com.yunbao.common.R;
import com.yunbao.common.bean.RecommendLiveRoomModel;
import com.yunbao.common.manager.imrongcloud.RecommendLiveRoom;
import com.yunbao.common.utils.Bus;
import com.yunbao.live.event.RecommendLiveRoomEvent;
import org.greenrobot.eventbus.EventBus;
import java.util.List;
import io.rong.imkit.conversation.messgelist.provider.BaseMessageItemProvider;
import io.rong.imkit.model.UiMessage;
import io.rong.imkit.widget.adapter.IViewProviderListener;
import io.rong.imkit.widget.adapter.ViewHolder;
import io.rong.imlib.model.MessageContent;
/**
* 自定义消息模板
*/
public class RecommendLiveRoomProvider extends BaseMessageItemProvider<RecommendLiveRoom> {
private Context mContext;
public RecommendLiveRoomProvider(Context context) {
this.mContext = context;
}
@Override
protected ViewHolder onCreateMessageContentViewHolder(ViewGroup viewGroup, int i) {
return ViewHolder.createViewHolder(mContext, viewGroup, R.layout.view_recommend_live_room);
}
@Override
protected void bindMessageContentViewHolder(ViewHolder viewHolder, ViewHolder viewHolder1, RecommendLiveRoom recommendLiveRoom, UiMessage uiMessage, int i, List<UiMessage> list, IViewProviderListener<UiMessage> iViewProviderListener) {
if (uiMessage.getMessage().getContent() instanceof RecommendLiveRoom) {
RecommendLiveRoom liveRoom = (RecommendLiveRoom) uiMessage.getMessage().getContent();
RecommendLiveRoomModel model = new Gson().fromJson(liveRoom.getContent(), RecommendLiveRoomModel.class);
viewHolder.setImageUri(R.id.live_bg, Uri.parse(model.getAvatar()));
viewHolder.setText(R.id.host_name, model.getUserNicename());
}
}
@Override
protected boolean onItemClick(ViewHolder viewHolder, RecommendLiveRoom recommendLiveRoom, UiMessage uiMessage, int i, List<UiMessage> list, IViewProviderListener<UiMessage> iViewProviderListener) {
if (uiMessage.getMessage().getContent() instanceof RecommendLiveRoom) {
RecommendLiveRoom liveRoom = (RecommendLiveRoom) uiMessage.getMessage().getContent();
RecommendLiveRoomModel model = new Gson().fromJson(liveRoom.getContent(), RecommendLiveRoomModel.class);
Bus.get().post(new RecommendLiveRoomEvent().setLiveuid(model.getLiveuid()));
EventBus.getDefault().post(new RecommendLiveRoomEvent().setLiveuid(model.getLiveuid()));
}
return true;
}
@Override
protected boolean isMessageViewType(MessageContent messageContent) {
return messageContent instanceof RecommendLiveRoom;
}
@Override
public Spannable getSummarySpannable(Context context, RecommendLiveRoom recommendLiveRoom) {
String politicalInstructor = "";
if (recommendLiveRoom != null && !TextUtils.isEmpty(recommendLiveRoom.getContent())) {
RecommendLiveRoomModel model = new Gson().fromJson(recommendLiveRoom.getContent(), RecommendLiveRoomModel.class);
}
return new SpannableString(politicalInstructor + mContext.getString(R.string.live_room_air_ticket));
}
}

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.cardview.widget.CardView
android:id="@+id/top_card"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="8dp"
app:cardElevation="0dp">
<include layout="@layout/view_title" />
</androidx.cardview.widget.CardView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/top_card"
android:layout_marginTop="-10dp"
android:orientation="vertical">
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="350dp"
android:background="@color/white"
android:paddingTop="10dp" />
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="@color/gray3" />
<com.yunbao.live.views.InputPanelViewHolder
android:id="@+id/input_panel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white" />
</LinearLayout>
</RelativeLayout>

View File

@@ -10,9 +10,9 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="8dp"
android:visibility="gone"
android:layout_marginTop="5dp"
android:layout_marginEnd="8dp">
android:layout_marginEnd="8dp"
android:visibility="gone">
<RelativeLayout
android:id="@+id/img_administrator_layout"
@@ -65,8 +65,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/conversation_linear"
android:layout_toEndOf="@id/img_administrator_layout"
android:layout_marginTop="7dp"
android:layout_toEndOf="@id/img_administrator_layout"
android:gravity="center_vertical">
<ImageView
@@ -78,7 +78,7 @@
<TextView
android:id="@+id/rc_conversation_content"
android:id="@+id/conversation_content"
style="@style/TextStyle.Alignment"
android:layout_width="0dp"
android:layout_height="wrap_content"
@@ -192,7 +192,7 @@
<TextView
android:id="@+id/conversation_content"
android:id="@+id/rc_conversation_content"
style="@style/TextStyle.Alignment"
android:layout_width="0dp"
android:layout_height="wrap_content"
@@ -237,7 +237,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginTop="@dimen/rc_margin_size_16"
android:layout_marginTop="41dp"
android:layout_marginEnd="@dimen/rc_margin_size_12"
android:text="3 月 22 日"
android:textColor="@color/rc_auxiliary_color"
@@ -249,9 +249,9 @@
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/rc_margin_size_12"
android:layout_marginBottom="@dimen/rc_margin_size_12"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:visibility="gone"
app:srcCompat="@drawable/rc_no_disturb" />

View File

@@ -35,6 +35,7 @@
android:layout_marginEnd="5dp"
android:layout_marginBottom="6.5dp"
android:layout_weight="1"
android:textColor="#161616"
android:background="@drawable/rc_ext_panel_editbox_background"
android:maxLines="4" />