From 1330e783aa3d187360324cd7d7ed6eb48642cfff Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期二, 03 六月 2025 14:03:03 +0800
Subject: [PATCH] feat(generallibrary): 优化开卡流程和界面

---
 pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallPulseSyncIndicator.java           |    2 
 pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallClipRotateMultipleIndicator.java  |    2 
 generallibrary/src/main/java/com/dayu/general/bean/net/SearchUserResult.kt                    |    5 
 generallibrary/src/main/java/com/dayu/general/bean/net/SearchCardResult.kt                    |    3 
 pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallZigZagDeflectIndicator.java       |    3 
 generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt                    |  178 +++++-
 pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallScaleRippleIndicator.java         |    3 
 generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt              |    5 
 generallibrary/build.gradle                                                                   |    1 
 pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallSpinFadeLoaderIndicator.java      |    2 
 pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallGridPulseIndicator.java           |    2 
 pickerviewlibrary/src/main/java/com/wang/avi/indicators/LineScaleIndicator.java               |    2 
 pickerviewlibrary/src/main/java/com/wang/avi/indicators/PacmanIndicator.java                  |    2 
 generallibrary/src/main/java/com/dayu/general/tool/NfcReadHelper.kt                           |  221 ++++++++
 pickerviewlibrary/src/main/java/com/wang/avi/indicators/LineScalePartyIndicator.java          |    2 
 generallibrary/src/main/res/layout/activity_new_card_ge.xml                                   |  461 +++++++++++------
 generallibrary/src/main/java/com/dayu/general/tool/NfcWreatHelper.kt                          |  149 +++++
 pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallPulseIndicator.java               |    2 
 pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallScaleIndicator.java               |    2 
 pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallTrianglePathIndicator.java        |    2 
 pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallBeatIndicator.java                |    2 
 /dev/null                                                                                     |  414 ---------------
 pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallGridBeatIndicator.java            |    2 
 pickerviewlibrary/src/main/java/com/wang/avi/indicators/CubeTransitionIndicator.java          |    2 
 pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallClipRotatePulseIndicator.java     |    2 
 pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallZigZagIndicator.java              |    2 
 generallibrary/src/main/cpp/general-native-lib.cpp                                            |   38 
 pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallScaleRippleMultipleIndicator.java |    3 
 pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallScaleMultipleIndicator.java       |    2 
 pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallClipRotateIndicator.java          |    2 
 30 files changed, 845 insertions(+), 673 deletions(-)

diff --git a/generallibrary/build.gradle b/generallibrary/build.gradle
index 23302f1..b6e1600 100644
--- a/generallibrary/build.gradle
+++ b/generallibrary/build.gradle
@@ -77,6 +77,7 @@
         exclude group: 'com.google.code.gson';
     }
     implementation 'com.squareup.retrofit2:adapter-rxjava3:2.9.0'
+    implementation 'io.reactivex.rxjava3:rxjava:3.1.5'
     implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
     implementation 'com.squareup.okhttp3:logging-interceptor:4.11.0'
     compileOnly 'com.google.code.gson:gson:2.10.1'
diff --git a/generallibrary/src/main/cpp/general-native-lib.cpp b/generallibrary/src/main/cpp/general-native-lib.cpp
index e961a69..b5254cc 100644
--- a/generallibrary/src/main/cpp/general-native-lib.cpp
+++ b/generallibrary/src/main/cpp/general-native-lib.cpp
@@ -96,19 +96,19 @@
         return nullptr;
     }
 
-    __android_log_print(ANDROID_LOG_INFO, "GeBaseHelper", "Decrypting sector %d", sector);
-    __android_log_print(ANDROID_LOG_INFO, "GeBaseHelper", "Encrypted data: %02X %02X %02X %02X %02X %02X",
-                       encrypted_data[0], encrypted_data[1], encrypted_data[2],
-                       encrypted_data[3], encrypted_data[4], encrypted_data[5]);
-    __android_log_print(ANDROID_LOG_INFO, "GeBaseHelper", "Using XOR key: %02X %02X %02X %02X %02X %02X",
-                       XOR_KEYS[sector][0], XOR_KEYS[sector][1], XOR_KEYS[sector][2],
-                       XOR_KEYS[sector][3], XOR_KEYS[sector][4], XOR_KEYS[sector][5]);
+//    __android_log_print(ANDROID_LOG_INFO, "GeBaseHelper", "Decrypting sector %d", sector);
+//    __android_log_print(ANDROID_LOG_INFO, "GeBaseHelper", "Encrypted data: %02X %02X %02X %02X %02X %02X",
+//                       encrypted_data[0], encrypted_data[1], encrypted_data[2],
+//                       encrypted_data[3], encrypted_data[4], encrypted_data[5]);
+//    __android_log_print(ANDROID_LOG_INFO, "GeBaseHelper", "Using XOR key: %02X %02X %02X %02X %02X %02X",
+//                       XOR_KEYS[sector][0], XOR_KEYS[sector][1], XOR_KEYS[sector][2],
+//                       XOR_KEYS[sector][3], XOR_KEYS[sector][4], XOR_KEYS[sector][5]);
 
     unsigned char decrypted[6];
     for (int i = 0; i < 6; i++) {
         decrypted[i] = encrypted_data[i] ^ XOR_KEYS[sector][i];
-        __android_log_print(ANDROID_LOG_INFO, "GeBaseHelper", "Byte %d: %02X ^ %02X = %02X",
-                          i, encrypted_data[i], XOR_KEYS[sector][i], decrypted[i]);
+//        __android_log_print(ANDROID_LOG_INFO, "GeBaseHelper", "Byte %d: %02X ^ %02X = %02X",
+//                          i, encrypted_data[i], XOR_KEYS[sector][i], decrypted[i]);
     }
 
     std::string result;
@@ -119,7 +119,7 @@
         result += hex;
     }
 
-    __android_log_print(ANDROID_LOG_INFO, "GeBaseHelper", "Decrypted result: %s", result.c_str());
+//    __android_log_print(ANDROID_LOG_INFO, "GeBaseHelper", "Decrypted result: %s", result.c_str());
     return env->NewStringUTF(result.c_str());
 }
 
@@ -187,7 +187,7 @@
     jobject packageInfoObject = env->CallObjectMethod(packageManagerObject, getPackageInfoId,
                                                     packNameString, 64);
     if (!packageInfoObject) {
-        __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to get PackageInfo");
+//        __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to get PackageInfo");
         return env->NewStringUTF("");
     }
 
@@ -195,7 +195,7 @@
     jfieldID signaturefieldID = env->GetFieldID(packageInfoClass, "signatures",
                                               "[Landroid/content/pm/Signature;");
     if (!signaturefieldID) {
-        __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to get signature field ID");
+//        __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to get signature field ID");
         return env->NewStringUTF("");
     }
 
@@ -203,28 +203,28 @@
     jobjectArray signatureArray = (jobjectArray) env->GetObjectField(packageInfoObject,
                                                                    signaturefieldID);
     if (!signatureArray || env->GetArrayLength(signatureArray) == 0) {
-        __android_log_print(ANDROID_LOG_ERROR, "M1Card", "No signatures found");
+//        __android_log_print(ANDROID_LOG_ERROR, "M1Card", "No signatures found");
         return env->NewStringUTF("");
     }
 
     // 鑾峰彇绗竴涓鍚嶅璞�
     jobject signatureObject = env->GetObjectArrayElement(signatureArray, 0);
     if (!signatureObject) {
-        __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to get signature object");
+//        __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to get signature object");
         return env->NewStringUTF("");
     }
 
     // 鑾峰彇绛惧悕瀛楃涓�
     jstring signatureString = (jstring) env->CallObjectMethod(signatureObject, signToStringId);
     if (!signatureString) {
-        __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to get signature string");
+//        __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to get signature string");
         return env->NewStringUTF("");
     }
 
     // 鑾峰彇绛惧悕瀛楃涓茬殑UTF-8瀛楃
     const char *signStrng = env->GetStringUTFChars(signatureString, 0);
     if (!signStrng) {
-        __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to get signature UTF chars");
+//        __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to get signature UTF chars");
         return env->NewStringUTF("");
     }
 
@@ -240,11 +240,11 @@
 
         // 瑙e瘑骞惰浆鎹㈡瘡涓墖鍖哄瘑閽�
         for (size_t i = 0; i < numKeys; i++) {
-           __android_log_print(ANDROID_LOG_DEBUG, "M1Card", "澶勭悊鎵囧尯 %zu 鐨勫瘑閽�", i);
+//           __android_log_print(ANDROID_LOG_DEBUG, "M1Card", "澶勭悊鎵囧尯 %zu 鐨勫瘑閽�", i);
             
             // 纭繚涓嶄細瓒婄晫璁块棶
             if (i * 12 + 6 > sizeof(ENCRYPTED_SECTOR_KEYS)) {
-                __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Index out of bounds");
+//                __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Index out of bounds");
                 break;
             }
             
@@ -252,7 +252,7 @@
             jstring decrypted_str = decrypt_key(env, ENCRYPTED_SECTOR_KEYS + (i * 12), 6);
             
             if (!decrypted_str) {
-               __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to decrypt key for sector %zu", i);
+//               __android_log_print(ANDROID_LOG_ERROR, "M1Card", "Failed to decrypt key for sector %zu", i);
                 continue;
             }
             
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt b/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
index 2ebe743..46c5a42 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
@@ -4,25 +4,24 @@
 import android.os.Bundle
 import android.text.Editable
 import android.text.TextWatcher
+import android.util.TypedValue
 import android.view.View
 import android.widget.RadioButton
 import android.widget.Toast
 import androidx.lifecycle.lifecycleScope
 import com.dayu.baselibrary.net.subscribers.SubscriberListener
-import com.dayu.baselibrary.tools.nfc.NFCCallBack
 import com.dayu.baselibrary.view.TitleBar.ClickType_LEFT_IMAGE
 import com.dayu.general.BaseApplication
 import com.dayu.general.R
 import com.dayu.general.bean.db.CardRegistrationBean
 import com.dayu.general.dao.BaseDaoSingleton
-import com.dayu.general.databinding.ActivityNewCard1GeBinding
+import com.dayu.general.databinding.ActivityNewCardGeBinding
 import com.dayu.general.net.ApiManager
 import com.dayu.general.net.BaseResponse
 import com.dayu.general.tool.NfcReadHelper
 import com.dayu.general.tool.NfcWreatHelper
 import com.tencent.bugly.crashreport.CrashReport
 import kotlinx.coroutines.launch
-import android.util.TypedValue
 
 /**
  * Description: 鐢ㄦ埛寮�鍗$晫闈�(鍚屾淇敼鐧藉崱瀵嗙爜)
@@ -31,7 +30,7 @@
  */
 class NewCard2Activity : BaseNfcActivity() {
 
-    private lateinit var binding: ActivityNewCard1GeBinding
+    private lateinit var binding: ActivityNewCardGeBinding
 
     // 鏀粯鏂瑰紡
     private var paymentMethod: String = "鐜伴噾"
@@ -47,6 +46,9 @@
 
     // 鐢ㄦ埛ID
     private var userId: String = ""
+    
+    // 瀹㈡埛ID
+    private var clientId: String = ""
 
     companion object {
         private const val TAG = "NewCard2Activity"
@@ -68,18 +70,40 @@
         val pageSize: Any?,
         val pageTotal: Any?
     )
+    
+    // 鐢ㄦ埛淇℃伅鏁版嵁绫�
+    data class ClientInfo(
+        val clientId: String,
+        val clientNum: String,
+        val name: String,
+        val districtNum: String,
+        val phone: String,
+        val idCard: String,
+        val villageName: String,
+        val address: String,
+        val cardCount: Int,
+        val operateDt: String
+    )
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
-        binding = ActivityNewCard1GeBinding.inflate(layoutInflater)
+        binding = ActivityNewCardGeBinding.inflate(layoutInflater)
         setContentView(binding.root)
 
+        // 鑾峰彇浼犻�掔殑clientId鍙傛暟
+        clientId = intent.getStringExtra("clientId") ?: ""
+        
         initView()
+        
+        // 濡傛灉鏈塩lientId锛岃幏鍙栧鎴蜂俊鎭�
+        if (clientId.isNotEmpty()) {
+            getClientInfo(clientId)
+        }
+        
         // 鑾峰彇鏀粯鏂瑰紡
         getPaymentMethods()
         initListener()
     }
-
 
     private fun initView() {
         // 鍒濆鍖栨爣棰樻爮杩斿洖鎸夐挳
@@ -90,21 +114,66 @@
         // 鍒濆鍖朜FC璇诲崱瀹瑰櫒锛屽垵濮嬮殣钘�
         binding.nfcContainer.visibility = View.VISIBLE
 
-        // 浠嶪ntent涓幏鍙栫敤鎴蜂俊鎭紙濡傛灉鏈夛級
-        val userName = intent.getStringExtra("userName") ?: ""
-        val rawIdCard = intent.getStringExtra("idCard")
-        val idCard = if (rawIdCard.isNullOrBlank()) "鏃�" else rawIdCard
-        val farmerCode = intent.getStringExtra("farmerCode") ?: ""
-        userId = intent.getStringExtra("userId") ?: ""
-
-        // 璁剧疆鐢ㄦ埛淇℃伅
-        binding.newCardUserName.text = userName
-        binding.newCardIdCard.text = idCard
-        binding.newCardFarmerCode.text = farmerCode
-
         // 璁剧疆閲戦杈撳叆闄愬埗涓轰袱浣嶅皬鏁�
         binding.newCardRechargeAmount.addTextChangedListener(createDecimalTextWatcher())
         binding.newCardCardFee.addTextChangedListener(createDecimalTextWatcher())
+    }
+    
+    /**
+     * 鑾峰彇瀹㈡埛璇︾粏淇℃伅
+     */
+    private fun getClientInfo(clientId: String) {
+        ApiManager.getInstance().requestGetLoading(
+            this,
+            "terminal/client/getTermOne/$clientId",
+            ClientInfo::class.java,
+            null,
+            object : SubscriberListener<BaseResponse<ClientInfo>>() {
+                override fun onNext(response: BaseResponse<ClientInfo>) {
+                    if (response.success) {
+                        val clientInfo = response.content
+                        if (clientInfo != null) {
+                            // 鏄剧ず瀹㈡埛淇℃伅鍒扮晫闈�
+                            displayClientInfo(clientInfo)
+                        } else {
+                            Toast.makeText(
+                                this@NewCard2Activity,
+                                "鑾峰彇瀹㈡埛淇℃伅澶辫触: 杩斿洖鏁版嵁涓虹┖",
+                                Toast.LENGTH_SHORT
+                            ).show()
+                        }
+                    } else {
+                        Toast.makeText(
+                            this@NewCard2Activity,
+                            "鑾峰彇瀹㈡埛淇℃伅澶辫触: ${response.msg}",
+                            Toast.LENGTH_SHORT
+                        ).show()
+                    }
+                }
+
+                override fun onError(e: Throwable?) {
+                    super.onError(e)
+                    Toast.makeText(
+                        this@NewCard2Activity,
+                        "鑾峰彇瀹㈡埛淇℃伅澶辫触: ${e?.message ?: "缃戠粶寮傚父"}",
+                        Toast.LENGTH_SHORT
+                    ).show()
+                }
+            }
+        )
+    }
+    
+    /**
+     * 鏄剧ず瀹㈡埛淇℃伅鍒扮晫闈�
+     */
+    private fun displayClientInfo(clientInfo: ClientInfo) {
+        // 淇濆瓨鐢ㄦ埛ID渚涘悗缁娇鐢�
+        userId = clientInfo.clientId
+        
+        // 鏄剧ず鐢ㄦ埛鍩烘湰淇℃伅
+        binding.newCardUserName.text = clientInfo.name
+        binding.newCardIdCard.text = if (clientInfo.idCard.isBlank()) "鏃�" else clientInfo.idCard
+        binding.newCardFarmerCode.text = clientInfo.clientNum
     }
 
     /**
@@ -244,6 +313,9 @@
         }
     }
 
+    /**
+     * 娉ㄥ唽鏂板崱
+     */
     private fun registerNewCard() {
         // 鑾峰彇鍏呭�奸噾棰�
         val rechargeAmountStr = binding.newCardRechargeAmount.text.toString()
@@ -348,45 +420,61 @@
     }
 
     override fun onNfcBack(intent: Intent) {
-        var cardNumber = NfcReadHelper.getInstance(intent, this).getCardNumberNoClose()
-        if (!cardNumber.isEmpty()) {
+        val cardNumber = NfcReadHelper.getInstance(intent, this).getCardNumberNoClose()
+        if (cardNumber.isNotEmpty()) {
             try {
                 // 鍒涘缓瀵嗛挜鍒楄〃鐨勫壇鏈紝閬垮厤ConcurrentModificationException
                 val keyList = ArrayList(NfcReadHelper.getInstance(intent, this).getKeyList())
 
-                NfcWreatHelper.getInstance(intent, this).changePS(keyList, false, true, object :
-                    NFCCallBack {
-
-                    override fun isSusses(flag: Boolean, msg: String?) {
-                        if (flag) {
-                            // 淇濆瓨鍗$墿鐞咺D
-                            cardPhysicalId = cardNumber
-                            // 鏇存柊UI
-                            binding.newCardArerNumber.text = cardNumber
-                            // 闅愯棌NFC璇诲崱鐣岄潰
-                            binding.nfcContainer.visibility = View.GONE
-                            binding.centerScroll.visibility = View.VISIBLE
-                            binding.newCardRegistBtn.visibility = View.VISIBLE
-                        } else {
-                            // 瀵嗙爜淇敼澶辫触锛屽鐞嗛敊璇儏鍐�
-                            Toast.makeText(
-                                this@NewCard2Activity,
-                                "鍗$墖鍒濆鍖栧け璐ワ細" + msg,
-                                Toast.LENGTH_LONG
-                            )
-                                .show()
-                        }
+                // 浣跨敤缇庡寲鐨勫姞杞藉姩鐢绘潵鏄剧ずNFC鎿嶄綔鐨勫姞杞界姸鎬�
+                val nfcHelper = NfcWreatHelper.getInstance(intent, this)
+                nfcHelper.setLoadingView(binding.loadingContainer, binding.nfcProgressWheel)
+                
+                // 寮傛淇敼瀵嗙爜
+                nfcHelper.changePSAsync(keyList, false, true) { success: Boolean, msg: String? ->
+                    if (success) {
+                        // 淇濆瓨鍗$墿鐞咺D
+                        cardPhysicalId = cardNumber
+                        // 鏇存柊UI
+                        binding.newCardArerNumber.text = cardNumber
+                        // 闅愯棌NFC璇诲崱鐣岄潰
+                        binding.nfcContainer.visibility = View.GONE
+                        binding.centerScroll.visibility = View.VISIBLE
+                        binding.newCardRegistBtn.visibility = View.VISIBLE
+                    } else {
+                        // 瀵嗙爜淇敼澶辫触锛屽鐞嗛敊璇儏鍐�
+                        Toast.makeText(
+                            this@NewCard2Activity,
+                            "鍗$墖鍒濆鍖栧け璐ワ細$msg",
+                            Toast.LENGTH_LONG
+                        ).show()
                     }
-                })
-
-
+                }
             } catch (e: Exception) {
                 // 澶勭悊寮傚父鎯呭喌
                 CrashReport.postCatchedException(e)
                 e.printStackTrace()
             }
+        } else {
+            Toast.makeText(
+                this@NewCard2Activity,
+                "鑾峰彇鍗″彿澶辫触",
+                Toast.LENGTH_SHORT
+            ).show()
         }
     }
 
+    override fun onDestroy() {
+        super.onDestroy()
+        // 娓呯悊NFC宸ュ叿绫讳腑鐨凴xJava璁㈤槄锛岄槻姝㈠唴瀛樻硠婕�
+        try {
+            NfcReadHelper.getInstance(intent, this).clearDisposables()
+            NfcWreatHelper.getInstance(intent, this).clearDisposables()
+            // 纭繚鍋滄鍔ㄧ敾锛岄伩鍏嶅唴瀛樻硠婕�
+            binding.nfcProgressWheel.stopSpinning()
+        } catch (e: Exception) {
+            e.printStackTrace()
+        }
+    }
 
 }
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt
index b66c4df..2b39bc4 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt
@@ -86,10 +86,7 @@
             // 澶勭悊鐢ㄦ埛鐐瑰嚮浜嬩欢
             // 浼犻�掔敤鎴蜂俊鎭埌寮�鍗$晫闈�
             val intent = Intent(this, NewCard2Activity::class.java)
-            intent.putExtra("userName", user.name)
-            intent.putExtra("idCard", user.idCard)
-            intent.putExtra("farmerCode", user.clientNum)
-            intent.putExtra("userId", user.id)
+            intent.putExtra("clientId", user.clientId)
             startActivity(intent)
         }
 
diff --git a/generallibrary/src/main/java/com/dayu/general/bean/net/SearchCardResult.kt b/generallibrary/src/main/java/com/dayu/general/bean/net/SearchCardResult.kt
index 8c3bdde..314b237 100644
--- a/generallibrary/src/main/java/com/dayu/general/bean/net/SearchCardResult.kt
+++ b/generallibrary/src/main/java/com/dayu/general/bean/net/SearchCardResult.kt
@@ -24,6 +24,7 @@
         val idCard: String? = null,        // 韬唤璇佸彿
         val money: String? = null,         // 鍗′綑棰�
         val phone: String? = null,         // 鐢佃瘽鍙风爜
-        val stateName: String? = null      // 鐘舵�佸悕绉�
+        val stateName: String? = null,     // 鐘舵�佸悕绉�
+        val clientId: String? = null       // 瀹㈡埛ID  
     )
 } 
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/bean/net/SearchUserResult.kt b/generallibrary/src/main/java/com/dayu/general/bean/net/SearchUserResult.kt
index a3ba94c..21f6186 100644
--- a/generallibrary/src/main/java/com/dayu/general/bean/net/SearchUserResult.kt
+++ b/generallibrary/src/main/java/com/dayu/general/bean/net/SearchUserResult.kt
@@ -17,7 +17,7 @@
     /**
      * 鐢ㄦ埛淇℃伅
      */
-    data class UserInfo (
+    data class UserInfo(
         val address: String? = null,   // 鍦板潃
         val cardCount: Int? = null,    // 鍗℃暟閲�
         val clientNum: String? = null, // 瀹㈡埛缂栧彿
@@ -25,6 +25,7 @@
         val idCard: String? = null,    // 韬唤璇�
         val name: String? = null,      // 濮撳悕
         val operateDt: String? = null, // 鎿嶄綔鏃ユ湡
-        val phone: String? = null      // 鐢佃瘽
+        val phone: String? = null,      // 鐢佃瘽
+        val clientId: String? = null       // 瀹㈡埛ID
     )
 }
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/tool/NfcReadHelper.kt b/generallibrary/src/main/java/com/dayu/general/tool/NfcReadHelper.kt
index a8f81f1..84d7111 100644
--- a/generallibrary/src/main/java/com/dayu/general/tool/NfcReadHelper.kt
+++ b/generallibrary/src/main/java/com/dayu/general/tool/NfcReadHelper.kt
@@ -2,8 +2,16 @@
 
 import android.app.Activity
 import android.content.Intent
+import android.view.View
+import android.widget.RelativeLayout
 import com.dayu.baselibrary.tools.nfc.BaseNfcReadHelper
 import com.dayu.baselibrary.tools.nfc.NfcReadAdapter
+import com.pnikosis.materialishprogress.ProgressWheel
+import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
+import io.reactivex.rxjava3.core.Observable
+import io.reactivex.rxjava3.disposables.CompositeDisposable
+import io.reactivex.rxjava3.disposables.Disposable
+import io.reactivex.rxjava3.schedulers.Schedulers
 
 /**
  * NFC璇诲彇宸ュ叿绫荤殑Kotlin瀹炵幇
@@ -11,6 +19,9 @@
 class NfcReadHelper private constructor(intent: Intent, activity: Activity) : GeBaseHelper(activity) {
     
     private val adapter: NfcReadAdapter = NfcReadAdapter(intent, activity)
+    private val compositeDisposable = CompositeDisposable()
+    private var loadingContainer: RelativeLayout? = null
+    private var progressWheel: ProgressWheel? = null
 
     companion object {
         private var helper: NfcReadHelper? = null
@@ -27,7 +38,83 @@
         }
     }
 
+    /**
+     * 璁剧疆鍔犺浇鍔ㄧ敾瑙嗗浘
+     */
+    fun setLoadingView(loadingContainer: RelativeLayout, progressWheel: ProgressWheel) {
+        this.loadingContainer = loadingContainer
+        this.progressWheel = progressWheel
+    }
 
+    /**
+     * 鏄剧ず鍔犺浇鍔ㄧ敾
+     */
+    private fun showLoading() {
+        loadingContainer?.let {
+            it.visibility = View.VISIBLE
+        }
+        progressWheel?.let {
+            it.spin()
+        }
+    }
+
+    /**
+     * 闅愯棌鍔犺浇鍔ㄧ敾
+     */
+    private fun hideLoading() {
+        loadingContainer?.let {
+            it.visibility = View.GONE
+        }
+        progressWheel?.let {
+            it.stopSpinning()
+        }
+    }
+
+    /**
+     * 鑾峰彇鍗″彿(寮傛)
+     */
+    fun getCardNumberAsync(callback: (String) -> Unit): Disposable {
+        showLoading()
+        val disposable = Observable.fromCallable {
+            getCardNumber()
+        }
+        .subscribeOn(Schedulers.io())
+        .observeOn(AndroidSchedulers.mainThread())
+        .subscribe({ result ->
+            hideLoading()
+            callback(result)
+        }, { error ->
+            hideLoading()
+            error.printStackTrace()
+            callback("")
+        })
+        
+        compositeDisposable.add(disposable)
+        return disposable
+    }
+
+    /**
+     * 鑾峰彇鍗″彿(涓嶅叧闂繛鎺ワ紝寮傛)
+     */
+    fun getCardNumberNoCloseAsync(callback: (String) -> Unit): Disposable {
+        showLoading()
+        val disposable = Observable.fromCallable {
+            getCardNumberNoClose()
+        }
+        .subscribeOn(Schedulers.io())
+        .observeOn(AndroidSchedulers.mainThread())
+        .subscribe({ result ->
+            hideLoading()
+            callback(result)
+        }, { error ->
+            hideLoading()
+            error.printStackTrace()
+            callback("")
+        })
+        
+        compositeDisposable.add(disposable)
+        return disposable
+    }
 
     /**
      * 鑾峰彇鍗″彿
@@ -50,8 +137,28 @@
         }
     }
 
-
-
+    /**
+     * 鑾峰彇鍗$墖绫诲瀷鍜屽崱鍙�(寮傛)
+     */
+    fun getCardTypeAndCardNumberAsync(callback: (String) -> Unit): Disposable {
+        showLoading()
+        val disposable = Observable.fromCallable {
+            getCardTypeAndCardNumber()
+        }
+        .subscribeOn(Schedulers.io())
+        .observeOn(AndroidSchedulers.mainThread())
+        .subscribe({ result ->
+            hideLoading()
+            callback(result)
+        }, { error ->
+            hideLoading()
+            error.printStackTrace()
+            callback("")
+        })
+        
+        compositeDisposable.add(disposable)
+        return disposable
+    }
 
     /**
      * 鑾峰彇鍗$墖绫诲瀷鍜屽崱鍙�
@@ -66,6 +173,46 @@
     }
 
     /**
+     * 璇诲彇NFC鍗$殑鍏ㄩ儴淇℃伅(寮傛)
+     */
+    fun getAllDataAsync(callback: BaseNfcReadHelper.NFCCallMapback) {
+        showLoading()
+        val disposable = Observable.fromCallable {
+            try {
+                adapter.getAllData(object : BaseNfcReadHelper.NFCCallMapback {
+                    override fun callBack(data: Map<String, List<ByteArray>>) {
+                        hideLoading()
+                        callback.callBack(data)
+                    }
+
+                    override fun error(code: Int) {
+                        hideLoading()
+                        callback.error(code)
+                    }
+                })
+                true
+            } catch (e: Exception) {
+                e.printStackTrace()
+                false
+            }
+        }
+        .subscribeOn(Schedulers.io())
+        .observeOn(AndroidSchedulers.mainThread())
+        .subscribe({ success ->
+            if (!success) {
+                hideLoading()
+                callback.error(-1)
+            }
+        }, { error ->
+            hideLoading()
+            error.printStackTrace()
+            callback.error(-1)
+        })
+        
+        compositeDisposable.add(disposable)
+    }
+
+    /**
      * 璇诲彇NFC鍗$殑鍏ㄩ儴淇℃伅
      */
     fun getAllData(callback: BaseNfcReadHelper.NFCCallMapback) {
@@ -74,6 +221,29 @@
         } catch (e: Exception) {
             e.printStackTrace()
         }
+    }
+
+    /**
+     * 鑾峰彇涓�涓墖鍖虹殑鏁版嵁(寮傛)
+     */
+    fun getOneSectorDataAsync(callback: (List<ByteArray>?) -> Unit): Disposable {
+        showLoading()
+        val disposable = Observable.fromCallable<Any> {
+            getOneSectorData() as Any
+        }
+        .subscribeOn(Schedulers.io())
+        .observeOn(AndroidSchedulers.mainThread())
+        .subscribe({ result ->
+            hideLoading()
+            callback(result as? List<ByteArray>)
+        }, { error ->
+            hideLoading()
+            error.printStackTrace()
+            callback(null)
+        })
+        
+        compositeDisposable.add(disposable)
+        return disposable
     }
 
     /**
@@ -89,6 +259,46 @@
     }
 
     /**
+     * 璇诲彇NFC鍗$殑鐗瑰畾鎵囧尯淇℃伅(寮傛)
+     */
+    fun getDataAsync(a: Int, b: Int, callback: BaseNfcReadHelper.NFCCallByteback) {
+        showLoading()
+        val disposable = Observable.fromCallable {
+            try {
+                adapter.getData(a, b, object : BaseNfcReadHelper.NFCCallByteback {
+                    override fun callBack(data: ByteArray) {
+                        hideLoading()
+                        callback.callBack(data)
+                    }
+
+                    override fun error(code: Int) {
+                        hideLoading()
+                        callback.error(code)
+                    }
+                })
+                true
+            } catch (e: Exception) {
+                e.printStackTrace()
+                false
+            }
+        }
+        .subscribeOn(Schedulers.io())
+        .observeOn(AndroidSchedulers.mainThread())
+        .subscribe({ success ->
+            if (!success) {
+                hideLoading()
+                callback.error(-1)
+            }
+        }, { error ->
+            hideLoading()
+            error.printStackTrace()
+            callback.error(-1)
+        })
+        
+        compositeDisposable.add(disposable)
+    }
+
+    /**
      * 璇诲彇NFC鍗$殑鐗瑰畾鎵囧尯淇℃伅
      */
     fun getData(a: Int, b: Int, callback: BaseNfcReadHelper.NFCCallByteback) {
@@ -99,5 +309,10 @@
         }
     }
 
-
+    /**
+     * 娓呴櫎鎵�鏈夎闃咃紝闃叉鍐呭瓨娉勬紡
+     */
+    fun clearDisposables() {
+        compositeDisposable.clear()
+    }
 }
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/tool/NfcWreatHelper.kt b/generallibrary/src/main/java/com/dayu/general/tool/NfcWreatHelper.kt
index 0a6e18c..65fd920 100644
--- a/generallibrary/src/main/java/com/dayu/general/tool/NfcWreatHelper.kt
+++ b/generallibrary/src/main/java/com/dayu/general/tool/NfcWreatHelper.kt
@@ -2,14 +2,25 @@
 
 import android.app.Activity
 import android.content.Intent
+import android.view.View
+import android.widget.RelativeLayout
 import com.dayu.baselibrary.tools.nfc.NFCCallBack
 import com.dayu.baselibrary.tools.nfc.NfcWriteAdapter
 import com.dayu.general.bean.card.UserCard
+import com.pnikosis.materialishprogress.ProgressWheel
+import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
+import io.reactivex.rxjava3.core.Observable
+import io.reactivex.rxjava3.disposables.CompositeDisposable
+import io.reactivex.rxjava3.disposables.Disposable
+import io.reactivex.rxjava3.schedulers.Schedulers
 
 class NfcWreatHelper private constructor(intent: Intent, activity: Activity) :
     GeBaseHelper(activity) {
 
     private val adapter: NfcWriteAdapter = NfcWriteAdapter(intent, activity)
+    private val compositeDisposable = CompositeDisposable()
+    private var loadingContainer: RelativeLayout? = null
+    private var progressWheel: ProgressWheel? = null
 
     companion object {
         private var helper: NfcWreatHelper? = null
@@ -27,6 +38,69 @@
         }
     }
 
+    /**
+     * 璁剧疆鍔犺浇鍔ㄧ敾瑙嗗浘
+     */
+    fun setLoadingView(loadingContainer: RelativeLayout, progressWheel: ProgressWheel) {
+        this.loadingContainer = loadingContainer
+        this.progressWheel = progressWheel
+    }
+
+    /**
+     * 鏄剧ず鍔犺浇鍔ㄧ敾
+     */
+    private fun showLoading() {
+        loadingContainer?.let {
+            it.visibility = View.VISIBLE
+        }
+        progressWheel?.let {
+            it.spin()
+        }
+    }
+
+    /**
+     * 闅愯棌鍔犺浇鍔ㄧ敾
+     */
+    private fun hideLoading() {
+        loadingContainer?.let {
+            it.visibility = View.GONE
+        }
+        progressWheel?.let {
+            it.stopSpinning()
+        }
+    }
+
+    /**
+     * 鍐欏崱(寮傛)
+     *
+     * @param str 涔﹀啓鍐呭锛�16涓瓧鑺�
+     * @param a   涔﹀啓鐨勬墖鍖� (浠�0寮�濮嬫暟)
+     * @param b   涔﹀啓鐨勫潡(浠�0寮�濮嬫暟)
+     * @param callback 鎿嶄綔缁撴灉鍥炶皟
+     */
+    fun writeDataAsync(str: ByteArray?, a: Int, b: Int, callback: (Boolean) -> Unit): Disposable {
+        showLoading()
+        val disposable = Observable.fromCallable {
+            writeData(str, a, b, object : NFCCallBack {
+                override fun isSusses(flag: Boolean, msg: String?) {
+                    // 杩欎釜鍥炶皟鍦↖O绾跨▼涓紝涓嶅鐞哢I鐩稿叧鎿嶄綔
+                }
+            })
+        }
+        .subscribeOn(Schedulers.io())
+        .observeOn(AndroidSchedulers.mainThread())
+        .subscribe({ result ->
+            hideLoading()
+            callback(result)
+        }, { error ->
+            hideLoading()
+            error.printStackTrace()
+            callback(false)
+        })
+        
+        compositeDisposable.add(disposable)
+        return disposable
+    }
 
     /**
      * 鍐欏崱
@@ -46,6 +120,32 @@
     }
 
     /**
+     * 鍐欏崱(寮傛)
+     *
+     * @param userCard 鐢ㄦ埛鍗″唴瀹�
+     * @param callback 鎿嶄綔缁撴灉鍥炶皟
+     */
+    fun writeUserDataAsync(userCard: UserCard, callback: (Boolean) -> Unit): Disposable {
+        showLoading()
+        val disposable = Observable.fromCallable {
+            writeUserData(userCard)
+        }
+        .subscribeOn(Schedulers.io())
+        .observeOn(AndroidSchedulers.mainThread())
+        .subscribe({ result ->
+            hideLoading()
+            callback(result)
+        }, { error ->
+            hideLoading()
+            error.printStackTrace()
+            callback(false)
+        })
+        
+        compositeDisposable.add(disposable)
+        return disposable
+    }
+
+    /**
      * 鍐欏崱
      *
      * @param userCard 鐢ㄦ埛鍗″唴瀹�
@@ -60,14 +160,57 @@
         return false
     }
 
-    fun changePS( ps: List<ByteArray>, isConnect: Boolean, isClose: Boolean,nfcCallBack: NFCCallBack): Boolean {
+    /**
+     * 淇敼瀵嗙爜(寮傛)
+     *
+     * @param ps 瀵嗙爜鍒楄〃
+     * @param isConnect 鏄惁淇濇寔杩炴帴
+     * @param isClose 鏄惁鍏抽棴
+     * @param callback 缁撴灉鍥炶皟
+     */
+    fun changePSAsync(ps: List<ByteArray>, isConnect: Boolean, isClose: Boolean, callback: (Boolean, String?) -> Unit): Disposable {
+        showLoading()
+        val disposable = Observable.fromCallable {
+            var resultSuccess = false
+            var resultMessage: String? = null
+            
+            changePS(ps, isConnect, isClose, object : NFCCallBack {
+                override fun isSusses(flag: Boolean, msg: String?) {
+                    resultSuccess = flag
+                    resultMessage = msg
+                }
+            })
+            
+            Pair(resultSuccess, resultMessage)
+        }
+        .subscribeOn(Schedulers.io())
+        .observeOn(AndroidSchedulers.mainThread())
+        .subscribe({ result ->
+            hideLoading()
+            callback(result.first, result.second)
+        }, { error ->
+            hideLoading()
+            error.printStackTrace()
+            callback(false, error.message)
+        })
+        
+        compositeDisposable.add(disposable)
+        return disposable
+    }
+
+    fun changePS(ps: List<ByteArray>, isConnect: Boolean, isClose: Boolean, nfcCallBack: NFCCallBack): Boolean {
         try {
-            return adapter.changePasword( ps, isConnect, isClose,nfcCallBack)
+            return adapter.changePasword(ps, isConnect, isClose, nfcCallBack)
         } catch (e: java.lang.Exception) {
             e.printStackTrace()
         }
         return false
     }
 
-
+    /**
+     * 娓呴櫎鎵�鏈夎闃咃紝闃叉鍐呭瓨娉勬紡
+     */
+    fun clearDisposables() {
+        compositeDisposable.clear()
+    }
 }
\ No newline at end of file
diff --git a/generallibrary/src/main/res/layout/activity_new_card_1_ge.xml b/generallibrary/src/main/res/layout/activity_new_card_1_ge.xml
deleted file mode 100644
index 4567eec..0000000
--- a/generallibrary/src/main/res/layout/activity_new_card_1_ge.xml
+++ /dev/null
@@ -1,414 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@color/base_list_bg">
-
-    <com.dayu.baselibrary.view.TitleBar
-        android:id="@+id/titleBar"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/dimen_title_height"
-        android:background="@color/title_bar_bg"
-        android:elevation="4dp"
-        app:centerText="鐢ㄦ埛寮�鍗�"
-        app:leftImage="@mipmap/icon_back"
-        tools:ignore="MissingConstraints" />
-
-    <androidx.cardview.widget.CardView
-        android:id="@+id/nfcContainer"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_marginStart="16dp"
-        android:layout_marginTop="24dp"
-        android:layout_marginEnd="16dp"
-        android:layout_marginBottom="24dp"
-        android:visibility="visible"
-        app:cardBackgroundColor="@android:color/white"
-        app:cardCornerRadius="12dp"
-        app:cardElevation="4dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/titleBar">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:gravity="center"
-            android:orientation="vertical"
-            android:padding="16dp">
-
-            <TextView
-                android:id="@+id/textView"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:gravity="center"
-                android:text="璇峰皢鏂板崱璐村湪璁惧涓婅繘琛岃鍗�"
-                android:textColor="#333333"
-                android:textSize="18sp"
-                android:textStyle="bold" />
-
-            <TextView
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:gravity="center"
-                android:text="灏嗚繘琛屽垵濮嬪寲鍗$墖\n鑰楁椂杈冮暱璇蜂笉瑕佺Щ鍔ㄥ崱鐗�"
-                android:textColor="@color/base_blue_bg"
-                android:textSize="18sp"
-                android:layout_marginTop="20dp"
-                android:textStyle="bold" />
-
-            <ImageView
-                android:id="@+id/nfcImageView"
-                android:layout_width="200dp"
-                android:layout_height="200dp"
-                android:layout_marginTop="24dp"
-                android:scaleType="fitCenter"
-                android:src="@mipmap/nfc_write" />
-
-            <TextView
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="16dp"
-                android:gravity="center"
-                android:text="璇蜂繚鎸佹墜鎸佹満鍜屽崱鐗囦笉瑕佺Щ鍔�"
-                android:textColor="#666666"
-                android:textSize="14sp" />
-        </LinearLayout>
-    </androidx.cardview.widget.CardView>
-
-    <ScrollView
-        android:id="@+id/center_scroll"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:fillViewport="true"
-        android:scrollbars="none"
-        android:visibility="gone"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/titleBar">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical"
-            android:paddingBottom="16dp"
-            android:paddingLeft="16dp"
-            android:paddingRight="16dp"
-            android:paddingTop="10dp">
-
-            <androidx.cardview.widget.CardView
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginBottom="10dp"
-                app:cardCornerRadius="8dp"
-                app:cardElevation="2dp">
-
-                <LinearLayout
-                    android:id="@+id/center_data"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:orientation="vertical"
-                    android:padding="16dp">
-
-                    <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginBottom="10dp"
-                        android:text="鍩烘湰淇℃伅"
-                        android:textColor="#333333"
-                        android:textSize="18sp"
-                        android:textStyle="bold" />
-
-                    <LinearLayout
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginBottom="6dp"
-                        android:gravity="center_vertical"
-                        android:orientation="horizontal">
-
-                        <TextView
-                            android:layout_width="105dp"
-                            android:layout_height="wrap_content"
-                            android:text="鍗″彿锛�"
-                            android:textColor="#666666"
-                            android:textSize="@dimen/new_card_size" />
-
-                        <TextView
-                            android:id="@+id/newCard_arerNumber"
-                            android:layout_width="match_parent"
-                            android:layout_height="wrap_content"
-                            android:layout_marginStart="8dp"
-                            android:textColor="#333333"
-                            android:textSize="@dimen/new_card_size" />
-                    </LinearLayout>
-
-                    <LinearLayout
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginBottom="6dp"
-                        android:gravity="center_vertical"
-                        android:orientation="horizontal">
-
-                        <TextView
-                            android:layout_width="105dp"
-                            android:layout_height="wrap_content"
-                            android:text="濮撳悕锛�"
-                            android:textColor="#666666"
-                            android:textSize="@dimen/new_card_size" />
-
-                        <TextView
-                            android:id="@+id/newCard_userName"
-                            android:layout_width="match_parent"
-                            android:layout_height="wrap_content"
-                            android:layout_marginStart="8dp"
-                            android:textColor="#333333"
-                            android:textSize="@dimen/new_card_size" />
-                    </LinearLayout>
-
-                    <LinearLayout
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginBottom="6dp"
-                        android:gravity="center_vertical"
-                        android:orientation="horizontal">
-
-                        <TextView
-                            android:layout_width="105dp"
-                            android:layout_height="wrap_content"
-                            android:text="韬唤璇佸彿锛�"
-                            android:textColor="#666666"
-                            android:textSize="@dimen/new_card_size" />
-
-                        <TextView
-                            android:id="@+id/newCard_idCard"
-                            android:layout_width="match_parent"
-                            android:layout_height="wrap_content"
-                            android:layout_marginStart="8dp"
-                            android:textColor="#333333"
-                            android:textSize="@dimen/new_card_size" />
-                    </LinearLayout>
-
-                    <LinearLayout
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginBottom="5dp"
-                        android:gravity="center_vertical"
-                        android:orientation="horizontal">
-
-                        <TextView
-                            android:layout_width="105dp"
-                            android:layout_height="wrap_content"
-                            android:text="鍐滄埛缂栧彿锛�"
-                            android:textColor="#666666"
-                            android:textSize="@dimen/new_card_size" />
-
-                        <TextView
-                            android:id="@+id/newCard_farmerCode"
-                            android:layout_width="match_parent"
-                            android:layout_height="wrap_content"
-                            android:layout_marginStart="8dp"
-                            android:textColor="#333333"
-                            android:textSize="@dimen/new_card_size" />
-                    </LinearLayout>
-                </LinearLayout>
-            </androidx.cardview.widget.CardView>
-
-            <androidx.cardview.widget.CardView
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginBottom="10dp"
-                app:cardCornerRadius="8dp"
-                app:cardElevation="2dp">
-
-                <LinearLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:orientation="vertical"
-                    android:padding="16dp">
-
-                    <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginBottom="10dp"
-                        android:text="璐圭敤淇℃伅"
-                        android:textColor="#333333"
-                        android:textSize="18sp"
-                        android:textStyle="bold" />
-
-                    <LinearLayout
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginBottom="12dp"
-                        android:gravity="center_vertical"
-                        android:orientation="horizontal">
-
-                        <TextView
-                            android:layout_width="105dp"
-                            android:layout_height="wrap_content"
-                            android:text="鍏呭�奸噾棰濓細"
-                            android:textColor="#666666"
-                            android:textSize="@dimen/new_card_size" />
-
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="wrap_content"
-                            android:background="@drawable/edit_text_bg_selector"
-                            android:orientation="horizontal"
-                            android:gravity="center_vertical"
-                            android:paddingStart="10dp"
-                            android:paddingEnd="10dp"
-                            android:paddingTop="8dp"
-                            android:paddingBottom="8dp">
-
-                            <EditText
-                                android:id="@+id/newCard_rechargeAmount"
-                                android:layout_width="0dp"
-                                android:layout_weight="1"
-                                android:layout_height="wrap_content"
-                                android:background="@null"
-                                android:hint="璇疯緭鍏ュ厖鍊奸噾棰�(閫夊~)"
-                                android:inputType="numberDecimal"
-                                android:textColor="#333333"
-                                android:textColorHint="#BBBBBB"
-                                android:textSize="@dimen/new_card_size" />
-
-                            <TextView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:text="鍏�"
-                                android:textColor="#666666"
-                                android:textSize="@dimen/new_card_size" />
-                        </LinearLayout>
-                    </LinearLayout>
-
-                    <LinearLayout
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginBottom="12dp"
-                        android:gravity="center_vertical"
-                        android:orientation="horizontal">
-
-                        <TextView
-                            android:layout_width="105dp"
-                            android:layout_height="wrap_content"
-                            android:text="宸ユ湰璐癸細"
-                            android:textColor="#666666"
-                            android:textSize="@dimen/new_card_size" />
-
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="wrap_content"
-                            android:background="@drawable/edit_text_bg_selector"
-                            android:orientation="horizontal"
-                            android:gravity="center_vertical"
-                            android:paddingStart="10dp"
-                            android:paddingEnd="10dp"
-                            android:paddingTop="8dp"
-                            android:paddingBottom="8dp">
-
-                            <EditText
-                                android:id="@+id/newCard_cardFee"
-                                android:layout_width="0dp"
-                                android:layout_weight="1"
-                                android:layout_height="wrap_content"
-                                android:background="@null"
-                                android:hint="璇疯緭鍏ュ伐鏈垂(閫夊~)"
-                                android:inputType="numberDecimal"
-                                android:textColor="#333333"
-                                android:textColorHint="#BBBBBB"
-                                android:textSize="@dimen/new_card_size" />
-
-                            <TextView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:text="鍏�"
-                                android:textColor="#666666"
-                                android:textSize="@dimen/new_card_size" />
-                        </LinearLayout>
-                    </LinearLayout>
-
-                    <LinearLayout
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginBottom="5dp"
-                        android:gravity="center_vertical"
-                        android:orientation="horizontal">
-
-                        <TextView
-                            android:layout_width="105dp"
-                            android:layout_height="wrap_content"
-                            android:text="澶囨敞锛�"
-                            android:textColor="#666666"
-                            android:textSize="@dimen/new_card_size" />
-
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="wrap_content"
-                            android:background="@drawable/edit_text_bg_selector"
-                            android:orientation="vertical"
-                            android:paddingStart="10dp"
-                            android:paddingEnd="10dp"
-                            android:paddingTop="8dp"
-                            android:paddingBottom="8dp">
-
-                            <EditText
-                                android:id="@+id/newCard_remark"
-                                android:layout_width="match_parent"
-                                android:layout_height="wrap_content"
-                                android:background="@null"
-                                android:hint="璇疯緭鍏ュ娉�(閫夊~)"
-                                android:textColor="#333333"
-                                android:textColorHint="#BBBBBB"
-                                android:textSize="@dimen/new_card_size" />
-                        </LinearLayout>
-                    </LinearLayout>
-                </LinearLayout>
-            </androidx.cardview.widget.CardView>
-
-            <androidx.cardview.widget.CardView
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                app:cardCornerRadius="8dp"
-                app:cardElevation="2dp">
-
-                <LinearLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:orientation="vertical"
-                    android:padding="16dp">
-
-                    <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginBottom="10dp"
-                        android:text="鏀粯鏂瑰紡"
-                        android:textColor="#333333"
-                        android:textSize="18sp"
-                        android:textStyle="bold" />
-
-                    <RadioGroup
-                        android:id="@+id/newCard_paymentMethod"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:orientation="horizontal">
-                        <!-- 鍔ㄦ�佹坊鍔燫adioButton锛岀Щ闄ゅ浐瀹氱殑RadioButton -->
-                    </RadioGroup>
-                </LinearLayout>
-            </androidx.cardview.widget.CardView>
-            <TextView
-                android:id="@+id/newCard_registBtn"
-                android:layout_width="match_parent"
-                android:layout_height="56dp"
-                android:layout_marginTop="15dp"
-                android:background="@color/bottom_color"
-                android:visibility="visible"
-                android:gravity="center"
-                android:text="纭寮�鍗�"
-                android:textColor="#FFFFFF"
-                android:textSize="16sp" />
-        </LinearLayout>
-    </ScrollView>
-
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/generallibrary/src/main/res/layout/activity_new_card_ge.xml b/generallibrary/src/main/res/layout/activity_new_card_ge.xml
index 43fe50f..c1c2477 100644
--- a/generallibrary/src/main/res/layout/activity_new_card_ge.xml
+++ b/generallibrary/src/main/res/layout/activity_new_card_ge.xml
@@ -1,9 +1,10 @@
 <?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:background="#F5F7FA">
+    android:background="@color/base_list_bg">
 
     <com.dayu.baselibrary.view.TitleBar
         android:id="@+id/titleBar"
@@ -11,31 +12,136 @@
         android:layout_height="@dimen/dimen_title_height"
         android:background="@color/title_bar_bg"
         android:elevation="4dp"
-        app:centerText="鏂板崱寮�鎴�"
-        app:leftImage="@mipmap/icon_back" />
+        app:centerText="鐢ㄦ埛寮�鍗�"
+        app:leftImage="@mipmap/icon_back"
+        tools:ignore="MissingConstraints" />
+
+    <androidx.cardview.widget.CardView
+        android:id="@+id/nfcContainer"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_marginStart="16dp"
+        android:layout_marginTop="24dp"
+        android:layout_marginEnd="16dp"
+        android:layout_marginBottom="24dp"
+        android:visibility="visible"
+        app:cardBackgroundColor="@android:color/white"
+        app:cardCornerRadius="12dp"
+        app:cardElevation="4dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/titleBar">
+
+        <FrameLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:gravity="center"
+                android:orientation="vertical"
+                android:padding="16dp">
+
+                <TextView
+                    android:id="@+id/textView"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:gravity="center"
+                    android:text="璇峰皢鏂板崱璐村湪璁惧涓婅繘琛岃鍗�"
+                    android:textColor="#333333"
+                    android:textSize="18sp"
+                    android:textStyle="bold" />
+
+                <TextView
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:gravity="center"
+                    android:text="灏嗚繘琛屽垵濮嬪寲鍗$墖\n鑰楁椂杈冮暱璇蜂笉瑕佺Щ鍔ㄥ崱鐗�"
+                    android:textColor="@color/base_blue_bg"
+                    android:textSize="18sp"
+                    android:layout_marginTop="20dp"
+                    android:textStyle="bold" />
+
+                <ImageView
+                    android:id="@+id/nfcImageView"
+                    android:layout_width="200dp"
+                    android:layout_height="200dp"
+                    android:layout_marginTop="24dp"
+                    android:scaleType="fitCenter"
+                    android:src="@mipmap/nfc_write" />
+
+                <TextView
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="16dp"
+                    android:gravity="center"
+                    android:text="璇蜂繚鎸佹墜鎸佹満鍜屽崱鐗囦笉瑕佺Щ鍔�"
+                    android:textColor="#666666"
+                    android:textSize="14sp" />
+            </LinearLayout>
+
+            <RelativeLayout
+                android:id="@+id/loadingContainer"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:background="#80000000"
+                android:visibility="gone">
+
+                <com.pnikosis.materialishprogress.ProgressWheel
+                    android:id="@+id/nfcProgressWheel"
+                    android:layout_width="100dp"
+                    android:layout_height="100dp"
+                    android:layout_centerInParent="true"
+                    app:matProg_barColor="@color/base_blue_bg"
+                    app:matProg_progressIndeterminate="true"
+                    app:matProg_barWidth="8dp"
+                    app:matProg_rimColor="#33000000"
+                    app:matProg_rimWidth="8dp"
+                    app:matProg_spinSpeed="0.5"/>
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_below="@id/nfcProgressWheel"
+                    android:layout_centerHorizontal="true"
+                    android:layout_marginTop="12dp"
+                    android:text="姝e湪澶勭悊NFC鍗$墖..."
+                    android:textColor="#FFFFFF"
+                    android:textSize="16sp"/>
+            </RelativeLayout>
+        </FrameLayout>
+    </androidx.cardview.widget.CardView>
 
     <ScrollView
+        android:id="@+id/center_scroll"
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layout_above="@+id/newCard_registBtn"
-        android:layout_below="@+id/titleBar"
+        android:layout_height="0dp"
         android:fillViewport="true"
-        android:scrollbars="none">
+        android:scrollbars="none"
+        android:visibility="gone"
+        app:layout_constraintBottom_toTopOf="@+id/newCard_registBtn"
+        app:layout_constraintTop_toBottomOf="@+id/titleBar">
 
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:orientation="vertical"
-            android:padding="16dp">
+            android:paddingBottom="16dp"
+            android:paddingLeft="16dp"
+            android:paddingRight="16dp"
+            android:paddingTop="10dp">
 
             <androidx.cardview.widget.CardView
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_marginBottom="16dp"
+                android:layout_marginBottom="10dp"
                 app:cardCornerRadius="8dp"
                 app:cardElevation="2dp">
 
                 <LinearLayout
+                    android:id="@+id/center_data"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:orientation="vertical"
@@ -44,7 +150,7 @@
                     <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:layout_marginBottom="16dp"
+                        android:layout_marginBottom="10dp"
                         android:text="鍩烘湰淇℃伅"
                         android:textColor="#333333"
                         android:textSize="18sp"
@@ -53,14 +159,14 @@
                     <LinearLayout
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:layout_marginBottom="16dp"
+                        android:layout_marginBottom="6dp"
                         android:gravity="center_vertical"
                         android:orientation="horizontal">
 
                         <TextView
-                            android:layout_width="wrap_content"
+                            android:layout_width="105dp"
                             android:layout_height="wrap_content"
-                            android:text="@string/eq_no"
+                            android:text="鍗″彿锛�"
                             android:textColor="#666666"
                             android:textSize="@dimen/new_card_size" />
 
@@ -69,7 +175,6 @@
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content"
                             android:layout_marginStart="8dp"
-                            android:inputType="number"
                             android:textColor="#333333"
                             android:textSize="@dimen/new_card_size" />
                     </LinearLayout>
@@ -77,94 +182,78 @@
                     <LinearLayout
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:layout_marginBottom="16dp"
+                        android:layout_marginBottom="6dp"
                         android:gravity="center_vertical"
                         android:orientation="horizontal">
 
                         <TextView
-                            android:layout_width="80dp"
+                            android:layout_width="105dp"
                             android:layout_height="wrap_content"
-                            android:text="濮撳悕"
+                            android:text="濮撳悕锛�"
                             android:textColor="#666666"
                             android:textSize="@dimen/new_card_size" />
 
-                        <LinearLayout
-                            android:layout_width="0dp"
+                        <TextView
+                            android:id="@+id/newCard_userName"
+                            android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:layout_weight="1"
-                            android:background="#FFFFFF"
-                            android:orientation="vertical">
-
-                            <EditText
-                                android:id="@+id/newCard_name"
-                                android:layout_width="match_parent"
-                                android:layout_height="wrap_content"
-                                android:background="@null"
-                                android:hint="璇疯緭鍏ュ鍚�"
-                                android:inputType="textPersonName"
-                                android:padding="12dp"
-                                android:textSize="@dimen/new_card_size" />
-                        </LinearLayout>
-
-                        <ImageView
-                            android:id="@+id/newCard_scanBtn"
-                            android:layout_width="45dp"
-                            android:layout_height="45dp"
-                            android:background="?attr/selectableItemBackgroundBorderless"
-                            android:padding="10dp"
-                            android:src="@mipmap/icon_scan"
-                             />
+                            android:layout_marginStart="8dp"
+                            android:textColor="#333333"
+                            android:textSize="@dimen/new_card_size" />
                     </LinearLayout>
 
                     <LinearLayout
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:layout_marginBottom="16dp"
+                        android:layout_marginBottom="6dp"
                         android:gravity="center_vertical"
                         android:orientation="horizontal">
 
                         <TextView
-                            android:layout_width="80dp"
+                            android:layout_width="105dp"
                             android:layout_height="wrap_content"
-                            android:text="韬唤璇佸彿"
+                            android:text="韬唤璇佸彿锛�"
                             android:textColor="#666666"
                             android:textSize="@dimen/new_card_size" />
 
-                        <LinearLayout
+                        <TextView
+                            android:id="@+id/newCard_idCard"
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:background="#FFFFFF"
-                            android:orientation="vertical">
-
-                            <EditText
-                                android:id="@+id/newCard_id"
-                                android:layout_width="match_parent"
-                                android:layout_height="wrap_content"
-                                android:background="@null"
-                                android:digits="0123456789Xx"
-                                android:hint="璇疯緭鍏ヨ韩浠借瘉鍙�"
-                                android:inputType="text"
-                                android:maxLength="18"
-                                android:padding="12dp"
-                                android:textSize="@dimen/new_card_size" />
-                        </LinearLayout>
+                            android:layout_marginStart="8dp"
+                            android:textColor="#333333"
+                            android:textSize="@dimen/new_card_size" />
                     </LinearLayout>
 
-                    <TextView
-                        android:id="@+id/newCard_idTip"
-                        android:layout_width="wrap_content"
+                    <LinearLayout
+                        android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:layout_marginBottom="16dp"
-                        android:text="鎵弿鍚庤鏍稿韬唤淇℃伅鏃犺"
-                        android:textColor="#FF4500"
-                        android:visibility="gone" />
+                        android:layout_marginBottom="5dp"
+                        android:gravity="center_vertical"
+                        android:orientation="horizontal">
+
+                        <TextView
+                            android:layout_width="105dp"
+                            android:layout_height="wrap_content"
+                            android:text="鍐滄埛缂栧彿锛�"
+                            android:textColor="#666666"
+                            android:textSize="@dimen/new_card_size" />
+
+                        <TextView
+                            android:id="@+id/newCard_farmerCode"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginStart="8dp"
+                            android:textColor="#333333"
+                            android:textSize="@dimen/new_card_size" />
+                    </LinearLayout>
                 </LinearLayout>
             </androidx.cardview.widget.CardView>
 
             <androidx.cardview.widget.CardView
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_marginBottom="16dp"
+                android:layout_marginBottom="10dp"
                 app:cardCornerRadius="8dp"
                 app:cardElevation="2dp">
 
@@ -177,135 +266,187 @@
                     <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:layout_marginBottom="16dp"
-                        android:text="鑱旂郴鏂瑰紡"
-                        android:textColor="#333333"
-                        android:textSize="18sp"
-                        android:textStyle="bold" />
-
-                    <LinearLayout
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginBottom="16dp"
-                        android:gravity="center_vertical"
-                        android:orientation="horizontal">
-
-                        <TextView
-                            android:layout_width="80dp"
-                            android:layout_height="wrap_content"
-                            android:text="鐢佃瘽"
-                            android:textColor="#666666"
-                            android:textSize="@dimen/new_card_size" />
-
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="wrap_content"
-                            android:background="#FFFFFF"
-                            android:orientation="vertical">
-
-                            <EditText
-                                android:id="@+id/newCard_phone"
-                                android:layout_width="match_parent"
-                                android:layout_height="wrap_content"
-                                android:background="@null"
-                                android:hint="璇疯緭鍏ユ墜鏈哄彿鐮�"
-                                android:inputType="phone"
-                                android:maxLength="11"
-                                android:padding="12dp"
-                                android:textSize="@dimen/new_card_size" />
-                        </LinearLayout>
-                    </LinearLayout>
-                </LinearLayout>
-            </androidx.cardview.widget.CardView>
-
-            <androidx.cardview.widget.CardView
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                app:cardCornerRadius="8dp"
-                app:cardElevation="2dp">
-
-                <LinearLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:orientation="vertical"
-                    android:padding="16dp">
-
-                    <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginBottom="16dp"
+                        android:layout_marginBottom="10dp"
                         android:text="璐圭敤淇℃伅"
                         android:textColor="#333333"
                         android:textSize="18sp"
                         android:textStyle="bold" />
-
                     <LinearLayout
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
+                        android:layout_marginBottom="12dp"
                         android:gravity="center_vertical"
                         android:orientation="horizontal">
 
                         <TextView
-                            android:layout_width="80dp"
+                            android:layout_width="105dp"
                             android:layout_height="wrap_content"
-                            android:text="宸ユ湰璐�(鍏�)"
+                            android:text="宸ユ湰璐癸細"
                             android:textColor="#666666"
                             android:textSize="@dimen/new_card_size" />
 
                         <LinearLayout
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:background="#FFFFFF"
-                            android:orientation="vertical">
+                            android:background="@drawable/edit_text_bg_selector"
+                            android:orientation="horizontal"
+                            android:gravity="center_vertical"
+                            android:paddingStart="10dp"
+                            android:paddingEnd="10dp"
+                            android:paddingTop="8dp"
+                            android:paddingBottom="8dp">
 
                             <EditText
-                                android:id="@+id/newCard_morny"
+                                android:id="@+id/newCard_cardFee"
+                                android:layout_width="0dp"
+                                android:layout_weight="1"
+                                android:layout_height="wrap_content"
+                                android:background="@null"
+                                android:hint="璇疯緭鍏ュ伐鏈垂(閫夊~)"
+                                android:inputType="numberDecimal"
+                                android:textColor="#333333"
+                                android:textColorHint="#BBBBBB"
+                                android:textSize="@dimen/new_card_size" />
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:text="鍏�"
+                                android:textColor="#666666"
+                                android:textSize="@dimen/new_card_size" />
+                        </LinearLayout>
+                    </LinearLayout>
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginBottom="12dp"
+                        android:gravity="center_vertical"
+                        android:orientation="horizontal">
+
+                        <TextView
+                            android:layout_width="105dp"
+                            android:layout_height="wrap_content"
+                            android:text="鍏呭�奸噾棰濓細"
+                            android:textColor="#666666"
+                            android:textSize="@dimen/new_card_size" />
+
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:background="@drawable/edit_text_bg_selector"
+                            android:orientation="horizontal"
+                            android:gravity="center_vertical"
+                            android:paddingStart="10dp"
+                            android:paddingEnd="10dp"
+                            android:paddingTop="8dp"
+                            android:paddingBottom="8dp">
+
+                            <EditText
+                                android:id="@+id/newCard_rechargeAmount"
+                                android:layout_width="0dp"
+                                android:layout_weight="1"
+                                android:layout_height="wrap_content"
+                                android:background="@null"
+                                android:hint="璇疯緭鍏ュ厖鍊奸噾棰�(閫夊~)"
+                                android:inputType="numberDecimal"
+                                android:textColor="#333333"
+                                android:textColorHint="#BBBBBB"
+                                android:textSize="@dimen/new_card_size" />
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:text="鍏�"
+                                android:textColor="#666666"
+                                android:textSize="@dimen/new_card_size" />
+                        </LinearLayout>
+                    </LinearLayout>
+
+
+
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginBottom="5dp"
+                        android:gravity="center_vertical"
+                        android:orientation="horizontal">
+
+                        <TextView
+                            android:layout_width="105dp"
+                            android:layout_height="wrap_content"
+                            android:text="澶囨敞锛�"
+                            android:textColor="#666666"
+                            android:textSize="@dimen/new_card_size" />
+
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:background="@drawable/edit_text_bg_selector"
+                            android:orientation="vertical"
+                            android:paddingStart="10dp"
+                            android:paddingEnd="10dp"
+                            android:paddingTop="8dp"
+                            android:paddingBottom="8dp">
+
+                            <EditText
+                                android:id="@+id/newCard_remark"
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
                                 android:background="@null"
-                                android:hint="璇疯緭鍏ュ伐鏈垂"
-                                android:inputType="numberDecimal"
-                                android:padding="12dp"
+                                android:hint="璇疯緭鍏ュ娉�(閫夊~)"
+                                android:textColor="#333333"
+                                android:textColorHint="#BBBBBB"
                                 android:textSize="@dimen/new_card_size" />
                         </LinearLayout>
                     </LinearLayout>
                 </LinearLayout>
             </androidx.cardview.widget.CardView>
 
-            <!-- 闅愯棌鐨勬按鏉冨唴姘撮噺閮ㄥ垎 -->
-            <LinearLayout
+            <androidx.cardview.widget.CardView
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:visibility="gone">
+                app:cardCornerRadius="8dp"
+                app:cardElevation="2dp">
 
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="姘存潈鍐呮按閲忥細"
-                    android:textSize="@dimen/new_card_size" />
-
-                <EditText
-                    android:id="@+id/newCard_water"
+                <LinearLayout
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:inputType="number"
-                    android:maxLength="5"
-                    android:textSize="@dimen/new_card_size" />
-            </LinearLayout>
+                    android:orientation="vertical"
+                    android:padding="16dp">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginBottom="10dp"
+                        android:text="鏀粯鏂瑰紡"
+                        android:textColor="#333333"
+                        android:textSize="18sp"
+                        android:textStyle="bold" />
+
+                    <RadioGroup
+                        android:id="@+id/newCard_paymentMethod"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+                        <!-- 鍔ㄦ�佹坊鍔燫adioButton锛岀Щ闄ゅ浐瀹氱殑RadioButton -->
+                    </RadioGroup>
+                </LinearLayout>
+            </androidx.cardview.widget.CardView>
         </LinearLayout>
     </ScrollView>
-
+    
     <TextView
         android:id="@+id/newCard_registBtn"
         android:layout_width="match_parent"
         android:layout_height="56dp"
-        android:layout_alignParentBottom="true"
-        android:layout_marginStart="16dp"
-        android:layout_marginEnd="16dp"
-        android:layout_marginBottom="16dp"
-        android:background="#4285F4"
+        android:background="@color/bottom_color"
         android:gravity="center"
-        android:text="纭寮�鎴�"
+        android:text="纭寮�鍗�"
         android:textColor="#FFFFFF"
-        android:textSize="16sp" />
-</RelativeLayout>
\ No newline at end of file
+        android:textSize="16sp"
+        android:visibility="gone"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallBeatIndicator.java b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallBeatIndicator.java
index a8a6e15..ea67842 100644
--- a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallBeatIndicator.java
+++ b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallBeatIndicator.java
@@ -1,9 +1,9 @@
 package com.wang.avi.indicators;
 
+import android.animation.ValueAnimator;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 
-import android.animation.ValueAnimator;
 import com.wang.avi.Indicator;
 
 import java.util.ArrayList;
diff --git a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallClipRotateIndicator.java b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallClipRotateIndicator.java
index 5d65321..be07563 100644
--- a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallClipRotateIndicator.java
+++ b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallClipRotateIndicator.java
@@ -1,10 +1,10 @@
 package com.wang.avi.indicators;
 
+import android.animation.ValueAnimator;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.RectF;
 
-import android.animation.ValueAnimator;
 import com.wang.avi.Indicator;
 
 import java.util.ArrayList;
diff --git a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallClipRotateMultipleIndicator.java b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallClipRotateMultipleIndicator.java
index 2c59506..a1512cd 100644
--- a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallClipRotateMultipleIndicator.java
+++ b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallClipRotateMultipleIndicator.java
@@ -1,10 +1,10 @@
 package com.wang.avi.indicators;
 
+import android.animation.ValueAnimator;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.RectF;
 
-import android.animation.ValueAnimator;
 import com.wang.avi.Indicator;
 
 import java.util.ArrayList;
diff --git a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallClipRotatePulseIndicator.java b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallClipRotatePulseIndicator.java
index 3687ed3..94a1c40 100644
--- a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallClipRotatePulseIndicator.java
+++ b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallClipRotatePulseIndicator.java
@@ -1,10 +1,10 @@
 package com.wang.avi.indicators;
 
+import android.animation.ValueAnimator;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.RectF;
 
-import android.animation.ValueAnimator;
 import com.wang.avi.Indicator;
 
 import java.util.ArrayList;
diff --git a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallGridBeatIndicator.java b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallGridBeatIndicator.java
index c115c6a..2bd3222 100644
--- a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallGridBeatIndicator.java
+++ b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallGridBeatIndicator.java
@@ -1,9 +1,9 @@
 package com.wang.avi.indicators;
 
+import android.animation.ValueAnimator;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 
-import android.animation.ValueAnimator;
 import com.wang.avi.Indicator;
 
 import java.util.ArrayList;
diff --git a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallGridPulseIndicator.java b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallGridPulseIndicator.java
index e0f043f..e966173 100644
--- a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallGridPulseIndicator.java
+++ b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallGridPulseIndicator.java
@@ -1,9 +1,9 @@
 package com.wang.avi.indicators;
 
+import android.animation.ValueAnimator;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 
-import android.animation.ValueAnimator;
 import com.wang.avi.Indicator;
 
 import java.util.ArrayList;
diff --git a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallPulseIndicator.java b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallPulseIndicator.java
index eef80b0..f827a79 100644
--- a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallPulseIndicator.java
+++ b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallPulseIndicator.java
@@ -1,9 +1,9 @@
 package com.wang.avi.indicators;
 
+import android.animation.ValueAnimator;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 
-import android.animation.ValueAnimator;
 import com.wang.avi.Indicator;
 
 import java.util.ArrayList;
diff --git a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallPulseSyncIndicator.java b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallPulseSyncIndicator.java
index 862f92d..78a69a7 100644
--- a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallPulseSyncIndicator.java
+++ b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallPulseSyncIndicator.java
@@ -1,9 +1,9 @@
 package com.wang.avi.indicators;
 
+import android.animation.ValueAnimator;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 
-import android.animation.ValueAnimator;
 import com.wang.avi.Indicator;
 
 import java.util.ArrayList;
diff --git a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallScaleIndicator.java b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallScaleIndicator.java
index 3e52f7c..1e055ce 100644
--- a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallScaleIndicator.java
+++ b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallScaleIndicator.java
@@ -1,10 +1,10 @@
 package com.wang.avi.indicators;
 
+import android.animation.ValueAnimator;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.view.animation.LinearInterpolator;
 
-import android.animation.ValueAnimator;
 import com.wang.avi.Indicator;
 
 import java.util.ArrayList;
diff --git a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallScaleMultipleIndicator.java b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallScaleMultipleIndicator.java
index 43d4aaa..8507a67 100644
--- a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallScaleMultipleIndicator.java
+++ b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallScaleMultipleIndicator.java
@@ -1,10 +1,10 @@
 package com.wang.avi.indicators;
 
+import android.animation.ValueAnimator;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.view.animation.LinearInterpolator;
 
-import android.animation.ValueAnimator;
 import com.wang.avi.Indicator;
 
 import java.util.ArrayList;
diff --git a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallScaleRippleIndicator.java b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallScaleRippleIndicator.java
index d791f71..c3d8172 100644
--- a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallScaleRippleIndicator.java
+++ b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallScaleRippleIndicator.java
@@ -1,10 +1,9 @@
 package com.wang.avi.indicators;
 
+import android.animation.ValueAnimator;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.view.animation.LinearInterpolator;
-
-import android.animation.ValueAnimator;
 
 import java.util.ArrayList;
 
diff --git a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallScaleRippleMultipleIndicator.java b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallScaleRippleMultipleIndicator.java
index 5dc132b..1aa0a81 100644
--- a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallScaleRippleMultipleIndicator.java
+++ b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallScaleRippleMultipleIndicator.java
@@ -1,10 +1,9 @@
 package com.wang.avi.indicators;
 
+import android.animation.ValueAnimator;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.view.animation.LinearInterpolator;
-
-import android.animation.ValueAnimator;
 
 import java.util.ArrayList;
 
diff --git a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallSpinFadeLoaderIndicator.java b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallSpinFadeLoaderIndicator.java
index d93fbb3..3ccfef0 100644
--- a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallSpinFadeLoaderIndicator.java
+++ b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallSpinFadeLoaderIndicator.java
@@ -1,9 +1,9 @@
 package com.wang.avi.indicators;
 
+import android.animation.ValueAnimator;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 
-import android.animation.ValueAnimator;
 import com.wang.avi.Indicator;
 
 import java.util.ArrayList;
diff --git a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallTrianglePathIndicator.java b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallTrianglePathIndicator.java
index 1a3a9ba..28a60e2 100644
--- a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallTrianglePathIndicator.java
+++ b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallTrianglePathIndicator.java
@@ -1,10 +1,10 @@
 package com.wang.avi.indicators;
 
+import android.animation.ValueAnimator;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.view.animation.LinearInterpolator;
 
-import android.animation.ValueAnimator;
 import com.wang.avi.Indicator;
 
 import java.util.ArrayList;
diff --git a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallZigZagDeflectIndicator.java b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallZigZagDeflectIndicator.java
index 93aec2e..7550a82 100644
--- a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallZigZagDeflectIndicator.java
+++ b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallZigZagDeflectIndicator.java
@@ -1,8 +1,9 @@
 package com.wang.avi.indicators;
 
 
-import android.view.animation.LinearInterpolator;
 import android.animation.ValueAnimator;
+import android.view.animation.LinearInterpolator;
+
 import java.util.ArrayList;
 
 /**
diff --git a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallZigZagIndicator.java b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallZigZagIndicator.java
index d01c8ff..ff4427c 100644
--- a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallZigZagIndicator.java
+++ b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/BallZigZagIndicator.java
@@ -1,10 +1,10 @@
 package com.wang.avi.indicators;
 
+import android.animation.ValueAnimator;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.view.animation.LinearInterpolator;
 
-import android.animation.ValueAnimator;
 import com.wang.avi.Indicator;
 
 import java.util.ArrayList;
diff --git a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/CubeTransitionIndicator.java b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/CubeTransitionIndicator.java
index 181024f..9fa4204 100644
--- a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/CubeTransitionIndicator.java
+++ b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/CubeTransitionIndicator.java
@@ -1,11 +1,11 @@
 package com.wang.avi.indicators;
 
+import android.animation.ValueAnimator;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.RectF;
 import android.view.animation.LinearInterpolator;
 
-import android.animation.ValueAnimator;
 import com.wang.avi.Indicator;
 
 import java.util.ArrayList;
diff --git a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/LineScaleIndicator.java b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/LineScaleIndicator.java
index 83bfe86..c51afef 100644
--- a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/LineScaleIndicator.java
+++ b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/LineScaleIndicator.java
@@ -1,10 +1,10 @@
 package com.wang.avi.indicators;
 
+import android.animation.ValueAnimator;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.RectF;
 
-import android.animation.ValueAnimator;
 import com.wang.avi.Indicator;
 
 import java.util.ArrayList;
diff --git a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/LineScalePartyIndicator.java b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/LineScalePartyIndicator.java
index b316e23..31ee441 100644
--- a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/LineScalePartyIndicator.java
+++ b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/LineScalePartyIndicator.java
@@ -1,10 +1,10 @@
 package com.wang.avi.indicators;
 
+import android.animation.ValueAnimator;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.RectF;
 
-import android.animation.ValueAnimator;
 import com.wang.avi.Indicator;
 
 import java.util.ArrayList;
diff --git a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/PacmanIndicator.java b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/PacmanIndicator.java
index 9a3a2e6..1090abb 100644
--- a/pickerviewlibrary/src/main/java/com/wang/avi/indicators/PacmanIndicator.java
+++ b/pickerviewlibrary/src/main/java/com/wang/avi/indicators/PacmanIndicator.java
@@ -1,11 +1,11 @@
 package com.wang.avi.indicators;
 
+import android.animation.ValueAnimator;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.RectF;
 import android.view.animation.LinearInterpolator;
 
-import android.animation.ValueAnimator;
 import com.wang.avi.Indicator;
 
 import java.util.ArrayList;

--
Gitblit v1.8.0