add 分享

add 聊天页面右上角菜单
This commit is contained in:
2024-03-16 17:50:16 +08:00
parent 9c54cfca2a
commit b3b46ccff3
40 changed files with 835 additions and 376 deletions

View File

@@ -7,7 +7,7 @@ import android.net.Uri;
import androidx.core.content.FileProvider;
import com.twitter.sdk.android.tweetcomposer.TweetUploadService;
import com.yunbao.share.bean.ShareBuilder;
import com.yunbao.share.bean.ShareBean;
import com.yunbao.share.receiver.TwitterResultReceiver;
import java.io.File;
@@ -23,7 +23,7 @@ public abstract class AbsShareInterface {
context.registerReceiver(new TwitterResultReceiver(), filter);
}
public abstract void share(ShareBuilder builder, ICallback callback);
public abstract void share(ShareBean builder, ICallback callback);
public Uri fileToUri(File file){
return FileProvider.getUriForFile(mContext,

View File

@@ -1,7 +1,6 @@
package com.yunbao.share.adapters;
import android.content.Context;
import android.os.Environment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -15,7 +14,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.pdlive.shayu.R;
import com.yunbao.share.ICallback;
import com.yunbao.share.bean.ShareBuilder;
import com.yunbao.share.bean.ShareBean;
import com.yunbao.share.platform.FacebookShare;
import com.yunbao.share.platform.Instagram;
import com.yunbao.share.platform.Internal;
@@ -24,13 +23,12 @@ import com.yunbao.share.platform.MessengerShare;
import com.yunbao.share.platform.TwitterShare;
import com.yunbao.share.platform.WhatsApp;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class ShareAppAdapter extends RecyclerView.Adapter<ShareAppAdapter.AppViewHolder> {
private Context mContext;
private List<ShareBuilder> list;
private List<ShareBean> list;
ShareCallback shareCallback;
public ShareAppAdapter(Context mContext) {
@@ -38,7 +36,7 @@ public class ShareAppAdapter extends RecyclerView.Adapter<ShareAppAdapter.AppVie
this.mContext = mContext;
}
public void setList(List<ShareBuilder> list) {
public void setList(List<ShareBean> list) {
this.list = list;
notifyDataSetChanged();
}
@@ -51,27 +49,28 @@ public class ShareAppAdapter extends RecyclerView.Adapter<ShareAppAdapter.AppVie
@Override
public void onBindViewHolder(@NonNull AppViewHolder holder, int position) {
ShareBuilder builder = list.get(position);
ShareBean builder = list.get(position);
System.out.println("------type------>"+builder.getType());
switch (builder.getType()) {
case ShareBuilder.APP_FACEBOOK:
case ShareBean.APP_FACEBOOK:
holder.setData(builder, R.mipmap.icon_share_facebook, R.string.dialog_share_app_facebook);
break;
case ShareBuilder.APP_LINE:
case ShareBean.APP_LINE:
holder.setData(builder, R.mipmap.icon_share_line, R.string.dialog_share_app_line);
break;
case ShareBuilder.APP_TWITTER:
case ShareBean.APP_TWITTER:
holder.setData(builder, R.mipmap.icon_share_twitter, R.string.dialog_share_app_twitter);
break;
case ShareBuilder.APP_WHATSAPP:
case ShareBean.APP_WHATSAPP:
holder.setData(builder, R.mipmap.icon_share_whatsapp, R.string.dialog_share_app_whatsapp);
break;
case ShareBuilder.APP_MESSENGER:
case ShareBean.APP_MESSENGER:
holder.setData(builder, R.mipmap.icon_share_messenger, R.string.dialog_share_app_messenger);
break;
case ShareBuilder.APP_INSTAGRAM:
case ShareBean.APP_INSTAGRAM:
holder.setData(builder, R.mipmap.icon_share_instagram, R.string.dialog_share_app_instagram);
break;
case ShareBuilder.APP_INTERNAL:
case ShareBean.APP_INTERNAL:
holder.setData(builder, R.mipmap.ic_share_friend, R.string.dialog_share_app_internal);
break;
}
@@ -99,30 +98,30 @@ public class ShareAppAdapter extends RecyclerView.Adapter<ShareAppAdapter.AppVie
title = itemView.findViewById(R.id.share_app_name);
}
public void setData(ShareBuilder bean, @DrawableRes int iconId, @StringRes int appName) {
public void setData(ShareBean bean, @DrawableRes int iconId, @StringRes int appName) {
icon.setImageResource(iconId);
title.setText(appName);
itemView.setOnClickListener(v -> {
switch (bean.getType()) {
case ShareBuilder.APP_FACEBOOK:
case ShareBean.APP_FACEBOOK:
new FacebookShare(itemView.getContext()).share(bean, new ShareCallback());
break;
case ShareBuilder.APP_LINE:
case ShareBean.APP_LINE:
new Line(itemView.getContext()).share(bean, new ShareCallback());
break;
case ShareBuilder.APP_TWITTER:
case ShareBean.APP_TWITTER:
new TwitterShare(itemView.getContext()).share(bean, new ShareCallback());
break;
case ShareBuilder.APP_WHATSAPP:
case ShareBean.APP_WHATSAPP:
new WhatsApp(itemView.getContext()).share(bean, new ShareCallback());
break;
case ShareBuilder.APP_MESSENGER:
case ShareBean.APP_MESSENGER:
new MessengerShare(itemView.getContext()).share(bean, new ShareCallback());
break;
case ShareBuilder.APP_INSTAGRAM:
case ShareBean.APP_INSTAGRAM:
new Instagram(itemView.getContext()).share(bean, new ShareCallback());
break;
case ShareBuilder.APP_INTERNAL:
case ShareBean.APP_INTERNAL:
new Internal(itemView.getContext()).share(bean, shareCallback);
break;
}

View File

@@ -0,0 +1,260 @@
package com.yunbao.share.bean;
import androidx.annotation.NonNull;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.share.ui.SharePopDialog;
import java.io.File;
public class ShareBean {
public static final int APP_FACEBOOK = 0;
public static final int APP_LINE = 1;
public static final int APP_TWITTER = 2;
public static final int APP_WHATSAPP = 3;
public static final int APP_MESSENGER = 4;
public static final int APP_INSTAGRAM = 5;
public static final int APP_INTERNAL = 6;
private String text;
private String link;
private File file;
private int type;
private String uid;
private String anchorId;
private String anchorName;
private String anchorAvatar;
private int shareType;
private String cover;
private String title;
public static String createLiveShareLink(String shareUid, String anchorId, String anchorName, String anchorAvatar) {
return String.format(CommonAppConfig.HOST +
"/index.php?g=Appapi&m=home&a=share&uid=%s&user_id=%s&isGoogle=%s",
anchorId,
shareUid,
CommonAppConfig.IS_GOOGLE_PLAY
);
}
public static String createInviteLink(String shareUid) {
return String.format("https://www.pdlive.com/public/app/download/index.html?user_id=%s&isGoogle=%s",
shareUid,
CommonAppConfig.IS_GOOGLE_PLAY
);
}
public static ShareBean builder(int type) {
return new ShareBean(type);
}
private ShareBean(int type) {
this.type = type;
}
public int getShareType() {
return shareType;
}
public void setShareType(int shareType) {
this.shareType = shareType;
}
public void setType(int type) {
this.type = type;
}
public String getCover() {
return cover;
}
public void setCover(String cover) {
this.cover = cover;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getType() {
return type;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getAnchorId() {
return anchorId;
}
public void setAnchorId(String anchorId) {
this.anchorId = anchorId;
}
public String getAnchorName() {
return anchorName;
}
public void setAnchorName(String anchorName) {
this.anchorName = anchorName;
}
public String getAnchorAvatar() {
return anchorAvatar;
}
public void setAnchorAvatar(String anchorAvatar) {
this.anchorAvatar = anchorAvatar;
}
public ShareBean setText(String text) {
this.text = text;
return this;
}
public ShareBean setLink(String link) {
this.link = link;
return this;
}
public ShareBean setFile(File file) {
this.file = file;
return this;
}
public String getText() {
if (StringUtil.isEmpty(text)) {
return getLink();
}
return text + "\n" + getLink();
}
public String getLink() {
if (StringUtil.isEmpty(link)) {
link = createLiveShareLink(uid, anchorId, anchorName, anchorAvatar);
}
return link;
}
public File getFile() {
return file;
}
@NonNull
@Override
public String toString() {
return "ShareBuilder{" +
"text='" + text + '\'' +
", link='" + link + '\'' +
", file=" + file +
'}';
}
/**
* private String text;
* private String link;
* private File file;
* private int type;
* private String uid;
* private String anchorId;
* private String anchorName;
* private String anchorAvatar;
* private int shareType;
* private String cover;
* private String title;
*/
@NonNull
@Override
public ShareBean clone(){
ShareBean bean=new ShareBean(type);
bean.anchorId=anchorId;
bean.anchorName=anchorName;
bean.anchorAvatar=anchorAvatar;
bean.text=text;
bean.link=link;
bean.file=file;
bean.uid=uid;
bean.shareType=shareType;
bean.cover=cover;
bean.title=title;
return bean;
}
public static class ShareBuilder {
ShareBean bean;
public ShareBuilder() {
bean = new ShareBean(APP_FACEBOOK);
}
public ShareBuilder setShareType(int shareType) {
bean.setShareType(shareType);
return this;
}
public ShareBuilder setCover(String cover) {
bean.setCover(cover);
return this;
}
public ShareBuilder setTitle(String title) {
bean.setTitle(title);
return this;
}
public ShareBuilder setUid(String uid) {
bean.setUid(uid);
return this;
}
public ShareBuilder setAnchorId(String anchorId) {
bean.setAnchorId(anchorId);
return this;
}
public ShareBuilder setAnchorName(String anchorName) {
bean.setAnchorName(anchorName);
return this;
}
public ShareBuilder setAnchorAvatar(String anchorAvatar) {
bean.setAnchorAvatar(anchorAvatar);
return this;
}
public ShareBuilder setText(String text) {
bean.setText(text);
return this;
}
public ShareBuilder setLink(String link) {
bean.setLink(link);
return this;
}
public ShareBuilder setFile(File file) {
bean.setFile(file);
return this;
}
public ShareBean build() {
return bean;
}
public static ShareBuilder create() {
return new ShareBuilder();
}
}
}

View File

@@ -1,135 +0,0 @@
package com.yunbao.share.bean;
import androidx.annotation.NonNull;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.StringUtil;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Locale;
public class ShareBuilder {
public static final int APP_FACEBOOK = 0;
public static final int APP_LINE = 1;
public static final int APP_TWITTER = 2;
public static final int APP_WHATSAPP = 3;
public static final int APP_MESSENGER = 4;
public static final int APP_INSTAGRAM = 5;
public static final int APP_INTERNAL = 6;
private String text;
private String link;
private File file;
private int type;
private String uid;
private String anchorId;
private String anchorName;
private String anchorAvatar;
public static String createLiveShareLink(String shareUid, String anchorId, String anchorName, String anchorAvatar) {
return String.format(CommonAppConfig.HOST +
"/index.php?g=Appapi&m=home&a=share&uid=%s&user_id=%s&isGoogle=%s",
anchorId,
shareUid,
CommonAppConfig.IS_GOOGLE_PLAY
);
}
public static String createInviteLink(String shareUid) {
return String.format("https://www.pdlive.com/public/app/download/index.html?user_id=%s&isGoogle=%s",
shareUid,
CommonAppConfig.IS_GOOGLE_PLAY
);
}
public static ShareBuilder builder(int type) {
return new ShareBuilder(type);
}
private ShareBuilder(int type) {
this.type = type;
}
public int getType() {
return type;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getAnchorId() {
return anchorId;
}
public void setAnchorId(String anchorId) {
this.anchorId = anchorId;
}
public String getAnchorName() {
return anchorName;
}
public void setAnchorName(String anchorName) {
this.anchorName = anchorName;
}
public String getAnchorAvatar() {
return anchorAvatar;
}
public void setAnchorAvatar(String anchorAvatar) {
this.anchorAvatar = anchorAvatar;
}
public ShareBuilder setText(String text) {
this.text = text;
return this;
}
public ShareBuilder setLink(String link) {
this.link = link;
return this;
}
public ShareBuilder setFile(File file) {
this.file = file;
return this;
}
public String getText() {
if (StringUtil.isEmpty(text)) {
return getLink();
}
return text + "\n" + getLink();
}
public String getLink() {
if (StringUtil.isEmpty(link)) {
link = createLiveShareLink(uid, anchorId, anchorName, anchorAvatar);
}
return link;
}
public File getFile() {
return file;
}
@NonNull
@Override
public String toString() {
return "ShareBuilder{" +
"text='" + text + '\'' +
", link='" + link + '\'' +
", file=" + file +
'}';
}
}

View File

@@ -12,10 +12,9 @@ import com.facebook.FacebookException;
import com.facebook.share.Sharer;
import com.facebook.share.model.ShareLinkContent;
import com.facebook.share.widget.ShareDialog;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.share.AbsShareInterface;
import com.yunbao.share.ICallback;
import com.yunbao.share.bean.ShareBuilder;
import com.yunbao.share.bean.ShareBean;
public class FacebookShare extends AbsShareInterface {
public static CallbackManager callbackManager;
@@ -24,7 +23,7 @@ public class FacebookShare extends AbsShareInterface {
}
@Override
public void share(ShareBuilder builder, ICallback callback) {
public void share(ShareBean builder, ICallback callback) {
callbackManager= CallbackManager.Factory.create();
ShareLinkContent content = new ShareLinkContent.Builder()
.setContentUrl(Uri.parse(builder.getLink()))

View File

@@ -6,7 +6,7 @@ import android.net.Uri;
import com.yunbao.share.AbsShareInterface;
import com.yunbao.share.ICallback;
import com.yunbao.share.bean.ShareBuilder;
import com.yunbao.share.bean.ShareBean;
public class Instagram extends AbsShareInterface {
public Instagram(Context context) {
@@ -14,7 +14,7 @@ public class Instagram extends AbsShareInterface {
}
@Override
public void share(ShareBuilder builder, ICallback callback) {
public void share(ShareBean builder, ICallback callback) {
String type = "image/*";
Intent share = new Intent(Intent.ACTION_SEND);
Uri uri = fileToUri(builder.getFile());

View File

@@ -3,20 +3,23 @@ package com.yunbao.share.platform;
import android.content.Context;
import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.interfaces.OnSendMessageListener;
import com.yunbao.common.message.content.MessageChatCardContent;
import com.yunbao.share.AbsShareInterface;
import com.yunbao.share.ICallback;
import com.yunbao.share.bean.ShareBuilder;
import com.yunbao.share.bean.ShareBean;
import com.yunbao.share.ui.AppInternalShareDialog;
import com.yunbao.share.ui.ShareSuccessNotifyDialog;
import io.rong.imlib.model.Conversation;
public class Internal extends AbsShareInterface {
public Internal(Context context) {
super(context);
}
@Override
public void share(ShareBuilder builder, ICallback callback) {
public void share(ShareBean builder, ICallback callback) {
new AppInternalShareDialog(mContext)
.setOnItemClickListener(new OnItemClickListener<String>() {
@Override
@@ -26,10 +29,35 @@ public class Internal extends AbsShareInterface {
return;
}
builder.setUid(toUid);
sendMessage(builder);
new ShareSuccessNotifyDialog(mContext, builder)
.showDialog();
callback.onSuccess();
}
}).showDialog();
}
void sendMessage(ShareBean builder){
MessageChatCardContent.sendMessage(Conversation.ConversationType.PRIVATE, builder.getUid(),
MessageChatCardContent.obtain(
builder.getCover(),
builder.getTitle(),
builder.getAnchorAvatar(),
builder.getAnchorName(),
builder.getAnchorId(),
"1",
builder.getAnchorId()
),
new OnSendMessageListener<Object>() {
@Override
public void onSuccess(String token, Object bean) {
super.onSuccess(token, bean);
}
@Override
public void onError(int status, String msg) {
super.onError(status, msg);
}
}
);
}
}

View File

@@ -6,7 +6,7 @@ import android.net.Uri;
import com.yunbao.share.AbsShareInterface;
import com.yunbao.share.ICallback;
import com.yunbao.share.bean.ShareBuilder;
import com.yunbao.share.bean.ShareBean;
import java.net.URLEncoder;
@@ -17,7 +17,7 @@ public class Line extends AbsShareInterface {
}
@Override
public void share(ShareBuilder builder, ICallback callback) {
public void share(ShareBean builder, ICallback callback) {
try {
Intent share = new Intent(Intent.ACTION_VIEW, Uri.parse("https://line.me/R/share?text=" + URLEncoder.encode(builder.getText(), "UTF-8")));
mContext.startActivity(share);

View File

@@ -13,10 +13,9 @@ import com.facebook.FacebookSdk;
import com.facebook.share.Sharer;
import com.facebook.share.model.ShareLinkContent;
import com.facebook.share.widget.MessageDialog;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.share.AbsShareInterface;
import com.yunbao.share.ICallback;
import com.yunbao.share.bean.ShareBuilder;
import com.yunbao.share.bean.ShareBean;
public class MessengerShare extends AbsShareInterface {
public static CallbackManager callbackManager;
@@ -27,7 +26,7 @@ public class MessengerShare extends AbsShareInterface {
}
@Override
public void share(ShareBuilder builder, ICallback callback) {
public void share(ShareBean builder, ICallback callback) {
callbackManager = CallbackManager.Factory.create();
ShareLinkContent content = new ShareLinkContent.Builder()
.setContentUrl(Uri.parse(builder.getLink()))

View File

@@ -7,7 +7,7 @@ import android.net.Uri;
import com.twitter.sdk.android.core.Twitter;
import com.yunbao.share.AbsShareInterface;
import com.yunbao.share.ICallback;
import com.yunbao.share.bean.ShareBuilder;
import com.yunbao.share.bean.ShareBean;
import java.net.URLEncoder;
@@ -19,7 +19,7 @@ public class TwitterShare extends AbsShareInterface {
}
@Override
public void share(ShareBuilder date, ICallback callback) {
public void share(ShareBean date, ICallback callback) {
/*
new TwitterAuthClient().authorize((Activity) mContext, new Callback<TwitterSession>() {

View File

@@ -5,7 +5,7 @@ import android.content.Intent;
import com.yunbao.share.AbsShareInterface;
import com.yunbao.share.ICallback;
import com.yunbao.share.bean.ShareBuilder;
import com.yunbao.share.bean.ShareBean;
public class WhatsApp extends AbsShareInterface {
public WhatsApp(Context context) {
@@ -13,7 +13,7 @@ public class WhatsApp extends AbsShareInterface {
}
@Override
public void share(ShareBuilder builder, ICallback callback) {
public void share(ShareBean builder, ICallback callback) {
try {
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);

View File

@@ -2,27 +2,21 @@ package com.yunbao.share.ui;
import android.content.Context;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.lxj.xpopup.XPopup;
import com.pdlive.shayu.R;
import com.yunbao.common.bean.MessageChatUserBean;
import com.yunbao.common.dialog.AbsDialogFullScreenPopupWindow;
import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.ViewUtils;
import com.yunbao.share.adapters.InternalShareAdapter;
import com.yunbao.share.bean.ShareBuilder;
import java.util.ArrayList;
import java.util.List;
import io.rong.imkit.conversationlist.model.SingleConversation;
import io.rong.imkit.userinfo.RongUserInfoManager;
import io.rong.imkit.widget.refresh.SmartRefreshLayout;
import io.rong.imkit.widget.refresh.api.RefreshLayout;
import io.rong.imkit.widget.refresh.listener.OnLoadMoreListener;
@@ -31,7 +25,6 @@ import io.rong.imkit.widget.refresh.wrapper.RongRefreshHeader;
import io.rong.imlib.IRongCoreCallback;
import io.rong.imlib.IRongCoreEnum;
import io.rong.imlib.RongCoreClient;
import io.rong.imlib.RongIMClient;
import io.rong.imlib.model.Conversation;
public class AppInternalShareDialog extends AbsDialogFullScreenPopupWindow {
@@ -72,6 +65,10 @@ public class AppInternalShareDialog extends AbsDialogFullScreenPopupWindow {
dismiss();
});
findViewById(R.id.btn_share).setOnClickListener(view -> {
if(adapter.getSelectPosition()==-1){
ToastUtil.show(R.string.dialog_share_failure_not_select);
return;
}
if (onItemClickListener != null) {
onItemClickListener.onItemClick(listData.get(adapter.getSelectPosition()).mCore.getTargetId(), adapter.getSelectPosition());
}

View File

@@ -2,14 +2,12 @@ package com.yunbao.share.ui;
import static android.content.Context.CLIPBOARD_SERVICE;
import android.app.Dialog;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Shader;
import android.view.ViewTreeObserver;
import android.widget.ImageView;
import android.widget.TextView;
@@ -22,10 +20,8 @@ import com.makeramen.roundedimageview.RoundedImageView;
import com.pdlive.shayu.R;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.dialog.AbsDialogPopupWindow;
import com.yunbao.common.utils.DialogUitl;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.share.bean.ShareBuilder;
import com.yunbao.share.bean.ShareBean;
import com.yunbao.share.adapters.ShareAppAdapter;
import java.util.ArrayList;
@@ -38,7 +34,7 @@ public class InvitePopDialog extends AbsDialogPopupWindow {
private TextView info;
private TextView link;
private TextView title;
private List<ShareBuilder> data;
private List<ShareBean> data;
private String uid;
private String anchorId;
@@ -123,18 +119,18 @@ public class InvitePopDialog extends AbsDialogPopupWindow {
private void initData() {
data = new ArrayList<>();
data.add(builder(ShareBuilder.APP_FACEBOOK));
data.add(builder(ShareBuilder.APP_LINE));
data.add(builder(ShareBuilder.APP_TWITTER));
data.add(builder(ShareBuilder.APP_WHATSAPP));
data.add(builder(ShareBuilder.APP_MESSENGER));
data.add(builder(ShareBean.APP_FACEBOOK));
data.add(builder(ShareBean.APP_LINE));
data.add(builder(ShareBean.APP_TWITTER));
data.add(builder(ShareBean.APP_WHATSAPP));
data.add(builder(ShareBean.APP_MESSENGER));
// data.add(builder(ShareBuilder.APP_INSTAGRAM));
adapter.setList(data);
}
private ShareBuilder builder(int type) {
ShareBuilder builder = ShareBuilder.builder(type);
private ShareBean builder(int type) {
ShareBean builder = ShareBean.builder(type);
builder.setText(getContext().getString(R.string.dialog_invite_info));
builder.setLink(url);
builder.setUid(uid);

View File

@@ -12,58 +12,48 @@ import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.lxj.xpopup.XPopup;
import com.lxj.xpopup.util.XPopupUtils;
import com.makeramen.roundedimageview.RoundedImageView;
import com.pdlive.shayu.R;
import com.yunbao.common.dialog.AbsDialogCenterPopupWindow;
import com.yunbao.common.dialog.AbsDialogPopupWindow;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.share.adapters.ShareAppAdapter;
import com.yunbao.share.bean.ShareBuilder;
import com.yunbao.share.bean.ShareBean;
import java.util.ArrayList;
import java.util.List;
public class SharePopDialog extends AbsDialogPopupWindow {
public static final int TYPE_LIVE = 0;
public static final int TYPE_DYNAMIC = 1;
private ShareAppAdapter adapter;
private RecyclerView list;
private RoundedImageView avatar;
private TextView info;
private TextView link;
private List<ShareBuilder> data;
private List<ShareBean> data;
private String uid;
private String anchorId;
private String anchorName;
private String anchorAvatar;
private String shareLink;
private int type;
private ShareBean bean;
public SharePopDialog(@NonNull Context context) {
super(context);
}
public SharePopDialog setUid(String uid) {
this.uid = uid;
public SharePopDialog setShareType(int type) {
this.type = type;
return this;
}
public SharePopDialog setAnchorId(String anchorId) {
this.anchorId = anchorId;
public SharePopDialog setShareData(ShareBean build) {
this.bean=build;
return this;
}
public SharePopDialog setAnchorName(String anchorName) {
this.anchorName = anchorName;
return this;
}
public SharePopDialog setAnchorAvatar(String anchorAvatar) {
this.anchorAvatar = anchorAvatar;
return this;
}
public SharePopDialog setShareLink(String link) {
this.shareLink = link + "&isZh=" + (WordUtil.isNewZh() ? "1" : 0);
return this;
@@ -89,7 +79,7 @@ public class SharePopDialog extends AbsDialogPopupWindow {
info = findViewById(R.id.share_info);
link = findViewById(R.id.share_link);
adapter = new ShareAppAdapter(getContext());
adapter.setOnShareStatusListener(new ShareAppAdapter.ShareCallback(){
adapter.setOnShareStatusListener(new ShareAppAdapter.ShareCallback() {
@Override
public void onSuccess() {
super.onSuccess();
@@ -103,16 +93,16 @@ public class SharePopDialog extends AbsDialogPopupWindow {
private void initData() {
data = new ArrayList<>();
data.add(builder(ShareBuilder.APP_FACEBOOK));
data.add(builder(ShareBuilder.APP_LINE));
data.add(builder(ShareBuilder.APP_TWITTER));
data.add(builder(ShareBuilder.APP_WHATSAPP));
data.add(builder(ShareBuilder.APP_MESSENGER));
data.add(builder(ShareBuilder.APP_INTERNAL));
data.add(builder(ShareBean.APP_FACEBOOK));
data.add(builder(ShareBean.APP_LINE));
data.add(builder(ShareBean.APP_TWITTER));
data.add(builder(ShareBean.APP_WHATSAPP));
data.add(builder(ShareBean.APP_MESSENGER));
data.add(builder(ShareBean.APP_INTERNAL));
adapter.setList(data);
String url;
if (shareLink == null) {
url = ShareBuilder.createLiveShareLink(uid, anchorId, anchorName, anchorAvatar).substring(0, 40) + "...";
url = ShareBean.createLiveShareLink(bean.getUid(), bean.getAnchorId(), bean.getAnchorName(), bean.getAnchorAvatar()).substring(0, 40) + "...";
} else {
if (shareLink.length() > 40) {
url = shareLink.substring(0, 40) + "...";
@@ -122,20 +112,14 @@ public class SharePopDialog extends AbsDialogPopupWindow {
}
url = url + "&isZh=" + (WordUtil.isNewZh() ? "1" : 0);
link.setText(url);
info.setText(String.format(getContext().getString(R.string.dialog_share_info), StringUtil.isEmpty(anchorName) ? "" : anchorName));
ImgLoader.display(getContext(), anchorAvatar, avatar);
info.setText(String.format(getContext().getString(R.string.dialog_share_info), StringUtil.isEmpty(bean.getAnchorName()) ? "" : bean.getAnchorName()));
ImgLoader.display(getContext(), bean.getAnchorAvatar(), avatar);
}
private ShareBuilder builder(int type) {
ShareBuilder builder = ShareBuilder.builder(type);
builder.setText(String.format(getContext().getString(R.string.dialog_share_info), StringUtil.isEmpty(anchorName) ? "" : anchorName));
builder.setUid(uid);
builder.setAnchorId(anchorId);
builder.setAnchorName(anchorName);
builder.setAnchorAvatar(anchorAvatar);
if (shareLink != null) {
builder.setLink(shareLink);
}
private ShareBean builder(int type) {
ShareBean builder = bean.clone();
builder.setType(type);
builder.setText(String.format(getContext().getString(R.string.dialog_share_info), StringUtil.isEmpty(bean.getAnchorName()) ? "" : bean.getAnchorName()));
return builder;
}
@@ -144,11 +128,12 @@ public class SharePopDialog extends AbsDialogPopupWindow {
if (shareLink != null) {
url = shareLink;
} else {
url = ShareBuilder.createLiveShareLink(uid, anchorId, anchorName, anchorAvatar);
url = ShareBean.createLiveShareLink(bean.getUid(), bean.getAnchorId(), bean.getAnchorName(), bean.getAnchorAvatar());
}
ClipboardManager cm = (ClipboardManager) getContext().getSystemService(CLIPBOARD_SERVICE);
ClipData clipData = ClipData.newPlainText("text", info.getText().toString() + "\n" + url + "&isZh=" + (WordUtil.isNewZh() ? "1" : 0));
cm.setPrimaryClip(clipData);
ToastUtil.show(getContext().getString(com.yunbao.common.R.string.copy_success));
}
}

View File

@@ -11,19 +11,16 @@ import androidx.annotation.NonNull;
import com.lxj.xpopup.XPopup;
import com.lxj.xpopup.enums.PopupAnimation;
import com.pdlive.shayu.R;
import com.yunbao.common.bean.MessageUserInfoBean;
import com.yunbao.common.custom.RatioRoundImageView;
import com.yunbao.common.dialog.AbsDialogPositionPopupWindow;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.share.bean.ShareBuilder;
import com.yunbao.share.bean.ShareBean;
import io.rong.imkit.utils.RouteUtils;
import io.rong.imlib.model.Conversation;
public class ShareSuccessNotifyDialog extends AbsDialogPositionPopupWindow {
private ShareBuilder bean;
private ShareBean bean;
private DialogInterface.OnDismissListener onDismissListener;
private TextView anchorName;
@@ -34,7 +31,7 @@ public class ShareSuccessNotifyDialog extends AbsDialogPositionPopupWindow {
super(context);
}
public ShareSuccessNotifyDialog(@NonNull Context context, ShareBuilder bean) {
public ShareSuccessNotifyDialog(@NonNull Context context, ShareBean bean) {
super(context);
this.bean = bean;
}

View File

@@ -12,4 +12,5 @@
<string name="dialog_share_internal_list_btn">Share</string>
<string name="dialog_share_success">Success</string>
<string name="dialog_share_success_btn">Chat</string>
<string name="dialog_share_failure_not_select">Please select friends</string>
</resources>

View File

@@ -21,4 +21,5 @@
<string name="dialog_share_internal_list_btn">發送</string>
<string name="dialog_share_success">分享成功</string>
<string name="dialog_share_success_btn">去聊聊</string>
<string name="dialog_share_failure_not_select">请选择好友</string>
</resources>