diff --git a/app/oss/release/siyu_v1.0.0_oss_release.apk b/app/oss/release/siyu_v1.0.0_oss_release.apk index ad232cd..315ca1b 100644 Binary files a/app/oss/release/siyu_v1.0.0_oss_release.apk and b/app/oss/release/siyu_v1.0.0_oss_release.apk differ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3659438..c9afec7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -272,6 +272,9 @@ + @@ -281,6 +284,9 @@ + @@ -425,6 +431,10 @@ + { + + private Context mContext; + + public GiftReceived2Adapter(int layoutResId, Context context) { + super(layoutResId); + this.mContext = context; + } + + @Override + protected void convert(@NotNull BaseViewHolder baseViewHolder, GiftReceivedItemBean bean) { + + SimpleDraweeView gift_received_logo = baseViewHolder.getView(R.id.gift_received_logo); + TextView gift_received_name = baseViewHolder.getView(R.id.gift_received_name); + TextView gift_received_number = baseViewHolder.getView(R.id.gift_received_number); + + gift_received_logo.setImageURI(StrU.getResourcePath(bean.getImg(), mContext)); + gift_received_name.setText(bean.getName()); + gift_received_number.setText("x" + bean.getTotal()); + } +} diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/controller/main/adapter/MainPageCommentAdapter.java b/app/src/main/java/com/xuebiping/bolizhuzi/controller/main/adapter/MainPageCommentAdapter.java new file mode 100644 index 0000000..b59ade8 --- /dev/null +++ b/app/src/main/java/com/xuebiping/bolizhuzi/controller/main/adapter/MainPageCommentAdapter.java @@ -0,0 +1,110 @@ +package com.xuebiping.bolizhuzi.controller.main.adapter; + +import android.content.Context; +import android.view.View; +import android.widget.TextView; + +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.chad.library.adapter.base.viewholder.BaseViewHolder; +import com.facebook.drawee.view.SimpleDraweeView; +import com.xuebiping.bolizhuzi.R; +import com.xuebiping.bolizhuzi.model.main.MainPageCommentInfoBean; +import com.xuebiping.bolizhuzi.utils.StrU; + +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class MainPageCommentAdapter extends BaseQuickAdapter { + + private Context mContext; + private int[] mImage_bg = new int[]{R.drawable.shape_comment1_bg, R.drawable.shape_comment2_bg, R.drawable.shape_comment3_bg, R.drawable.shape_comment4_bg, R.drawable.shape_comment5_bg}; + + public MainPageCommentAdapter(int layoutResId, Context context) { + super(layoutResId); + this.mContext = context; + } + + @Override + protected void convert(@NotNull BaseViewHolder baseViewHolder, MainPageCommentInfoBean bean) { + SimpleDraweeView list_photo = baseViewHolder.getView(R.id.list_photo); + TextView tv_name = baseViewHolder.getView(R.id.tv_name); + TextView tv_level = baseViewHolder.getView(R.id.tv_level); + TextView tv_comment1 = baseViewHolder.getView(R.id.tv_comment1); + TextView tv_comment2 = baseViewHolder.getView(R.id.tv_comment2); + TextView tv_comment3 = baseViewHolder.getView(R.id.tv_comment3); + + list_photo.setImageURI(StrU.getResourcePath(bean.getAvatar(), mContext)); + tv_name.setText(bean.getNickname()); + tv_level.setText("LV." + bean.getLevel()); + + int level = bean.getLevel(); + if (level > 0 && level <= 20) { + tv_level.setBackgroundResource(R.drawable.shape_level_1_20_bg); + } else if (level > 20 && level <= 40) { + tv_level.setBackgroundResource(R.drawable.shape_level_21_40_bg); + } else if (level > 40 && level <= 60) { + tv_level.setBackgroundResource(R.drawable.shape_level_41_60_bg); + } else if (level > 60 && level <= 80) { + tv_level.setBackgroundResource(R.drawable.shape_level_61_80_bg); + } else if (level > 80) { + tv_level.setBackgroundResource(R.drawable.shape_level_81_100_bg); + } + + List labels = bean.getLabels(); + if (labels != null && labels.size() > 0) { + if (labels.size() == 1) { + tv_comment1.setVisibility(View.VISIBLE); + tv_comment2.setVisibility(View.GONE); + tv_comment3.setVisibility(View.GONE); + + tv_comment1.setText(labels.get(0)); + + if (bean.getAttitude() == 1) { //喜欢 + int x = (int) (Math.random() * 5); + tv_comment1.setBackgroundResource(mImage_bg[x]); + }else { + tv_comment1.setBackgroundResource(R.drawable.shape_comment_dislike_bg); + } + }else if (labels.size() == 2) { + tv_comment1.setVisibility(View.VISIBLE); + tv_comment2.setVisibility(View.VISIBLE); + tv_comment3.setVisibility(View.GONE); + + tv_comment1.setText(labels.get(0)); + tv_comment2.setText(labels.get(1)); + + if (bean.getAttitude() == 1) { //喜欢 + int x = (int) (Math.random() * 5); + tv_comment1.setBackgroundResource(mImage_bg[x]); + int x2 = (int) (Math.random() * 5); + tv_comment2.setBackgroundResource(mImage_bg[x2]); + }else { + tv_comment1.setBackgroundResource(R.drawable.shape_comment_dislike_bg); + tv_comment2.setBackgroundResource(R.drawable.shape_comment_dislike_bg); + } + }else { + tv_comment1.setVisibility(View.VISIBLE); + tv_comment2.setVisibility(View.VISIBLE); + tv_comment3.setVisibility(View.VISIBLE); + + tv_comment1.setText(labels.get(0)); + tv_comment2.setText(labels.get(1)); + tv_comment3.setText(labels.get(2)); + + if (bean.getAttitude() == 1) { //喜欢 + int x = (int) (Math.random() * 5); + tv_comment1.setBackgroundResource(mImage_bg[x]); + int x2 = (int) (Math.random() * 5); + tv_comment2.setBackgroundResource(mImage_bg[x2]); + int x3 = (int) (Math.random() * 5); + tv_comment2.setBackgroundResource(mImage_bg[x3]); + }else { + tv_comment1.setBackgroundResource(R.drawable.shape_comment_dislike_bg); + tv_comment2.setBackgroundResource(R.drawable.shape_comment_dislike_bg); + tv_comment3.setBackgroundResource(R.drawable.shape_comment_dislike_bg); + } + } + } + } +} diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/controller/main/adapter/MainRecommendAdapter.java b/app/src/main/java/com/xuebiping/bolizhuzi/controller/main/adapter/MainRecommendAdapter.java index 2d2cde2..d885a75 100644 --- a/app/src/main/java/com/xuebiping/bolizhuzi/controller/main/adapter/MainRecommendAdapter.java +++ b/app/src/main/java/com/xuebiping/bolizhuzi/controller/main/adapter/MainRecommendAdapter.java @@ -1,6 +1,7 @@ package com.xuebiping.bolizhuzi.controller.main.adapter; import android.content.Context; +import android.content.Intent; import android.graphics.Color; import android.view.View; import android.view.ViewGroup; @@ -19,6 +20,7 @@ import com.xuebiping.bolizhuzi.model.main.AnchorBean; import com.xuebiping.bolizhuzi.model.main.LookMeBean; import com.xuebiping.bolizhuzi.utils.SPUtils; import com.xuebiping.bolizhuzi.utils.StrU; +import com.xuebiping.bolizhuzi.view.main.MainPageActivity; import com.xuebiping.bolizhuzi.view.main.utils.UiUtils; import net.lucode.hackware.magicindicator.buildins.UIUtil; @@ -200,7 +202,6 @@ public class MainRecommendAdapter extends BaseQuickAdapter httpUiCallBack) { + HttpWithUiTask task = new HttpWithUiTask(activity, httpUiCallBack) { + @Override + protected HttpResult run() throws Exception { + final String url = ConstUrl.WECHAT_INTIMACY; + HttpRequest.Builder builder = new HttpRequest.Builder() + .setResultType(new TType>() { + + }).setHttpMethod(HttpMethod.POST) + .addParam("to_uid", to_uid + "") + .setUrl(url); + + HttpRequest request = builder.build(); + return request.request(); + } + }; + + task.start(); + } + public static void getAllChannels(BaseActivity activity, HttpUiCallBack> httpUiCallBack) { HttpWithUiTask> task = new HttpWithUiTask>(activity, httpUiCallBack) { @@ -951,6 +974,30 @@ public class MainManager { task.start(); } + public static void getMainCommentList(BaseActivity activity, + final String uid, + final int page, + HttpUiCallBack httpUiCallBack) { + HttpWithUiTask task = new HttpWithUiTask(activity, httpUiCallBack) { + @Override + protected HttpResult run() throws Exception { + String url = ConstUrl.MAIN_COMMENT_LIST; + HttpRequest.Builder builder = new HttpRequest.Builder() + .setResultType(new TType>() { + + }).setHttpMethod(HttpMethod.POST) + .addParam("user_id", uid) + .addParam("page", page + "") + .setUrl(url); + + HttpRequest request = builder.build(); + return request.request(); + } + }; + + task.start(false); + } + public static void getGenderActiveList(BaseActivity activity, final int gender, final int page, @@ -1062,6 +1109,35 @@ public class MainManager { task.start(); } + public static void evaluateVideo2(BaseActivity activity, + final String roomId, + final int score, + int attitude, + String label_names, + HttpUiCallBack httpUiCallBack) { + HttpWithUiTask task = new HttpWithUiTask(activity, httpUiCallBack) { + @Override + protected HttpResult run() throws Exception { + String url = ConstUrl.EVALUATE_VIDEO; + + HttpRequest.Builder builder = new HttpRequest.Builder() + .setResultType(new TType>() { + + }).setHttpMethod(HttpMethod.POST) + .addParam("room_id", roomId) + .addParam("score", score + "") + .addParam("attitude", attitude + "") + .addParam("label_names", label_names + "") + .setUrl(url); + + HttpRequest request = builder.build(); + return request.request(); + } + }; + + task.start(); + } + /** * 用户活跃更新 * diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/im/uikit/api/UIKitOptions.java b/app/src/main/java/com/xuebiping/bolizhuzi/im/uikit/api/UIKitOptions.java index c1a6627..c86658c 100644 --- a/app/src/main/java/com/xuebiping/bolizhuzi/im/uikit/api/UIKitOptions.java +++ b/app/src/main/java/com/xuebiping/bolizhuzi/im/uikit/api/UIKitOptions.java @@ -92,7 +92,8 @@ public class UIKitOptions { * IM 接收到的消息时,内容区域背景的drawable id */ // public int messageLeftBackground = R.drawable.nim_message_item_left_selector; - public int messageLeftBackground = R.drawable.ic_message_alice; +// public int messageLeftBackground = R.drawable.ic_message_alice; + public int messageLeftBackground = R.drawable.nim_message_item_left; public int messageLeftBackgroundVip = R.drawable.ic_message_alice_vip; public int messageLeftBackgroundVipMan = R.drawable.ic_message_alice_vip_man; @@ -101,7 +102,8 @@ public class UIKitOptions { */ // public int messageRightBackground = R.drawable.nim_message_item_right_selector; // public int messageRightBackground = R.drawable.ic_message_me; - public int messageRightBackground = R.drawable.ic_huang; +// public int messageRightBackground = R.drawable.ic_huang; + public int messageRightBackground = R.drawable.nim_message_item_right; public int messageRightBackgroundVIP = R.drawable.ic_huang_vip; public int messageRightBackgroundVIPMan = R.drawable.ic_huang_vip_man; diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/im/uikit/business/session/fragment/MessageFragment.java b/app/src/main/java/com/xuebiping/bolizhuzi/im/uikit/business/session/fragment/MessageFragment.java index 171e58b..11333b0 100644 --- a/app/src/main/java/com/xuebiping/bolizhuzi/im/uikit/business/session/fragment/MessageFragment.java +++ b/app/src/main/java/com/xuebiping/bolizhuzi/im/uikit/business/session/fragment/MessageFragment.java @@ -212,6 +212,7 @@ public class MessageFragment extends TFragment implements ModuleProxy, SelectTyp private String title; private String avatar; + private RelativeLayout mRl_title_coin_tip; @Override public void onActivityCreated(Bundle savedInstanceState) { @@ -265,7 +266,6 @@ public class MessageFragment extends TFragment implements ModuleProxy, SelectTyp @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { rootView = inflater.inflate(R.layout.nim_message_fragment, container, false); -// getTipData(); EventBus.getDefault().register(this); rl_message_root = rootView.findViewById(R.id.rl_message_root); rl_guard = rootView.findViewById(R.id.rl_guard); @@ -296,6 +296,7 @@ public class MessageFragment extends TFragment implements ModuleProxy, SelectTyp iv_album3 = rootView.findViewById(R.id.iv_album3); iv_album4 = rootView.findViewById(R.id.iv_album4); rv_call_list = rootView.findViewById(R.id.rv_call_list); + mRl_title_coin_tip = rootView.findViewById(R.id.rl_title_coin_tip); LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false); rv_call_list.setLayoutManager(layoutManager); @@ -316,8 +317,8 @@ public class MessageFragment extends TFragment implements ModuleProxy, SelectTyp ic_guard_close.setOnClickListener(this); mSvgaDialog = new SvgaDialog(getContext()); iv_back.setOnClickListener(this); - tv_user_name.setOnClickListener(this); - iv_interactive.setOnClickListener(this); +// tv_user_name.setOnClickListener(this); +// iv_interactive.setOnClickListener(this); iv_user_info.setOnClickListener(this); cl_info_card.setOnClickListener(this); tv_msg_like.setOnClickListener(this); @@ -397,6 +398,7 @@ public class MessageFragment extends TFragment implements ModuleProxy, SelectTyp NewsManager.getChatTip((BaseActivity) getActivity(), new HttpUiCallBack() { @Override public void onSuccess(BaseActivity activity, ChatTipBean result, String message) { + if (null != result) { if (!TextUtils.isEmpty(result.getTip())) { warmAnimator(result.getTip()); @@ -427,48 +429,49 @@ public class MessageFragment extends TFragment implements ModuleProxy, SelectTyp private ObjectAnimator fadeOut; private void showUserInfoCard(boolean show, int i) { - if (show) { - if (fadeOut != null) { - fadeOut.cancel(); - } - iv_interactive.setImageResource(R.drawable.icon_arrow_down); - isInteractiveShow = true; - ObjectAnimator.ofFloat(cl_info_card, "translationY", 0F, -537F).setDuration(0).start(); - cl_info_card.setVisibility(View.VISIBLE); - ObjectAnimator fadeIn = ObjectAnimator.ofFloat(cl_info_card, "translationY", -537F, 0); - fadeIn.setDuration(1000).start(); - ObjectAnimator alphaIn = ObjectAnimator.ofFloat(cl_info_card, View.ALPHA, 1f); - alphaIn.setDuration(1000); // 设置动画持续时间为1000毫秒 - alphaIn.start(); // 启动动画 - } else { - iv_interactive.setImageResource(R.drawable.icon_arrow_up); - isInteractiveShow = false; - ObjectAnimator.ofFloat(cl_info_card, "translationY", 0F, -537F).setDuration(1000).start(); - fadeOut = ObjectAnimator.ofFloat(cl_info_card, View.ALPHA, 0f); - fadeOut.setDuration(500); // 设置动画持续时间为1000毫秒 - fadeOut.addListener(new Animator.AnimatorListener() { - @Override - public void onAnimationStart(Animator animation) { - - } - - @Override - public void onAnimationEnd(Animator animation) { - cl_info_card.setVisibility(View.GONE); - } - - @Override - public void onAnimationCancel(Animator animation) { - - } - - @Override - public void onAnimationRepeat(Animator animation) { - - } - }); - fadeOut.start(); // 启动动画 - } + isInteractiveShow = false; +// if (show) { +// if (fadeOut != null) { +// fadeOut.cancel(); +// } +// iv_interactive.setImageResource(R.drawable.icon_arrow_down); +// isInteractiveShow = true; +// ObjectAnimator.ofFloat(cl_info_card, "translationY", 0F, -537F).setDuration(0).start(); +// cl_info_card.setVisibility(View.VISIBLE); +// ObjectAnimator fadeIn = ObjectAnimator.ofFloat(cl_info_card, "translationY", -537F, 0); +// fadeIn.setDuration(1000).start(); +// ObjectAnimator alphaIn = ObjectAnimator.ofFloat(cl_info_card, View.ALPHA, 1f); +// alphaIn.setDuration(1000); // 设置动画持续时间为1000毫秒 +// alphaIn.start(); // 启动动画 +// } else { +// iv_interactive.setImageResource(R.drawable.icon_arrow_up); +// isInteractiveShow = false; +// ObjectAnimator.ofFloat(cl_info_card, "translationY", 0F, -537F).setDuration(1000).start(); +// fadeOut = ObjectAnimator.ofFloat(cl_info_card, View.ALPHA, 0f); +// fadeOut.setDuration(500); // 设置动画持续时间为1000毫秒 +// fadeOut.addListener(new Animator.AnimatorListener() { +// @Override +// public void onAnimationStart(Animator animation) { +// +// } +// +// @Override +// public void onAnimationEnd(Animator animation) { +// cl_info_card.setVisibility(View.GONE); +// } +// +// @Override +// public void onAnimationCancel(Animator animation) { +// +// } +// +// @Override +// public void onAnimationRepeat(Animator animation) { +// +// } +// }); +// fadeOut.start(); // 启动动画 +// } } /** @@ -492,6 +495,28 @@ public class MessageFragment extends TFragment implements ModuleProxy, SelectTyp ObjectAnimator fadeOut = ObjectAnimator.ofFloat(mRlTextWarm, View.ALPHA, 0f); fadeOut.setDuration(2000); // 设置动画持续时间为500毫秒 fadeOut.start(); // 启动动画 + + fadeOut.addListener(new Animator.AnimatorListener() { + @Override + public void onAnimationStart(Animator animator) { + + } + + @Override + public void onAnimationEnd(Animator animator) { + mRlTextWarm.setVisibility(View.GONE); + } + + @Override + public void onAnimationCancel(Animator animator) { + + } + + @Override + public void onAnimationRepeat(Animator animator) { + + } + }); } }, 4000); } @@ -593,22 +618,22 @@ public class MessageFragment extends TFragment implements ModuleProxy, SelectTyp tv_user_name.setTextColor(ContextCompat.getColor(getContext(), R.color.one_text)); iv_interactive.setVisibility(View.GONE); iv_user_info.setVisibility(View.INVISIBLE); - iv_back.setImageResource(R.drawable.sand_icon_back); - if ("11".equals(sessionId)) { - rl_message_root.setBackgroundResource(R.color.white); - if (SPUtils.getInt(getContext(), ConsUser.DYNAMICS_TYPE) == 0) { - lin_msg_dynamic.setVisibility(View.VISIBLE); - } else { - if (SPUtils.getInt(getContext(), ConsUser.DYNAMICS_TYPE) == 24) { - tv_user_name.setText("新增点赞"); - } else if (SPUtils.getInt(getContext(), ConsUser.DYNAMICS_TYPE) == 26) { - tv_user_name.setText("新增评论"); - } else if (SPUtils.getInt(getContext(), ConsUser.DYNAMICS_TYPE) == 16) { - tv_user_name.setText("新增关注"); - } - lin_msg_dynamic.setVisibility(View.GONE); - } - } +// iv_back.setImageResource(R.drawable.sand_icon_back); +// if ("11".equals(sessionId)) { +// rl_message_root.setBackgroundResource(R.color.white); +// if (SPUtils.getInt(getContext(), ConsUser.DYNAMICS_TYPE) == 0) { +// lin_msg_dynamic.setVisibility(View.VISIBLE); +// } else { +// if (SPUtils.getInt(getContext(), ConsUser.DYNAMICS_TYPE) == 24) { +// tv_user_name.setText("新增点赞"); +// } else if (SPUtils.getInt(getContext(), ConsUser.DYNAMICS_TYPE) == 26) { +// tv_user_name.setText("新增评论"); +// } else if (SPUtils.getInt(getContext(), ConsUser.DYNAMICS_TYPE) == 16) { +// tv_user_name.setText("新增关注"); +// } +// lin_msg_dynamic.setVisibility(View.GONE); +// } +// } } else if ("4".equals(sessionId)) { //如果是客服,不显示礼物和视频按钮 isShowGiftAndVideo = true; getMainPageData(Integer.parseInt(sessionId)); @@ -617,8 +642,24 @@ public class MessageFragment extends TFragment implements ModuleProxy, SelectTyp } else { getMainPageData(Integer.parseInt(sessionId)); } + + if (!"2".equals(sessionId) && !"4".equals(sessionId) && !"11".equals(sessionId) && !"3".equals(sessionId) && !"5".equals(sessionId) + && !"6".equals(sessionId) && !"7".equals(sessionId) && !"8".equals(sessionId) && !"9".equals(sessionId) && !"10".equals(sessionId)) { + + if (SPUtils.getInt(getActivity(), ConsUser.GENDER) == 1) { + if (SPUtils.getInt(getActivity(), ConsUser.IS_ANCHOR) == 1) { + mRl_title_coin_tip.setVisibility(View.GONE); + }else { + mRl_title_coin_tip.setVisibility(View.VISIBLE); + } + }else { + mRl_title_coin_tip.setVisibility(View.VISIBLE); + } + }else { + mRl_title_coin_tip.setVisibility(View.GONE); + } } -// getTipData(); //展示提示信息 + getTipData(); //展示提示信息 if (inputPanel == null) { inputPanel = new InputPanel(container, rootView, getActionList(), isShowEditBar, isShowGiftAndVideo, getActivity()); @@ -1080,95 +1121,95 @@ public class MessageFragment extends TFragment implements ModuleProxy, SelectTyp * @param message */ private void imCost(final int type, String id, final String content, final IMMessage message, String is_greet) { - if (isInteractiveShow) { - showUserInfoCard(false, 2); - } +// if (isInteractiveShow) { +// showUserInfoCard(false, 2); +// } NewsManager.sendIMCost((BaseActivity) getActivity(), type, id, content, is_greet, new HttpUiCallBack() { @Override public void onSuccess(BaseActivity activity, IMCostBean result, String tips) { - final AlertDialog builder = new AlertDialog.Builder(getActivity()).create(); - - builder.setCancelable(false); - - if (SPUtils.getInt(getActivity(), ConsUser.GENDER) == 2) { //男生 - builder.setMessage("一条私信扣" + result.getCut_coin() + "金币,成为会员享免费特权!"); - - builder.setButton(DialogInterface.BUTTON_NEUTRAL, "不再提醒", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - builder.dismiss(); - StorageManager.getInstance(getActivity()) - .putInt("isDynamicNoticeCanceled", 1); - } - }); - - builder.setButton(DialogInterface.BUTTON_POSITIVE, "成为VIP", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - builder.dismiss(); - Intent intent = new Intent(getActivity(), MemberActivity.class); - getActivity().startActivity(intent); - } - }); - - builder.setButton(DialogInterface.BUTTON_NEGATIVE, "知道了", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - builder.dismiss(); - } - }); - - if (result.getChat_card() != null) { - if (TextUtils.equals("1", result.getChat_card().getIs_pop_up())) { - ChatCardRedPacketDialog dialog = new ChatCardRedPacketDialog(getContext(), result.getChat_card()); - dialog.show(); - } - } - - } else if (SPUtils.getInt(getActivity(), ConsUser.GENDER) == 1) { //女生 - builder.setMessage("本条消息扣除" + result.getCut_coin() - + "金币,还剩" + result.getCoin() + "金币,通过真人认证私信免费哦!"); - - builder.setButton(DialogInterface.BUTTON_NEUTRAL, "不再提醒", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - builder.dismiss(); - StorageManager.getInstance(getActivity()) - .putInt("isDynamicNoticeCanceled", 1); - } - }); - - builder.setButton(DialogInterface.BUTTON_POSITIVE, "真人认证", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - builder.dismiss(); - Intent intentApplyBigCast = new Intent(getActivity(), CertificationActivity.class); - getActivity().startActivity(intentApplyBigCast); - } - }); - builder.setButton(DialogInterface.BUTTON_NEGATIVE, "知道了", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - builder.dismiss(); - } - }); - } - - if (result.getIs_cut() == 1 - && 1 != StorageManager.getInstance(getActivity()).getInt("isDynamicNoticeCanceled") && !SPUtils.getBoolean(getActivity(), ConsUser.USER_VIP, false)) { - builder.show(); - - Button buttonNue = builder.getButton(DialogInterface.BUTTON_NEUTRAL); - buttonNue.setTextColor(getActivity().getResources().getColor(R.color.black)); - - Button buttonPos = builder.getButton(DialogInterface.BUTTON_POSITIVE); - buttonPos.setTextColor(getActivity().getResources().getColor(R.color.black)); - - Button buttonNeg = builder.getButton(DialogInterface.BUTTON_NEGATIVE); - buttonNeg.setTextColor(getActivity().getResources().getColor(R.color.black)); - } +// final AlertDialog builder = new AlertDialog.Builder(getActivity()).create(); +// +// builder.setCancelable(false); +// +// if (SPUtils.getInt(getActivity(), ConsUser.GENDER) == 2) { //男生 +// builder.setMessage("一条私信扣" + result.getCut_coin() + "金币,成为会员享免费特权!"); +// +// builder.setButton(DialogInterface.BUTTON_NEUTRAL, "不再提醒", new DialogInterface.OnClickListener() { +// @Override +// public void onClick(DialogInterface dialogInterface, int i) { +// builder.dismiss(); +// StorageManager.getInstance(getActivity()) +// .putInt("isDynamicNoticeCanceled", 1); +// } +// }); +// +// builder.setButton(DialogInterface.BUTTON_POSITIVE, "成为VIP", new DialogInterface.OnClickListener() { +// @Override +// public void onClick(DialogInterface dialogInterface, int i) { +// builder.dismiss(); +// Intent intent = new Intent(getActivity(), MemberActivity.class); +// getActivity().startActivity(intent); +// } +// }); +// +// builder.setButton(DialogInterface.BUTTON_NEGATIVE, "知道了", new DialogInterface.OnClickListener() { +// @Override +// public void onClick(DialogInterface dialogInterface, int i) { +// builder.dismiss(); +// } +// }); +// +// if (result.getChat_card() != null) { +// if (TextUtils.equals("1", result.getChat_card().getIs_pop_up())) { +// ChatCardRedPacketDialog dialog = new ChatCardRedPacketDialog(getContext(), result.getChat_card()); +// dialog.show(); +// } +// } +// +// } else if (SPUtils.getInt(getActivity(), ConsUser.GENDER) == 1) { //女生 +// builder.setMessage("本条消息扣除" + result.getCut_coin() +// + "金币,还剩" + result.getCoin() + "金币,通过真人认证私信免费哦!"); +// +// builder.setButton(DialogInterface.BUTTON_NEUTRAL, "不再提醒", new DialogInterface.OnClickListener() { +// @Override +// public void onClick(DialogInterface dialogInterface, int i) { +// builder.dismiss(); +// StorageManager.getInstance(getActivity()) +// .putInt("isDynamicNoticeCanceled", 1); +// } +// }); +// +// builder.setButton(DialogInterface.BUTTON_POSITIVE, "真人认证", new DialogInterface.OnClickListener() { +// @Override +// public void onClick(DialogInterface dialogInterface, int i) { +// builder.dismiss(); +// Intent intentApplyBigCast = new Intent(getActivity(), CertificationActivity.class); +// getActivity().startActivity(intentApplyBigCast); +// } +// }); +// builder.setButton(DialogInterface.BUTTON_NEGATIVE, "知道了", new DialogInterface.OnClickListener() { +// @Override +// public void onClick(DialogInterface dialogInterface, int i) { +// builder.dismiss(); +// } +// }); +// } +// +// if (result.getIs_cut() == 1 +// && 1 != StorageManager.getInstance(getActivity()).getInt("isDynamicNoticeCanceled") && !SPUtils.getBoolean(getActivity(), ConsUser.USER_VIP, false)) { +// builder.show(); +// +// Button buttonNue = builder.getButton(DialogInterface.BUTTON_NEUTRAL); +// buttonNue.setTextColor(getActivity().getResources().getColor(R.color.black)); +// +// Button buttonPos = builder.getButton(DialogInterface.BUTTON_POSITIVE); +// buttonPos.setTextColor(getActivity().getResources().getColor(R.color.black)); +// +// Button buttonNeg = builder.getButton(DialogInterface.BUTTON_NEGATIVE); +// buttonNeg.setTextColor(getActivity().getResources().getColor(R.color.black)); +// } Map data = new HashMap<>(); data.put("is_cut", result.getIs_cut()); @@ -1651,7 +1692,8 @@ public class MessageFragment extends TFragment implements ModuleProxy, SelectTyp }); } - private boolean isInteractiveShow = true; +// private boolean isInteractiveShow = true; + private boolean isInteractiveShow = false; /** * 获取文字招呼列表 diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/model/main/LookWechatBean.java b/app/src/main/java/com/xuebiping/bolizhuzi/model/main/LookWechatBean.java new file mode 100644 index 0000000..a437204 --- /dev/null +++ b/app/src/main/java/com/xuebiping/bolizhuzi/model/main/LookWechatBean.java @@ -0,0 +1,95 @@ +package com.xuebiping.bolizhuzi.model.main; + +public class LookWechatBean { + + private String my_avatar; + private String to_avatar; + private String wechat; + private int intimacy; + private int intimacy_percent; + private int unlock_coin; + private int svip_unlock_coin; + private int member_type; + private String risk_tips; + private String footer_tips; + + public String getMy_avatar() { + return my_avatar; + } + + public void setMy_avatar(String my_avatar) { + this.my_avatar = my_avatar; + } + + public String getTo_avatar() { + return to_avatar; + } + + public void setTo_avatar(String to_avatar) { + this.to_avatar = to_avatar; + } + + public String getWechat() { + return wechat; + } + + public void setWechat(String wechat) { + this.wechat = wechat; + } + + public int getIntimacy() { + return intimacy; + } + + public void setIntimacy(int intimacy) { + this.intimacy = intimacy; + } + + public int getIntimacy_percent() { + return intimacy_percent; + } + + public void setIntimacy_percent(int intimacy_percent) { + this.intimacy_percent = intimacy_percent; + } + + public int getUnlock_coin() { + return unlock_coin; + } + + public void setUnlock_coin(int unlock_coin) { + this.unlock_coin = unlock_coin; + } + + public int getSvip_unlock_coin() { + return svip_unlock_coin; + } + + public void setSvip_unlock_coin(int svip_unlock_coin) { + this.svip_unlock_coin = svip_unlock_coin; + } + + public int getMember_type() { + return member_type; + } + + public void setMember_type(int member_type) { + this.member_type = member_type; + } + + public String getRisk_tips() { + return risk_tips; + } + + public void setRisk_tips(String risk_tips) { + this.risk_tips = risk_tips; + } + + public String getFooter_tips() { + return footer_tips; + } + + public void setFooter_tips(String footer_tips) { + this.footer_tips = footer_tips; + } +} diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/model/main/MainCommentStatusBean.java b/app/src/main/java/com/xuebiping/bolizhuzi/model/main/MainCommentStatusBean.java new file mode 100644 index 0000000..1d7fca5 --- /dev/null +++ b/app/src/main/java/com/xuebiping/bolizhuzi/model/main/MainCommentStatusBean.java @@ -0,0 +1,32 @@ +package com.xuebiping.bolizhuzi.model.main; + +public class MainCommentStatusBean { + + private int total; + private int like_count; + private int dislike_count; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public int getLike_count() { + return like_count; + } + + public void setLike_count(int like_count) { + this.like_count = like_count; + } + + public int getDislike_count() { + return dislike_count; + } + + public void setDislike_count(int dislike_count) { + this.dislike_count = dislike_count; + } +} diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/model/main/MainPageBean.java b/app/src/main/java/com/xuebiping/bolizhuzi/model/main/MainPageBean.java index 6564af0..4de53b4 100644 --- a/app/src/main/java/com/xuebiping/bolizhuzi/model/main/MainPageBean.java +++ b/app/src/main/java/com/xuebiping/bolizhuzi/model/main/MainPageBean.java @@ -26,6 +26,33 @@ public class MainPageBean { private String is_interactive; // 是否给对方发过消息:1 = 是、0 = 否 private String is_sent; + private List personal_info; + private String qrcode; + private MainPageCommentListBean comment; + + public MainPageCommentListBean getComment() { + return comment; + } + + public void setComment(MainPageCommentListBean comment) { + this.comment = comment; + } + + public String getQrcode() { + return qrcode; + } + + public void setQrcode(String qrcode) { + this.qrcode = qrcode; + } + + public List getPersonal_info() { + return personal_info; + } + + public void setPersonal_info(List personal_info) { + this.personal_info = personal_info; + } public ContactBean getContact() { return contact; diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/model/main/MainPageCommentInfoBean.java b/app/src/main/java/com/xuebiping/bolizhuzi/model/main/MainPageCommentInfoBean.java new file mode 100644 index 0000000..f4bfb36 --- /dev/null +++ b/app/src/main/java/com/xuebiping/bolizhuzi/model/main/MainPageCommentInfoBean.java @@ -0,0 +1,61 @@ +package com.xuebiping.bolizhuzi.model.main; + +import java.util.List; + +public class MainPageCommentInfoBean { + + private int from_uid; + private String nickname; + private String avatar; + private int level; + private int attitude; + private List labels; + + public int getFrom_uid() { + return from_uid; + } + + public void setFrom_uid(int from_uid) { + this.from_uid = from_uid; + } + + public String getNickname() { + return nickname; + } + + public void setNickname(String nickname) { + this.nickname = nickname; + } + + public String getAvatar() { + return avatar; + } + + public void setAvatar(String avatar) { + this.avatar = avatar; + } + + public int getLevel() { + return level; + } + + public void setLevel(int level) { + this.level = level; + } + + public int getAttitude() { + return attitude; + } + + public void setAttitude(int attitude) { + this.attitude = attitude; + } + + public List getLabels() { + return labels; + } + + public void setLabels(List labels) { + this.labels = labels; + } +} diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/model/main/MainPageCommentListBean.java b/app/src/main/java/com/xuebiping/bolizhuzi/model/main/MainPageCommentListBean.java new file mode 100644 index 0000000..76f7de5 --- /dev/null +++ b/app/src/main/java/com/xuebiping/bolizhuzi/model/main/MainPageCommentListBean.java @@ -0,0 +1,43 @@ +package com.xuebiping.bolizhuzi.model.main; + +import java.util.List; + +public class MainPageCommentListBean { + + private int page; + private int total_page; + private MainCommentStatusBean stats; + private List list; + + public int getPage() { + return page; + } + + public void setPage(int page) { + this.page = page; + } + + public int getTotal_page() { + return total_page; + } + + public void setTotal_page(int total_page) { + this.total_page = total_page; + } + + public MainCommentStatusBean getStats() { + return stats; + } + + public void setStats(MainCommentStatusBean stats) { + this.stats = stats; + } + + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } +} diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/model/main/MainPageInfoBean.java b/app/src/main/java/com/xuebiping/bolizhuzi/model/main/MainPageInfoBean.java index 7916819..66a7f0f 100644 --- a/app/src/main/java/com/xuebiping/bolizhuzi/model/main/MainPageInfoBean.java +++ b/app/src/main/java/com/xuebiping/bolizhuzi/model/main/MainPageInfoBean.java @@ -23,6 +23,34 @@ public class MainPageInfoBean { private int online_status;//1.在线,2.离线 private UserFrameBean user_frame; private int anchor_tag; + private int mobile_mark; + private int real_name_mark; + private int real_person_mark; + private int has_wechat; + + public int getHas_wechat() { + return has_wechat; + } + + public void setHas_wechat(int has_wechat) { + this.has_wechat = has_wechat; + } + + public int getReal_name_mark() { + return real_name_mark; + } + + public void setReal_name_mark(int real_name_mark) { + this.real_name_mark = real_name_mark; + } + + public int getReal_person_mark() { + return real_person_mark; + } + + public void setReal_person_mark(int real_person_mark) { + this.real_person_mark = real_person_mark; + } public int getMobile_mark() { return mobile_mark; @@ -32,8 +60,6 @@ public class MainPageInfoBean { this.mobile_mark = mobile_mark; } - private int mobile_mark; - public int getMark() { return mark; } diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/model/main/VideoFeeBean.java b/app/src/main/java/com/xuebiping/bolizhuzi/model/main/VideoFeeBean.java index 285fdd6..16308b8 100644 --- a/app/src/main/java/com/xuebiping/bolizhuzi/model/main/VideoFeeBean.java +++ b/app/src/main/java/com/xuebiping/bolizhuzi/model/main/VideoFeeBean.java @@ -1,5 +1,7 @@ package com.xuebiping.bolizhuzi.model.main; +import java.util.List; + public class VideoFeeBean { private String room_id; private int from_uid; @@ -14,6 +16,24 @@ public class VideoFeeBean { private String pay_money; private double income_money; private String remark; + private List label_list_like; + private List label_list_dislike; + + public List getLabel_list_like() { + return label_list_like; + } + + public void setLabel_list_like(List label_list_like) { + this.label_list_like = label_list_like; + } + + public List getLabel_list_dislike() { + return label_list_dislike; + } + + public void setLabel_list_dislike(List label_list_dislike) { + this.label_list_dislike = label_list_dislike; + } public String getRoom_id() { return room_id; diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/model/main/VideoLabelListBean.java b/app/src/main/java/com/xuebiping/bolizhuzi/model/main/VideoLabelListBean.java new file mode 100644 index 0000000..5ffac98 --- /dev/null +++ b/app/src/main/java/com/xuebiping/bolizhuzi/model/main/VideoLabelListBean.java @@ -0,0 +1,32 @@ +package com.xuebiping.bolizhuzi.model.main; + +public class VideoLabelListBean { + + private int id; + private String name; + private int selected; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getSelected() { + return selected; + } + + public void setSelected(int selected) { + this.selected = selected; + } +} diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/utils/FlowLayout.java b/app/src/main/java/com/xuebiping/bolizhuzi/utils/FlowLayout.java new file mode 100644 index 0000000..0d69c9e --- /dev/null +++ b/app/src/main/java/com/xuebiping/bolizhuzi/utils/FlowLayout.java @@ -0,0 +1,1258 @@ +package com.xuebiping.bolizhuzi.utils; + +import android.content.Context; +import android.content.res.ColorStateList; +import android.content.res.TypedArray; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.os.Parcelable; +import android.util.AttributeSet; +import android.util.TypedValue; +import android.view.Gravity; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.xuebiping.bolizhuzi.R; + +import java.util.ArrayList; +import java.util.List; + +/** + * 创建自朱凯 于 2020/7/28. + */ +public class FlowLayout extends ViewGroup implements View.OnClickListener, View.OnLongClickListener { + + private Context mContext; + + private ColorStateList mTextColor; + private ColorStateList mSelectTextColor; + private float mTextSize; + private Drawable mLabelBg; + private Drawable mSelectLabelBg; + private int mLabelWidth = -2; + private int mLabelHeight = -2; + private int mLabelGravity = Gravity.CENTER; + private int mTextPaddingLeft; + private int mTextPaddingTop; + private int mTextPaddingRight; + private int mTextPaddingBottom; + private int mWordMargin; + private int mLineMargin; + private SelectType mSelectType; + private int mMaxSelect; + private int mMinSelect; + private int mMaxLines; + private boolean isSingleLine = false; + + private boolean isIndicator; //只能看,不能手动改变选中状态。 + + //用于保存label数据的key + private static final int KEY_DATA = R.id.tag_key_data; + //用于保存label位置的key + private static final int KEY_POSITION = R.id.tag_key_position; + + private ArrayList mLabels = new ArrayList<>(); + //保存选中的label的位置 + private ArrayList mSelectLabels = new ArrayList<>(); + + //保存必选项。在多选模式下,可以设置必选项,必选项默认选中,不能反选 + private ArrayList mCompulsorys = new ArrayList<>(); + + private OnLabelClickListener mLabelClickListener; + private OnLabelLongClickListener mLabelLongClickListener; + private OnLabelSelectChangeListener mLabelSelectChangeListener; + private OnSelectChangeIntercept mOnSelectChangeIntercept; + + private int single_default_position = 0; + + /** + * Label的选择类型 + */ + public enum SelectType { + //不可选中,也不响应选中事件回调。(默认) + NONE(1), + //单选,可以反选。 + SINGLE(2), + //单选,不可以反选。这种模式下,至少有一个是选中的,默认是第一个 + SINGLE_IRREVOCABLY(3), + //多选 + MULTI(4); + + int value; + + SelectType(int value) { + this.value = value; + } + + static SelectType get(int value) { + switch (value) { + case 1: + return NONE; + case 2: + return SINGLE; + case 3: + return SINGLE_IRREVOCABLY; + case 4: + return MULTI; + } + return NONE; + } + } + + public FlowLayout(Context context) { + super(context); + mContext = context; + showEditPreview(); + } + + public FlowLayout(Context context, AttributeSet attrs) { + super(context, attrs); + mContext = context; + getAttrs(context, attrs); + showEditPreview(); + } + + public FlowLayout(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + mContext = context; + getAttrs(context, attrs); + showEditPreview(); + } + + private void getAttrs(Context context, AttributeSet attrs) { + if (attrs != null) { + TypedArray mTypedArray = context.obtainStyledAttributes(attrs, R.styleable.FlowLayout); + int type = mTypedArray.getInt(R.styleable.FlowLayout_selectType, 1); + mSelectType = SelectType.get(type); + + mMaxSelect = mTypedArray.getInteger(R.styleable.FlowLayout_maxSelect, 0); + mMinSelect = mTypedArray.getInteger(R.styleable.FlowLayout_minSelect, 0); + mMaxLines = mTypedArray.getInteger(R.styleable.FlowLayout_maxLines, 0); + isIndicator = mTypedArray.getBoolean(R.styleable.FlowLayout_isIndicator, false); + + mLabelGravity = mTypedArray.getInt(R.styleable.FlowLayout_labelGravity, mLabelGravity); + mLabelWidth = mTypedArray.getLayoutDimension(R.styleable.FlowLayout_labelTextWidth, mLabelWidth); + mLabelHeight = mTypedArray.getLayoutDimension(R.styleable.FlowLayout_labelTextHeight, mLabelHeight); + + if (mTypedArray.hasValue(R.styleable.FlowLayout_labelTextColor)) { + mTextColor = mTypedArray.getColorStateList(R.styleable.FlowLayout_labelTextColor); + } else { + mTextColor = ColorStateList.valueOf(0xFF666666); + } + if (mTypedArray.hasValue(R.styleable.FlowLayout_selectlabelTextColor)) { + mSelectTextColor = mTypedArray.getColorStateList(R.styleable.FlowLayout_selectlabelTextColor); + } else { + mSelectTextColor = ColorStateList.valueOf(0xFF666666); + } + + mTextSize = mTypedArray.getDimension(R.styleable.FlowLayout_labelTextSize, + sp2px(14)); + if (mTypedArray.hasValue(R.styleable.FlowLayout_labelTextPadding)) { + int textPadding = mTypedArray.getDimensionPixelOffset( + R.styleable.FlowLayout_labelTextPadding, 0); + mTextPaddingLeft = mTextPaddingTop = mTextPaddingRight = mTextPaddingBottom = textPadding; + } else { + mTextPaddingLeft = mTypedArray.getDimensionPixelOffset( + R.styleable.FlowLayout_labelTextPaddingLeft, dp2px(12)); + mTextPaddingTop = mTypedArray.getDimensionPixelOffset( + R.styleable.FlowLayout_labelTextPaddingTop, dp2px(5)); + mTextPaddingRight = mTypedArray.getDimensionPixelOffset( + R.styleable.FlowLayout_labelTextPaddingRight, dp2px(12)); + mTextPaddingBottom = mTypedArray.getDimensionPixelOffset( + R.styleable.FlowLayout_labelTextPaddingBottom, dp2px(5)); + } + + mLineMargin = mTypedArray.getDimensionPixelOffset(R.styleable.FlowLayout_lineMargin, dp2px(5)); + mWordMargin = mTypedArray.getDimensionPixelOffset(R.styleable.FlowLayout_wordMargin, dp2px(5)); + if (mTypedArray.hasValue(R.styleable.FlowLayout_labelBackground)) { + int labelBgResId = mTypedArray.getResourceId(R.styleable.FlowLayout_labelBackground, 0); + if (labelBgResId != 0) { + mLabelBg = getResources().getDrawable(labelBgResId); + } else { + int labelBgColor = mTypedArray.getColor(R.styleable.FlowLayout_labelBackground, Color.TRANSPARENT); + mLabelBg = new ColorDrawable(labelBgColor); + } + } else { + //mLabelBg = getResources().getDrawable(R.drawable.default_label_bg); + mLabelBg = getResources().getDrawable(R.drawable.label_shape_feed_back_bt_no_selected); + } + + if (mTypedArray.hasValue(R.styleable.FlowLayout_selectlabelBackground)) { + int labelBgResId = mTypedArray.getResourceId(R.styleable.FlowLayout_selectlabelBackground, 0); + if (labelBgResId != 0) { + mSelectLabelBg = getResources().getDrawable(labelBgResId); + } else { + int labelBgColor = mTypedArray.getColor(R.styleable.FlowLayout_selectlabelBackground, Color.TRANSPARENT); + mSelectLabelBg = new ColorDrawable(labelBgColor); + } + } else { + //mLabelBg = getResources().getDrawable(R.drawable.default_label_bg); + mSelectLabelBg = getResources().getDrawable(R.drawable.label_shape_feed_back_bt_no_selected); + } + + isSingleLine = mTypedArray.getBoolean(R.styleable.FlowLayout_singleLine, false); + + mTypedArray.recycle(); + } + } + + /** + * 编辑预览 + */ + private void showEditPreview() { + if (isInEditMode()) { +// 测试的数据 + ArrayList label = new ArrayList<>(); + label.add("Label 1"); + label.add("Label 2"); + label.add("Label 3"); + label.add("Label 4"); + label.add("Label 5"); + label.add("Label 6"); + label.add("Label 7"); + setLabels(label); + } + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + if (isSingleLine) { + measureSingleLine(widthMeasureSpec, heightMeasureSpec); + } else { + measureMultiLine(widthMeasureSpec, heightMeasureSpec); + } + } + + /** + * 测量单行模式 + * + * @param widthMeasureSpec + * @param heightMeasureSpec + */ + private void measureSingleLine(int widthMeasureSpec, int heightMeasureSpec) { + int count = getChildCount(); + int contentWidth = 0; //记录内容的宽度 + int maxItemHeight = 0; //记录一行中item高度最大的高度 + + for (int i = 0; i < count; i++) { + View view = getChildAt(i); + measureChild(view, widthMeasureSpec, heightMeasureSpec); + contentWidth += view.getMeasuredWidth(); + if (i != count - 1) { + contentWidth += mWordMargin; + } + maxItemHeight = Math.max(maxItemHeight, view.getMeasuredHeight()); + } + setMeasuredDimension(measureSize(widthMeasureSpec, contentWidth + + getPaddingLeft() + getPaddingRight()), + measureSize(heightMeasureSpec, maxItemHeight + getPaddingTop() + getPaddingBottom())); + } + + /** + * 测量多行模式 + * + * @param widthMeasureSpec + * @param heightMeasureSpec + */ + private void measureMultiLine(int widthMeasureSpec, int heightMeasureSpec) { + int count = getChildCount(); + int maxWidth = MeasureSpec.getSize(widthMeasureSpec) - getPaddingLeft() - getPaddingRight(); + + int contentHeight = 0; //记录内容的高度 + int lineWidth = 0; //记录行的宽度 + int maxLineWidth = 0; //记录最宽的行宽 + int maxItemHeight = 0; //记录一行中item高度最大的高度 + int lineCount = 1; + + for (int i = 0; i < count; i++) { + View view = getChildAt(i); + measureChild(view, widthMeasureSpec, heightMeasureSpec); + + if (lineWidth + view.getMeasuredWidth() > maxWidth) { + lineCount++; + if (mMaxLines > 0 && lineCount > mMaxLines) { + break; + } + contentHeight += mLineMargin; + contentHeight += maxItemHeight; + maxItemHeight = 0; + maxLineWidth = Math.max(maxLineWidth, lineWidth); + lineWidth = 0; + } + + lineWidth += view.getMeasuredWidth(); + maxItemHeight = Math.max(maxItemHeight, view.getMeasuredHeight()); + + if (i != count - 1) { + if (lineWidth + mWordMargin > maxWidth) { + // 换行 + lineCount++; + if (mMaxLines > 0 && lineCount > mMaxLines) { + break; + } + contentHeight += mLineMargin; + contentHeight += maxItemHeight; + maxItemHeight = 0; + maxLineWidth = Math.max(maxLineWidth, lineWidth); + lineWidth = 0; + } else { + lineWidth += mWordMargin; + } + } + } + + contentHeight += maxItemHeight; + maxLineWidth = Math.max(maxLineWidth, lineWidth); + + setMeasuredDimension(measureSize(widthMeasureSpec, maxLineWidth + getPaddingLeft() + getPaddingRight()), + measureSize(heightMeasureSpec, contentHeight + getPaddingTop() + getPaddingBottom())); + } + + private int measureSize(int measureSpec, int size) { + int result = 0; + int specMode = MeasureSpec.getMode(measureSpec); + int specSize = MeasureSpec.getSize(measureSpec); + + if (specMode == MeasureSpec.EXACTLY) { + result = specSize; + } else { + result = size; + if (specMode == MeasureSpec.AT_MOST) { + result = Math.min(result, specSize); + } + } + result = Math.max(result, getSuggestedMinimumWidth()); + result = resolveSizeAndState(result, measureSpec, 0); + return result; + } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + int x = getPaddingLeft(); + int y = getPaddingTop(); + + int contentWidth = right - left; + int maxItemHeight = 0; + int lineCount = 1; + + int count = getChildCount(); + for (int i = 0; i < count; i++) { + View view = getChildAt(i); + + if (!isSingleLine && contentWidth < x + view.getMeasuredWidth() + getPaddingRight()) { + lineCount++; + if (mMaxLines > 0 && lineCount > mMaxLines) { + break; + } + x = getPaddingLeft(); + y += mLineMargin; + y += maxItemHeight; + maxItemHeight = 0; + } + view.layout(x, y, x + view.getMeasuredWidth(), y + view.getMeasuredHeight()); + x += view.getMeasuredWidth(); + x += mWordMargin; + maxItemHeight = Math.max(maxItemHeight, view.getMeasuredHeight()); + } + } + + /* 用于保存View的信息的key */ + private static final String KEY_SUPER_STATE = "key_super_state"; + private static final String KEY_TEXT_COLOR_STATE = "key_text_color_state"; + private static final String KEY_TEXT_SIZE_STATE = "key_text_size_state"; + private static final String KEY_BG_RES_ID_STATE = "key_bg_res_id_state"; + private static final String KEY_PADDING_STATE = "key_padding_state"; + private static final String KEY_WORD_MARGIN_STATE = "key_word_margin_state"; + private static final String KEY_LINE_MARGIN_STATE = "key_line_margin_state"; + private static final String KEY_SELECT_TYPE_STATE = "key_select_type_state"; + private static final String KEY_MAX_SELECT_STATE = "key_max_select_state"; + private static final String KEY_MIN_SELECT_STATE = "key_min_select_state"; + private static final String KEY_MAX_LINES_STATE = "key_max_lines_state"; + private static final String KEY_INDICATOR_STATE = "key_indicator_state"; + // 由于新版(1.4.0)的标签列表允许设置任何类型的数据,而不仅仅是String。并且标签显示的内容 + // 最终由LabelTextProvider提供,所以LabelsView不再在onSaveInstanceState()和onRestoreInstanceState() + // 中保存和恢复标签列表的数据。 + private static final String KEY_LABELS_STATE = "key_labels_state"; + private static final String KEY_SELECT_LABELS_STATE = "key_select_labels_state"; + private static final String KEY_COMPULSORY_LABELS_STATE = "key_select_compulsory_state"; + private static final String KEY_LABEL_WIDTH_STATE = "key_label_width_state"; + private static final String KEY_LABEL_HEIGHT_STATE = "key_label_height_state"; + private static final String KEY_LABEL_GRAVITY_STATE = "key_label_gravity_state"; + private static final String KEY_SINGLE_LINE_STATE = "key_single_line_state"; + + @Override + protected Parcelable onSaveInstanceState() { + + Bundle bundle = new Bundle(); + //保存父类的信息 + bundle.putParcelable(KEY_SUPER_STATE, super.onSaveInstanceState()); + //保存标签文字颜色 + if (mTextColor != null) { + bundle.putParcelable(KEY_TEXT_COLOR_STATE, mTextColor); + } + //保存标签文字大小 + bundle.putFloat(KEY_TEXT_SIZE_STATE, mTextSize); + //保存标签背景 (由于背景改用Drawable,所以不能自动保存和恢复) +// bundle.putInt(KEY_BG_RES_ID_STATE, mLabelBgResId); + //保存标签宽高 + bundle.putInt(KEY_LABEL_WIDTH_STATE, mLabelWidth); + bundle.putInt(KEY_LABEL_HEIGHT_STATE, mLabelHeight); + //保存标签方向 + bundle.putInt(KEY_LABEL_GRAVITY_STATE, mLabelGravity); + //保存标签内边距 + bundle.putIntArray(KEY_PADDING_STATE, new int[]{mTextPaddingLeft, mTextPaddingTop, + mTextPaddingRight, mTextPaddingBottom}); + //保存标签间隔 + bundle.putInt(KEY_WORD_MARGIN_STATE, mWordMargin); + //保存行间隔 + bundle.putInt(KEY_LINE_MARGIN_STATE, mLineMargin); + //保存标签的选择类型 + bundle.putInt(KEY_SELECT_TYPE_STATE, mSelectType.value); + //保存标签的最大选择数量 + bundle.putInt(KEY_MAX_SELECT_STATE, mMaxSelect); + //保存标签的最少选择数量 + bundle.putInt(KEY_MIN_SELECT_STATE, mMinSelect); + //保存标签的最大行数 + bundle.putInt(KEY_MAX_LINES_STATE, mMaxLines); + //保存是否是指示器模式 + bundle.putBoolean(KEY_INDICATOR_STATE, isIndicator); + + //保存标签列表 +// if (!mLabels.isEmpty()) { +// bundle.putStringArrayList(KEY_LABELS_STATE, mLabels); +// } + //保存已选择的标签列表 + if (!mSelectLabels.isEmpty()) { + bundle.putIntegerArrayList(KEY_SELECT_LABELS_STATE, mSelectLabels); + } + + //保存必选项列表 + if (!mCompulsorys.isEmpty()) { + bundle.putIntegerArrayList(KEY_COMPULSORY_LABELS_STATE, mCompulsorys); + } + + bundle.putBoolean(KEY_SINGLE_LINE_STATE, isSingleLine); + + return bundle; + } + + @Override + protected void onRestoreInstanceState(Parcelable state) { + if (state instanceof Bundle) { + Bundle bundle = (Bundle) state; + //恢复父类信息 + super.onRestoreInstanceState(bundle.getParcelable(KEY_SUPER_STATE)); + + //恢复标签文字颜色 + ColorStateList color = bundle.getParcelable(KEY_TEXT_COLOR_STATE); + if (color != null) { + setLabelTextColor(color); + } + //恢复标签文字大小 + setLabelTextSize(bundle.getFloat(KEY_TEXT_SIZE_STATE, mTextSize)); +// //恢复标签背景 (由于背景改用Drawable,所以不能自动保存和恢复) +// int resId = bundle.getInt(KEY_BG_RES_ID_STATE, mLabelBgResId); +// if (resId != 0) { +// setLabelBackgroundResource(resId); +// } + //恢复标签宽高 + mLabelWidth = bundle.getInt(KEY_LABEL_WIDTH_STATE, mLabelWidth); + mLabelHeight = bundle.getInt(KEY_LABEL_HEIGHT_STATE, mLabelHeight); + //恢复标签方向 + setLabelGravity(bundle.getInt(KEY_LABEL_GRAVITY_STATE, mLabelGravity)); + //恢复标签内边距 + int[] padding = bundle.getIntArray(KEY_PADDING_STATE); + if (padding != null && padding.length == 4) { + setLabelTextPadding(padding[0], padding[1], padding[2], padding[3]); + } + //恢复标签间隔 + setWordMargin(bundle.getInt(KEY_WORD_MARGIN_STATE, mWordMargin)); + //恢复行间隔 + setLineMargin(bundle.getInt(KEY_LINE_MARGIN_STATE, mLineMargin)); + //恢复标签的选择类型 + setSelectType(SelectType.get(bundle.getInt(KEY_SELECT_TYPE_STATE, mSelectType.value))); + //恢复标签的最大选择数量 + setMaxSelect(bundle.getInt(KEY_MAX_SELECT_STATE, mMaxSelect)); + //恢复标签的最少选择数量 + setMinSelect(bundle.getInt(KEY_MIN_SELECT_STATE, mMinSelect)); + //恢复标签的最大行数 + setMaxLines(bundle.getInt(KEY_MAX_LINES_STATE, mMaxLines)); + //恢复是否是指示器模式 + setIndicator(bundle.getBoolean(KEY_INDICATOR_STATE, isIndicator)); + + setSingleLine(bundle.getBoolean(KEY_SINGLE_LINE_STATE, isSingleLine)); + +// //恢复标签列表 +// ArrayList labels = bundle.getStringArrayList(KEY_LABELS_STATE); +// if (labels != null && !labels.isEmpty()) { +// setLabels(labels); +// } + //恢复必选项列表 + ArrayList compulsory = bundle.getIntegerArrayList(KEY_COMPULSORY_LABELS_STATE); + if (compulsory != null && !compulsory.isEmpty()) { + setCompulsorys(compulsory); + } + //恢复已选择的标签列表 + ArrayList selectLabel = bundle.getIntegerArrayList(KEY_SELECT_LABELS_STATE); + if (selectLabel != null && !selectLabel.isEmpty()) { + int size = selectLabel.size(); + int[] positions = new int[size]; + for (int i = 0; i < size; i++) { + positions[i] = selectLabel.get(i); + } + setSelects(positions); + } + return; + } + super.onRestoreInstanceState(state); + } + + /** + * 设置标签列表 + * + * @param labels + */ + public void setLabels(List labels) { + setLabels(labels, new LabelTextProvider() { + @Override + public CharSequence getLabelText(TextView label, int position, String data) { + return data.trim(); + } + }); + } + + /** + * 设置标签列表,标签列表的数据可以是任何类型的数据,它最终显示的内容由LabelTextProvider根据标签的数据提供。 + * + * @param labels + * @param provider + * @param + */ + public void setLabels(List labels, LabelTextProvider provider) { + //清空原有的标签 + innerClearAllSelect(); + removeAllViews(); + mLabels.clear(); + + if (labels != null) { + mLabels.addAll(labels); + int size = labels.size(); + for (int i = 0; i < size; i++) { + addLabel(labels.get(i), i, provider); + } + ensureLabelClickable(); + } + + if (mSelectType == SelectType.SINGLE_IRREVOCABLY) { + setSelects(single_default_position); + } + } + + /** + * 获取标签列表 + * + * @return + */ + public List getLabels() { + return (List) mLabels; + } + + private void addLabel(T data, int position, LabelTextProvider provider) { + final TextView label = new TextView(mContext); + label.setPadding(mTextPaddingLeft, mTextPaddingTop, mTextPaddingRight, mTextPaddingBottom); + label.setTextSize(TypedValue.COMPLEX_UNIT_PX, mTextSize); + label.setGravity(mLabelGravity); + label.setTextColor(mTextColor); + //设置给label的背景(Drawable)是一个Drawable对象的拷贝, + // 因为如果所有的标签都共用一个Drawable对象,会引起背景错乱。 + label.setBackgroundDrawable(mLabelBg.getConstantState().newDrawable()); + //label通过tag保存自己的数据(data)和位置(position) + label.setTag(KEY_DATA, data); + label.setTag(KEY_POSITION, position); + label.setOnClickListener(this); + label.setOnLongClickListener(this); + addView(label, mLabelWidth, mLabelHeight); + label.setText(provider.getLabelText(label, position, data)); + } + + /** + * 确保标签是否能响应事件,如果标签可选或者标签设置了点击事件监听,则响应事件。 + */ + private void ensureLabelClickable() { + int count = getChildCount(); + for (int i = 0; i < count; i++) { + TextView label = (TextView) getChildAt(i); + label.setClickable(mLabelClickListener != null || mLabelLongClickListener != null || mSelectType != SelectType.NONE); + } + } + + @Override + public void onClick(View v) { + if (v instanceof TextView) { + TextView label = (TextView) v; + if (!isIndicator) { + if (mSelectType != SelectType.NONE) { + if (label.isSelected()) { + boolean irrevocable = mSelectType == SelectType.MULTI && mCompulsorys.contains((Integer) label.getTag(KEY_POSITION)); + irrevocable = irrevocable || (mSelectType == SelectType.MULTI && mSelectLabels.size() <= mMinSelect); + irrevocable = irrevocable || mSelectType == SelectType.SINGLE_IRREVOCABLY; + if (!irrevocable && !selectChangeIntercept(label)) { + setLabelSelect(label, false); + } + } else { + if (mSelectType == SelectType.SINGLE || mSelectType == SelectType.SINGLE_IRREVOCABLY) { + if (!selectChangeIntercept(label)) { + innerClearAllSelect(); + setLabelSelect(label, true); + } + } else if (mSelectType == SelectType.MULTI + && (mMaxSelect <= 0 || mMaxSelect > mSelectLabels.size())) { + if (!selectChangeIntercept(label)) { + setLabelSelect(label, true); + } + } + } + } + } + + if (mLabelClickListener != null) { + mLabelClickListener.onLabelClick(label, label.getTag(KEY_DATA), (int) label.getTag(KEY_POSITION)); + } + } + } + + @Override + public boolean onLongClick(View v) { + if (v instanceof TextView) { + TextView label = (TextView) v; + if (mLabelLongClickListener != null) { + return mLabelLongClickListener.onLabelLongClick(label, label.getTag(KEY_DATA), (int) label.getTag(KEY_POSITION)); + } + } + + return false; + } + + public void setLabelSelect(TextView label, boolean isSelect) { + if (label.isSelected() != isSelect) { + label.setSelected(isSelect); + if (isSelect) { + mSelectLabels.add((Integer) label.getTag(KEY_POSITION)); + } else { + mSelectLabels.remove((Integer) label.getTag(KEY_POSITION)); + } + if (mLabelSelectChangeListener != null) { + mLabelSelectChangeListener.onLabelSelectChange(label, label.getTag(KEY_DATA), + isSelect, (int) label.getTag(KEY_POSITION)); + } + } + } + + private boolean selectChangeIntercept(TextView label) { + return mOnSelectChangeIntercept != null && mOnSelectChangeIntercept.onIntercept(label, + label.getTag(KEY_DATA), label.isSelected(), !label.isSelected(), + (int) label.getTag(KEY_POSITION)); + } + + /** + * 取消所有选中的label + */ + public void clearAllSelect() { + if (mSelectType != SelectType.SINGLE_IRREVOCABLY) { + if (mSelectType == SelectType.MULTI && !mCompulsorys.isEmpty()) { + clearNotCompulsorySelect(); + } else { + innerClearAllSelect(); + } + } + } + + private void innerClearAllSelect() { + int count = getChildCount(); + for (int i = 0; i < count; i++) { + setLabelSelect((TextView) getChildAt(i), false); + } + mSelectLabels.clear(); + } + + private void clearNotCompulsorySelect() { + int count = getChildCount(); + List temps = new ArrayList<>(); + for (int i = 0; i < count; i++) { + if (!mCompulsorys.contains(i)) { + setLabelSelect((TextView) getChildAt(i), false); + temps.add(i); + } + + } + mSelectLabels.removeAll(temps); + } + + /** + * 设置选中label + * + * @param positions + */ + public void setSelects(List positions) { + if (positions != null) { + int size = positions.size(); + int[] ps = new int[size]; + for (int i = 0; i < size; i++) { + ps[i] = positions.get(i); + } + setSelects(ps); + } + } + + /** + * 设置选中label + * + * @param positions + */ + public void setSelects(int... positions) { + if (mSelectType != SelectType.NONE) { + ArrayList selectLabels = new ArrayList<>(); + int count = getChildCount(); + int size = mSelectType == SelectType.SINGLE || mSelectType == SelectType.SINGLE_IRREVOCABLY + ? 1 : mMaxSelect; + for (int p : positions) { + if (p < count) { + TextView label = (TextView) getChildAt(p); + if (!selectLabels.contains(label)) { + label.setTextColor(/*Color.parseColor("#B62EFF")*/getSelectLabelTextColor()); + // label.setBackgroundResource(R.drawable.label_shape_feed_back_bt_selected); + label.setBackground(mSelectLabelBg); + //label.setTextColor(Color.parseColor("#ffffff")); +// label.setBackgroundResource(R.drawable.shape_b62eff_r45_bg); + setLabelSelect(label, true); + selectLabels.add(label); + } + if (size > 0 && selectLabels.size() == size) { + break; + } + } + } + + for (int i = 0; i < count; i++) { + TextView label = (TextView) getChildAt(i); + if (!selectLabels.contains(label)) { + setLabelSelect(label, false); + label.setTextColor(getLabelTextColor()); + label.setBackground(mLabelBg); + //label.setBackgroundResource(/*R.drawable.label_shape_feed_back_bt_no_selected*/mLabelBg); + } + } + } + } + + /** + * 设置必选项,只有在多项模式下,这个方法才有效 + * + * @param positions + */ + public void setCompulsorys(List positions) { + if (mSelectType == SelectType.MULTI && positions != null) { + mCompulsorys.clear(); + mCompulsorys.addAll(positions); + //必选项发生改变,就要恢复到初始状态。 + innerClearAllSelect(); + setSelects(mCompulsorys); + } + } + + /** + * 设置必选项,只有在多项模式下,这个方法才有效 + * + * @param positions + */ + public void setCompulsorys(int... positions) { + if (mSelectType == SelectType.MULTI && positions != null) { + List ps = new ArrayList<>(positions.length); + for (int i : positions) { + ps.add(i); + } + setCompulsorys(ps); + } + } + + /** + * 获取必选项, + * + * @return + */ + public List getCompulsorys() { + return mCompulsorys; + } + + /** + * 清空必选项,只有在多项模式下,这个方法才有效 + */ + public void clearCompulsorys() { + if (mSelectType == SelectType.MULTI && !mCompulsorys.isEmpty()) { + mCompulsorys.clear(); + //必选项发生改变,就要恢复到初始状态。 + innerClearAllSelect(); + } + } + + /** + * 获取选中的label(返回的是所有选中的标签的位置) + * + * @return + */ + public List getSelectLabels() { + return mSelectLabels; + } + + /** + * 获取选中的label(返回的是所头选中的标签的数据) + * + * @param + * @return + */ + public List getSelectLabelDatas() { + List list = new ArrayList<>(); + int size = mSelectLabels.size(); + for (int i = 0; i < size; i++) { + View label = getChildAt(mSelectLabels.get(i)); + Object data = label.getTag(KEY_DATA); + if (data != null) { + list.add((T) data); + } + } + return list; + } + + /** + * 设置标签背景 + * + * @param resId + */ + public void setLabelBackgroundResource(int resId) { + setLabelBackgroundDrawable(getResources().getDrawable(resId)); + } + + /** + * 设置标签背景 + * + * @param color + */ + public void setLabelBackgroundColor(int color) { + setLabelBackgroundDrawable(new ColorDrawable(color)); + } + + /** + * 设置标签背景 + * + * @param drawable + */ + public void setLabelBackgroundDrawable(Drawable drawable) { + mLabelBg = drawable; + int count = getChildCount(); + for (int i = 0; i < count; i++) { + TextView label = (TextView) getChildAt(i); + label.setBackgroundDrawable(mLabelBg.getConstantState().newDrawable()); + } + } + + /** + * 设置标签内边距 + * + * @param left + * @param top + * @param right + * @param bottom + */ + public void setLabelTextPadding(int left, int top, int right, int bottom) { + if (mTextPaddingLeft != left || mTextPaddingTop != top + || mTextPaddingRight != right || mTextPaddingBottom != bottom) { + mTextPaddingLeft = left; + mTextPaddingTop = top; + mTextPaddingRight = right; + mTextPaddingBottom = bottom; + int count = getChildCount(); + for (int i = 0; i < count; i++) { + TextView label = (TextView) getChildAt(i); + label.setPadding(left, top, right, bottom); + } + } + } + + public int getTextPaddingLeft() { + return mTextPaddingLeft; + } + + public int getTextPaddingTop() { + return mTextPaddingTop; + } + + public int getTextPaddingRight() { + return mTextPaddingRight; + } + + public int getTextPaddingBottom() { + return mTextPaddingBottom; + } + + /** + * 设置标签的文字大小(单位是px) + * + * @param size + */ + public void setLabelTextSize(float size) { + if (mTextSize != size) { + mTextSize = size; + int count = getChildCount(); + for (int i = 0; i < count; i++) { + TextView label = (TextView) getChildAt(i); + label.setTextSize(TypedValue.COMPLEX_UNIT_PX, size); + } + } + } + + public float getLabelTextSize() { + return mTextSize; + } + + /** + * 设置标签的文字颜色 + * + * @param color + */ + public void setLabelTextColor(int color) { + setLabelTextColor(ColorStateList.valueOf(color)); + } + + /** + * 设置标签的文字颜色 + * + * @param color + */ + public void setLabelTextColor(ColorStateList color) { + mTextColor = color; + int count = getChildCount(); + for (int i = 0; i < count; i++) { + TextView label = (TextView) getChildAt(i); + label.setTextColor(mTextColor); + } + } + + public ColorStateList getLabelTextColor() { + return mTextColor; + } + + + /** + * 设置标签的文字颜色 + * + * @param color + */ + public void setSelectLabelTextColor(int color) { + setSelectLabelTextColor(ColorStateList.valueOf(color)); + } + + /** + * 设置标签的文字颜色 + * + * @param color + */ + public void setSelectLabelTextColor(ColorStateList color) { + mSelectTextColor = color; + int count = getChildCount(); + for (int i = 0; i < count; i++) { + TextView label = (TextView) getChildAt(i); + if(label.isSelected()) { + label.setTextColor(mSelectTextColor); + } + } + } + + public ColorStateList getSelectLabelTextColor() { + return mSelectTextColor; + } + + /** + * 设置标签显示方向 + * + * @param gravity + */ + public void setLabelGravity(int gravity) { + if (mLabelGravity != gravity) { + mLabelGravity = gravity; + int count = getChildCount(); + for (int i = 0; i < count; i++) { + TextView label = (TextView) getChildAt(i); + label.setGravity(gravity); + } + } + } + + public int getLabelGravity() { + return mLabelGravity; + } + + /** + * 设置行间隔 + */ + public void setLineMargin(int margin) { + if (mLineMargin != margin) { + mLineMargin = margin; + requestLayout(); + } + } + + public int getLineMargin() { + return mLineMargin; + } + + /** + * 设置标签的间隔 + */ + public void setWordMargin(int margin) { + if (mWordMargin != margin) { + mWordMargin = margin; + requestLayout(); + } + } + + public int getWordMargin() { + return mWordMargin; + } + + /** + * 设置标签的选择类型 + * + * @param selectType + */ + public void setSelectType(SelectType selectType) { + if (mSelectType != selectType) { + mSelectType = selectType; + //选择类型发生改变,就要恢复到初始状态。 + innerClearAllSelect(); + + if (mSelectType == SelectType.SINGLE_IRREVOCABLY) { + setSelects(single_default_position); + } + + if (mSelectType != SelectType.MULTI) { + mCompulsorys.clear(); + } + + ensureLabelClickable(); + } + } + + public void setDefault(int position){ + single_default_position = position; + } + + public SelectType getSelectType() { + return mSelectType; + } + + /** + * 设置最大的选择数量,只有selectType等于MULTI时有效。 + * + * @param maxSelect + */ + public void setMaxSelect(int maxSelect) { + if (mMaxSelect != maxSelect) { + mMaxSelect = maxSelect; + if (mSelectType == SelectType.MULTI) { + //最大选择数量发生改变,就要恢复到初始状态。 + innerClearAllSelect(); + } + } + } + + public int getMaxSelect() { + return mMaxSelect; + } + + /** + * 设置最少的选择数量,只有selectType等于MULTI时有效。 + * 注意:minSelect只限制用户手动点击取消选中时的效果。 + * 调用setSelects()、clearAllSelect()等方法改变标签的选中状态时,不受minSelect影响。 + * + * @param minSelect + */ + public void setMinSelect(int minSelect) { + this.mMinSelect = minSelect; + } + + public int getMinSelect() { + return mMinSelect; + } + + /** + * 设置最大行数,小于等于0则不限行数。 + * + * @param maxLines + */ + public void setMaxLines(int maxLines) { + if (mMaxLines != maxLines) { + mMaxLines = maxLines; + requestLayout(); + } + } + + public int getMaxLines() { + return mMaxLines; + } + + /** + * 设置为指示器模式,只能看,不能手动操作。这种模式下,用户不能通过手动点击改变标签的选中状态。 + * 但是仍然可以通过调用setSelects()、clearAllSelect()等方法改变标签的选中状态。 + * + * @param indicator + */ + public void setIndicator(boolean indicator) { + isIndicator = indicator; + } + + public boolean isIndicator() { + return isIndicator; + } + + /** + * 设置单行显示 + * + * @param isSingleLine + */ + public void setSingleLine(boolean isSingleLine) { + if (this.isSingleLine != isSingleLine) { + this.isSingleLine = isSingleLine; + requestLayout(); + } + } + + public boolean isSingleLine() { + return isSingleLine; + } + + /** + * 设置标签的点击监听 + * + * @param l + */ + public void setOnLabelClickListener(OnLabelClickListener l) { + mLabelClickListener = l; + ensureLabelClickable(); + } + + /** + * 设置标签的点击监听 + * + * @param l + */ + public void setOnLabelLongClickListener(OnLabelLongClickListener l) { + mLabelLongClickListener = l; + ensureLabelClickable(); + } + + /** + * 设置标签的选择监听 + * + * @param l + */ + public void setOnLabelSelectChangeListener(OnLabelSelectChangeListener l) { + mLabelSelectChangeListener = l; + } + + /** + * 设置标签选中状态的点击改变拦截器 + * + * @param intercept + */ + public void setOnSelectChangeIntercept(OnSelectChangeIntercept intercept) { + mOnSelectChangeIntercept = intercept; + } + + /** + * sp转px + */ + private int sp2px(float spVal) { + return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, + spVal, getResources().getDisplayMetrics()); + } + + /** + * dp转px + */ + private int dp2px(float dpVal) { + return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, + dpVal, getResources().getDisplayMetrics()); + } + + public interface OnLabelClickListener { + + /** + * @param label 标签 + * @param data 标签对应的数据 + * @param position 标签位置 + */ + void onLabelClick(TextView label, Object data, int position); + } + + public interface OnLabelLongClickListener { + + /** + * @param label 标签 + * @param data 标签对应的数据 + * @param position 标签位置 + */ + boolean onLabelLongClick(TextView label, Object data, int position); + } + + public interface OnLabelSelectChangeListener { + + /** + * @param label 标签 + * @param data 标签对应的数据 + * @param isSelect 是否选中 + * @param position 标签位置 + */ + void onLabelSelectChange(TextView label, Object data, boolean isSelect, int position); + } + + /** + * 点击选中/取消选中时,拦截事件,返回true时,表示事件被拦截,不会改变标签的选中状态。 + * 当希望某个标签在特定条件下不被选中/取消选中时,可以使用事件拦截。 + * 只有用户点击改变标签选中状态时才会回调拦截,用其他方法改变时不会回调这个方法,不会被拦截。 + */ + public interface OnSelectChangeIntercept { + + /** + * @param label 标签 + * @param data 标签对应的数据 + * @param oldSelect 旧选中状态 + * @param newSelect 新选中状态 + * @param position 标签位置 + */ + boolean onIntercept(TextView label, Object data, boolean oldSelect, boolean newSelect, int position); + } + + /** + * 给标签提供最终需要显示的数据。因为LabelsView的列表可以设置任何类型的数据,而LabelsView里的每个item的是一 + * 个TextView,只能显示CharSequence的数据,所以LabelTextProvider需要根据每个item的数据返回item最终要显示 + * 的CharSequence。 + * + * @param + */ + public interface LabelTextProvider { + + /** + * 根据data和position返回label需要需要显示的数据。 + * + * @param label + * @param position + * @param data + * @return + */ + CharSequence getLabelText(TextView label, int position, T data); + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/utils/SaveImageUtil.java b/app/src/main/java/com/xuebiping/bolizhuzi/utils/SaveImageUtil.java index 220b1d9..460d513 100644 --- a/app/src/main/java/com/xuebiping/bolizhuzi/utils/SaveImageUtil.java +++ b/app/src/main/java/com/xuebiping/bolizhuzi/utils/SaveImageUtil.java @@ -41,9 +41,9 @@ public class SaveImageUtil { @Override protected void onPostExecute(Boolean result) { if (result) { - MaleToast.showMessage(context, "二维码保存成功"); + MaleToast.showMessage(context, "已保存到相册,快去分享吧~"); } else { - MaleToast.showMessage(context, "二维码保存失败"); + MaleToast.showMessage(context, "保存失败"); } } diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/view/login/LoginActivity.java b/app/src/main/java/com/xuebiping/bolizhuzi/view/login/LoginActivity.java index 7fad2fd..273d9a4 100644 --- a/app/src/main/java/com/xuebiping/bolizhuzi/view/login/LoginActivity.java +++ b/app/src/main/java/com/xuebiping/bolizhuzi/view/login/LoginActivity.java @@ -308,9 +308,9 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener, } } else if (view == tv_login_sms) { loginType = 0; - tv_login_pw.setBackgroundResource(0); +// tv_login_pw.setBackgroundResource(0); tv_login_pw.setTextColor(ContextCompat.getColor(this, R.color.three_text)); - tv_login_sms.setBackgroundResource(R.drawable.white_bg_40); +// tv_login_sms.setBackgroundResource(R.drawable.white_bg_40); tv_login_sms.setTextColor(ContextCompat.getColor(this, R.color.one_text)); tv_login_sms_line.setVisibility(View.VISIBLE); tv_login_pw_line.setVisibility(View.INVISIBLE); @@ -319,9 +319,9 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener, initLoginBtnEnabled(); } else if (view == tv_login_pw) { loginType = 1; - tv_login_sms.setBackgroundResource(0); +// tv_login_sms.setBackgroundResource(0); tv_login_sms.setTextColor(ContextCompat.getColor(this, R.color.three_text)); - tv_login_pw.setBackgroundResource(R.drawable.white_bg_40); +// tv_login_pw.setBackgroundResource(R.drawable.white_bg_40); tv_login_pw.setTextColor(ContextCompat.getColor(this, R.color.one_text)); tv_login_sms_line.setVisibility(View.INVISIBLE); tv_login_pw_line.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/view/main/AgoraWithFUVideoActivity.java b/app/src/main/java/com/xuebiping/bolizhuzi/view/main/AgoraWithFUVideoActivity.java index d5f950f..28d000c 100644 --- a/app/src/main/java/com/xuebiping/bolizhuzi/view/main/AgoraWithFUVideoActivity.java +++ b/app/src/main/java/com/xuebiping/bolizhuzi/view/main/AgoraWithFUVideoActivity.java @@ -1784,22 +1784,25 @@ public class AgoraWithFUVideoActivity extends BaseActivity implements View.OnCli */ private void toVideoFinish() { //3期 男用户通话结束页面修改 - if (UserManager.getUserInfo().getGender() == 2) { - Intent intent = new Intent(AgoraWithFUVideoActivity.this, ManVideoFinishActivity.class); - intent.putExtra("roomId", mRoomId); - intent.putExtra("nickName", mNickName); - intent.putExtra("avatar", mAvatar); - intent.putExtra("uid", mToUid); - intent.putExtra("callType", callType); - intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - startActivity(intent); - } else { - Intent intent = new Intent(AgoraWithFUVideoActivity.this, VideoFinishActivity.class); - intent.putExtra("roomId", mRoomId); - intent.putExtra("isCaller", false); - intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - startActivity(intent); - } +// if (UserManager.getUserInfo().getGender() == 2) { +// Intent intent = new Intent(AgoraWithFUVideoActivity.this, ManVideoFinishActivity.class); +// intent.putExtra("roomId", mRoomId); +// intent.putExtra("nickName", mNickName); +// intent.putExtra("avatar", mAvatar); +// intent.putExtra("uid", mToUid); +// intent.putExtra("callType", callType); +// intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); +// startActivity(intent); +// } else { +// Intent intent = new Intent(AgoraWithFUVideoActivity.this, VideoFinishActivity.class); +// intent.putExtra("roomId", mRoomId); +// intent.putExtra("isCaller", false); +// intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); +// startActivity(intent); +// } + Intent intent = new Intent(AgoraWithFUVideoActivity.this, VideoFinish2Activity.class); + intent.putExtra("roomId", mRoomId); + startActivity(intent); finishActivity(); } diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/view/main/GiftReceived2Activity.java b/app/src/main/java/com/xuebiping/bolizhuzi/view/main/GiftReceived2Activity.java new file mode 100644 index 0000000..c3f5a7b --- /dev/null +++ b/app/src/main/java/com/xuebiping/bolizhuzi/view/main/GiftReceived2Activity.java @@ -0,0 +1,89 @@ +package com.xuebiping.bolizhuzi.view.main; + +import android.os.Bundle; +import android.widget.TextView; + +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.fengliyan.uikit.toast.MaleToast; +import com.xuebiping.bolizhuzi.R; +import com.xuebiping.bolizhuzi.controller.main.adapter.GiftReceived2Adapter; +import com.xuebiping.bolizhuzi.controller.main.manager.MainManager; +import com.xuebiping.bolizhuzi.model.main.GiftReceivedBean; +import com.xuebiping.bolizhuzi.model.main.GiftReceivedItemBean; +import com.xuebiping.bolizhuzi.view.base.BaseActivity; +import com.xuebiping.bolizhuzi.view.base.utils.HttpUiCallBack; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class GiftReceived2Activity extends BaseActivity { + + private TextView mTotalTextView; + private RecyclerView mRv_recommend_list; + private GiftReceived2Adapter mAdapter; + private List mData = new ArrayList<>(); + + private int mUserId; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_gift_received2); + setTitleName("收到的礼物"); + mUserId = getIntent().getIntExtra("userId", 0); + initView(); + getReceivedGifts(); + } + + private void initView() { + mTotalTextView = findViewById(R.id.gift_received_header_info); + mRv_recommend_list = findViewById(R.id.rv_recommend_list); + + mRv_recommend_list.setLayoutManager(new GridLayoutManager(this, 5)); + mAdapter = new GiftReceived2Adapter(R.layout.item_gift_received2, this); + mRv_recommend_list.setAdapter(mAdapter); + } + + public void getReceivedGifts(){ + MainManager.receivedGiftList(this, mUserId, new HttpUiCallBack() { + @Override + public void onSuccess(BaseActivity activity, GiftReceivedBean result, String message) { + + if (result.getList() != null) { + mData.clear(); + + List list = result.getList(); + if (list != null && list.size() > 0) { + mData.addAll(list); + } + + Iterator iterator = result.getList().iterator(); + int total = 0; + while (iterator.hasNext()){ + GiftReceivedItemBean bean = iterator.next(); + total += Integer.parseInt(bean.getTotal()); + } + + mTotalTextView.setText(total + ""); + } + if (mData != null && mData.size() > 0) { + mAdapter.setList(mData); + } + } + + @Override + public void onFailure(BaseActivity activity, String tip) { + MaleToast.showMessage(activity, tip); + } + + @Override + public void onException(BaseActivity activity, Throwable e) { + MaleToast.showFailureMsg(activity, "请重试"); + } + }); + } +} diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/view/main/MainActivity.java b/app/src/main/java/com/xuebiping/bolizhuzi/view/main/MainActivity.java index 482736d..2879f9d 100644 --- a/app/src/main/java/com/xuebiping/bolizhuzi/view/main/MainActivity.java +++ b/app/src/main/java/com/xuebiping/bolizhuzi/view/main/MainActivity.java @@ -872,9 +872,9 @@ public class MainActivity extends BaseActivity implements DemoHelper.AppIdsUpdat mBottomTab.setOnTabClickListener(new BottomTab.TabClickListener() { @Override public void onClick(int position, int currentPosition) { - if ((UserManager.getUserInfo().getIs_anchor() != 1 || UserManager.getUserInfo().getIs_face_status() != 1) && UserManager.getUserInfo().isWomen()) { - new GirlAuthDialog(MainActivity.this).show(); - } +// if ((UserManager.getUserInfo().getIs_anchor() != 1 || UserManager.getUserInfo().getIs_face_status() != 1) && UserManager.getUserInfo().isWomen()) { +// new GirlAuthDialog(MainActivity.this).show(); +// } if (position == currentPosition) { //第二次点击 if (position == 0) { if (isOne) { diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/view/main/MainDynamicActivity.java b/app/src/main/java/com/xuebiping/bolizhuzi/view/main/MainDynamicActivity.java index 3e6e672..79d12bf 100644 --- a/app/src/main/java/com/xuebiping/bolizhuzi/view/main/MainDynamicActivity.java +++ b/app/src/main/java/com/xuebiping/bolizhuzi/view/main/MainDynamicActivity.java @@ -2,21 +2,33 @@ package com.xuebiping.bolizhuzi.view.main; import android.content.Intent; import android.os.Bundle; +import android.text.TextUtils; import android.view.View; import android.widget.AbsListView; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; + +import com.fengliyan.uikit.dialog.BottomGiftDialog; +import com.fengliyan.uikit.dialog.DialogGiftBean; +import com.fengliyan.uikit.dialog.GiftListBean; import com.xuebiping.bolizhuzi.R; import com.xuebiping.bolizhuzi.controller.dynamics.adapter.DynamicsAdapter; +import com.xuebiping.bolizhuzi.controller.dynamics.adapter.DynamicsAdapter1; import com.xuebiping.bolizhuzi.controller.dynamics.manager.DynamicsManager; import com.xuebiping.bolizhuzi.controller.eventBus.DynamicEvent; +import com.xuebiping.bolizhuzi.controller.eventBus.DynamicLikeEvent; +import com.xuebiping.bolizhuzi.controller.main.manager.MainManager; import com.xuebiping.bolizhuzi.model.dynamics.DynamicsItemBean; import com.xuebiping.bolizhuzi.model.dynamics.DynamicsListBean; +import com.xuebiping.bolizhuzi.model.main.FollowResultBean; import com.xuebiping.bolizhuzi.view.base.BaseActivity; import com.xuebiping.bolizhuzi.view.base.utils.HttpUiCallBack; import com.xuebiping.bolizhuzi.view.base.utils.view.HangUpDialog; import com.fengliyan.uikit.dialog.BottomSelectiveDialog; import com.fengliyan.uikit.refresh.LoadMoreListView; import com.fengliyan.uikit.toast.MaleToast; +import com.xuebiping.bolizhuzi.view.dynamics.activity.DynamicDetailActivity; +import com.xuebiping.bolizhuzi.view.settings.CaibeiRechargeActivity; import java.util.ArrayList; import java.util.List; @@ -34,15 +46,17 @@ public class MainDynamicActivity extends BaseActivity implements View.OnClickLis private List mImageList = new ArrayList<>(); private int mPage = 1; private boolean mPageLoad; - private DynamicsAdapter mAdapter; + private DynamicsAdapter1 mAdapter; private int mUserId; private String mNickName; private BottomSelectiveDialog mSelectiveDialog; private BottomSelectiveDialog mDeleteBottomDialog; + private int detailPosition; @Override public void onCreate(Bundle onSavedInstance) { super.onCreate(onSavedInstance); + EventBus.getDefault().register(this); setContentView(R.layout.fragment_dynamics); mUserId = getIntent().getIntExtra("userId", 0); mNickName = getIntent().getStringExtra("nickName"); @@ -53,7 +67,7 @@ public class MainDynamicActivity extends BaseActivity implements View.OnClickLis private void initView() { mListView = findViewById(R.id.dynamics_list); - mAdapter = new DynamicsAdapter(this); + mAdapter = new DynamicsAdapter1(this); mAdapter.setList(mImageList); mListView.setAdapter(mAdapter); // mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @@ -89,23 +103,42 @@ public class MainDynamicActivity extends BaseActivity implements View.OnClickLis } }); - mAdapter.setOnThumbupClickedListener(new DynamicsAdapter.OnThumbupClickedListener() { + mAdapter.likeDynamicCallback = new DynamicsAdapter1.DynamicLikeCallback() { + @Override + public void likeDynamic(DynamicsItemBean bean) { + likeFeed(bean); + } + }; + + mAdapter.setOnThumbupClickedListener(new DynamicsAdapter1.OnThumbupClickedListener() { @Override public void onClick(View v, String uid) { thumbup(uid); } }); - mAdapter.setOnGiftSendListener(new DynamicsAdapter.OnGiftSendListener() { + + mAdapter.setOnGiftSendListener(new DynamicsAdapter1.OnGiftSendListener() { @Override public void onSend(DynamicsItemBean bean, int quantity) { - sendGift(bean.getId(), quantity, bean); +// sendGift(bean.getId(), quantity, bean); + + getGiftData(bean.getUser_id()); } }); - mAdapter.setOnMenuClickListener(new DynamicsAdapter.OnMenuClickListener() { + mAdapter.setOnMenuClickListener(new DynamicsAdapter1.OnMenuClickListener() { @Override public void onMenuClicked(final int dynamicIndex) { mSelectiveDialog = new BottomSelectiveDialog(MainDynamicActivity.this, R.style.SelectiveDialog); + if (0 == mImageList.get(dynamicIndex).getIs_follow()) { + mSelectiveDialog.addSelectButton("关注", new BottomSelectiveDialog.OnButtonSelectListener() { + @Override + public void onClicked(View view, int index) { + mSelectiveDialog.dismiss(); + focus(mImageList.get(dynamicIndex).getUser_id()); + } + }); + } mSelectiveDialog.addSelectButton("举报", new BottomSelectiveDialog.OnButtonSelectListener() { @Override @@ -121,32 +154,88 @@ public class MainDynamicActivity extends BaseActivity implements View.OnClickLis mSelectiveDialog.show(); } }); - mAdapter.likeDynamicCallback = new DynamicsAdapter.DynamicLikeCallback() { - @Override - public void likeDynamic(DynamicsItemBean bean) { - likeFeed(bean); - } - }; + //删除动态 - mAdapter.setOnMenuDeleteClickListener(new DynamicsAdapter.OnMenuDeleteClickListener() { + mAdapter.setOnMenuDeleteClickListener(new DynamicsAdapter1.OnMenuDeleteClickListener() { @Override public void onMenuDelete(final int position, final List mDynamicsItemList) { - HangUpDialog hangUpDialog = new HangUpDialog(MainDynamicActivity.this, new HangUpDialog.OnHangUpListener() { + mDeleteBottomDialog = new BottomSelectiveDialog(MainDynamicActivity.this, R.style.SelectiveDialog); + mDeleteBottomDialog.addSelectButton("删除", new BottomSelectiveDialog.OnButtonSelectListener() { @Override - public void onHangUp() { + public void onClicked(View view, int index) { + mDeleteBottomDialog.dismiss(); deleteDynamics(mDynamicsItemList.get(position).getId(), position); } - },"您确定要删除吗?", "确定", "取消"); - hangUpDialog.show(); -// mDeleteBottomDialog = new BottomSelectiveDialog(MainDynamicActivity.this, R.style.SelectiveDialog); -// mDeleteBottomDialog.addSelectButton("删除", new BottomSelectiveDialog.OnButtonSelectListener() { -// @Override -// public void onClicked(View view, int index) { -// mDeleteBottomDialog.dismiss(); -// deleteDynamics(mDynamicsItemList.get(position).getId(), position); -// } -// }); -// mDeleteBottomDialog.show(); + }); + + mDeleteBottomDialog.show(); + } + }); + + mAdapter.setOnDetailClicked(new DynamicsAdapter1.OnDetailClickListener() { + @Override + public void onDetailClicked(int position, String id) { + detailPosition = position; + Intent intent = new Intent(MainDynamicActivity.this, DynamicDetailActivity.class); + intent.putExtra("dynamic_id", id); + intent.putExtra("dynamic_from", 0); + startActivity(intent); + +// DynamicsItemBean itemBean = mAdapter.getmDynamicsItemList().get(position); +// Intent intent = new Intent(getContext(), DynamicDetailTwoActivity.class); +// intent.putExtra("bean", itemBean); +// startActivity(intent); + } + }); + + mAdapter.dynamicCommentCallback = new DynamicsAdapter1.DynamicCommentCallback() { + @Override + public void commentDynamic(DynamicsItemBean bean) { + Intent intent = new Intent(MainDynamicActivity.this, DynamicDetailActivity.class); + intent.putExtra("dynamic_id", bean.getId()); + startActivity(intent); + } + }; + } + + private BottomGiftDialog mGiftDialog; + + /** + * 礼物列表数据 + */ + private void getGiftData(String user_id) { + MainManager.getGiftBeans(this, new HttpUiCallBack() { + @Override + public void onSuccess(BaseActivity activity, GiftListBean result, String message) { + mGiftDialog = new BottomGiftDialog(MainDynamicActivity.this, + R.style.SelectiveDialog); + + mGiftDialog.setGiftListBean(result); + mGiftDialog.setOnGiftItemClickedListener(new BottomGiftDialog.OnGiftItemClickedListener() { + @Override + public void onGiftClicked(final DialogGiftBean bean) { + if (!TextUtils.isEmpty(user_id)) { + sendGift(Integer.parseInt(user_id), bean.getId()); + } + } + + @Override + public void onWalletClicked() { + Intent intent = new Intent(MainDynamicActivity.this, CaibeiRechargeActivity.class); + startActivity(intent); + } + }); + mGiftDialog.show(); + } + + @Override + public void onFailure(BaseActivity activity, String tip) { + MaleToast.showMessage(activity, tip); + } + + @Override + public void onException(BaseActivity activity, Throwable e) { + MaleToast.showMessage(activity, "请重试"); } }); } @@ -251,37 +340,77 @@ public class MainDynamicActivity extends BaseActivity implements View.OnClickLis }); } - public void sendGift(String dynamicId, final int number, final DynamicsItemBean bean) { - DynamicsManager.sendGifts(MainDynamicActivity.this, dynamicId, number, new HttpUiCallBack() { + /** + * 赠送礼物 + * + * @param toUid + * @param giftId + */ + private void sendGift(int toUid, int giftId) { + MainManager.sendGift(this, 1, toUid, giftId, 1, new HttpUiCallBack() { @Override - public void onSuccess(BaseActivity activity, Object result, String message) { - MaleToast.showMessage(MainDynamicActivity.this, "礼物赠送成功"); - if (null != mAdapter) { - mAdapter.setGiftCount(number + bean.getReward_count(), bean.getId()); - mAdapter.notifyDataSetChanged(); + public void onSuccess(BaseActivity activity, GiftListBean result, String message) { + if (null != mGiftDialog) { + mGiftDialog.setCoin(result.getCoin() + ""); + mGiftDialog.dismiss(); } + MaleToast.showMessage(activity, "赠送成功"); +// mSvgaDialog.show(giftUrl); } @Override public void onFailure(BaseActivity activity, String tip) { - MaleToast.showMessage(MainDynamicActivity.this, tip); + MaleToast.showMessage(activity, tip); } @Override public void onException(BaseActivity activity, Throwable e) { - MaleToast.showMessage(MainDynamicActivity.this, "赠送失败,请重试"); + MaleToast.showMessage(activity, "赠送失败"); } }); } + private void focus(String userId) { + DynamicsManager.follow(this, + userId, + new HttpUiCallBack() { + @Override + public void onSuccess(BaseActivity activity, FollowResultBean result, String message) { + MaleToast.showMessage(activity, "关注成功"); + } + + @Override + public void onFailure(BaseActivity activity, String tip) { + MaleToast.showMessage(activity, tip); + } + + @Override + public void onException(BaseActivity activity, Throwable e) { + MaleToast.showMessage(activity, "关注失败"); + } + }); + } + @Override public void onClick(View view) { } + public void onEventMainThread(DynamicLikeEvent event) { + int isLike = event.isLike(); + int likeNum = event.getLikeNum(); + int from = event.getFrom(); + if (from == 0) { + mAdapter.getmDynamicsItemList().get(detailPosition).setIs_like(isLike); + mAdapter.getmDynamicsItemList().get(detailPosition).setLike_count(likeNum); + mAdapter.notifyDataSetChanged(); + } + } + @Override public void onDestroy() { super.onDestroy(); + EventBus.getDefault().unregister(this); if (null != mSelectiveDialog && mSelectiveDialog.isShowing()) { mSelectiveDialog.dismiss(); } diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/view/main/MainPageActivity.java b/app/src/main/java/com/xuebiping/bolizhuzi/view/main/MainPageActivity.java index 55f296d..4b35fd3 100644 --- a/app/src/main/java/com/xuebiping/bolizhuzi/view/main/MainPageActivity.java +++ b/app/src/main/java/com/xuebiping/bolizhuzi/view/main/MainPageActivity.java @@ -27,12 +27,14 @@ import com.xuebiping.bolizhuzi.controller.user.manager.UserManager; import com.xuebiping.bolizhuzi.im.uikit.api.NimUIKit; import com.xuebiping.bolizhuzi.model.main.CallBean; import com.xuebiping.bolizhuzi.model.main.FollowResultBean; +import com.xuebiping.bolizhuzi.model.main.LookWechatBean; import com.xuebiping.bolizhuzi.model.main.MainPageBean; import com.xuebiping.bolizhuzi.utils.SPUtils; import com.xuebiping.bolizhuzi.utils.StrU; import com.xuebiping.bolizhuzi.view.base.BaseActivity; import com.xuebiping.bolizhuzi.view.base.utils.HttpUiCallBack; import com.xuebiping.bolizhuzi.view.base.utils.view.WechatDialog; +import com.xuebiping.bolizhuzi.view.main.dialog.LookWechatDialog; import com.xuebiping.bolizhuzi.view.news.im.ImUtils; import com.xuebiping.bolizhuzi.view.settings.CaibeiRechargeActivity; import com.xuebiping.bolizhuzi.view.settings.dialog.SelectTypeDialog; @@ -66,6 +68,8 @@ public class MainPageActivity extends BaseActivity implements View.OnClickListen private TextView tv_follow1; // private BaseMessageDialog mConfirmDialog; private LottieAnimationView animation_view; + private RelativeLayout mRl_love_layout; + private TextView mTv_love_count; @Override public void onCreate(Bundle onSavedInstance) { @@ -120,6 +124,11 @@ public class MainPageActivity extends BaseActivity implements View.OnClickListen animation_view.setAnimation("page_call_video.json"); animation_view.playAnimation(); animation_view.setOnClickListener(this); + + mRl_love_layout = findViewById(R.id.rl_love_layout); + mTv_love_count = findViewById(R.id.tv_love_count); + + mRl_love_layout.setOnClickListener(this); } private final int MIN_DELAY_TIME = 5000; // 两次点击间隔不能少于1000ms @@ -241,6 +250,13 @@ public class MainPageActivity extends BaseActivity implements View.OnClickListen } } // mVideo.setEnabled(result.getAnchor().getOpen_video_status() == 1 ? true : false); + + if (mMainPageBean.getInfo().getHas_wechat() == 1) { + mRl_love_layout.setVisibility(View.VISIBLE); + getIntimacy2(mMainPageBean.getInfo().getUserId()); + }else { + mRl_love_layout.setVisibility(View.GONE); + } } @Override @@ -257,6 +273,54 @@ public class MainPageActivity extends BaseActivity implements View.OnClickListen }); } + private void getIntimacy2(int to_uid) { + MainManager.getWechatIntimacy(this, to_uid, new HttpUiCallBack() { + @Override + public void onSuccess(BaseActivity activity, LookWechatBean result, String tips) { + mTv_love_count.setText(result.getIntimacy_percent() + "%"); + } + + @Override + public void onFailure(BaseActivity activity, String tip) { + MaleToast.showMessage(activity, tip); + } + + @Override + public void onException(BaseActivity activity, Throwable e) { + MaleToast.showMessage(activity, "请重试"); + } + }); + } + + private LookWechatDialog mLookWechatDialog2; + + private void getIntimacy(int to_uid) { + MainManager.getWechatIntimacy(this, to_uid, new HttpUiCallBack() { + @Override + public void onSuccess(BaseActivity activity, LookWechatBean result, String tips) { + + if (mLookWechatDialog2 != null) { + mLookWechatDialog2.dismiss(); + mLookWechatDialog2 = null; + } + + mLookWechatDialog2 = new LookWechatDialog(MainPageActivity.this, R.style.SelectiveDialog); + mLookWechatDialog2.show(); + mLookWechatDialog2.setData(result); + } + + @Override + public void onFailure(BaseActivity activity, String tip) { + MaleToast.showMessage(activity, tip); + } + + @Override + public void onException(BaseActivity activity, Throwable e) { + MaleToast.showMessage(activity, "请重试"); + } + }); + } + private void setFragment(Fragment fragment) { FragmentActivity fragmentActivity = (FragmentActivity) this; try { @@ -397,6 +461,8 @@ public class MainPageActivity extends BaseActivity implements View.OnClickListen } else if (view == main_personal_page_wechat) { WechatDialog dialog = new WechatDialog(this, mMainPageBean); dialog.show(); + } else if (view == mRl_love_layout) { + getIntimacy(mMainPageBean.getInfo().getUserId()); } } diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/view/main/MainPageCommentActivity.java b/app/src/main/java/com/xuebiping/bolizhuzi/view/main/MainPageCommentActivity.java new file mode 100644 index 0000000..156f704 --- /dev/null +++ b/app/src/main/java/com/xuebiping/bolizhuzi/view/main/MainPageCommentActivity.java @@ -0,0 +1,116 @@ +package com.xuebiping.bolizhuzi.view.main; + +import android.os.Bundle; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.fengliyan.uikit.toast.MaleToast; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener; +import com.xuebiping.bolizhuzi.R; +import com.xuebiping.bolizhuzi.controller.main.adapter.MainPageCommentAdapter; +import com.xuebiping.bolizhuzi.controller.main.manager.MainManager; +import com.xuebiping.bolizhuzi.model.main.MainPageCommentInfoBean; +import com.xuebiping.bolizhuzi.model.main.MainPageCommentListBean; +import com.xuebiping.bolizhuzi.view.base.BaseActivity; +import com.xuebiping.bolizhuzi.view.base.utils.HttpUiCallBack; + +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; + +public class MainPageCommentActivity extends BaseActivity implements OnRefreshLoadMoreListener { + + private int mUser_id; + + private int mPage = 1; + private int mTotalPage; + + private SmartRefreshLayout mSmart_refresh; + private RecyclerView mRv_recommend_list; + + private List mData = new ArrayList<>(); + private MainPageCommentAdapter mMainPageCommentAdapter; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setTitleName("用户评价"); + setContentView(R.layout.activity_main_comment); + mUser_id = getIntent().getIntExtra("userId", 0); + initView(); + getList(mPage); + } + + private void initView() { + + mSmart_refresh = findViewById(R.id.smart_refresh); + mRv_recommend_list = findViewById(R.id.rv_recommend_list); + + mRv_recommend_list.setLayoutManager(new LinearLayoutManager(this)); + mMainPageCommentAdapter = new MainPageCommentAdapter(R.layout.item_main_page_comment, this); + mRv_recommend_list.setAdapter(mMainPageCommentAdapter); + + mSmart_refresh.setOnRefreshLoadMoreListener(this); + } + + private void getList(int page){ + MainManager.getMainCommentList(this, mUser_id + "", page, new HttpUiCallBack() { + @Override + public void onSuccess(BaseActivity activity, MainPageCommentListBean result, String message) { + finishFresh(); + if (result != null) { + mTotalPage = result.getTotal_page(); + if (mPage == 1) { + mData.clear(); + } + List list = result.getList(); + if (list != null && list.size() > 0) { + mData.addAll(list); + } + } + if (mData != null && mData.size() > 0) { + mMainPageCommentAdapter.setList(mData); + } + } + + @Override + public void onFailure(BaseActivity activity, String tip) { + finishFresh(); + MaleToast.showFailureMsg(activity, tip); + } + + @Override + public void onException(BaseActivity activity, Throwable e) { + finishFresh(); + MaleToast.showFailureMsg(activity, "请重试"); + } + }); + } + + public void finishFresh() { + mSmart_refresh.finishLoadMore(); + mSmart_refresh.finishRefresh(); + } + + @Override + public void onLoadMore(@NonNull @NotNull RefreshLayout refreshLayout) { + mPage++; + if (mPage > mTotalPage) { + mSmart_refresh.finishLoadMore(); + mSmart_refresh.setNoMoreData(true); + } else { + getList(mPage); + } + } + + @Override + public void onRefresh(@NonNull @NotNull RefreshLayout refreshLayout) { + mPage = 1; + getList(mPage); + } +} diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/view/main/MainPageFragment.java b/app/src/main/java/com/xuebiping/bolizhuzi/view/main/MainPageFragment.java index ecef01e..0e6a4f7 100644 --- a/app/src/main/java/com/xuebiping/bolizhuzi/view/main/MainPageFragment.java +++ b/app/src/main/java/com/xuebiping/bolizhuzi/view/main/MainPageFragment.java @@ -1,5 +1,6 @@ package com.xuebiping.bolizhuzi.view.main; +import android.Manifest; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; @@ -22,10 +23,14 @@ import android.widget.TextView; import androidx.cardview.widget.CardView; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import androidx.viewpager.widget.ViewPager; import com.airbnb.lottie.LottieAnimationView; import com.facebook.drawee.view.SimpleDraweeView; +import com.fengliyan.base.base.permission.AbsPermissionResultCallBack; +import com.fengliyan.base.base.permission.PermissionHelper; import com.google.android.exoplayer2.DefaultRenderersFactory; import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.Player; @@ -34,23 +39,31 @@ import com.google.android.exoplayer2.ui.PlayerView; import com.fengliyan.device.DeviceManager; import com.fengliyan.messaging.ChatManager; import com.fengliyan.messaging.EventBusGiftMessage; +import com.luck.picture.lib.utils.ToastUtils; import com.xuebiping.bolizhuzi.R; import com.xuebiping.bolizhuzi.controller.constant.ConsUser; import com.xuebiping.bolizhuzi.controller.constant.ConstUrl; import com.xuebiping.bolizhuzi.controller.constant.Constant; import com.xuebiping.bolizhuzi.controller.dynamics.manager.DynamicsManager; +import com.xuebiping.bolizhuzi.controller.main.adapter.MainPageCommentAdapter; import com.xuebiping.bolizhuzi.controller.main.manager.MainManager; import com.xuebiping.bolizhuzi.controller.settings.manager.SettingManager; import com.xuebiping.bolizhuzi.controller.user.manager.UserManager; +import com.xuebiping.bolizhuzi.im.uikit.api.NimUIKit; import com.xuebiping.bolizhuzi.model.main.BlackBean; import com.xuebiping.bolizhuzi.model.main.CallBean; import com.xuebiping.bolizhuzi.model.main.ContactBean; import com.xuebiping.bolizhuzi.model.main.FollowResultBean; import com.xuebiping.bolizhuzi.model.main.GiftBean; +import com.xuebiping.bolizhuzi.model.main.LookWechatBean; +import com.xuebiping.bolizhuzi.model.main.MainCommentStatusBean; import com.xuebiping.bolizhuzi.model.main.MainPageBean; +import com.xuebiping.bolizhuzi.model.main.MainPageCommentInfoBean; import com.xuebiping.bolizhuzi.utils.AnimUtils; +import com.xuebiping.bolizhuzi.utils.FlowLayout; import com.xuebiping.bolizhuzi.utils.FrameAnimation; import com.xuebiping.bolizhuzi.utils.SPUtils; +import com.xuebiping.bolizhuzi.utils.SaveImageUtil; import com.xuebiping.bolizhuzi.utils.StrU; import com.xuebiping.bolizhuzi.view.base.BaseActivity; import com.xuebiping.bolizhuzi.view.base.BaseApplication; @@ -62,6 +75,8 @@ import com.xuebiping.bolizhuzi.view.diooto.Diooto; import com.xuebiping.bolizhuzi.view.diooto.config.DiootoConfig; import com.xuebiping.bolizhuzi.view.dynamics.activity.PageVideoPlayActivity; import com.xuebiping.bolizhuzi.view.main.dialog.ConfirmWXAccountDialog; +import com.xuebiping.bolizhuzi.view.main.dialog.LookWechatDialog; +import com.xuebiping.bolizhuzi.view.main.dialog.MainShareDialog; import com.xuebiping.bolizhuzi.view.main.utils.DefaultExoConfig; import com.xuebiping.bolizhuzi.view.news.fragment.NewFragment; import com.xuebiping.bolizhuzi.view.settings.InfoEditActivity; @@ -86,17 +101,17 @@ public class MainPageFragment extends Fragment implements View.OnClickListener { private SimpleDraweeView mPhoto; private SimpleDraweeView mOtherPhoto; private TextView mName; - private TextView mAge; + private TextView mSubInfo; - private TextView personal_main_page_ip_province; + private TextView mSubInfoTime; - private TextView mFanNumber; + private TextView mFocusButton; private ImageView mStatus; private TextView mSkillScore; private TextView mSkillSuccessRate; - private TextView mSkillCost; - private TextView tv_signer; + + private View mDynamicLayout; private SimpleDraweeView[] mDynamicImages = new SimpleDraweeView[4]; private View mGiftLayout; @@ -142,7 +157,22 @@ public class MainPageFragment extends Fragment implements View.OnClickListener { private TextView tv_follow_num; private TextView tv_fans_num; - private TextView tv_scan_num; + + private TextView mTv_signature; + private ImageView mIv_look_wechat; + private ImageView mIv_main_share; + private FlowLayout mine_mine_tag; + private RelativeLayout mRl_personal_info; + private LinearLayout mLl_auto; + private LinearLayout mLl_mobile_auto; + private LinearLayout mLl_real_name_auto; + private LinearLayout mLl_real_person_auto; + private LookWechatDialog mLookWechatDialog; + private LinearLayout mLl_share; + private MainShareDialog mMainShareDialog; + private int mFollow_count; + private LinearLayout mLl_comment_title; + private MainPageCommentAdapter mMainPageCommentAdapter; private void addBanner() { mBanners.addAll(mMainPageBean.getAlbum()); @@ -383,20 +413,23 @@ public class MainPageFragment extends Fragment implements View.OnClickListener { mPhoto = v.findViewById(R.id.personal_main_page_photo); mOtherPhoto = v.findViewById(R.id.personal_main_other_photo); mName = v.findViewById(R.id.personal_main_page_name); - mAge = v.findViewById(R.id.personal_main_page_age); + mTv_signature = v.findViewById(R.id.tv_signature); + mIv_look_wechat = v.findViewById(R.id.iv_look_wechat); + mIv_main_share = v.findViewById(R.id.iv_main_share); + mSubInfo = v.findViewById(R.id.personal_main_page_sub_info); - personal_main_page_ip_province = v.findViewById(R.id.personal_main_page_ip_province); + mSubInfoTime = v.findViewById(R.id.personal_main_page_sub_info_time); mFocusButton = v.findViewById(R.id.personal_main_page_focus_button); - mFanNumber = v.findViewById(R.id.personal_main_page_fans_number); + mStatus = v.findViewById(R.id.personal_main_page_status); mSkillSuccessRate = v.findViewById(R.id.personal_main_page_skill_success); mSkillScore = v.findViewById(R.id.personal_main_page_skill_rate); - mSkillCost = v.findViewById(R.id.personal_main_page_skill_cost); + mDynamicLayout = v.findViewById(R.id.personal_main_page_dynamic_photo_layout); mGiftLayout = v.findViewById(R.id.personal_main_page_gift_layout); mSkillLayout = v.findViewById(R.id.ll_skill_layout); - tv_signer = v.findViewById(R.id.tv_signer); + mGuardLayout = v.findViewById(R.id.personal_main_page_guard_photo_layout); mDynamicImages[0] = v.findViewById(R.id.personal_main_page_dynamic_photo_1); mDynamicImages[1] = v.findViewById(R.id.personal_main_page_dynamic_photo_2); @@ -435,12 +468,38 @@ public class MainPageFragment extends Fragment implements View.OnClickListener { tv_follow_num = v.findViewById(R.id.tv_follow_num); tv_fans_num = v.findViewById(R.id.tv_fans_num); - tv_scan_num = v.findViewById(R.id.tv_scan_num); + + mLl_auto = v.findViewById(R.id.ll_auto); + mLl_mobile_auto = v.findViewById(R.id.ll_mobile_auto); + mLl_real_name_auto = v.findViewById(R.id.ll_real_name_auto); + mLl_real_person_auto = v.findViewById(R.id.ll_real_person_auto); + + mRl_personal_info = v.findViewById(R.id.rl_personal_info); + mine_mine_tag = v.findViewById(R.id.mine_mine_tag); + mine_mine_tag.setSelectType(FlowLayout.SelectType.SINGLE_IRREVOCABLY); + + mLl_share = v.findViewById(R.id.ll_share); + SimpleDraweeView user_head = v.findViewById(R.id.user_head); + TextView tv_name = v.findViewById(R.id.tv_name); + TextView tv_code = v.findViewById(R.id.tv_code); + SimpleDraweeView sv_er = v.findViewById(R.id.sv_er); + + user_head.setImageURI(StrU.getResourcePath(mMainPageBean.getInfo().getAvatar(), getActivity())); + tv_name.setText(mMainPageBean.getInfo().getNickname()); + tv_code.setText("ID:" + mMainPageBean.getInfo().getUsercode()); + sv_er.setImageURI(StrU.getResourcePath(mMainPageBean.getQrcode(), getActivity())); iv_video_call.setImageAssetsFolder("images/"); iv_video_call.setAnimation("video_call_btn.json"); iv_video_call.playAnimation(); + RelativeLayout rl_comment = v.findViewById(R.id.rl_comment); + mLl_comment_title = v.findViewById(R.id.ll_comment_title); + TextView tv_comment_count = v.findViewById(R.id.tv_comment_count); + TextView tv_like_count = v.findViewById(R.id.tv_like_count); + TextView tv_dislike_count = v.findViewById(R.id.tv_dislike_count); + RecyclerView rv_main_info_comment = v.findViewById(R.id.rv_main_info_comment); + mBack.setOnClickListener(this); mFocusButton.setOnClickListener(this); mGiftLayout.setOnClickListener(this); @@ -453,8 +512,40 @@ public class MainPageFragment extends Fragment implements View.OnClickListener { iv_video_call.setOnClickListener(this); personal_player.setOnClickListener(this); cv_video.setOnClickListener(this); + mIv_look_wechat.setOnClickListener(this); + mIv_main_share.setOnClickListener(this); + mLl_mobile_auto.setOnClickListener(this); + mLl_real_name_auto.setOnClickListener(this); + mLl_real_person_auto.setOnClickListener(this); + mLl_comment_title.setOnClickListener(this); + + if (mMainPageBean.getComment() == null) { + rl_comment.setVisibility(View.GONE); + }else { + List list = mMainPageBean.getComment().getList(); + if (null != list && list.size() > 0) { + rl_comment.setVisibility(View.VISIBLE); + MainCommentStatusBean stats = mMainPageBean.getComment().getStats(); + tv_comment_count.setText("用户评价(" + stats.getTotal() + ")"); + tv_like_count.setText("喜欢 " + stats.getLike_count()); + tv_dislike_count.setText("无感 " + stats.getDislike_count()); + + rv_main_info_comment.setLayoutManager(new LinearLayoutManager(getActivity())); + mMainPageCommentAdapter = new MainPageCommentAdapter(R.layout.item_main_page_comment, getActivity()); + rv_main_info_comment.setAdapter(mMainPageCommentAdapter); + mMainPageCommentAdapter.setList(list); + }else { + rl_comment.setVisibility(View.GONE); + } + } + mPhoto.setImageURI(StrU.getResourcePath(mMainPageBean.getInfo().getAvatar(), getActivity())); mName.setText(mMainPageBean.getInfo().getNickname()); + if (TextUtils.isEmpty(mMainPageBean.getInfo().getSignature())) { + mTv_signature.setText("心动至上"); + }else { + mTv_signature.setText(mMainPageBean.getInfo().getSignature()); + } // GSYVideoType.setShowType(GSYVideoType.SCREEN_TYPE_DEFAULT); String videoUrl = mMainPageBean.getVideo_url(); @@ -482,19 +573,7 @@ public class MainPageFragment extends Fragment implements View.OnClickListener { }); } - if (mMainPageBean.getInfo().getGender() == 1) { - Drawable drawableLeft = ContextCompat.getDrawable(getActivity(), R.mipmap.sex_girl1); - drawableLeft.setBounds(0, 0, drawableLeft.getMinimumWidth(), drawableLeft.getMinimumHeight()); - mAge.setBackgroundResource(R.drawable.shape_stroke_age_women); - mAge.setTextColor(Color.parseColor("#FF4F73")); - mAge.setCompoundDrawables(drawableLeft, null, null, null); - } else { - mAge.setBackgroundResource(R.drawable.shape_stroke_age); - Drawable drawableLeft = ContextCompat.getDrawable(getActivity(), R.mipmap.sex_men1); - drawableLeft.setBounds(0, 0, drawableLeft.getMinimumWidth(), drawableLeft.getMinimumHeight()); - mAge.setTextColor(Color.parseColor("#002E9F")); - mAge.setCompoundDrawables(drawableLeft, null, null, null); - } + //男用户不显示真人 if (0 == mMainPageBean.getInfo().getVip()) { tagVipImageView.setVisibility(View.VISIBLE); @@ -511,14 +590,6 @@ public class MainPageFragment extends Fragment implements View.OnClickListener { tagPhoneImageView.setVisibility(View.VISIBLE); } - if (!StrU.isEmpty(mMainPageBean.getInfo().getSignature())) { - tv_signer.setVisibility(View.VISIBLE); - tv_signer.setText(mMainPageBean.getInfo().getSignature()); - } else { - tv_signer.setVisibility(View.GONE); - } - - mAge.setText(mMainPageBean.getInfo().getAge() + ""); mSubInfo.setText(mMainPageBean.getInfo().getCity() + " | 用户号:" + mMainPageBean.getInfo().getUsercode()); mSubInfo.setOnClickListener(new View.OnClickListener() { @Override @@ -529,37 +600,15 @@ public class MainPageFragment extends Fragment implements View.OnClickListener { } }); - if (mMainPageBean.getInfo().getFollow_count() > 0) { - tv_follow_num.setVisibility(View.VISIBLE); - String s = "关注 " + mMainPageBean.getInfo().getFollow_count(); - StrU.setSpanTextColorSizeBold(s, 2, s.length(), tv_follow_num, R.color.color_2d2d2d, 20, true, getContext()); - } else { - tv_follow_num.setVisibility(View.GONE); - } - if (mMainPageBean.getInfo().getFans_count() > 0) { - tv_fans_num.setVisibility(View.VISIBLE); - String s = "粉丝 " + mMainPageBean.getInfo().getFans_count(); - StrU.setSpanTextColorSizeBold(s, 2, s.length(), tv_fans_num, R.color.color_2d2d2d, 20, true, getContext()); -// mFanNumber.setVisibility(View.VISIBLE); -// mFanNumber.setText(mMainPageBean.getInfo().getFans_count() + "粉丝"); - } else { - mFanNumber.setVisibility(View.GONE); - tv_fans_num.setVisibility(View.GONE); - } - if (mMainPageBean.getInfo().getVisitor_count() > 0) { - tv_scan_num.setVisibility(View.VISIBLE); - String s = "访客 " + mMainPageBean.getInfo().getVisitor_count(); - StrU.setSpanTextColorSizeBold(s, 2, s.length(), tv_scan_num, R.color.color_2d2d2d, 20, true, getContext()); - } else { - tv_scan_num.setVisibility(View.GONE); - } - if (!TextUtils.isEmpty(mMainPageBean.getInfo().getIp_province())) { - personal_main_page_ip_province.setVisibility(View.VISIBLE); - String s = "IP " + mMainPageBean.getInfo().getIp_province(); - StrU.setSpanTextColorSizeBold(s, 2, s.length(), personal_main_page_ip_province, R.color.color_2d2d2d, 20, true, getContext()); - } else { - personal_main_page_ip_province.setVisibility(View.GONE); - } + mFollow_count = mMainPageBean.getInfo().getFollow_count(); + + String follows = "关注 " + mMainPageBean.getInfo().getFollow_count(); + StrU.setSpanTextColorSizeBold(follows, 2, follows.length(), tv_follow_num, R.color.color_2d2d2d, 20, true, getContext()); + + String fans = "粉丝 " + mMainPageBean.getInfo().getFans_count(); + StrU.setSpanTextColorSizeBold(fans, 2, fans.length(), tv_fans_num, R.color.color_2d2d2d, 20, true, getContext()); + + // mStatus.setText(mMainPageBean.getAnchor().getVideo_status() == 0? "空闲中" : "繁忙"); int online_status = mMainPageBean.getInfo().getOnline_status(); //在线 1 休息中 2 离线 @@ -583,14 +632,14 @@ public class MainPageFragment extends Fragment implements View.OnClickListener { // mFocusButton.setEnabled(mMainPageBean.getInfo().getIs_follow() == 0); if (null != mMainPageBean.getSkill() && 0 != mMainPageBean.getSkill().size()) { - if (mMainPageBean.getInfo().getGender() == 1) { - //女生 - mSkillLayout.setVisibility(View.VISIBLE); - } else { - mSkillLayout.setVisibility(View.VISIBLE); - mSkillCost.setVisibility(View.GONE); - mSkillScore.setVisibility(View.GONE); - } +// if (mMainPageBean.getInfo().getGender() == 1) { +// //女生 +// mSkillLayout.setVisibility(View.VISIBLE); +// } else { +// mSkillLayout.setVisibility(View.VISIBLE); +// +// mSkillScore.setVisibility(View.GONE); +// } mSkillScore.setText("评分:" + mMainPageBean.getSkill().get(0).getScore() + "分"); if (mMainPageBean.getSkill().get(0).getService_count() > 0) { mSkillSuccessRate.setVisibility(View.VISIBLE); @@ -598,7 +647,7 @@ public class MainPageFragment extends Fragment implements View.OnClickListener { } else { mSkillSuccessRate.setVisibility(View.GONE); } - mSkillCost.setText("视频通话:" + mMainPageBean.getSkill().get(0).getPrice() + "币/分钟\n语音通话:" + mMainPageBean.getSkill().get(0).getVoice_price() + "币/分钟"); + if (ConstUrl.LOGDEBUG) Log.i("TAG", "initView: online_status------------->" + online_status); if (online_status == 1) { @@ -659,7 +708,6 @@ public class MainPageFragment extends Fragment implements View.OnClickListener { mOtherPhoto.setVisibility(View.GONE); } if (mMainPageBean.getInfo().getGender() != 1) { - mSkillCost.setVisibility(View.GONE); mSkillScore.setVisibility(View.GONE); } mSubInfoTime.setText("最近活跃时间: " + mMainPageBean.getInfo().getUpdate_time()); @@ -711,11 +759,6 @@ public class MainPageFragment extends Fragment implements View.OnClickListener { if (null != mMainPageBean.getDynamic() && mMainPageBean.getDynamic().size() != 0) { mDynamicLayout.setVisibility(View.VISIBLE); -// for(int i = 0; i < mMainPageBean.getDynamic().size(); i++){ -// String url = mMainPageBean.getDynamic().get(i); -// mDynamicImages[i].setImageURI(ConstUrl.IMAGE_URL + url); -// } - for (int i = 0; i < mMainPageBean.getDynamic().size(); i++) { if (i < 4) { String url = mMainPageBean.getDynamic().get(i); @@ -782,10 +825,12 @@ public class MainPageFragment extends Fragment implements View.OnClickListener { @Override public void onClicked(View view, int index) { mSelectDialog.dismiss(); - Intent intent = new Intent(getActivity(), ComplaintActivity.class); - intent.putExtra("uid", mMainPageBean.getInfo().getUserId() + ""); - intent.putExtra("type", 1); - startActivity(intent); +// Intent intent = new Intent(getActivity(), ComplaintActivity.class); +// intent.putExtra("uid", mMainPageBean.getInfo().getUserId() + ""); +// intent.putExtra("type", 1); +// startActivity(intent); + NimUIKit.startP2PSession(getActivity(), "4"); + } }); @@ -841,6 +886,51 @@ public class MainPageFragment extends Fragment implements View.OnClickListener { }); } } + + List personal_info = mMainPageBean.getPersonal_info(); + if (null != personal_info && personal_info.size() > 0) { + mRl_personal_info.setVisibility(View.VISIBLE); + mine_mine_tag.setLabels(personal_info, new FlowLayout.LabelTextProvider() { + @Override + public CharSequence getLabelText(TextView label, int position, String data) { + label.setText(data); + if(position == (personal_info.size() - 1)) { + mine_mine_tag.setDefault(position); + } + return data; + } + }); + }else { + mRl_personal_info.setVisibility(View.GONE); + } + + int mobile_mark = mMainPageBean.getInfo().getMobile_mark(); + int real_name_mark = mMainPageBean.getInfo().getReal_name_mark(); + int real_person_mark = mMainPageBean.getInfo().getReal_person_mark(); + + if (mobile_mark != 1 && real_name_mark != 1 && real_person_mark != 1) { + mLl_auto.setVisibility(View.GONE); + }else { + mLl_auto.setVisibility(View.VISIBLE); + if (mobile_mark == 1) { + mLl_mobile_auto.setVisibility(View.VISIBLE); + }else { + mLl_mobile_auto.setVisibility(View.GONE); + } + + if (real_name_mark == 1) { + mLl_real_name_auto.setVisibility(View.VISIBLE); + }else { + mLl_real_name_auto.setVisibility(View.GONE); + } + + if (real_person_mark == 1) { + mLl_real_person_auto.setVisibility(View.VISIBLE); + }else { + mLl_real_person_auto.setVisibility(View.GONE); + } + } + // //'用户类型:0普通用户1内部用户2 审核人员账号' // if (UserManager.getUserInfo().getType() == 2) { // mSkillCost.setVisibility(View.GONE); @@ -1013,7 +1103,12 @@ public class MainPageFragment extends Fragment implements View.OnClickListener { @Override public void onSuccess(BaseActivity activity, FollowResultBean result, String message) { if (result != null) { + if (StrU.equals("add", result.getAction())) { + mFollow_count = mFollow_count + 1; + String follows = "关注 " + mFollow_count; + StrU.setSpanTextColorSizeBold(follows, 2, follows.length(), tv_follow_num, R.color.color_2d2d2d, 20, true, getContext()); + // mFocusButton.setEnabled(false); //不能取消关注 //mFocusButton.setCompoundDrawablesWithIntrinsicBounds(null, ContextCompat.getDrawable(getContext(), R.mipmap.userhome_follow1), null, null); // mFocusButton.setTextColor(Color.parseColor("#925BF7")); @@ -1022,6 +1117,11 @@ public class MainPageFragment extends Fragment implements View.OnClickListener { // mFocusButton.setText("已关注"); MaleToast.showMessage(getActivity(), "关注成功"); } else { + if (mFollow_count > 0) { + mFollow_count = mFollow_count - 1; + String follows = "关注 " + mFollow_count; + StrU.setSpanTextColorSizeBold(follows, 2, follows.length(), tv_follow_num, R.color.color_2d2d2d, 20, true, getContext()); + } // mFocusButton.setCompoundDrawablesWithIntrinsicBounds(null, ContextCompat.getDrawable(getContext(), R.mipmap.userhome_follow), null, null); // mFocusButton.setTextColor(Color.parseColor("#666666")); mFocusButton.setText("关注"); @@ -1092,7 +1192,7 @@ public class MainPageFragment extends Fragment implements View.OnClickListener { } else if (view == mFocusButton) { focus(); } else if (view == mGiftLayout) { - Intent intent = new Intent(getActivity(), GiftReceivedActivity.class); + Intent intent = new Intent(getActivity(), GiftReceived2Activity.class); intent.putExtra("userId", mMainPageBean.getInfo().getUserId()); startActivity(intent); } else if (view == mMore) { @@ -1128,9 +1228,82 @@ public class MainPageFragment extends Fragment implements View.OnClickListener { intent.putExtra("avatar_url", mMainPageBean.getInfo().getAvatar()); intent.putExtra("is_follow", mMainPageBean.getInfo().getIs_follow()); startActivity(intent); + } else if (view == mIv_look_wechat) { + if (mMainPageBean.getInfo().getHas_wechat() == 1) { + getIntimacy(mMainPageBean.getInfo().getUserId()); + }else { + MaleToast.showMessage(getActivity(), "对方还未填写微信号,暂无法查看"); + } + + } else if (view == mIv_main_share) { + + if (null != mMainShareDialog) { + mMainShareDialog.dismiss(); + mMainShareDialog = null; + } + + mMainShareDialog = new MainShareDialog(getActivity(), R.style.SelectiveDialog); + mMainShareDialog.show(); + mMainShareDialog.setData(mMainPageBean.getInfo().getAvatar(), mMainPageBean.getInfo().getNickname(), mMainPageBean.getInfo().getUsercode(), mMainPageBean.getQrcode()); + + mMainShareDialog.setOnSavaClick(new MainShareDialog.OnSavaClick() { + @Override + public void save() { + PermissionHelper.request(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, + new AbsPermissionResultCallBack() { + @Override + public void onPermissionGranted() { + new SaveImageUtil(mLl_share, getActivity()).start(); + } + + @Override + public void onPermissionDenied(String... permissions) { + super.onPermissionDenied(permissions); + MaleToast.showMessage(getActivity(), "没有授予存储权限"); + } + }); + } + }); + } else if (view == mLl_mobile_auto) { + MaleToast.showMessage(getActivity(), "对方已通过手机号认证,请放心交友~"); + } else if (view == mLl_real_name_auto) { + MaleToast.showMessage(getActivity(), "对方已通过身份证认证,请放心交友~"); + } else if (view == mLl_real_person_auto) { + MaleToast.showMessage(getActivity(), "对方已通过人脸认证,请放心交友~"); + } else if (view == mLl_comment_title) { + Intent intent = new Intent(getActivity(), MainPageCommentActivity.class); + intent.putExtra("userId", mMainPageBean.getInfo().getUserId()); + startActivity(intent); } } + private void getIntimacy(int to_uid) { + MainManager.getWechatIntimacy((BaseActivity) getActivity(), to_uid, new HttpUiCallBack() { + @Override + public void onSuccess(BaseActivity activity, LookWechatBean result, String tips) { + + if (mLookWechatDialog != null) { + mLookWechatDialog.dismiss(); + mLookWechatDialog = null; + } + + mLookWechatDialog = new LookWechatDialog(getActivity(), R.style.SelectiveDialog); + mLookWechatDialog.show(); + mLookWechatDialog.setData(result); + } + + @Override + public void onFailure(BaseActivity activity, String tip) { + MaleToast.showMessage(activity, tip); + } + + @Override + public void onException(BaseActivity activity, Throwable e) { + MaleToast.showMessage(activity, "请重试"); + } + }); + } + @Override public void onDestroyView() { super.onDestroyView(); diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/view/main/VideoFinish2Activity.java b/app/src/main/java/com/xuebiping/bolizhuzi/view/main/VideoFinish2Activity.java new file mode 100644 index 0000000..31289c4 --- /dev/null +++ b/app/src/main/java/com/xuebiping/bolizhuzi/view/main/VideoFinish2Activity.java @@ -0,0 +1,276 @@ +package com.xuebiping.bolizhuzi.view.main; + +import android.graphics.Color; +import android.os.Bundle; +import android.text.TextUtils; +import android.util.Log; +import android.view.View; +import android.widget.Button; +import android.widget.TextView; + +import com.facebook.drawee.view.SimpleDraweeView; +import com.fengliyan.uikit.toast.MaleToast; +import com.huawei.hms.framework.common.StringUtils; +import com.xuebiping.bolizhuzi.R; +import com.xuebiping.bolizhuzi.agora.utils.ToastUtil; +import com.xuebiping.bolizhuzi.controller.main.manager.MainManager; +import com.xuebiping.bolizhuzi.controller.user.manager.UserManager; +import com.xuebiping.bolizhuzi.model.main.VideoFeeBean; +import com.xuebiping.bolizhuzi.model.main.VideoLabelListBean; +import com.xuebiping.bolizhuzi.utils.FlowLayout; +import com.xuebiping.bolizhuzi.utils.StrU; +import com.xuebiping.bolizhuzi.view.base.BaseActivity; +import com.xuebiping.bolizhuzi.view.base.utils.HttpUiCallBack; + +import java.util.ArrayList; +import java.util.List; + +public class VideoFinish2Activity extends BaseActivity implements View.OnClickListener { + + private SimpleDraweeView mMy_user_head; + private SimpleDraweeView mOther_user_head; + private TextView mTv_chat; + private TextView mTv_duration; + private TextView mTv_cost; + + private int mAttitude = 1; + private TextView mTv_dislike; + private TextView mTv_like; + private FlowLayout mFl_like; + private List mNames = new ArrayList<>(); + private List mNamesDislike = new ArrayList<>(); + private Button mBt_commit; + private int mRoomId; + private String mLabelNames; + private FlowLayout mFl_dislike; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_video_finish2); + mRoomId = getIntent().getIntExtra("roomId", 0); + hideTitleBar(); + initView(); + getVideoFee(); + } + + private void initView() { + mMy_user_head = findViewById(R.id.my_user_head); + mOther_user_head = findViewById(R.id.other_user_head); + mTv_chat = findViewById(R.id.tv_chat); + mTv_duration = findViewById(R.id.tv_time); + mTv_cost = findViewById(R.id.tv_cost); + mTv_dislike = findViewById(R.id.tv_dislike); + mTv_like = findViewById(R.id.tv_like); + mFl_like = findViewById(R.id.fl_like); + mFl_dislike = findViewById(R.id.fl_dislike); + mBt_commit = findViewById(R.id.bt_commit); + + mFl_like.setSelectType(FlowLayout.SelectType.MULTI); + mFl_like.setOnLabelClickListener(new FlowLayout.OnLabelClickListener() { + @Override + public void onLabelClick(TextView label, Object data, int position) { + mFl_like.setLabelSelect(label, !label.isSelected()); + } + }); + + mFl_like.setOnLabelSelectChangeListener(new FlowLayout.OnLabelSelectChangeListener() { + @Override + public void onLabelSelectChange(TextView label, Object data, boolean isSelect, + int position) { + VideoLabelListBean tagBean = (VideoLabelListBean) data; + if (isSelect) { + label.setTextColor(Color.parseColor("#EB6DD2")); + label.setBackgroundResource(R.drawable.label_shape_feed_back_bt_selected); + mNames.add(tagBean.getName()); + } else { + label.setTextColor(Color.parseColor("#ff9ea7b6")); + label.setBackgroundResource(R.drawable.label_shape_feed_back_bt_no_selected); + mNames.remove(tagBean.getName()); + } + } + }); + + mFl_dislike.setSelectType(FlowLayout.SelectType.MULTI); + mFl_dislike.setOnLabelClickListener(new FlowLayout.OnLabelClickListener() { + @Override + public void onLabelClick(TextView label, Object data, int position) { + mFl_dislike.setLabelSelect(label, !label.isSelected()); + } + }); + + mFl_dislike.setOnLabelSelectChangeListener(new FlowLayout.OnLabelSelectChangeListener() { + @Override + public void onLabelSelectChange(TextView label, Object data, boolean isSelect, + int position) { + VideoLabelListBean tagBean = (VideoLabelListBean) data; + if (isSelect) { + label.setTextColor(Color.WHITE); + label.setBackgroundResource(R.drawable.shape_button_disable); + mNamesDislike.add(tagBean.getName()); + } else { + label.setTextColor(Color.parseColor("#ff9ea7b6")); + label.setBackgroundResource(R.drawable.label_shape_feed_back_bt_no_selected); + mNamesDislike.remove(tagBean.getName()); + } + } + }); + + mTv_dislike.setOnClickListener(this); + mTv_like.setOnClickListener(this); + mBt_commit.setOnClickListener(this); + } + + private void getVideoFee() { + MainManager.getVideoFee(this, mRoomId + "", new HttpUiCallBack() { + @Override + public void onSuccess(BaseActivity activity, VideoFeeBean result, String message) { + + mMy_user_head.setImageURI(StrU.getResourcePath(result.getFrom_avatar(),VideoFinish2Activity.this)); + mOther_user_head.setImageURI(StrU.getResourcePath(result.getTo_avatar(),VideoFinish2Activity.this)); + mTv_chat.setText("与" + result.getTo_nickname() + "的聊天"); + mTv_duration.setText("通话:" + secondToTime(result.getCall_time())); + + String pay_money = result.getPay_money(); + if (UserManager.getUserInfo().getGender() == 2) { + if (!TextUtils.isEmpty(pay_money)) { + double d = Double.parseDouble(pay_money); + int money = (int) d; + mTv_cost.setText("消费:" + money + "金币"); + + } + } else { + int income_money = (int) result.getIncome_money(); + mTv_cost.setText("收益:" + income_money + "金币"); + } + + List list = result.getLabel_list_like(); + if (list != null && list.size() > 0) { + mFl_like.setLabels(list, new FlowLayout.LabelTextProvider() { + @Override + public CharSequence getLabelText(TextView label, int position, VideoLabelListBean data) { + label.setText(data.getName()); + mFl_like.setLabelSelect(label, + data.getSelected() == 1 ? true : false); + return data.getName(); + } + }); + } + + List list_dislike = result.getLabel_list_dislike(); + if (list_dislike != null && list_dislike.size() > 0) { + mFl_dislike.setLabels(list_dislike, new FlowLayout.LabelTextProvider() { + @Override + public CharSequence getLabelText(TextView label, int position, VideoLabelListBean data) { + label.setText(data.getName()); + mFl_dislike.setLabelSelect(label, + data.getSelected() == 1 ? true : false); + return data.getName(); + } + }); + } + } + + @Override + public void onFailure(BaseActivity activity, String tip) { + MaleToast.showMessage(activity, tip); + } + + @Override + public void onException(BaseActivity activity, Throwable e) { + MaleToast.showMessage(activity, "请重试"); + } + }); + } + + private String secondToTime(long second) { + long days = second / 86400; + second = second % 86400; + long hours = second / 3600; + second = second % 3600; + long minutes = second / 60; + second = second % 60; + if (days > 0) { + return days + "天" + hours + "小时" + minutes + "分" + second + "秒"; + } else { + if (hours > 0) { + return hours + "小时" + minutes + "分" + second + "秒"; + }else { + return minutes + "分" + second + "秒"; + } + } + } + + private void evaluate() { + MainManager.evaluateVideo2(this, + mRoomId + "", 5, mAttitude, mLabelNames, new HttpUiCallBack() { + @Override + public void onSuccess(BaseActivity activity, Object result, String message) { + finish(); + } + + @Override + public void onFailure(BaseActivity activity, String tip) { +// MaleToast.showMessage(activity, tip); + finish(); + } + + @Override + public void onException(BaseActivity activity, Throwable e) { +// MaleToast.showMessage(activity, "未知异常"); + finish(); + } + }); + } + + private String submitUpdate(List list) { + StringBuffer buffer = new StringBuffer(); + if (list != null && list.size() > 0) { + for (int i = 0; i < list.size(); i++) { + if (i == list.size() - 1) { + buffer.append(list.get(i)); + } else { + buffer.append(list.get(i)).append(","); + } + } + } + + return buffer.toString(); + } + + @Override + public void onClick(View view) { + if (view == mTv_dislike) { + mTv_dislike.setBackgroundResource(R.drawable.shape_dislike_bg); + mTv_dislike.setTextColor(Color.WHITE); + + mTv_like.setBackground(null); + mTv_like.setTextColor(getResources().getColor(R.color.two_text)); + + mAttitude = 0; + + mFl_like.setVisibility(View.GONE); + mFl_dislike.setVisibility(View.VISIBLE); + } else if (view == mTv_like) { + mTv_like.setBackgroundResource(R.drawable.shape_like_bg); + mTv_like.setTextColor(Color.WHITE); + + mTv_dislike.setBackground(null); + mTv_dislike.setTextColor(getResources().getColor(R.color.two_text)); + + mAttitude = 1; + + mFl_like.setVisibility(View.VISIBLE); + mFl_dislike.setVisibility(View.GONE); + } else if (view == mBt_commit) { + + if (mAttitude == 1) { + mLabelNames = submitUpdate(mNames); + }else { + mLabelNames = submitUpdate(mNamesDislike); + } + + evaluate(); + } + } +} diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/view/main/dialog/LookWechatDialog.java b/app/src/main/java/com/xuebiping/bolizhuzi/view/main/dialog/LookWechatDialog.java new file mode 100644 index 0000000..497afde --- /dev/null +++ b/app/src/main/java/com/xuebiping/bolizhuzi/view/main/dialog/LookWechatDialog.java @@ -0,0 +1,128 @@ +package com.xuebiping.bolizhuzi.view.main.dialog; + +import android.app.Dialog; +import android.content.ClipData; +import android.content.ClipboardManager; +import android.content.Context; +import android.os.Bundle; +import android.text.Html; +import android.view.Gravity; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.widget.Button; +import android.widget.ProgressBar; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.facebook.drawee.view.SimpleDraweeView; +import com.fengliyan.uikit.toast.MaleToast; +import com.xuebiping.bolizhuzi.R; +import com.xuebiping.bolizhuzi.model.main.LookWechatBean; +import com.xuebiping.bolizhuzi.utils.StrU; + +public class LookWechatDialog extends Dialog { + + private Context mContext; + private String mText; + private SimpleDraweeView mOther_user_head; + private SimpleDraweeView mMy_user_head; + private TextView mTv_percent_intimacy; + private ProgressBar mPb_intimacy; + private TextView mTv_no_vip_intimacy; + private TextView mTv_vip_intimacy; + private TextView mTv_all_intimacy_intro; + private TextView mTv_risk; + private TextView mTv_risk_footer; + private Button mBt_look_wechat; + private String mWechat; + + public LookWechatDialog(@NonNull Context context) { + super(context); + mContext = context; + } + + public LookWechatDialog(@NonNull Context context, int themeResId) { + super(context, themeResId); + mContext = context; + } + + protected LookWechatDialog(@NonNull Context context, boolean cancelable, @Nullable OnCancelListener cancelListener) { + super(context, cancelable, cancelListener); + mContext = context; + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setContentView(R.layout.dialog_look_wechat); + + Window window = this.getWindow(); + window.setGravity(Gravity.CENTER); + WindowManager.LayoutParams params = window.getAttributes(); + params.width = WindowManager.LayoutParams.MATCH_PARENT; + params.height = WindowManager.LayoutParams.WRAP_CONTENT; +// window.setWindowAnimations(R.style.share_animation); + window.setAttributes(params); + + initView(); + } + + private void initView() { + + mOther_user_head = findViewById(R.id.other_user_head); + mMy_user_head = findViewById(R.id.my_user_head); + mTv_percent_intimacy = findViewById(R.id.tv_percent_intimacy); + mPb_intimacy = findViewById(R.id.pb_intimacy); + mTv_no_vip_intimacy = findViewById(R.id.tv_no_vip_intimacy); + mTv_vip_intimacy = findViewById(R.id.tv_vip_intimacy); + mTv_all_intimacy_intro = findViewById(R.id.tv_all_intimacy_intro); + mTv_risk = findViewById(R.id.tv_risk); + mTv_risk_footer = findViewById(R.id.tv_risk_footer); + + mBt_look_wechat = findViewById(R.id.bt_look_wechat); + + mBt_look_wechat.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + ClipboardManager cm = (ClipboardManager) + mContext.getSystemService(Context.CLIPBOARD_SERVICE); + cm.setPrimaryClip(ClipData.newPlainText(null, mWechat)); + MaleToast.showMessage(mContext, "微信号复制成功,请前往微信添加该微信号"); + } + }); + } + + public void setData(LookWechatBean bean) { + if (null != bean) { + mOther_user_head.setImageURI(StrU.getResourcePath(bean.getTo_avatar(), mContext)); + mMy_user_head.setImageURI(StrU.getResourcePath(bean.getMy_avatar(), mContext)); + mTv_percent_intimacy.setText(bean.getIntimacy_percent() + "%"); + mPb_intimacy.setProgress(bean.getIntimacy_percent()); + mTv_no_vip_intimacy.setText(bean.getIntimacy() + "/" + bean.getUnlock_coin() + " 亲密值"); + mTv_vip_intimacy.setText(bean.getIntimacy() + "/" + bean.getSvip_unlock_coin() + " 亲密值"); + mTv_risk.setText(bean.getRisk_tips()); + mTv_risk_footer.setText(bean.getFooter_tips()); + + if (bean.getMember_type() == 1) { + mText = bean.getSvip_unlock_coin() + ""; + }else { + mText = bean.getUnlock_coin() + ""; + } + + String text = "亲密值累计 " + mText + " 可成为私密好友并免费解锁微信每与她消费1金币,可增加1亲密值"; + mTv_all_intimacy_intro.setText(Html.fromHtml(text, 0)); + + if (bean.getIntimacy_percent() >= 100) { + mBt_look_wechat.setEnabled(true); + }else { + mBt_look_wechat.setEnabled(false); + } + + mWechat = bean.getWechat(); + } + } +} diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/view/main/dialog/MainShareDialog.java b/app/src/main/java/com/xuebiping/bolizhuzi/view/main/dialog/MainShareDialog.java new file mode 100644 index 0000000..a73bd53 --- /dev/null +++ b/app/src/main/java/com/xuebiping/bolizhuzi/view/main/dialog/MainShareDialog.java @@ -0,0 +1,101 @@ +package com.xuebiping.bolizhuzi.view.main.dialog; + +import android.Manifest; +import android.app.Dialog; +import android.content.Context; +import android.os.Bundle; +import android.view.Gravity; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.facebook.drawee.view.SimpleDraweeView; +import com.fengliyan.base.base.permission.AbsPermissionResultCallBack; +import com.fengliyan.base.base.permission.PermissionHelper; +import com.fengliyan.uikit.toast.MaleToast; +import com.xuebiping.bolizhuzi.R; +import com.xuebiping.bolizhuzi.utils.SaveImageUtil; +import com.xuebiping.bolizhuzi.utils.StrU; +import com.xuebiping.bolizhuzi.view.settings.InvitationActivity; + +public class MainShareDialog extends Dialog { + + private Context mContext; + private SimpleDraweeView mUser_head; + private TextView mTv_name; + private TextView mTv_code; + private SimpleDraweeView mSv_er; + private LinearLayout mLl_share; + + public MainShareDialog(@NonNull Context context) { + super(context); + mContext = context; + } + + public MainShareDialog(@NonNull Context context, int themeResId) { + super(context, themeResId); + mContext = context; + } + + protected MainShareDialog(@NonNull Context context, boolean cancelable, @Nullable OnCancelListener cancelListener) { + super(context, cancelable, cancelListener); + mContext = context; + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setContentView(R.layout.dialog_main_share); + + Window window = this.getWindow(); + window.setGravity(Gravity.CENTER); + WindowManager.LayoutParams params = window.getAttributes(); + params.width = WindowManager.LayoutParams.MATCH_PARENT; + params.height = WindowManager.LayoutParams.WRAP_CONTENT; +// window.setWindowAnimations(R.style.share_animation); + window.setAttributes(params); + + initView(); + } + + private void initView() { + mLl_share = findViewById(R.id.ll_share); + mUser_head = findViewById(R.id.user_head); + mTv_name = findViewById(R.id.tv_name); + mTv_code = findViewById(R.id.tv_code); + mSv_er = findViewById(R.id.sv_er); + + findViewById(R.id.bt_save).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + dismiss(); + if (mOnSavaClick != null) { + mOnSavaClick.save(); + } + } + }); + } + + public void setData(String avatar, String name, String code, String qrcode) { + mUser_head.setImageURI(StrU.getResourcePath(avatar, mContext)); + mTv_name.setText(name); + mTv_code.setText("ID:" + code); + mSv_er.setImageURI(StrU.getResourcePath(qrcode, mContext)); + } + + private OnSavaClick mOnSavaClick; + + public interface OnSavaClick { + void save(); + } + + public void setOnSavaClick(OnSavaClick onSavaClick) { + this.mOnSavaClick = onSavaClick; + } +} diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/view/news/fragment/MainMessageFragment.java b/app/src/main/java/com/xuebiping/bolizhuzi/view/news/fragment/MainMessageFragment.java index 2b7830d..032d8d1 100644 --- a/app/src/main/java/com/xuebiping/bolizhuzi/view/news/fragment/MainMessageFragment.java +++ b/app/src/main/java/com/xuebiping/bolizhuzi/view/news/fragment/MainMessageFragment.java @@ -97,39 +97,39 @@ public class MainMessageFragment extends Fragment implements View.OnClickListene if (!hidden) { initTitle(); viewPagerChange(mIndex); - if (UserManager.getUserInfo().getGender() == 2) { - if (isSignIn) { - isSignIn = false; - signData(); - } - } else { - lin_msg_sign.setVisibility(View.INVISIBLE); - } +// if (UserManager.getUserInfo().getGender() == 2) { +// if (isSignIn) { +// isSignIn = false; +// signData(); +// } +// } else { +// lin_msg_sign.setVisibility(View.INVISIBLE); +// } - if (isFirst) { - isFirst = false; - if (UserManager.getUserInfo().getGender() == 2 && !SPUtils.getBoolean(getContext(), ConsUser.USER_VIP, false)) { - if (mVipCountDownTimer != null) { - mVipCountDownTimer.cancel(); - } - mVipCountDownTimer = new CountDownTimer(60_000 * 10, 1000) { - @Override - public void onTick(long millisUntilFinished) { - tv_msg_vip_time.setText(TimeUtils.millis2String(millisUntilFinished, "mm:ss")); - } - - @Override - public void onFinish() { - lin_msg_vip.setVisibility(View.GONE); - } - - }; - lin_msg_vip.setVisibility(View.VISIBLE); - mVipCountDownTimer.start(); - } else { - lin_msg_vip.setVisibility(View.GONE); - } - } +// if (isFirst) { +// isFirst = false; +// if (UserManager.getUserInfo().getGender() == 2 && !SPUtils.getBoolean(getContext(), ConsUser.USER_VIP, false)) { +// if (mVipCountDownTimer != null) { +// mVipCountDownTimer.cancel(); +// } +// mVipCountDownTimer = new CountDownTimer(60_000 * 10, 1000) { +// @Override +// public void onTick(long millisUntilFinished) { +// tv_msg_vip_time.setText(TimeUtils.millis2String(millisUntilFinished, "mm:ss")); +// } +// +// @Override +// public void onFinish() { +// lin_msg_vip.setVisibility(View.GONE); +// } +// +// }; +// lin_msg_vip.setVisibility(View.VISIBLE); +// mVipCountDownTimer.start(); +// } else { +// lin_msg_vip.setVisibility(View.GONE); +// } +// } } } diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/view/settings/SettingFragment2.java b/app/src/main/java/com/xuebiping/bolizhuzi/view/settings/SettingFragment2.java index b5442ee..345cf8e 100644 --- a/app/src/main/java/com/xuebiping/bolizhuzi/view/settings/SettingFragment2.java +++ b/app/src/main/java/com/xuebiping/bolizhuzi/view/settings/SettingFragment2.java @@ -679,10 +679,12 @@ public class SettingFragment2 extends Fragment implements View.OnClickListener { mLogo.setImageResource(R.drawable.ic_my_guide); mName.setText("用户指南"); view.setOnClickListener(view14 -> { - if (!BaseApplication.getInstance().showCertificationDialog(getActivity())) { - Intent intent = new Intent(getActivity(), UseCentreActivity.class); - startActivity(intent); - } +// if (!BaseApplication.getInstance().showCertificationDialog(getActivity())) { +// Intent intent = new Intent(getActivity(), UseCentreActivity.class); +// startActivity(intent); +// } + Intent intent = new Intent(getActivity(), UseCentreActivity.class); + startActivity(intent); }); break; @@ -694,11 +696,14 @@ public class SettingFragment2 extends Fragment implements View.OnClickListener { } mName.setText("账单明细"); view.setOnClickListener(view16 -> { - if (!BaseApplication.getInstance().showCertificationDialog(getActivity())) { - Intent intent = new Intent(getActivity(), BillActivity.class); - intent.putExtra("type", 0); - startActivity(intent); - } +// if (!BaseApplication.getInstance().showCertificationDialog(getActivity())) { +// Intent intent = new Intent(getActivity(), BillActivity.class); +// intent.putExtra("type", 0); +// startActivity(intent); +// } + Intent intent = new Intent(getActivity(), BillActivity.class); + intent.putExtra("type", 0); + startActivity(intent); }); break; case GODDESSPRIVILEGE: @@ -707,11 +712,12 @@ public class SettingFragment2 extends Fragment implements View.OnClickListener { tv_option_hint2.setVisibility(View.GONE); mArrow.setVisibility(View.VISIBLE); mLogo.setImageResource(R.mipmap.ic_my_ntequan); - mName.setText("up主认证"); + mName.setText("女神特权"); view.setOnClickListener(view19 -> { - if (!BaseApplication.getInstance().showCertificationDialog(getActivity())) { - startActivity(new Intent(getActivity(), GoddessPrivilegeActivity.class)); - } +// if (!BaseApplication.getInstance().showCertificationDialog(getActivity())) { +// startActivity(new Intent(getActivity(), GoddessPrivilegeActivity.class)); +// } + startActivity(new Intent(getActivity(), GoddessPrivilegeActivity.class)); }); break; case VIOLATION: @@ -722,11 +728,14 @@ public class SettingFragment2 extends Fragment implements View.OnClickListener { mLogo.setImageResource(R.mipmap.ic_wd_weigui); mName.setText("违规公布"); view.setOnClickListener(view110 -> { - if (!BaseApplication.getInstance().showCertificationDialog(getActivity())) { - Intent intent = new Intent(getActivity(), BaseWebViewActivity.class); - intent.putExtra("ClickUrl", ConstUrl.FORBID_LIST); - startActivity(intent); - } +// if (!BaseApplication.getInstance().showCertificationDialog(getActivity())) { +// Intent intent = new Intent(getActivity(), BaseWebViewActivity.class); +// intent.putExtra("ClickUrl", ConstUrl.FORBID_LIST); +// startActivity(intent); +// } + Intent intent = new Intent(getActivity(), BaseWebViewActivity.class); + intent.putExtra("ClickUrl", ConstUrl.FORBID_LIST); + startActivity(intent); }); break; case ADDWECHAT: @@ -737,10 +746,12 @@ public class SettingFragment2 extends Fragment implements View.OnClickListener { mLogo.setImageResource(R.mipmap.ic_wd_addwechat); mName.setText("微信设置"); view.setOnClickListener(view111 -> { - if (!BaseApplication.getInstance().showCertificationDialog(getActivity())) { - Intent intent = new Intent(getActivity(), WXAccountActivity.class); - startActivity(intent); - } +// if (!BaseApplication.getInstance().showCertificationDialog(getActivity())) { +// Intent intent = new Intent(getActivity(), WXAccountActivity.class); +// startActivity(intent); +// } + Intent intent = new Intent(getActivity(), WXAccountActivity.class); + startActivity(intent); }); break; case HELLOW: @@ -751,9 +762,10 @@ public class SettingFragment2 extends Fragment implements View.OnClickListener { mLogo.setImageResource(R.mipmap.ic_wd_hellow_set); mName.setText("招呼设置"); view.setOnClickListener(view112 -> { - if (!BaseApplication.getInstance().showCertificationDialog(getActivity())) { - startActivity(new Intent(getActivity(), GreetingSettingActivity.class)); - } +// if (!BaseApplication.getInstance().showCertificationDialog(getActivity())) { +// startActivity(new Intent(getActivity(), GreetingSettingActivity.class)); +// } + startActivity(new Intent(getActivity(), GreetingSettingActivity.class)); }); break; case ITEMS: @@ -764,9 +776,10 @@ public class SettingFragment2 extends Fragment implements View.OnClickListener { mLogo.setImageResource(R.mipmap.ic_wd_items1); mName.setText("红包卡券"); view.setOnClickListener(view113 -> { - if (!BaseApplication.getInstance().showCertificationDialog(getActivity())) { - startActivity(new Intent(getActivity(), MyItemsActivity.class)); - } +// if (!BaseApplication.getInstance().showCertificationDialog(getActivity())) { +// startActivity(new Intent(getActivity(), MyItemsActivity.class)); +// } + startActivity(new Intent(getActivity(), MyItemsActivity.class)); }); break; diff --git a/app/src/main/java/com/xuebiping/bolizhuzi/view/settings/dialog/GirlAuthDialog.kt b/app/src/main/java/com/xuebiping/bolizhuzi/view/settings/dialog/GirlAuthDialog.kt index c9952b6..2c91d37 100644 --- a/app/src/main/java/com/xuebiping/bolizhuzi/view/settings/dialog/GirlAuthDialog.kt +++ b/app/src/main/java/com/xuebiping/bolizhuzi/view/settings/dialog/GirlAuthDialog.kt @@ -10,6 +10,7 @@ import com.xuebiping.bolizhuzi.databinding.DialogGirlauthBinding import com.xuebiping.bolizhuzi.view.base.BaseActivity import com.xuebiping.bolizhuzi.view.base.BaseApplication import com.xuebiping.bolizhuzi.view.settings.CertificationActivity +import com.xuebiping.bolizhuzi.view.settings.UpPrivilegeActivity class GirlAuthDialog(context: Context) : Dialog(context, R.style.CommonDialog) { var owner = context as BaseActivity @@ -32,8 +33,10 @@ class GirlAuthDialog(context: Context) : Dialog(context, R.style.CommonDialog) { dismiss() BaseApplication.getInstance().topActivity.startActivity( Intent( +// BaseApplication.getInstance().topActivity, +// CertificationActivity::class.java BaseApplication.getInstance().topActivity, - CertificationActivity::class.java + UpPrivilegeActivity::class.java ) ) } diff --git a/app/src/main/res/drawable/label_shape_feed_back_bt_no_selected.xml b/app/src/main/res/drawable/label_shape_feed_back_bt_no_selected.xml new file mode 100644 index 0000000..11d313c --- /dev/null +++ b/app/src/main/res/drawable/label_shape_feed_back_bt_no_selected.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/label_shape_feed_back_bt_selected.xml b/app/src/main/res/drawable/label_shape_feed_back_bt_selected.xml new file mode 100644 index 0000000..1657e18 --- /dev/null +++ b/app/src/main/res/drawable/label_shape_feed_back_bt_selected.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/nim_message_item_left.xml b/app/src/main/res/drawable/nim_message_item_left.xml new file mode 100644 index 0000000..80b91ec --- /dev/null +++ b/app/src/main/res/drawable/nim_message_item_left.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/nim_message_item_right.xml b/app/src/main/res/drawable/nim_message_item_right.xml new file mode 100644 index 0000000..cc85138 --- /dev/null +++ b/app/src/main/res/drawable/nim_message_item_right.xml @@ -0,0 +1,12 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/progressbar_voice.xml b/app/src/main/res/drawable/progressbar_voice.xml new file mode 100644 index 0000000..5ec17ed --- /dev/null +++ b/app/src/main/res/drawable/progressbar_voice.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_button_disable.xml b/app/src/main/res/drawable/shape_button_disable.xml index 0d1db38..0e92ba7 100644 --- a/app/src/main/res/drawable/shape_button_disable.xml +++ b/app/src/main/res/drawable/shape_button_disable.xml @@ -1,9 +1,9 @@ - - + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_comment1_bg.xml b/app/src/main/res/drawable/shape_comment1_bg.xml new file mode 100644 index 0000000..d02c449 --- /dev/null +++ b/app/src/main/res/drawable/shape_comment1_bg.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_comment2_bg.xml b/app/src/main/res/drawable/shape_comment2_bg.xml new file mode 100644 index 0000000..52eb7a5 --- /dev/null +++ b/app/src/main/res/drawable/shape_comment2_bg.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_comment3_bg.xml b/app/src/main/res/drawable/shape_comment3_bg.xml new file mode 100644 index 0000000..f149924 --- /dev/null +++ b/app/src/main/res/drawable/shape_comment3_bg.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_comment4_bg.xml b/app/src/main/res/drawable/shape_comment4_bg.xml new file mode 100644 index 0000000..4c3bd86 --- /dev/null +++ b/app/src/main/res/drawable/shape_comment4_bg.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_comment5_bg.xml b/app/src/main/res/drawable/shape_comment5_bg.xml new file mode 100644 index 0000000..e596b42 --- /dev/null +++ b/app/src/main/res/drawable/shape_comment5_bg.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_comment_dislike_bg.xml b/app/src/main/res/drawable/shape_comment_dislike_bg.xml new file mode 100644 index 0000000..5b6d14f --- /dev/null +++ b/app/src/main/res/drawable/shape_comment_dislike_bg.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_dislike_bg.xml b/app/src/main/res/drawable/shape_dislike_bg.xml new file mode 100644 index 0000000..7a3c34b --- /dev/null +++ b/app/src/main/res/drawable/shape_dislike_bg.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_efecec_r45_bg.xml b/app/src/main/res/drawable/shape_efecec_r45_bg.xml new file mode 100644 index 0000000..8033a2c --- /dev/null +++ b/app/src/main/res/drawable/shape_efecec_r45_bg.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/app/src/main/res/drawable/shape_level_1_20_bg.xml b/app/src/main/res/drawable/shape_level_1_20_bg.xml new file mode 100644 index 0000000..7a81dcd --- /dev/null +++ b/app/src/main/res/drawable/shape_level_1_20_bg.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_level_21_40_bg.xml b/app/src/main/res/drawable/shape_level_21_40_bg.xml new file mode 100644 index 0000000..207429b --- /dev/null +++ b/app/src/main/res/drawable/shape_level_21_40_bg.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_level_41_60_bg.xml b/app/src/main/res/drawable/shape_level_41_60_bg.xml new file mode 100644 index 0000000..cc79a73 --- /dev/null +++ b/app/src/main/res/drawable/shape_level_41_60_bg.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_level_61_80_bg.xml b/app/src/main/res/drawable/shape_level_61_80_bg.xml new file mode 100644 index 0000000..b2a0709 --- /dev/null +++ b/app/src/main/res/drawable/shape_level_61_80_bg.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_level_81_100_bg.xml b/app/src/main/res/drawable/shape_level_81_100_bg.xml new file mode 100644 index 0000000..2256124 --- /dev/null +++ b/app/src/main/res/drawable/shape_level_81_100_bg.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_like_bg.xml b/app/src/main/res/drawable/shape_like_bg.xml new file mode 100644 index 0000000..d2f93dd --- /dev/null +++ b/app/src/main/res/drawable/shape_like_bg.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_gift_received2.xml b/app/src/main/res/layout/activity_gift_received2.xml new file mode 100644 index 0000000..a6b5042 --- /dev/null +++ b/app/src/main/res/layout/activity_gift_received2.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 2b106e3..aee0616 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -10,11 +10,11 @@ + android:src="@mipmap/ic_launcher" /> @@ -216,11 +216,10 @@ @@ -349,6 +348,7 @@ @@ -474,6 +475,7 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main_personal_page.xml b/app/src/main/res/layout/activity_main_personal_page.xml index e958562..14b20eb 100644 --- a/app/src/main/res/layout/activity_main_personal_page.xml +++ b/app/src/main/res/layout/activity_main_personal_page.xml @@ -110,6 +110,7 @@ + /> + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_register.xml b/app/src/main/res/layout/activity_register.xml index 0492886..03bd719 100644 --- a/app/src/main/res/layout/activity_register.xml +++ b/app/src/main/res/layout/activity_register.xml @@ -139,12 +139,12 @@