jixionghui 4 anni fa
parent
commit
7626b3e4a1

+ 31 - 1
jixin/src/main/java/com/jixin/im/fragment/BaseRedPacketFragment.java

@@ -11,6 +11,7 @@ import android.view.View;
 import android.view.ViewStub;
 import android.widget.EditText;
 import android.widget.ImageView;
+import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import com.jixin.im.AppConstant;
@@ -23,6 +24,7 @@ import com.jixin.im.helper.DialogHelper;
 import com.jixin.im.helper.PaySecureHelper;
 import com.jixin.im.ui.base.EasyFragment;
 import com.jixin.im.ui.me.redpacket.ChangePayPasswordActivity;
+import com.jixin.im.ui.me.redpacket.SendRedPacketActivity;
 import com.jixin.im.ui.message.ChatActivity;
 import com.jixin.im.util.Constants;
 import com.jixin.im.util.PreferenceUtils;
@@ -49,10 +51,12 @@ public abstract class BaseRedPacketFragment extends EasyFragment {
     private String mChatType;
     protected int mRedPacketType = 2;
     protected EditText mEdtPacketMoney;
+    protected int mGroupMemberNumber;
     protected EditText mEdtRemark;
     protected TextView tvSendRedPacket;
     protected TextView tvRedPacketType;
     private ImageView ivIconPin;
+    protected LinearLayout lytRemark;
     protected String mRedPacketAcceptorId;    //红包接收对象id 可以是roomId,也可以是userId
 
     private int mRedPacketCount = 1;    //默认红包个数
@@ -75,6 +79,9 @@ public abstract class BaseRedPacketFragment extends EasyFragment {
     protected void onActivityCreated(Bundle savedInstanceState, boolean createView) {
         if (createView) {
             initView();
+            if (isGroupChatType() && getArguments()!=null){
+                mGroupMemberNumber = getArguments().getInt(SendRedPacketActivity.INTENT_GROUP_MEMBER_NUMBER);
+            }
         }
     }
 
@@ -83,7 +90,7 @@ public abstract class BaseRedPacketFragment extends EasyFragment {
         mEdtPacketMoney = findViewById(R.id.edt_input_money);
         tvRedPacketType = findViewById(R.id.tv_red_packet_type);
         ivIconPin = findViewById(R.id.iv_icon_pin);
-
+        lytRemark = findViewById(R.id.ll_remark);
         mEdtRemark = findViewById(R.id.edt_input_remark);
         tvSendRedPacket = findViewById(R.id.tv_send_red_packet);
 
@@ -144,6 +151,22 @@ public abstract class BaseRedPacketFragment extends EasyFragment {
 
     }
 
+    protected int parseIntMemberCount(String inputText){
+        int inputNum = 0;
+        try {
+            inputNum = Integer.parseInt(inputText);
+        }catch (Exception e){
+            inputNum =0;
+        }
+        return  inputNum;
+
+    }
+
+    protected boolean checkMemberCount(String inputText){
+        int inputNum  = parseIntMemberCount(inputText);
+        return inputNum <= mGroupMemberNumber && inputNum > 0;
+    }
+
     protected boolean isGroupChatType() {
         if (ChatType.CHAT_GROUP.equals(mChatType)) {
             return true;
@@ -206,6 +229,13 @@ public abstract class BaseRedPacketFragment extends EasyFragment {
         }
 
     }
+    protected void setRemarkViewVisible(boolean visible){
+        if (visible){
+            lytRemark.setVisibility(View.VISIBLE);
+        }else {
+            lytRemark.setVisibility(View.GONE);
+        }
+    }
 
     protected void setSendRedPacketButtonStatus(boolean isNormal) {
         tvSendRedPacket.setSelected(isNormal);

+ 19 - 8
jixin/src/main/java/com/jixin/im/fragment/ExclusiveRedPacketFragment.java

@@ -1,10 +1,16 @@
 package com.jixin.im.fragment;
 
 import android.content.Intent;
+import android.os.Bundle;
+import android.text.Editable;
 import android.text.TextUtils;
+import android.text.TextWatcher;
 import android.util.ArrayMap;
 import android.util.Log;
+import android.view.LayoutInflater;
 import android.view.View;
+import android.view.ViewGroup;
+import android.widget.EditText;
 import android.widget.TextView;
 
 import androidx.annotation.Nullable;
@@ -33,13 +39,19 @@ public class ExclusiveRedPacketFragment extends BaseRedPacketFragment {
         super(chatType, redPacketAcceptorId);
     }
 
-
     @Override
     protected int inflateLayoutIdByRedPacketCount() {
+
         return 0;
     }
 
     @Override
+    protected void onActivityCreated(Bundle savedInstanceState, boolean createView) {
+        super.onActivityCreated(savedInstanceState, createView);
+
+    }
+
+    @Override
     protected int inflateLayoutIdByRedPacketType() {
         return R.layout.view_stub_exclusive_red_packet_part;
     }
@@ -55,8 +67,9 @@ public class ExclusiveRedPacketFragment extends BaseRedPacketFragment {
         });
     }
 
+
     @Override
-    protected void convertRedPacketCountViews(View RootView) {
+    protected void convertRedPacketCountViews(View rootView) {
 
     }
 
@@ -65,13 +78,8 @@ public class ExclusiveRedPacketFragment extends BaseRedPacketFragment {
     protected void changeSendRedPacketButtonStyle() {
         String money = mEdtPacketMoney.getText().toString();
         if (isGroupChatType()) {
-
             checkMoney(money, mReceiverId);
-        } else {
-
         }
-
-
     }
 
     @Override
@@ -84,7 +92,10 @@ public class ExclusiveRedPacketFragment extends BaseRedPacketFragment {
                 mReceiverId = roomMember.getUserId();
                 changeSendRedPacketButtonStyle();
 
-
+            }else {
+                mReceiverId = "";
+                tvSelectExclusiveMember.setText("");
+                changeSendRedPacketButtonStyle();
             }
         }
     }

+ 2 - 0
jixin/src/main/java/com/jixin/im/fragment/MucChatFragment.java

@@ -212,6 +212,7 @@ import top.zibin.luban.OnCompressListener;
 import static android.content.Context.INPUT_METHOD_SERVICE;
 import static android.content.Context.VIBRATOR_SERVICE;
 import static com.facebook.react.bridge.UiThreadUtil.runOnUiThread;
+import static com.jixin.im.ui.me.redpacket.SendRedPacketActivity.INTENT_GROUP_MEMBER_NUMBER;
 
 /**
  * 群聊fragment(新)
@@ -2413,6 +2414,7 @@ public class MucChatFragment extends EasyFragment implements
 //        intent.putExtra(SendRedPacketActivity.INTENT_ACCEPTOR_ID,roomId);
         intent.putExtra(SendRedPacketActivity.INTENT_ACCEPTOR_ID,mUseId);
         intent.putExtra(ChatType.INTENT_CHAT_TYPE,ChatType.CHAT_GROUP);
+        intent.putExtra(INTENT_GROUP_MEMBER_NUMBER, mCurrentMemberNum);
         startActivityForResult(intent, ChatActivity.REQUEST_CODE_SEND_RED);
 
     }

+ 13 - 1
jixin/src/main/java/com/jixin/im/fragment/NormalRedPacketFragment.java

@@ -85,6 +85,7 @@ public class NormalRedPacketFragment extends BaseRedPacketFragment{
     @Override
     protected void convertRedPacketCountViews(View rootView) {
         edtRedPacketCount = rootView.findViewById(R.id.edt_red_packet_count);
+        edtRedPacketCount.setHint("本群"+mGroupMemberNumber+"人");
         edtRedPacketCount.addTextChangedListener(new TextWatcher() {
             @Override
             public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@@ -93,6 +94,16 @@ public class NormalRedPacketFragment extends BaseRedPacketFragment{
 
             @Override
             public void onTextChanged(CharSequence s, int start, int before, int count) {
+                if (!checkMemberCount(s.toString())){
+                    edtRedPacketCount.setText(String.valueOf(mGroupMemberNumber));
+                    edtRedPacketCount.setSelection(String.valueOf(mGroupMemberNumber).length());
+                }else{
+                   int redPacketCount =  parseIntMemberCount(s.toString());
+                   if (redPacketCount>0){
+                       setRedPacketCount(redPacketCount);
+                   }
+
+                }
 
             }
 
@@ -101,9 +112,10 @@ public class NormalRedPacketFragment extends BaseRedPacketFragment{
                 changeSendRedPacketButtonStyle();
             }
         });
-
     }
 
+
+
     private void checkMoney(String moneyAmount, String memberCount) {
         double money = 0.00f;
         int count = -1;

+ 20 - 1
jixin/src/main/java/com/jixin/im/fragment/PasswordRedPacketFragment.java

@@ -31,6 +31,9 @@ public class PasswordRedPacketFragment extends BaseRedPacketFragment {
     @Override
     protected void onActivityCreated(Bundle savedInstanceState, boolean createView) {
         super.onActivityCreated(savedInstanceState,createView);
+        if (createView) {
+            setRemarkViewVisible(false);
+        }
     }
 
     @Override
@@ -67,10 +70,12 @@ public class PasswordRedPacketFragment extends BaseRedPacketFragment {
         });
     }
 
+
+
     @Override
     protected void convertRedPacketCountViews(View rootView) {
         edtRedPacketCount = rootView.findViewById(R.id.edt_red_packet_count);
-        if (true)return;
+        edtRedPacketCount.setHint("本群"+mGroupMemberNumber+"人");
         edtRedPacketCount.addTextChangedListener(new TextWatcher() {
             @Override
             public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@@ -79,6 +84,16 @@ public class PasswordRedPacketFragment extends BaseRedPacketFragment {
 
             @Override
             public void onTextChanged(CharSequence s, int start, int before, int count) {
+                if (!checkMemberCount(s.toString())){
+                    edtRedPacketCount.setText(String.valueOf(mGroupMemberNumber));
+                    edtRedPacketCount.setSelection(String.valueOf(mGroupMemberNumber).length());
+                }else{
+                    int redPacketCount =  parseIntMemberCount(s.toString());
+                    if (redPacketCount>0){
+                        setRedPacketCount(redPacketCount);
+                    }
+
+                }
 
             }
 
@@ -89,10 +104,14 @@ public class PasswordRedPacketFragment extends BaseRedPacketFragment {
         });
     }
 
+
+
     @Override
     protected void changeSendRedPacketButtonStyle() {
         String money = mEdtPacketMoney.getText().toString();
         String redPacketPwd = edtPassword.getText().toString();
+
+
         if (isGroupChatType()){
             String redPacketCount = edtRedPacketCount.getText().toString();
             checkMoney(money,redPacketCount,redPacketPwd);

+ 14 - 2
jixin/src/main/java/com/jixin/im/ui/me/redpacket/SendRedPacketActivity.java

@@ -29,6 +29,8 @@ import java.util.List;
  */
 public class SendRedPacketActivity extends BaseActivity {
     public final static String  INTENT_ACCEPTOR_ID  = "redPacketAcceptorId";
+    public final static String  INTENT_GROUP_MEMBER_NUMBER  = "GroupMemberNumber";
+    private  int mGroupMemberNumber;
     private String mChatType;
 
     private TabLayout mTabRedPacket;
@@ -61,20 +63,30 @@ public class SendRedPacketActivity extends BaseActivity {
             mChatType = intent.getStringExtra(ChatType.INTENT_CHAT_TYPE);
             if (TextUtils.isEmpty(mChatType)) {
                 mChatType = ChatType.CHAT_PRIVATE;
+            }else {
+                mGroupMemberNumber =intent.getIntExtra(INTENT_GROUP_MEMBER_NUMBER,1);
             }
         }
+
         mFragmentList = new ArrayList<>();
         BaseRedPacketFragment normalFragment = new NormalRedPacketFragment(mChatType,mRedPacketAcceptorId);
-        mFragmentList.add(normalFragment);
+
         BaseRedPacketFragment passwordFragment = new PasswordRedPacketFragment(mChatType,mRedPacketAcceptorId);
+        mFragmentList.add(normalFragment);
         mFragmentList.add(passwordFragment);
         if (isGroupChatType()) {
+
             BaseRedPacketFragment exclusiveFragment = new ExclusiveRedPacketFragment(mChatType,mRedPacketAcceptorId);
             mFragmentList.add(exclusiveFragment);
-
+            Bundle bundle = new Bundle();
+            bundle.putInt(INTENT_GROUP_MEMBER_NUMBER,mGroupMemberNumber);
+            normalFragment.setArguments(bundle);
+            passwordFragment.setArguments(bundle);
+            exclusiveFragment.setArguments(bundle);
         }
 
 
+
     }
 
     private boolean isGroupChatType() {

+ 40 - 32
jixin/src/main/res/layout/fragment_password_red_packet.xml

@@ -88,45 +88,53 @@
             android:layout_height="wrap_content" />
 
 
-        <RelativeLayout
+        <LinearLayout
+            android:id="@+id/ll_remark"
+            android:orientation="vertical"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="36dp">
-
-            <TextView
-                android:id="@+id/tv_remark"
-                android:layout_width="wrap_content"
+            android:layout_height="match_parent">
+            <RelativeLayout
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_alignBottom="@+id/edt_input_remark"
-                android:layout_alignParentStart="true"
-                android:layout_marginBottom="3dp"
-                android:hint="0.01"
-                android:text="备注:"
-                android:textColor="#333333"
-                android:textColorHint="#999999"
-                android:textSize="@dimen/sp_14_text_size" />
+                android:layout_marginTop="36dp">
 
-            <EditText
-                android:id="@+id/edt_input_remark"
+                <TextView
+                    android:id="@+id/tv_remark"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignBottom="@+id/edt_input_remark"
+                    android:layout_alignParentStart="true"
+                    android:layout_marginBottom="3dp"
+                    android:hint="0.01"
+                    android:text="备注:"
+                    android:textColor="#333333"
+                    android:textColorHint="#999999"
+                    android:textSize="@dimen/sp_14_text_size" />
+
+                <EditText
+                    android:id="@+id/edt_input_remark"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+
+                    android:layout_marginStart="2dp"
+                    android:layout_toRightOf="@+id/tv_remark"
+                    android:background="@color/transparent"
+                    android:gravity="center_vertical|end"
+                    android:hint="恭喜发财,大吉大利!"
+                    android:singleLine="true"
+                    android:textColor="#333333"
+                    android:textSize="18dp" />
+
+            </RelativeLayout>
+            <View
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content"
+                android:layout_height="1px"
+                android:layout_marginTop="16dp"
+                android:background="#dddddd" />
 
-                android:layout_marginStart="2dp"
-                android:layout_toRightOf="@+id/tv_remark"
-                android:background="@color/transparent"
-                android:gravity="center_vertical|end"
-                android:hint="恭喜发财,大吉大利!"
-                android:singleLine="true"
-                android:textColor="#333333"
-                android:textSize="18dp" />
+        </LinearLayout>
 
-        </RelativeLayout>
 
-        <View
-            android:layout_width="match_parent"
-            android:layout_height="1px"
-            android:layout_marginTop="16dp"
-            android:background="#dddddd" />
 
         <TextView
             android:id="@+id/tv_red_packet_type"