From 26cb58463a0a026f9c6f20bdbe461fafad6cb78f Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Fri, 31 Mar 2023 13:34:57 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E7=9B=B4=E6=92=AD=E9=96=93=E5=88=86?= =?UTF-8?q?=E4=BA=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yunbao/share/AbsShareInterface.java | 11 +- .../java/com/yunbao/share/ShareBuilder.java | 40 ------ .../java/com/yunbao/share/ShareManager.java | 67 --------- .../adapters/InviteRewardListAdapter.java | 67 +++++++++ .../share/adapters/ShareAppAdapter.java | 134 +++++++++++++++++ .../yunbao/share/bean/InviteRewardBean.java | 63 ++++++++ .../com/yunbao/share/bean/ShareBuilder.java | 136 ++++++++++++++++++ .../yunbao/share/platform/FacebookShare.java | 3 +- .../com/yunbao/share/platform/Instagram.java | 4 +- .../java/com/yunbao/share/platform/Line.java | 4 +- .../yunbao/share/platform/MessengerShare.java | 5 +- .../yunbao/share/platform/TwitterShare.java | 49 ++++--- .../com/yunbao/share/platform/WhatsApp.java | 2 +- .../com/yunbao/share/ui/InvitePopDialog.java | 131 +++++++++++++++++ .../share/ui/InviteRewardPopDialog.java | 131 +++++++++++++++++ .../com/yunbao/share/ui/SharePopDialog.java | 119 +++++++++++++++ .../src/main/res/drawable/background_fff.xml | 9 ++ Share/src/main/res/drawable/bg_btn.xml | 9 ++ .../src/main/res/drawable/bg_invite_title.xml | 10 ++ .../main/res/layout/dialog_invite_list.xml | 56 ++++++++ Share/src/main/res/layout/dialog_share.xml | 66 +++++++++ .../main/res/layout/item_invite_reward.xml | 46 ++++++ Share/src/main/res/layout/item_share_app.xml | 34 +++++ .../main/res/layout/view_share_preview.xml | 74 ++++++++++ .../src/main/res/mipmap/bg_dialog_inviet.png | Bin 0 -> 322335 bytes Share/src/main/res/mipmap/bg_dialog_share.png | Bin 0 -> 84764 bytes .../main/res/mipmap/icon_share_facebook.png | Bin 0 -> 5643 bytes .../main/res/mipmap/icon_share_instagram.png | Bin 0 -> 6451 bytes Share/src/main/res/mipmap/icon_share_line.png | Bin 0 -> 7972 bytes .../main/res/mipmap/icon_share_messenger.png | Bin 0 -> 6388 bytes .../main/res/mipmap/icon_share_twitter.png | Bin 0 -> 6040 bytes Share/src/main/res/mipmap/icon_share_url.png | Bin 0 -> 955 bytes .../main/res/mipmap/icon_share_whatsapp.png | Bin 0 -> 7350 bytes Share/src/main/res/values/strings.xml | 11 ++ .../common/event/CustomDrawerPopupEvent.java | 11 ++ .../common/views/CustomDrawerPopupView.java | 12 +- .../common/views/MoreMenuPopupView.java | 9 ++ .../main/res/layout/custom_drawer_popup.xml | 43 +++--- common/src/main/res/layout/view_more_menu.xml | 23 ++- .../res/mipmap-xxhdpi/ic_custom_share.png | Bin 0 -> 1359 bytes live/build.gradle | 2 +- .../live/activity/LiveAudienceActivity.java | 16 +++ .../yunbao/live/event/LiveAudienceEvent.java | 3 +- .../yunbao/main/activity/TestActivity.java | 71 --------- .../yunbao/main/views/MainHomeViewHolder.java | 9 +- 45 files changed, 1242 insertions(+), 238 deletions(-) delete mode 100644 Share/src/main/java/com/yunbao/share/ShareBuilder.java delete mode 100644 Share/src/main/java/com/yunbao/share/ShareManager.java create mode 100644 Share/src/main/java/com/yunbao/share/adapters/InviteRewardListAdapter.java create mode 100644 Share/src/main/java/com/yunbao/share/adapters/ShareAppAdapter.java create mode 100644 Share/src/main/java/com/yunbao/share/bean/InviteRewardBean.java create mode 100644 Share/src/main/java/com/yunbao/share/bean/ShareBuilder.java create mode 100644 Share/src/main/java/com/yunbao/share/ui/InvitePopDialog.java create mode 100644 Share/src/main/java/com/yunbao/share/ui/InviteRewardPopDialog.java create mode 100644 Share/src/main/java/com/yunbao/share/ui/SharePopDialog.java create mode 100644 Share/src/main/res/drawable/background_fff.xml create mode 100644 Share/src/main/res/drawable/bg_btn.xml create mode 100644 Share/src/main/res/drawable/bg_invite_title.xml create mode 100644 Share/src/main/res/layout/dialog_invite_list.xml create mode 100644 Share/src/main/res/layout/dialog_share.xml create mode 100644 Share/src/main/res/layout/item_invite_reward.xml create mode 100644 Share/src/main/res/layout/item_share_app.xml create mode 100644 Share/src/main/res/layout/view_share_preview.xml create mode 100644 Share/src/main/res/mipmap/bg_dialog_inviet.png create mode 100644 Share/src/main/res/mipmap/bg_dialog_share.png create mode 100644 Share/src/main/res/mipmap/icon_share_facebook.png create mode 100644 Share/src/main/res/mipmap/icon_share_instagram.png create mode 100644 Share/src/main/res/mipmap/icon_share_line.png create mode 100644 Share/src/main/res/mipmap/icon_share_messenger.png create mode 100644 Share/src/main/res/mipmap/icon_share_twitter.png create mode 100644 Share/src/main/res/mipmap/icon_share_url.png create mode 100644 Share/src/main/res/mipmap/icon_share_whatsapp.png create mode 100644 common/src/main/res/mipmap-xxhdpi/ic_custom_share.png diff --git a/Share/src/main/java/com/yunbao/share/AbsShareInterface.java b/Share/src/main/java/com/yunbao/share/AbsShareInterface.java index 618643b15..fed5ddee8 100644 --- a/Share/src/main/java/com/yunbao/share/AbsShareInterface.java +++ b/Share/src/main/java/com/yunbao/share/AbsShareInterface.java @@ -1,10 +1,15 @@ package com.yunbao.share; import android.content.Context; +import android.content.IntentFilter; 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.receiver.TwitterResultReceiver; + import java.io.File; public abstract class AbsShareInterface { @@ -12,9 +17,13 @@ public abstract class AbsShareInterface { public AbsShareInterface(Context context) { this.mContext = context; + IntentFilter filter = new IntentFilter(TweetUploadService.UPLOAD_SUCCESS); + filter.addAction(TweetUploadService.UPLOAD_FAILURE); + filter.addAction(TweetUploadService.TWEET_COMPOSE_CANCEL); + context.registerReceiver(new TwitterResultReceiver(), filter); } - public abstract void share(ShareBuilder builder,ICallback callback); + public abstract void share(ShareBuilder builder, ICallback callback); public Uri fileToUri(File file){ return FileProvider.getUriForFile(mContext, diff --git a/Share/src/main/java/com/yunbao/share/ShareBuilder.java b/Share/src/main/java/com/yunbao/share/ShareBuilder.java deleted file mode 100644 index 96b4d0f51..000000000 --- a/Share/src/main/java/com/yunbao/share/ShareBuilder.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.yunbao.share; - -import java.io.File; - -public class ShareBuilder { - private String text; - private String link; - private File file; - - public static ShareBuilder builder(){ - return new ShareBuilder(); - } - - 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() { - return text; - } - - public String getLink() { - return link; - } - - public File getFile() { - return file; - } -} diff --git a/Share/src/main/java/com/yunbao/share/ShareManager.java b/Share/src/main/java/com/yunbao/share/ShareManager.java deleted file mode 100644 index 01c72b3b9..000000000 --- a/Share/src/main/java/com/yunbao/share/ShareManager.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.yunbao.share; - -import android.content.Context; -import android.content.IntentFilter; - -import com.twitter.sdk.android.tweetcomposer.TweetUploadService; -import com.yunbao.share.platform.FacebookShare; -import com.yunbao.share.platform.Instagram; -import com.yunbao.share.platform.Line; -import com.yunbao.share.platform.MessengerShare; -import com.yunbao.share.platform.TwitterShare; -import com.yunbao.share.platform.WhatsApp; -import com.yunbao.share.receiver.TwitterResultReceiver; - -public class ShareManager { - public static final int SHARE_Twitter = 0; - public static final int SHARE_Facebook = 1; - public static final int SHARE_Instagram = 2; - public static final int SHARE_WhatsApp = 3; - public static final int SHARE_Line = 4; - public static final int SHARE_Messenger = 5; - - private static ShareManager manager = null; - - public static ShareManager getInstance(Context context) { - if (manager == null) { - manager = new ShareManager(context); - } - return manager; - - } - - private ShareManager(Context context) { - IntentFilter filter = new IntentFilter(TweetUploadService.UPLOAD_SUCCESS); - filter.addAction(TweetUploadService.UPLOAD_FAILURE); - filter.addAction(TweetUploadService.TWEET_COMPOSE_CANCEL); - context.registerReceiver(new TwitterResultReceiver(), filter); - } - - public void createShare(ShareBuilder builder, Context context, int type, ICallback callback) { - AbsShareInterface share = null; - switch (type) { - case SHARE_Twitter: - share = new TwitterShare(context); - break; - case SHARE_Facebook: - share = new FacebookShare(context); - break; - case SHARE_Instagram: - share = new Instagram(context); - break; - case SHARE_WhatsApp: - share = new WhatsApp(context); - break; - case SHARE_Line: - share = new Line(context); - break; - case SHARE_Messenger: - share = new MessengerShare(context); - break; - } - if (share != null) { - share.share(builder, callback); - } - } - -} diff --git a/Share/src/main/java/com/yunbao/share/adapters/InviteRewardListAdapter.java b/Share/src/main/java/com/yunbao/share/adapters/InviteRewardListAdapter.java new file mode 100644 index 000000000..27f03e25d --- /dev/null +++ b/Share/src/main/java/com/yunbao/share/adapters/InviteRewardListAdapter.java @@ -0,0 +1,67 @@ +package com.yunbao.share.adapters; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.pdlive.shayu.R; +import com.yunbao.share.bean.InviteRewardBean; + +import java.util.List; + +public class InviteRewardListAdapter extends RecyclerView.Adapter { + private Context mContext; + private List list; + + public InviteRewardListAdapter(Context mContext) { + this.mContext = mContext; + } + + public void setList(List list) { + this.list = list; + } + + @NonNull + @Override + public RewardViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new RewardViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item_invite_reward,parent,false)); + } + + @Override + public void onBindViewHolder(@NonNull RewardViewHolder holder, int position) { + holder.setData(list.get(position),position); + } + + @Override + public int getItemCount() { + return list.size(); + } + + + public static class RewardViewHolder extends RecyclerView.ViewHolder { + private final TextView item1; + private final TextView item2; + private final TextView item3; + private final TextView item4; + + public RewardViewHolder(@NonNull View itemView) { + super(itemView); + item1 = itemView.findViewById(R.id.item1); + item2 = itemView.findViewById(R.id.item2); + item3 = itemView.findViewById(R.id.item3); + item4 = itemView.findViewById(R.id.item4); + } + + void setData(InviteRewardBean bean, int position) { + item1.setText(bean.getUsername()); + item2.setText(bean.getInviteTime()); + item3.setText(bean.getType()); + item4.setText(bean.getReward()); + } + } +} diff --git a/Share/src/main/java/com/yunbao/share/adapters/ShareAppAdapter.java b/Share/src/main/java/com/yunbao/share/adapters/ShareAppAdapter.java new file mode 100644 index 000000000..db5772505 --- /dev/null +++ b/Share/src/main/java/com/yunbao/share/adapters/ShareAppAdapter.java @@ -0,0 +1,134 @@ +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; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.DrawableRes; +import androidx.annotation.NonNull; +import androidx.annotation.StringRes; +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.platform.FacebookShare; +import com.yunbao.share.platform.Instagram; +import com.yunbao.share.platform.Line; +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 { + private Context mContext; + private List list; + + public ShareAppAdapter(Context mContext) { + list = new ArrayList<>(); + this.mContext = mContext; + } + + public void setList(List list) { + this.list = list; + notifyDataSetChanged(); + } + + @NonNull + @Override + public AppViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new AppViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item_share_app, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull AppViewHolder holder, int position) { + ShareBuilder builder = list.get(position); + switch (builder.getType()) { + case ShareBuilder.APP_FACEBOOK: + holder.setData(builder, R.mipmap.icon_share_facebook, R.string.dialog_share_app_facebook); + break; + case ShareBuilder.APP_LINE: + holder.setData(builder, R.mipmap.icon_share_line, R.string.dialog_share_app_line); + break; + case ShareBuilder.APP_TWITTER: + holder.setData(builder, R.mipmap.icon_share_twitter, R.string.dialog_share_app_twitter); + break; + case ShareBuilder.APP_WHATSAPP: + holder.setData(builder, R.mipmap.icon_share_whatsapp, R.string.dialog_share_app_whatsapp); + break; + case ShareBuilder.APP_MESSENGER: + holder.setData(builder, R.mipmap.icon_share_messenger, R.string.dialog_share_app_messenger); + break; + case ShareBuilder.APP_INSTAGRAM: + holder.setData(builder, R.mipmap.icon_share_instagram, R.string.dialog_share_app_instagram); + break; + } + } + + @Override + public int getItemCount() { + return list.size(); + } + + public static class AppViewHolder extends RecyclerView.ViewHolder { + ImageView icon; + TextView title; + + public AppViewHolder(@NonNull View itemView) { + super(itemView); + icon = itemView.findViewById(R.id.share_app_icon); + title = itemView.findViewById(R.id.share_app_name); + } + + public void setData(ShareBuilder bean, @DrawableRes int iconId, @StringRes int appName) { + icon.setImageResource(iconId); + title.setText(appName); + String filename = "/ztest/myPhoto.jpg"; + String mediaPath = Environment.getExternalStorageDirectory() + filename; + File media = new File(mediaPath); + bean.setFile(media); + itemView.setOnClickListener(v -> { + switch (bean.getType()) { + case ShareBuilder.APP_FACEBOOK: + new FacebookShare(itemView.getContext()).share(bean, new ShareCallback()); + break; + case ShareBuilder.APP_LINE: + new Line(itemView.getContext()).share(bean, new ShareCallback()); + break; + case ShareBuilder.APP_TWITTER: + new TwitterShare(itemView.getContext()).share(bean, new ShareCallback()); + break; + case ShareBuilder.APP_WHATSAPP: + new WhatsApp(itemView.getContext()).share(bean, new ShareCallback()); + break; + case ShareBuilder.APP_MESSENGER: + new MessengerShare(itemView.getContext()).share(bean, new ShareCallback()); + break; + case ShareBuilder.APP_INSTAGRAM: + new Instagram(itemView.getContext()).share(bean, new ShareCallback()); + break; + } + }); + } + + private static class ShareCallback implements ICallback { + + @Override + public void onSuccess() { + + } + + @Override + public void onFailure() { + + } + } + } +} diff --git a/Share/src/main/java/com/yunbao/share/bean/InviteRewardBean.java b/Share/src/main/java/com/yunbao/share/bean/InviteRewardBean.java new file mode 100644 index 000000000..af999aaa8 --- /dev/null +++ b/Share/src/main/java/com/yunbao/share/bean/InviteRewardBean.java @@ -0,0 +1,63 @@ +package com.yunbao.share.bean; + +import androidx.annotation.NonNull; + +public class InviteRewardBean{ + private String username; + private String inviteTime; + private String type; + private String reward; + + public InviteRewardBean() { + } + + public InviteRewardBean(String username, String inviteTime, String type, String reward) { + this.username = username; + this.inviteTime = inviteTime; + this.type = type; + this.reward = reward; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getInviteTime() { + return inviteTime; + } + + public void setInviteTime(String inviteTime) { + this.inviteTime = inviteTime; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getReward() { + return reward; + } + + public void setReward(String reward) { + this.reward = reward; + } + + @NonNull + @Override + public String toString() { + return "InviteRewardBean{" + + "username='" + username + '\'' + + ", inviteTime='" + inviteTime + '\'' + + ", type='" + type + '\'' + + ", reward='" + reward + '\'' + + '}'; + } +} diff --git a/Share/src/main/java/com/yunbao/share/bean/ShareBuilder.java b/Share/src/main/java/com/yunbao/share/bean/ShareBuilder.java new file mode 100644 index 000000000..bfe1da282 --- /dev/null +++ b/Share/src/main/java/com/yunbao/share/bean/ShareBuilder.java @@ -0,0 +1,136 @@ +package com.yunbao.share.bean; + +import androidx.annotation.NonNull; + +import com.yunbao.common.CommonAppConfig; +import com.yunbao.common.utils.StringUtil; + +import java.io.File; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; + +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; + + 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) { + try { + return String.format(CommonAppConfig.HOST + + "/h5/activity/FriendInvitation/liveShare.html?user_id=%s&anchor_id=%s&anchor_name=%s&anchor_avatar=%s&isGoogle=%s", + shareUid, + anchorId, + URLEncoder.encode(anchorName, "UTF-8"), + URLEncoder.encode(anchorAvatar, "UTF-8"), + CommonAppConfig.IS_GOOGLE_PLAY ? "1" : "0" + ); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } + } + 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 ? "1" : "0" + ); + } + + 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 + + '}'; + } +} diff --git a/Share/src/main/java/com/yunbao/share/platform/FacebookShare.java b/Share/src/main/java/com/yunbao/share/platform/FacebookShare.java index b5877f33a..118e90406 100644 --- a/Share/src/main/java/com/yunbao/share/platform/FacebookShare.java +++ b/Share/src/main/java/com/yunbao/share/platform/FacebookShare.java @@ -3,7 +3,6 @@ package com.yunbao.share.platform; import android.app.Activity; import android.content.Context; import android.net.Uri; -import android.util.Log; import androidx.annotation.NonNull; @@ -16,7 +15,7 @@ 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.ShareBuilder; +import com.yunbao.share.bean.ShareBuilder; public class FacebookShare extends AbsShareInterface { public static CallbackManager callbackManager; diff --git a/Share/src/main/java/com/yunbao/share/platform/Instagram.java b/Share/src/main/java/com/yunbao/share/platform/Instagram.java index 34dd61e20..da876e6fb 100644 --- a/Share/src/main/java/com/yunbao/share/platform/Instagram.java +++ b/Share/src/main/java/com/yunbao/share/platform/Instagram.java @@ -4,11 +4,9 @@ import android.content.Context; import android.content.Intent; import android.net.Uri; -import androidx.core.content.FileProvider; - import com.yunbao.share.AbsShareInterface; import com.yunbao.share.ICallback; -import com.yunbao.share.ShareBuilder; +import com.yunbao.share.bean.ShareBuilder; public class Instagram extends AbsShareInterface { public Instagram(Context context) { diff --git a/Share/src/main/java/com/yunbao/share/platform/Line.java b/Share/src/main/java/com/yunbao/share/platform/Line.java index 67c2e46b5..bbad5c934 100644 --- a/Share/src/main/java/com/yunbao/share/platform/Line.java +++ b/Share/src/main/java/com/yunbao/share/platform/Line.java @@ -6,11 +6,9 @@ import android.net.Uri; import com.yunbao.share.AbsShareInterface; import com.yunbao.share.ICallback; -import com.yunbao.share.ShareBuilder; +import com.yunbao.share.bean.ShareBuilder; -import java.io.UnsupportedEncodingException; import java.net.URLEncoder; -import java.nio.charset.Charset; public class Line extends AbsShareInterface { diff --git a/Share/src/main/java/com/yunbao/share/platform/MessengerShare.java b/Share/src/main/java/com/yunbao/share/platform/MessengerShare.java index e0efe6a86..0080b3d47 100644 --- a/Share/src/main/java/com/yunbao/share/platform/MessengerShare.java +++ b/Share/src/main/java/com/yunbao/share/platform/MessengerShare.java @@ -12,14 +12,11 @@ import com.facebook.FacebookException; import com.facebook.FacebookSdk; import com.facebook.share.Sharer; import com.facebook.share.model.ShareLinkContent; -import com.facebook.share.model.SharePhoto; -import com.facebook.share.model.SharePhotoContent; import com.facebook.share.widget.MessageDialog; -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.ShareBuilder; +import com.yunbao.share.bean.ShareBuilder; public class MessengerShare extends AbsShareInterface { public static CallbackManager callbackManager; diff --git a/Share/src/main/java/com/yunbao/share/platform/TwitterShare.java b/Share/src/main/java/com/yunbao/share/platform/TwitterShare.java index 3e15977b4..fbd73b0b5 100644 --- a/Share/src/main/java/com/yunbao/share/platform/TwitterShare.java +++ b/Share/src/main/java/com/yunbao/share/platform/TwitterShare.java @@ -1,24 +1,15 @@ package com.yunbao.share.platform; -import android.app.Activity; import android.content.Context; import android.content.Intent; +import android.net.Uri; -import com.twitter.sdk.android.core.Callback; -import com.twitter.sdk.android.core.Result; import com.twitter.sdk.android.core.Twitter; -import com.twitter.sdk.android.core.TwitterApiClient; -import com.twitter.sdk.android.core.TwitterAuthToken; -import com.twitter.sdk.android.core.TwitterCore; -import com.twitter.sdk.android.core.TwitterException; -import com.twitter.sdk.android.core.TwitterSession; -import com.twitter.sdk.android.core.identity.TwitterAuthClient; -import com.twitter.sdk.android.core.services.AccountService; -import com.twitter.sdk.android.tweetcomposer.ComposerActivity; -import com.twitter.sdk.android.tweetcomposer.TweetComposer; import com.yunbao.share.AbsShareInterface; import com.yunbao.share.ICallback; -import com.yunbao.share.ShareBuilder; +import com.yunbao.share.bean.ShareBuilder; + +import java.net.URLEncoder; public class TwitterShare extends AbsShareInterface { public TwitterShare(Context context) { @@ -51,10 +42,32 @@ public class TwitterShare extends AbsShareInterface { public void failure(TwitterException e) { } });*/ - - TweetComposer.Builder builder = new TweetComposer.Builder(mContext) - .text(date.getText()) - .image(fileToUri(date.getFile())); - builder.show(); + /* TweetComposer.Builder builder; + if (date.getFile() == null) { + try { + builder=new TweetComposer.Builder(mContext) + .text(date.getText()) + .url(new URL(date.getLink())); + } catch (MalformedURLException e) { + throw new RuntimeException(e); + } + } else { + builder = new TweetComposer.Builder(mContext) + .text(date.getText()) + .image(fileToUri(date.getFile())); + } + builder.show();*/ + try { + Intent sendIntent = new Intent(); + sendIntent.setAction(Intent.ACTION_VIEW); + sendIntent.putExtra(Intent.EXTRA_TEXT, date.getLink()); + // sendIntent.setType("text/plain"); + //sendIntent.setPackage("com.twitter.composer.ComposerShareActivity"); + sendIntent.setData(Uri.parse("https://twitter.com/intent/tweet?text=" +URLEncoder.encode(date.getText(),"UTF-8"))); + mContext.startActivity(sendIntent); + callback.onSuccess(); + } catch (Exception e) { + callback.onFailure(); + } } } diff --git a/Share/src/main/java/com/yunbao/share/platform/WhatsApp.java b/Share/src/main/java/com/yunbao/share/platform/WhatsApp.java index e662d9caa..51485e6fb 100644 --- a/Share/src/main/java/com/yunbao/share/platform/WhatsApp.java +++ b/Share/src/main/java/com/yunbao/share/platform/WhatsApp.java @@ -5,7 +5,7 @@ import android.content.Intent; import com.yunbao.share.AbsShareInterface; import com.yunbao.share.ICallback; -import com.yunbao.share.ShareBuilder; +import com.yunbao.share.bean.ShareBuilder; public class WhatsApp extends AbsShareInterface { public WhatsApp(Context context) { diff --git a/Share/src/main/java/com/yunbao/share/ui/InvitePopDialog.java b/Share/src/main/java/com/yunbao/share/ui/InvitePopDialog.java new file mode 100644 index 000000000..fc109bffc --- /dev/null +++ b/Share/src/main/java/com/yunbao/share/ui/InvitePopDialog.java @@ -0,0 +1,131 @@ +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.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.lxj.xpopup.XPopup; +import com.makeramen.roundedimageview.RoundedImageView; +import com.pdlive.shayu.R; +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.adapters.ShareAppAdapter; + +import java.util.ArrayList; +import java.util.List; + +public class InvitePopDialog extends AbsDialogPopupWindow { + private ShareAppAdapter adapter; + private RecyclerView list; + private RoundedImageView avatar; + private TextView info; + private TextView link; + private List data; + + private String uid; + private String anchorId; + private String anchorName; + private String anchorAvatar; + + public InvitePopDialog(@NonNull Context context) { + super(context); + } + + public InvitePopDialog setUid(String uid) { + this.uid = uid; + return this; + } + + public InvitePopDialog setAnchorId(String anchorId) { + this.anchorId = anchorId; + return this; + } + + public InvitePopDialog setAnchorName(String anchorName) { + this.anchorName = anchorName; + return this; + } + + public InvitePopDialog setAnchorAvatar(String anchorAvatar) { + this.anchorAvatar = anchorAvatar; + return this; + } + + @Override + public void buildDialog(XPopup.Builder builder) { + + } + + @Override + public int bindLayoutId() { + return R.layout.dialog_share; + } + + + @Override + protected void onCreate() { + super.onCreate(); + findViewById(R.id.close).setOnClickListener(v -> dismiss()); + findViewById(R.id.share_copy).setOnClickListener(v -> copyLink()); + findViewById(R.id.share_title).setOnClickListener(v -> copyLink()); + findViewById(R.id.share_preview).setVisibility(GONE); + findViewById(R.id.share_dialog).setBackgroundResource(R.mipmap.bg_dialog_inviet); + ((TextView) findViewById(R.id.share_title)).setText(R.string.dialog_invite_title); + ((TextView) findViewById(R.id.share_title)).setTextColor(R.drawable.bg_invite_title); + list = findViewById(R.id.share_apps_list); + avatar = findViewById(R.id.share_avatar); + info = findViewById(R.id.share_info); + link = findViewById(R.id.share_link); + adapter = new ShareAppAdapter(getContext()); + list.setLayoutManager(new GridLayoutManager(getContext(), 3)); + list.setAdapter(adapter); + initData(); + } + + 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_INSTAGRAM)); + adapter.setList(data); + + } + + private ShareBuilder builder(int type) { + ShareBuilder builder = ShareBuilder.builder(type); + //builder.setText(WordUtil.getString(R.string.dialog_share_info)); + builder.setLink(ShareBuilder.createInviteLink(uid)); + builder.setUid(uid); + builder.setAnchorId(anchorId); + builder.setAnchorName(anchorName); + builder.setAnchorAvatar(anchorAvatar); + return builder; + } + + private void copyLink() { + ClipboardManager cm = (ClipboardManager) getContext().getSystemService(CLIPBOARD_SERVICE); + ClipData clipData = ClipData.newPlainText("text", link.getText().toString()); + cm.setPrimaryClip(clipData); + ToastUtil.show(WordUtil.getString(com.yunbao.common.R.string.copy_success)); + DialogUitl.showSimpleDialog(getContext(), ShareBuilder.createInviteLink(uid), new DialogUitl.SimpleCallback() { + @Override + public void onConfirmClick(Dialog dialog, String content) { + dialog.dismiss(); + } + }); + } +} diff --git a/Share/src/main/java/com/yunbao/share/ui/InviteRewardPopDialog.java b/Share/src/main/java/com/yunbao/share/ui/InviteRewardPopDialog.java new file mode 100644 index 000000000..1ac8acecc --- /dev/null +++ b/Share/src/main/java/com/yunbao/share/ui/InviteRewardPopDialog.java @@ -0,0 +1,131 @@ +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.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.lxj.xpopup.XPopup; +import com.makeramen.roundedimageview.RoundedImageView; +import com.pdlive.shayu.R; +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.adapters.ShareAppAdapter; + +import java.util.ArrayList; +import java.util.List; + +public class InviteRewardPopDialog extends AbsDialogPopupWindow { + private ShareAppAdapter adapter; + private RecyclerView list; + private RoundedImageView avatar; + private TextView info; + private TextView link; + private List data; + + private String uid; + private String anchorId; + private String anchorName; + private String anchorAvatar; + + public InviteRewardPopDialog(@NonNull Context context) { + super(context); + } + + public InviteRewardPopDialog setUid(String uid) { + this.uid = uid; + return this; + } + + public InviteRewardPopDialog setAnchorId(String anchorId) { + this.anchorId = anchorId; + return this; + } + + public InviteRewardPopDialog setAnchorName(String anchorName) { + this.anchorName = anchorName; + return this; + } + + public InviteRewardPopDialog setAnchorAvatar(String anchorAvatar) { + this.anchorAvatar = anchorAvatar; + return this; + } + + @Override + public void buildDialog(XPopup.Builder builder) { + + } + + @Override + public int bindLayoutId() { + return R.layout.dialog_share; + } + + + @Override + protected void onCreate() { + super.onCreate(); + findViewById(R.id.close).setOnClickListener(v -> dismiss()); + findViewById(R.id.share_copy).setOnClickListener(v -> copyLink()); + findViewById(R.id.share_title).setOnClickListener(v -> copyLink()); + findViewById(R.id.share_preview).setVisibility(GONE); + findViewById(R.id.share_dialog).setBackgroundResource(R.mipmap.bg_dialog_inviet); + ((TextView) findViewById(R.id.share_title)).setText(R.string.dialog_invite_title); + ((TextView) findViewById(R.id.share_title)).setTextColor(R.drawable.bg_invite_title); + list = findViewById(R.id.share_apps_list); + avatar = findViewById(R.id.share_avatar); + info = findViewById(R.id.share_info); + link = findViewById(R.id.share_link); + adapter = new ShareAppAdapter(getContext()); + list.setLayoutManager(new LinearLayoutManager(getContext(),RecyclerView.VERTICAL,false)); + list.setAdapter(adapter); + initData(); + } + + 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_INSTAGRAM)); + adapter.setList(data); + + } + + private ShareBuilder builder(int type) { + ShareBuilder builder = ShareBuilder.builder(type); + //builder.setText(WordUtil.getString(R.string.dialog_share_info)); + builder.setLink(ShareBuilder.createInviteLink(uid)); + builder.setUid(uid); + builder.setAnchorId(anchorId); + builder.setAnchorName(anchorName); + builder.setAnchorAvatar(anchorAvatar); + return builder; + } + + private void copyLink() { + ClipboardManager cm = (ClipboardManager) getContext().getSystemService(CLIPBOARD_SERVICE); + ClipData clipData = ClipData.newPlainText("text", link.getText().toString()); + cm.setPrimaryClip(clipData); + ToastUtil.show(WordUtil.getString(com.yunbao.common.R.string.copy_success)); + DialogUitl.showSimpleDialog(getContext(), ShareBuilder.createInviteLink(uid), new DialogUitl.SimpleCallback() { + @Override + public void onConfirmClick(Dialog dialog, String content) { + dialog.dismiss(); + } + }); + } +} diff --git a/Share/src/main/java/com/yunbao/share/ui/SharePopDialog.java b/Share/src/main/java/com/yunbao/share/ui/SharePopDialog.java new file mode 100644 index 000000000..85a1735f9 --- /dev/null +++ b/Share/src/main/java/com/yunbao/share/ui/SharePopDialog.java @@ -0,0 +1,119 @@ +package com.yunbao.share.ui; + +import static android.content.Context.CLIPBOARD_SERVICE; + +import android.content.ClipData; +import android.content.ClipboardManager; +import android.content.Context; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.lxj.xpopup.XPopup; +import com.makeramen.roundedimageview.RoundedImageView; +import com.pdlive.shayu.R; +import com.yunbao.common.dialog.AbsDialogPopupWindow; +import com.yunbao.common.glide.ImgLoader; +import com.yunbao.common.utils.ToastUtil; +import com.yunbao.common.utils.WordUtil; +import com.yunbao.share.bean.ShareBuilder; +import com.yunbao.share.adapters.ShareAppAdapter; + +import java.util.ArrayList; +import java.util.List; + +public class SharePopDialog extends AbsDialogPopupWindow { + private ShareAppAdapter adapter; + private RecyclerView list; + private RoundedImageView avatar; + private TextView info; + private TextView link; + private List data; + + private String uid; + private String anchorId; + private String anchorName; + private String anchorAvatar; + + public SharePopDialog(@NonNull Context context) { + super(context); + } + + public SharePopDialog setUid(String uid) { + this.uid = uid; + return this; + } + + public SharePopDialog setAnchorId(String anchorId) { + this.anchorId = anchorId; + return this; + } + + public SharePopDialog setAnchorName(String anchorName) { + this.anchorName = anchorName; + return this; + } + + public SharePopDialog setAnchorAvatar(String anchorAvatar) { + this.anchorAvatar = anchorAvatar; + return this; + } + + @Override + public void buildDialog(XPopup.Builder builder) { + + } + + @Override + public int bindLayoutId() { + return R.layout.dialog_share; + } + + + @Override + protected void onCreate() { + super.onCreate(); + findViewById(R.id.close).setOnClickListener(v -> dismiss()); + findViewById(R.id.share_copy).setOnClickListener(v -> copyLink()); + list = findViewById(R.id.share_apps_list); + avatar = findViewById(R.id.share_avatar); + info = findViewById(R.id.share_info); + link = findViewById(R.id.share_link); + adapter = new ShareAppAdapter(getContext()); + list.setLayoutManager(new GridLayoutManager(getContext(), 3)); + list.setAdapter(adapter); + initData(); + } + + 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_INSTAGRAM)); + adapter.setList(data); + String url=ShareBuilder.createLiveShareLink(uid,anchorId,anchorName,anchorAvatar).substring(0,40)+"..."; + link.setText(url); + ImgLoader.display(getContext(),anchorAvatar,avatar); + } + private ShareBuilder builder(int type){ + ShareBuilder builder=ShareBuilder.builder(type); + builder.setText(WordUtil.getString(R.string.dialog_share_info)); + builder.setUid(uid); + builder.setAnchorId(anchorId); + builder.setAnchorName(anchorName); + builder.setAnchorAvatar(anchorAvatar); + return builder; + } + + private void copyLink() { + ClipboardManager cm = (ClipboardManager) getContext().getSystemService(CLIPBOARD_SERVICE); + ClipData clipData = ClipData.newPlainText("text", ShareBuilder.createLiveShareLink(uid,anchorId,anchorName,anchorAvatar)); + cm.setPrimaryClip(clipData); + ToastUtil.show(WordUtil.getString(com.yunbao.common.R.string.copy_success)); + } +} diff --git a/Share/src/main/res/drawable/background_fff.xml b/Share/src/main/res/drawable/background_fff.xml new file mode 100644 index 000000000..2b3a47e26 --- /dev/null +++ b/Share/src/main/res/drawable/background_fff.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/Share/src/main/res/drawable/bg_btn.xml b/Share/src/main/res/drawable/bg_btn.xml new file mode 100644 index 000000000..f7cda2e72 --- /dev/null +++ b/Share/src/main/res/drawable/bg_btn.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/Share/src/main/res/drawable/bg_invite_title.xml b/Share/src/main/res/drawable/bg_invite_title.xml new file mode 100644 index 000000000..1d7b0cf28 --- /dev/null +++ b/Share/src/main/res/drawable/bg_invite_title.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Share/src/main/res/layout/dialog_invite_list.xml b/Share/src/main/res/layout/dialog_invite_list.xml new file mode 100644 index 000000000..877aab9e3 --- /dev/null +++ b/Share/src/main/res/layout/dialog_invite_list.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Share/src/main/res/layout/dialog_share.xml b/Share/src/main/res/layout/dialog_share.xml new file mode 100644 index 000000000..65b31da1c --- /dev/null +++ b/Share/src/main/res/layout/dialog_share.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Share/src/main/res/layout/item_invite_reward.xml b/Share/src/main/res/layout/item_invite_reward.xml new file mode 100644 index 000000000..33cbd0d57 --- /dev/null +++ b/Share/src/main/res/layout/item_invite_reward.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/Share/src/main/res/layout/item_share_app.xml b/Share/src/main/res/layout/item_share_app.xml new file mode 100644 index 000000000..789064f41 --- /dev/null +++ b/Share/src/main/res/layout/item_share_app.xml @@ -0,0 +1,34 @@ + + + + + + + \ No newline at end of file diff --git a/Share/src/main/res/layout/view_share_preview.xml b/Share/src/main/res/layout/view_share_preview.xml new file mode 100644 index 000000000..f7c1e97f2 --- /dev/null +++ b/Share/src/main/res/layout/view_share_preview.xml @@ -0,0 +1,74 @@ + + + + + + + + + +