Ver Fonte

金币转账

honghengqiang há 2 anos atrás
pai
commit
7180222054
39 ficheiros alterados com 1463 adições e 7 exclusões
  1. 10 1
      .idea/misc.xml
  2. 2 0
      baseswago/src/main/java/com/swago/baseswago/constant/ARouteConstant.kt
  3. 16 0
      baseswago/src/main/java/com/swago/baseswago/inter/UserApi.kt
  4. 7 0
      baseswago/src/main/java/com/swago/baseswago/model/RecentlyTransferNameModel.kt
  5. 19 0
      baseswago/src/main/java/com/swago/baseswago/model/TransferDetailModel.kt
  6. 13 0
      baseswago/src/main/java/com/swago/baseswago/model/UserInfoModel.java
  7. 5 0
      baseswago/src/main/res/drawable/shape_50ff56b7_37.xml
  8. 5 0
      baseswago/src/main/res/drawable/shape_54d925_10.xml
  9. 19 0
      baseswago/src/main/res/values-ar/strings.xml
  10. 19 0
      baseswago/src/main/res/values-in/strings.xml
  11. 19 0
      baseswago/src/main/res/values-ms/strings.xml
  12. 19 0
      baseswago/src/main/res/values-zh/strings.xml
  13. 19 0
      baseswago/src/main/res/values/strings.xml
  14. 2 0
      home/src/main/java/com/swago/home/HomeActivity.kt
  15. 19 0
      home/src/main/java/com/swago/home/HomeFragment.kt
  16. 0 1
      home/src/main/java/com/swago/home/MessageFragment.kt
  17. 2 2
      home/src/main/java/com/swago/home/MineFragment.kt
  18. 12 2
      home/src/main/res/layout/fragment_home.xml
  19. BIN
      home/src/main/res/mipmap-xxhdpi/icon_coin_transfer.png
  20. 4 0
      user/src/main/AndroidManifest.xml
  21. 149 0
      user/src/main/java/com/swago/user/cointransfer/CoinTransferActivity.kt
  22. 20 0
      user/src/main/java/com/swago/user/cointransfer/RecentTransferAdapter.kt
  23. 70 0
      user/src/main/java/com/swago/user/cointransfer/RecentTransferDialog.kt
  24. 20 0
      user/src/main/java/com/swago/user/cointransfer/TransferDetailAdapter.kt
  25. 52 0
      user/src/main/java/com/swago/user/cointransfer/TransferDetailsActivity.kt
  26. 57 0
      user/src/main/java/com/swago/user/cointransfer/TransferSureDialog.kt
  27. 60 1
      user/src/main/java/com/swago/user/vm/ExchangeVm.kt
  28. 5 0
      user/src/main/res/drawable/selector_coin_click.xml
  29. 399 0
      user/src/main/res/layout/activity_transfer.xml
  30. 52 0
      user/src/main/res/layout/activity_transfer_details.xml
  31. 35 0
      user/src/main/res/layout/dialog_recent_transfer.xml
  32. 117 0
      user/src/main/res/layout/dialog_transfer_sure.xml
  33. 57 0
      user/src/main/res/layout/item_recent_transfer.xml
  34. 159 0
      user/src/main/res/layout/item_transfer_detail.xml
  35. BIN
      user/src/main/res/mipmap-xxhdpi/bg_transfer.webp
  36. BIN
      user/src/main/res/mipmap-xxhdpi/icon_arrow_down.png
  37. BIN
      user/src/main/res/mipmap-xxhdpi/icon_status_success.png
  38. BIN
      user/src/main/res/mipmap-xxhdpi/icon_transfer_avatar.png
  39. BIN
      user/src/main/res/mipmap-xxhdpi/icon_transfer_tip.png

+ 10 - 1
.idea/misc.xml

@@ -29,6 +29,8 @@
         <entry key="baseswago/src/main/res/drawable/shape_2f3043_37.xml" value="0.283" />
         <entry key="baseswago/src/main/res/drawable/shape_3d7fff_36.xml" value="0.2375" />
         <entry key="baseswago/src/main/res/drawable/shape_3d8aff_3d7fff_all_15.xml" value="0.2375" />
+        <entry key="baseswago/src/main/res/drawable/shape_50ff56b7_37.xml" value="0.238" />
+        <entry key="baseswago/src/main/res/drawable/shape_54d925_10.xml" value="0.238" />
         <entry key="baseswago/src/main/res/drawable/shape_80000000_20.xml" value="0.13229166666666667" />
         <entry key="baseswago/src/main/res/drawable/shape_80ff56b7_all_38.xml" value="0.213" />
         <entry key="baseswago/src/main/res/drawable/shape_9ffd88_5_stroke.xml" value="0.3145833333333333" />
@@ -101,7 +103,7 @@
         <entry key="home/src/main/res/layout/fragment_home.xml" value="0.25" />
         <entry key="home/src/main/res/layout/fragment_hot.xml" value="0.35" />
         <entry key="home/src/main/res/layout/fragment_message.xml" value="0.25" />
-        <entry key="home/src/main/res/layout/fragment_mine.xml" value="0.73017578125" />
+        <entry key="home/src/main/res/layout/fragment_mine.xml" value="0.4479695431472081" />
         <entry key="home/src/main/res/layout/fragment_moment.xml" value="0.25" />
         <entry key="home/src/main/res/layout/fragment_new.xml" value="0.35" />
         <entry key="home/src/main/res/layout/item_home.xml" value="0.3964984552008239" />
@@ -235,6 +237,7 @@
         <entry key="tuikit/src/main/res/layout/title_bar_layout.xml" value="0.3015625" />
         <entry key="tuikit/src/main/res/layout/view_dialog.xml" value="0.3776041666666667" />
         <entry key="user/src/main/res/drawable/progress_bar.xml" value="0.3333333333333333" />
+        <entry key="user/src/main/res/drawable/selector_coin_click.xml" value="0.238" />
         <entry key="user/src/main/res/drawable/shape_37393f_444652.xml" value="0.33177083333333335" />
         <entry key="user/src/main/res/drawable/shape_c3a165_ead6a7_top_10.xml" value="0.3333333333333333" />
         <entry key="user/src/main/res/drawable/shape_eff1f4.xml" value="0.4078125" />
@@ -255,10 +258,14 @@
         <entry key="user/src/main/res/layout/activity_setting.xml" value="0.36302083333333335" />
         <entry key="user/src/main/res/layout/activity_tab_black.xml" value="0.3619791666666667" />
         <entry key="user/src/main/res/layout/activity_task.xml" value="0.3776041666666667" />
+        <entry key="user/src/main/res/layout/activity_transfer.xml" value="0.33" />
+        <entry key="user/src/main/res/layout/activity_transfer_details.xml" value="0.31302083333333336" />
         <entry key="user/src/main/res/layout/activity_user_edit.xml" value="0.3638968481375358" />
         <entry key="user/src/main/res/layout/dialog_edit.xml" value="0.39166666666666666" />
         <entry key="user/src/main/res/layout/dialog_exchange.xml" value="0.3776041666666667" />
+        <entry key="user/src/main/res/layout/dialog_recent_transfer.xml" value="0.390625" />
         <entry key="user/src/main/res/layout/dialog_sex.xml" value="0.34057971014492755" />
+        <entry key="user/src/main/res/layout/dialog_transfer_sure.xml" value="0.390625" />
         <entry key="user/src/main/res/layout/fragment_anchor.xml" value="0.3015625" />
         <entry key="user/src/main/res/layout/fragment_anchor_level.xml" value="0.3171875" />
         <entry key="user/src/main/res/layout/fragment_black.xml" value="0.17603850050658562" />
@@ -274,9 +281,11 @@
         <entry key="user/src/main/res/layout/item_follow_fan.xml" value="0.39166666666666666" />
         <entry key="user/src/main/res/layout/item_letter.xml" value="0.3625" />
         <entry key="user/src/main/res/layout/item_level.xml" value="0.39166666666666666" />
+        <entry key="user/src/main/res/layout/item_recent_transfer.xml" value="0.390625" />
         <entry key="user/src/main/res/layout/item_recharge.xml" value="0.39166666666666666" />
         <entry key="user/src/main/res/layout/item_room_black.xml" value="0.36302083333333335" />
         <entry key="user/src/main/res/layout/item_task.xml" value="0.25" />
+        <entry key="user/src/main/res/layout/item_transfer_detail.xml" value="0.31197916666666664" />
         <entry key="user/src/main/res/layout/item_xing_zuo.xml" value="0.3020833333333333" />
         <entry key="user/src/main/res/layout/layout_list.xml" value="0.39166666666666666" />
       </map>

+ 2 - 0
baseswago/src/main/java/com/swago/baseswago/constant/ARouteConstant.kt

@@ -23,6 +23,8 @@ object ARouteConstant {
         const val blacklist = "$rootPath/TabBlackActivity"
         const val customService = "$rootPath/CustomServiceActivity"
         const val exchange = "$rootPath/DiamondCoinExchangeActivity"
+        const val coinTransfer = "$rootPath/CoinTransferActivity"
+        const val transferDetail = "$rootPath/TransferDetailsActivity"
     }
 
     object Home {

+ 16 - 0
baseswago/src/main/java/com/swago/baseswago/inter/UserApi.kt

@@ -116,4 +116,20 @@ interface UserApi {
                              @Field("user_id") user_id: String):ExchangeResult
 
 
+    //金币转账最近联系人接口
+    @POST("/v1/user/transfer/name/list")
+    suspend fun getRecentNameList():List<RecentlyTransferNameModel>
+
+    //金币转账接口
+    @FormUrlEncoded
+    @POST("/v1/user/transfer/coin")
+    suspend fun transferCoin(@Field("user_id")user_id:String,
+                             @Field("user_coins")user_coins:String,
+                             @Field("transfer_remark")transfer_remark:String):Any
+
+    //金币转账记录
+    @FormUrlEncoded
+    @POST("/v1/user/transfer/log/list")
+    suspend fun getTransferDetails(@Field("page")page:Int):TransDetailData
+
 }

+ 7 - 0
baseswago/src/main/java/com/swago/baseswago/model/RecentlyTransferNameModel.kt

@@ -0,0 +1,7 @@
+package com.swago.baseswago.model
+
+//最近转账用户
+data class RecentlyTransferNameModel(
+    val accept_user_id:String="",
+    val accept_user_name:String=""
+)

+ 19 - 0
baseswago/src/main/java/com/swago/baseswago/model/TransferDetailModel.kt

@@ -0,0 +1,19 @@
+package com.swago.baseswago.model
+
+
+data class TransDetailData(
+    val total_coins: String = "",//总转账金币
+    var list: List<TransferDetailModel>?
+)
+
+data class TransferDetailModel(
+    val id: String = "", //ID
+    val transfer_user_id: String = "",//转账用户ID
+    val transfer_user_name: String = "",//转账用户昵称
+    val accept_user_id: String = "",//接受用户ID
+    val accept_user_name: String = "",//接受用户昵称
+    val transfer_price: String = "0",//转账金币
+    val transfer_remark: String = "",//转账备注
+    val created_at: String = "",////转账时间
+    val updated_at: String = "",
+)

+ 13 - 0
baseswago/src/main/java/com/swago/baseswago/model/UserInfoModel.java

@@ -63,6 +63,11 @@ public class UserInfoModel {
      */
     private int is_official;
 
+    /**
+     *是否显示金币转账入口
+     */
+    private int is_transfer_coin;
+
 
 
 
@@ -297,4 +302,12 @@ public class UserInfoModel {
     public void setIs_official(int is_official) {
         this.is_official = is_official;
     }
+
+    public int getIs_transfer_coin() {
+        return is_transfer_coin;
+    }
+
+    public void setIs_transfer_coin(int is_transfer_coin) {
+        this.is_transfer_coin = is_transfer_coin;
+    }
 }

+ 5 - 0
baseswago/src/main/res/drawable/shape_50ff56b7_37.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#80FF56B7"/>
+    <corners android:radius="37dp"/>
+</shape>

+ 5 - 0
baseswago/src/main/res/drawable/shape_54d925_10.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#1F54D925"/>
+    <corners android:radius="10dp"/>
+</shape>

+ 19 - 0
baseswago/src/main/res/values-ar/strings.xml

@@ -188,4 +188,23 @@
     <string name="watcher_num">إجمالي المشاهدين:</string>
     <string name="agent">Agent</string>
     <string name="official">Official</string>
+    <string name="coin_transfer">金币转账</string>
+    <string name="transferor">Transferor</string>
+    <string name="recently">Recently</string>
+    <string name="please_enter_the_transferor_id">Please enter the transferor ID</string>
+    <string name="name_of_the_transferor">Name of the transferor:</string>
+    <string name="transfer_amount">Transfer amount</string>
+    <string name="please_enter_the_transfer_amount">Please enter the transfer amount</string>
+    <string name="common_amount">Common amount</string>
+    <string name="transfer_notes">Transfer notes</string>
+    <string name="transfer_accounts">Transfer accounts</string>
+    <string name="recent_transfers">Recent transfers</string>
+    <string name="transfer">Transfer</string>
+    <string name="not_less_than_not_more_than">Not less than 100000,not more than 10000000</string>
+    <string name="success">Success</string>
+    <string name="total_transfer_amount">Total transfer amount</string>
+    <string name="transfer_success">金币转账成功</string>
+    <string name="remarks_no_more_than_words">Remarks no more than 50 words</string>
+    <string name="coin_transfer_detail">金币转账详情</string>
+    <string name="transfer_time">Transfer time</string>
 </resources>

+ 19 - 0
baseswago/src/main/res/values-in/strings.xml

@@ -200,4 +200,23 @@
     <string name="watcher_num">Jumlah penonton:</string>
     <string name="agent">Agent</string>
     <string name="official">Official</string>
+    <string name="coin_transfer">金币转账</string>
+    <string name="transferor">Transferor</string>
+    <string name="recently">Recently</string>
+    <string name="please_enter_the_transferor_id">Please enter the transferor ID</string>
+    <string name="name_of_the_transferor">Name of the transferor:</string>
+    <string name="transfer_amount">Transfer amount</string>
+    <string name="please_enter_the_transfer_amount">Please enter the transfer amount</string>
+    <string name="common_amount">Common amount</string>
+    <string name="transfer_notes">Transfer notes</string>
+    <string name="transfer_accounts">Transfer accounts</string>
+    <string name="recent_transfers">Recent transfers</string>
+    <string name="transfer">Transfer</string>
+    <string name="not_less_than_not_more_than">Not less than 100000,not more than 10000000</string>
+    <string name="success">Success</string>
+    <string name="total_transfer_amount">Total transfer amount</string>
+    <string name="transfer_success">金币转账成功</string>
+    <string name="remarks_no_more_than_words">Remarks no more than 50 words</string>
+    <string name="coin_transfer_detail">金币转账详情</string>
+    <string name="transfer_time">Transfer time</string>
 </resources>

+ 19 - 0
baseswago/src/main/res/values-ms/strings.xml

@@ -199,4 +199,23 @@
     <string name="watcher_num">Total Viewers:</string>
     <string name="agent">Agent</string>
     <string name="official">Official</string>
+    <string name="coin_transfer">金币转账</string>
+    <string name="transferor">Transferor</string>
+    <string name="recently">Recently</string>
+    <string name="please_enter_the_transferor_id">Please enter the transferor ID</string>
+    <string name="name_of_the_transferor">Name of the transferor:</string>
+    <string name="transfer_amount">Transfer amount</string>
+    <string name="please_enter_the_transfer_amount">Please enter the transfer amount</string>
+    <string name="common_amount">Common amount</string>
+    <string name="transfer_notes">Transfer notes</string>
+    <string name="transfer_accounts">Transfer accounts</string>
+    <string name="recent_transfers">Recent transfers</string>
+    <string name="transfer">Transfer</string>
+    <string name="not_less_than_not_more_than">Not less than 100000,not more than 10000000</string>
+    <string name="success">Success</string>
+    <string name="total_transfer_amount">Total transfer amount</string>
+    <string name="transfer_success">金币转账成功</string>
+    <string name="remarks_no_more_than_words">Remarks no more than 50 words</string>
+    <string name="coin_transfer_detail">金币转账详情</string>
+    <string name="transfer_time">Transfer time</string>
 </resources>

+ 19 - 0
baseswago/src/main/res/values-zh/strings.xml

@@ -188,4 +188,23 @@
     <string name="watcher_num">总计观看人数:</string>
     <string name="agent">Agent</string>
     <string name="official">Official</string>
+    <string name="coin_transfer">金币转账</string>
+    <string name="transferor">Transferor</string>
+    <string name="recently">Recently</string>
+    <string name="please_enter_the_transferor_id">Please enter the transferor ID</string>
+    <string name="name_of_the_transferor">Name of the transferor:</string>
+    <string name="transfer_amount">Transfer amount</string>
+    <string name="please_enter_the_transfer_amount">Please enter the transfer amount</string>
+    <string name="common_amount">Common amount</string>
+    <string name="transfer_notes">Transfer notes</string>
+    <string name="transfer_accounts">Transfer accounts</string>
+    <string name="recent_transfers">Recent transfers</string>
+    <string name="transfer">Transfer</string>
+    <string name="not_less_than_not_more_than">Not less than 100000,not more than 10000000</string>
+    <string name="success">Success</string>
+    <string name="total_transfer_amount">Total transfer amount</string>
+    <string name="transfer_success">金币转账成功</string>
+    <string name="remarks_no_more_than_words">Remarks no more than 50 words</string>
+    <string name="coin_transfer_detail">金币转账详情</string>
+    <string name="transfer_time">Transfer time</string>
 </resources>

+ 19 - 0
baseswago/src/main/res/values/strings.xml

@@ -218,5 +218,24 @@
     <string name="watcher_num">Total Viewers:</string>
     <string name="agent">Agent</string>
     <string name="official">Official</string>
+    <string name="coin_transfer">金币转账</string>
+    <string name="transferor">Transferor</string>
+    <string name="recently">Recently</string>
+    <string name="please_enter_the_transferor_id">Please enter the transferor ID</string>
+    <string name="name_of_the_transferor">Name of the transferor:</string>
+    <string name="transfer_amount">Transfer amount</string>
+    <string name="please_enter_the_transfer_amount">Please enter the transfer amount</string>
+    <string name="common_amount">Common amount</string>
+    <string name="transfer_notes">Transfer notes</string>
+    <string name="transfer_accounts">Transfer accounts</string>
+    <string name="recent_transfers">Recent transfers</string>
+    <string name="transfer">Transfer</string>
+    <string name="not_less_than_not_more_than">Not less than 100000,not more than 10000000</string>
+    <string name="success">Success</string>
+    <string name="total_transfer_amount">Total transfer amount</string>
+    <string name="transfer_success">金币转账成功</string>
+    <string name="remarks_no_more_than_words">Remarks no more than 50 words</string>
+    <string name="coin_transfer_detail">金币转账详情</string>
+    <string name="transfer_time">Transfer time</string>
 
 </resources>

+ 2 - 0
home/src/main/java/com/swago/home/HomeActivity.kt

@@ -13,6 +13,7 @@ import com.android.billingclient.api.Purchase
 import com.permissionx.guolindev.PermissionX
 import com.swago.baseswago.PayVm
 import com.swago.baseswago.SwagoAdapter
+import com.swago.baseswago.UserVm
 import com.swago.baseswago.activity.BaseXActivity
 import com.swago.baseswago.agora.AgoraManager
 import com.swago.baseswago.constant.ARouteConstant
@@ -42,6 +43,7 @@ class HomeActivity : BaseXActivity<ActivityHomeBinding>(), IPayCallback {
     private val officialVm by viewModels<OfficialVm>()
     private val homeVm by viewModels<HomeVm>()
     private val payVm by viewModels<PayVm>()
+    private val userVm by viewModels<UserVm>()
 
     private val listFragment =
         arrayListOf(HomeFragment(),MessageFragment(), MineFragment())

+ 19 - 0
home/src/main/java/com/swago/home/HomeFragment.kt

@@ -5,12 +5,15 @@ import android.content.Context
 import android.content.Intent
 import android.graphics.Color
 import android.graphics.Typeface
+import android.view.View
 import android.widget.Toast
+import androidx.fragment.app.activityViewModels
 import androidx.viewpager.widget.ViewPager
 import com.alibaba.android.arouter.launcher.ARouter
 import com.permissionx.guolindev.PermissionX
 import com.swago.baseswago.GradientIndicator
 import com.swago.baseswago.SwagoAdapter
+import com.swago.baseswago.UserVm
 import com.swago.baseswago.constant.ARouteConstant
 import com.swago.baseswago.fragment.BaseXFragment
 import com.swago.baseswago.util.AppContext
@@ -35,6 +38,8 @@ import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.Simple
  */
 class HomeFragment : BaseXFragment<FragmentHomeBinding>() {
 
+    private val userVm by activityViewModels<UserVm>()
+    
     private val listFragments = arrayListOf(HotFragment(), NewFragment(), FollowFragment())
     private val listTitles = arrayListOf(
         AppContext.getContext().resources.getString(R.string.home_hot),
@@ -93,6 +98,13 @@ class HomeFragment : BaseXFragment<FragmentHomeBinding>() {
                 startActivity(Intent(activity,SearchActivity::class.java))
             }
         })
+
+        binding.ivCoinTransfer.setOnClickListener(object : NoDoubleClickListener() {
+            override fun onClick() {
+                ARouter.getInstance().build(ARouteConstant.User.coinTransfer).navigation()
+            }
+        })
+
         binding.tvStartLive.setOnClickListener(object : NoDoubleClickListener() {
             override fun onClick() {
                 binding.tvStartLive.isEnabled = false
@@ -143,6 +155,13 @@ class HomeFragment : BaseXFragment<FragmentHomeBinding>() {
     }
 
     override fun initLiveData() {
+        userVm.userInfoLiveData.observe(this){
+            if (it.is_transfer_coin==1){
+                binding.ivCoinTransfer.visibility = View.VISIBLE
+            }else{
+                binding.ivCoinTransfer.visibility = View.GONE
+            }
+        }
     }
 
 

+ 0 - 1
home/src/main/java/com/swago/home/MessageFragment.kt

@@ -11,7 +11,6 @@ import androidx.fragment.app.viewModels
 import com.alibaba.android.arouter.launcher.ARouter
 import com.bumptech.glide.Glide
 import com.permissionx.guolindev.PermissionX
-import com.swago.baseswago.UserVm
 import com.swago.baseswago.constant.ARouteConstant
 import com.swago.baseswago.fragment.BaseXFragment
 import com.swago.baseswago.util.AppContext

+ 2 - 2
home/src/main/java/com/swago/home/MineFragment.kt

@@ -1,6 +1,7 @@
 package com.swago.home
 
 import android.view.View
+import androidx.fragment.app.activityViewModels
 import androidx.fragment.app.viewModels
 import com.alibaba.android.arouter.launcher.ARouter
 import com.bumptech.glide.Glide
@@ -12,7 +13,6 @@ import com.swago.baseswago.constant.ARouteConstant
 import com.swago.baseswago.constant.UrlConstant
 import com.swago.baseswago.dialog.BenefitBagDialog
 import com.swago.baseswago.fragment.BaseXFragment
-import com.swago.baseswago.model.ConfigModel
 import com.swago.baseswago.util.*
 import com.swago.home.databinding.FragmentMineBinding
 
@@ -22,7 +22,7 @@ import com.swago.home.databinding.FragmentMineBinding
  */
 class MineFragment : BaseXFragment<FragmentMineBinding>() {
 
-    private val userVm by viewModels<UserVm>()
+    private val userVm by activityViewModels<UserVm>()
     private val payVm by viewModels<PayVm>()
 
     override fun loadData() {}

+ 12 - 2
home/src/main/res/layout/fragment_home.xml

@@ -15,11 +15,21 @@
         app:layout_constraintTop_toTopOf="parent"
         android:layout_marginTop="25dp"
         android:layout_width="0dp"
-        android:layout_marginEnd="140dp"
+        android:layout_marginEnd="10dp"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintEnd_toStartOf="@+id/ivCoinTransfer"
         android:layout_height="56dp"/>
 
+    <ImageView
+        android:id="@+id/ivCoinTransfer"
+        app:layout_constraintTop_toTopOf="@+id/magicIndicator"
+        app:layout_constraintBottom_toBottomOf="@+id/magicIndicator"
+        app:layout_constraintEnd_toStartOf="@+id/ivSearch"
+        android:layout_marginEnd="10dp"
+        android:padding="3dp"
+        android:src="@mipmap/icon_coin_transfer"
+        android:layout_width="26dp"
+        android:layout_height="52dp"/>
 
     <ImageView
         android:id="@+id/ivSearch"

BIN
home/src/main/res/mipmap-xxhdpi/icon_coin_transfer.png


+ 4 - 0
user/src/main/AndroidManifest.xml

@@ -23,6 +23,10 @@
             android:screenOrientation="portrait"/>
         <activity android:name=".exchange.DiamondCoinExchangeActivity"
             android:screenOrientation="portrait"/>
+        <activity android:name=".cointransfer.CoinTransferActivity"
+            android:screenOrientation="portrait"/>
+        <activity android:name=".cointransfer.TransferDetailsActivity"
+            android:screenOrientation="portrait"/>
     </application>
 
 </manifest>

+ 149 - 0
user/src/main/java/com/swago/user/cointransfer/CoinTransferActivity.kt

@@ -0,0 +1,149 @@
+package com.swago.user.cointransfer
+
+import androidx.activity.viewModels
+import androidx.core.widget.addTextChangedListener
+import androidx.fragment.app.activityViewModels
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.alibaba.android.arouter.launcher.ARouter
+import com.swago.baseswago.UserVm
+import com.swago.baseswago.activity.BaseXActivity
+import com.swago.baseswago.constant.ARouteConstant
+import com.swago.baseswago.util.*
+import com.swago.user.R
+import com.swago.user.databinding.ActivityTransferBinding
+import com.swago.user.vm.ExchangeVm
+
+@Route(path = ARouteConstant.User.coinTransfer)
+class CoinTransferActivity : BaseXActivity<ActivityTransferBinding>() {
+
+    private var idContentEmpty = true
+    private var coinContentEmpty = true
+    private var noteContentEmpty = true
+
+    private val exchangeVm by viewModels<ExchangeVm>()
+    private val userVm by viewModels<UserVm>()
+    override fun loadData() {
+    }
+
+    override fun initOther() {
+        setBackView(binding.toolbar.ivBack)
+        binding.toolbar.tvTitle.text = AppContext.getContext().resources.getString(R.string.coin_transfer)
+
+        UserInfo.getUserInfo()?.let {
+            binding.tvCoinNum.text = it.user_coins
+        }
+
+        binding.tvRecently.setOnClickListener(object:NoDoubleClickListener(){
+            override fun onClick() {
+                RecentTransferDialog.newInstance().apply {
+                    this.selectUserFun = {id, name ->
+                        this@CoinTransferActivity.binding.etInputId.setText(id)
+                        this@CoinTransferActivity.binding.etInputId.setSelection(id.length)
+                        this@CoinTransferActivity.binding.tvTransferorName.text = name
+
+                    }
+                }.show(supportFragmentManager,"RecentTransferDialog")
+            }
+        })
+
+        binding.tvDetails.setOnClickListener(object:NoDoubleClickListener(){
+            override fun onClick() {
+                ARouter.getInstance().build(ARouteConstant.User.transferDetail).navigation()
+            }
+        })
+
+        binding.etInputId.setOnFocusChangeListener { _, hasFocus ->
+            val idContent = binding.etInputId.text.toString()
+            if (!hasFocus&&idContent.isNotEmpty()){
+                userVm.getOtherUserInfo(idContent)
+            }
+        }
+
+        binding.etInputId.addTextChangedListener {
+            it?.let {
+                LogUtil.d("id-${it}")
+                idContentEmpty = it.toString().isEmpty()
+                setTransferStatus()
+            }
+        }
+        binding.etInputAmount.addTextChangedListener {
+            it?.let {
+                LogUtil.d("coin-${it}")
+                coinContentEmpty = it.toString().isEmpty()
+                setTransferStatus()
+            }
+        }
+        binding.etInputNote.addTextChangedListener {
+            it?.let {
+                LogUtil.d("note-${it}")
+                noteContentEmpty = it.toString().isEmpty()
+                setTransferStatus()
+            }
+        }
+        binding.tvTransfer.setOnClickListener(object:NoDoubleClickListener(){
+            override fun onClick() {
+                LogUtil.d("金币转账")
+                val id = binding.etInputId.text.toString()
+                val name = binding.tvTransferorName.text.toString()
+                val coin = binding.etInputAmount.text.toString()
+                val note = binding.etInputNote.text.toString()
+                TransferSureDialog.newInstance(id,coin,name).apply {
+                    this.doTransfer = {
+                        SwagoLoading.showLoadingDialog(this@CoinTransferActivity)
+                        exchangeVm.transferCoin(id,coin,note)
+                    }
+                }.show(supportFragmentManager,"TransferSureDialog")
+            }
+        })
+        binding.tvOne.setOnClickListener(object:NoDoubleClickListener(){
+            override fun onClick() {
+                binding.etInputAmount.setText(binding.tvOne.text)
+                binding.etInputAmount.setSelection(binding.tvOne.text.length)
+            }
+        })
+        binding.tvTwo.setOnClickListener(object:NoDoubleClickListener(){
+            override fun onClick() {
+                binding.etInputAmount.setText(binding.tvTwo.text)
+                binding.etInputAmount.setSelection(binding.tvTwo.text.length)
+            }
+        })
+        binding.tvThree.setOnClickListener(object:NoDoubleClickListener(){
+            override fun onClick() {
+                binding.etInputAmount.setText(binding.tvThree.text)
+                binding.etInputAmount.setSelection(binding.tvThree.text.length)
+            }
+        })
+        binding.tvFour.setOnClickListener(object:NoDoubleClickListener(){
+            override fun onClick() {
+                binding.etInputAmount.setText(binding.tvFour.text)
+                binding.etInputAmount.setSelection(binding.tvFour.text.length)
+            }
+        })
+        binding.tvFive.setOnClickListener(object:NoDoubleClickListener(){
+            override fun onClick() {
+                binding.etInputAmount.setText(binding.tvFive.text)
+                binding.etInputAmount.setSelection(binding.tvFive.text.length)
+            }
+        })
+    }
+
+    private fun setTransferStatus() {
+        if (!idContentEmpty && !coinContentEmpty && !noteContentEmpty) {
+            binding.tvTransfer.setBackgroundResource(R.drawable.shape_ff56b7_37)
+            binding.tvTransfer.isEnabled = true
+        } else {
+            binding.tvTransfer.setBackgroundResource(R.drawable.shape_50ff56b7_37)
+            binding.tvTransfer.isEnabled = false
+        }
+    }
+
+    override fun initLiveData() {
+        userVm.otherUserInfoLiveData.observe(this){
+            binding.tvTransferorName.text = it.user_name
+        }
+        exchangeVm.transferSuccessLiveData.observe(this){
+            ARouter.getInstance().build(ARouteConstant.User.transferDetail).navigation()
+            finish()
+        }
+    }
+}

+ 20 - 0
user/src/main/java/com/swago/user/cointransfer/RecentTransferAdapter.kt

@@ -0,0 +1,20 @@
+package com.swago.user.cointransfer
+
+import com.chad.library.adapter.base.BaseQuickAdapter
+import com.chad.library.adapter.base.BaseViewHolder
+import com.swago.baseswago.model.RecentlyTransferNameModel
+import com.swago.baseswago.util.AppContext
+import com.swago.user.R
+
+class RecentTransferAdapter : BaseQuickAdapter<RecentlyTransferNameModel,BaseViewHolder>(R.layout.item_recent_transfer, arrayListOf()) {
+
+    override fun convert(helper: BaseViewHolder?, item: RecentlyTransferNameModel?) {
+        helper?.apply {
+            item?.let {
+                setText(R.id.tvName,it.accept_user_name)
+                setText(R.id.tvID,AppContext.getContext().resources.getString(R.string.id_x).format(it.accept_user_id))
+                addOnClickListener(R.id.tvTransfer)
+            }
+        }
+    }
+}

+ 70 - 0
user/src/main/java/com/swago/user/cointransfer/RecentTransferDialog.kt

@@ -0,0 +1,70 @@
+package com.swago.user.cointransfer
+
+import android.os.Bundle
+import android.view.Gravity
+import androidx.activity.viewModels
+import androidx.fragment.app.viewModels
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.chad.library.adapter.base.BaseQuickAdapter
+import com.swago.baseswago.cusview.SwagoRecyclerView
+import com.swago.baseswago.dialog.BaseListDialogFragment
+import com.swago.baseswago.model.RecentlyTransferNameModel
+import com.swago.user.databinding.DialogRecentTransferBinding
+import com.swago.user.vm.ExchangeVm
+
+class RecentTransferDialog : BaseListDialogFragment<DialogRecentTransferBinding, RecentlyTransferNameModel>() {
+
+    private val exchangeVm by viewModels<ExchangeVm>()
+    
+    init {
+        setGravity(Gravity.BOTTOM)
+        setCanCancel(true)
+        setDimAmount(0.5f)
+    }
+
+    var selectUserFun:((id:String,name:String)->Unit)? = null
+
+    companion object{
+        fun newInstance(): RecentTransferDialog {
+            val args = Bundle()
+            val fragment = RecentTransferDialog()
+            fragment.arguments = args
+            return fragment
+        }
+    }
+
+    override val smartRecyclerView: SwagoRecyclerView<RecentlyTransferNameModel> by lazy {
+        binding.rvRecently as SwagoRecyclerView<RecentlyTransferNameModel>
+    }
+    override val adapter: BaseQuickAdapter<RecentlyTransferNameModel, *> by lazy {
+        RecentTransferAdapter()
+    }
+    override val layoutManager: RecyclerView.LayoutManager by lazy {
+        LinearLayoutManager(context)
+    }
+    override val loadData: (page: Int) -> Unit = {
+        exchangeVm.getRecentlyTransferNameList()
+    }
+
+    override fun initViewData() {
+        adapter.setOnItemChildClickListener { _, _, position ->
+            selectUserFun?.invoke(adapter.data[position].accept_user_id,adapter.data[position].accept_user_name)
+            dismissAllowingStateLoss()
+        }
+    }
+
+    override fun initLiveData() {
+        exchangeVm.recentTransferUserListLiveData.observe(this){
+            if (it == null){
+                smartRecyclerView.onFetchDataError()
+            }else {
+                smartRecyclerView.onFetchDataFinish(it,true)
+            }
+        }
+    }
+
+    override fun loadMoreNeed(): Boolean {
+        return false
+    }
+}

+ 20 - 0
user/src/main/java/com/swago/user/cointransfer/TransferDetailAdapter.kt

@@ -0,0 +1,20 @@
+package com.swago.user.cointransfer
+
+import com.chad.library.adapter.base.BaseQuickAdapter
+import com.chad.library.adapter.base.BaseViewHolder
+import com.swago.baseswago.model.TransferDetailModel
+import com.swago.user.R
+
+class TransferDetailAdapter : BaseQuickAdapter<TransferDetailModel, BaseViewHolder>(R.layout.item_transfer_detail, arrayListOf()) {
+
+    override fun convert(helper: BaseViewHolder?, item: TransferDetailModel?) {
+        helper?.apply {
+            item?.let {
+                setText(R.id.tvTransferAmount,it.transfer_price)
+                setText(R.id.tvTransferor,"${it.accept_user_name}(${it.accept_user_id})")
+                setText(R.id.tvNoteContent,it.transfer_remark)
+                setText(R.id.tvTransferDateDetail,it.created_at)
+            }
+        }
+    }
+}

+ 52 - 0
user/src/main/java/com/swago/user/cointransfer/TransferDetailsActivity.kt

@@ -0,0 +1,52 @@
+package com.swago.user.cointransfer
+
+import androidx.activity.viewModels
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.chad.library.adapter.base.BaseQuickAdapter
+import com.swago.baseswago.activity.BaseListActivity
+import com.swago.baseswago.constant.ARouteConstant
+import com.swago.baseswago.cusview.SwagoRecyclerView
+import com.swago.baseswago.model.TransferDetailModel
+import com.swago.baseswago.util.AppContext
+import com.swago.user.R
+import com.swago.user.databinding.ActivityTransferDetailsBinding
+import com.swago.user.vm.ExchangeVm
+
+@Route(path = ARouteConstant.User.transferDetail)
+class TransferDetailsActivity : BaseListActivity<ActivityTransferDetailsBinding, TransferDetailModel>() {
+
+    private val exchangeVm by viewModels<ExchangeVm>()
+
+    override val smartRecyclerView: SwagoRecyclerView<TransferDetailModel> by lazy {
+        binding.rvTransferDetail as SwagoRecyclerView<TransferDetailModel>
+    }
+    override val adapter: BaseQuickAdapter<TransferDetailModel, *> by lazy {
+        TransferDetailAdapter()
+    }
+    override val layoutManager: RecyclerView.LayoutManager by lazy {
+        LinearLayoutManager(this)
+    }
+    override val loadData: (page: Int) -> Unit = {
+        exchangeVm.getTransferDetails(it+1)
+    }
+
+    override fun initViewData() {
+        setBackView(binding.toolbar.ivBack)
+        binding.toolbar.tvTitle.text = AppContext.getContext().resources.getString(R.string.coin_transfer_detail)
+    }
+
+    override fun initLiveData() {
+        exchangeVm.transferDetailListLiveData.observe(this){
+            if (it == null){
+                smartRecyclerView.onFetchDataError()
+            }else {
+                binding.tvCoinNum.text = it.total_coins
+                smartRecyclerView.onFetchDataFinish(it.list,true)
+            }
+        }
+    }
+
+
+}

+ 57 - 0
user/src/main/java/com/swago/user/cointransfer/TransferSureDialog.kt

@@ -0,0 +1,57 @@
+package com.swago.user.cointransfer
+
+import android.os.Bundle
+import android.view.Gravity
+import com.swago.baseswago.dialog.BaseXDFragment
+import com.swago.baseswago.util.NoDoubleClickListener
+import com.swago.user.databinding.DialogTransferSureBinding
+
+class TransferSureDialog : BaseXDFragment<DialogTransferSureBinding>() {
+
+    var doTransfer:(()->Unit)? = null
+
+    companion object{
+        fun newInstance(id:String,coin:String,name:String): TransferSureDialog {
+            val args = Bundle()
+            args.putString("id",id)
+            args.putString("coin",coin)
+            args.putString("name",name)
+            val fragment = TransferSureDialog()
+            fragment.arguments = args
+            return fragment
+        }
+    }
+
+    init {
+        setGravity(Gravity.BOTTOM)
+        setCanCancel(true)
+        setDimAmount(0.5f)
+    }
+
+    override fun initOther() {
+        arguments?.let {
+            val id = it.getString("id")
+            val coin = it.getString("coin")
+            val name = it.getString("name")
+            binding.tvTransferAmount.text = coin
+            binding.tvTransferor.text = "${name}(${id})"
+
+            binding.tvTransfer.setOnClickListener(object:NoDoubleClickListener(){
+                override fun onClick() {
+                    doTransfer?.invoke()
+                    dismissAllowingStateLoss()
+                }
+            })
+            binding.tvCancel.setOnClickListener(object:NoDoubleClickListener(){
+                override fun onClick() {
+                    dismissAllowingStateLoss()
+                }
+            })
+
+        }
+    }
+
+    override fun initLiveData() {
+
+    }
+}

+ 60 - 1
user/src/main/java/com/swago/user/vm/ExchangeVm.kt

@@ -1,15 +1,20 @@
 package com.swago.user.vm
 
 import android.app.Application
+import android.app.Service
 import android.widget.Toast
 import androidx.lifecycle.MutableLiveData
 import com.swago.baseswago.http.SwagoException
 import com.swago.baseswago.inter.ApiManager
+import com.swago.baseswago.model.RecentlyTransferNameModel
+import com.swago.baseswago.model.TransDetailData
+import com.swago.baseswago.model.TransferDetailModel
 import com.swago.baseswago.model.mine.ExchangeModel
 import com.swago.baseswago.model.mine.ExchangeResult
 import com.swago.baseswago.util.AppContext
 import com.swago.baseswago.util.BaseViewModel
 import com.swago.baseswago.util.SwagoLoading
+import com.swago.user.R
 
 /**
  *@date 2022/4/8 10:04
@@ -37,7 +42,7 @@ class ExchangeVm(application: Application) : BaseViewModel(application) {
         MutableLiveData<ExchangeResult>()
     }
 
-
+    //钻石金币兑换
     fun exchangeCoin(id:Int,exchange_type:Int,user_id:String){
         requestData2 {
             requestData {
@@ -53,4 +58,58 @@ class ExchangeVm(application: Application) : BaseViewModel(application) {
         }
     }
 
+
+    //获取最近金币转账的用户
+    val recentTransferUserListLiveData by lazy {
+        MutableLiveData<List<RecentlyTransferNameModel>?>()
+    }
+
+    fun getRecentlyTransferNameList(){
+       requestData2 {
+           requestData {
+               val data = ApiManager.userApi.getRecentNameList()
+               recentTransferUserListLiveData.value = data
+           }
+
+           requestError {
+               recentTransferUserListLiveData.value = null
+           }
+       }
+    }
+
+    val transferSuccessLiveData by lazy {
+        MutableLiveData<Unit>()
+    }
+    //金币转账接口
+    fun transferCoin(user_id: String,user_coins:String,transfer_remark:String){
+        requestData2 {
+            requestData {
+                ApiManager.userApi.transferCoin(user_id, user_coins, transfer_remark)
+                Toast.makeText(AppContext.getContext(), AppContext.getContext().getString(R.string.transfer_success), Toast.LENGTH_SHORT).show()
+                SwagoLoading.cancelLoadingDialog()
+                transferSuccessLiveData.value = null
+            }
+            requestError {
+                SwagoLoading.cancelLoadingDialog()
+            }
+        }
+    }
+
+    val transferDetailListLiveData by lazy {
+        MutableLiveData<TransDetailData?>()
+    }
+    //转账详情
+    fun getTransferDetails(page:Int){
+        requestData2 {
+            requestData {
+                val data = ApiManager.userApi.getTransferDetails(page)
+                transferDetailListLiveData.value = data
+            }
+
+            requestError {
+                transferDetailListLiveData.value = null
+            }
+        }
+    }
+
 }

+ 5 - 0
user/src/main/res/drawable/selector_coin_click.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/shape_ff56b7_12" android:state_pressed="true" />
+    <item android:drawable="@drawable/shape_f1f4f8_12" android:state_pressed="false" />
+</selector>

+ 399 - 0
user/src/main/res/layout/activity_transfer.xml

@@ -0,0 +1,399 @@
+<?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:background="#F8F8F8"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <ImageView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@mipmap/bg_transfer"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <include
+        android:id="@+id/toolbar"
+        layout="@layout/layout_toolbar"
+        android:layout_width="match_parent"
+        android:layout_height="56dp"
+        android:layout_marginTop="25dp"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <androidx.core.widget.NestedScrollView
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/toolbar">
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent">
+
+            <com.swago.baseswago.cusview.MediumTextView
+                android:id="@+id/tvCoinBalance"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="15dp"
+                android:layout_marginTop="15dp"
+                android:text="@string/coin_balance"
+                android:textColor="#435568"
+                android:textSize="12dp"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <com.swago.baseswago.cusview.BoldTextView
+                android:id="@+id/tvCoinNum"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="15dp"
+                android:layout_marginTop="10dp"
+                android:drawableStart="@mipmap/icon_coin_90"
+                android:drawablePadding="3dp"
+                android:textColor="#131B23"
+                android:textSize="24dp"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/tvCoinBalance"
+                tools:text="7000" />
+
+            <com.swago.baseswago.cusview.MediumTextView
+                android:id="@+id/tvDetails"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginEnd="15dp"
+                android:background="@drawable/shape_f1f4f8_12"
+                android:paddingStart="10dp"
+                android:paddingTop="5dp"
+                android:paddingEnd="10dp"
+                android:paddingBottom="5dp"
+                android:text="Details"
+                android:textColor="#435568"
+                android:textSize="14dp"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintTop_toTopOf="@+id/tvCoinNum" />
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:id="@+id/clName"
+                android:layout_marginStart="15dp"
+                android:layout_marginEnd="15dp"
+                android:background="@drawable/shape_white_20"
+                app:layout_constraintTop_toBottomOf="@+id/tvDetails"
+                android:layout_marginTop="33dp"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <com.swago.baseswago.cusview.BoldTextView
+                    android:text="@string/transferor"
+                    android:textSize="16dp"
+                    android:textColor="#131B23"
+                    android:layout_marginStart="10dp"
+                    android:layout_marginTop="15dp"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"/>
+
+                <com.swago.baseswago.cusview.MediumTextView
+                    android:id="@+id/tvRecently"
+                    android:text="@string/recently"
+                    app:layout_constraintTop_toTopOf="parent"
+                    android:drawableStart="@mipmap/icon_transfer_avatar"
+                    android:drawableEnd="@mipmap/icon_arrow_down"
+                    android:layout_marginEnd="10dp"
+                    android:layout_marginTop="19dp"
+                    android:textSize="12dp"
+                    android:textColor="#131B23"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"/>
+
+                <EditText
+                    android:id="@+id/etInputId"
+                    android:maxLength="10"
+                    android:textSize="14dp"
+                    android:hint="@string/please_enter_the_transferor_id"
+                    android:paddingStart="10dp"
+                    android:paddingEnd="10dp"
+                    android:textStyle="bold"
+                    android:textColor="#131B23"
+                    android:textColorHint="#AFB9C3"
+                    android:layout_marginTop="13dp"
+                    android:layout_marginStart="10dp"
+                    android:layout_marginEnd="10dp"
+                    android:background="@drawable/shape_f1f4f8_12"
+                    app:layout_constraintTop_toBottomOf="@+id/tvRecently"
+                    android:layout_width="match_parent"
+                    android:layout_height="44dp"/>
+
+                <com.swago.baseswago.cusview.MediumTextView
+                    android:id="@+id/tvTips"
+                    android:textSize="14dp"
+                    android:textColor="#435568"
+                    app:layout_constraintStart_toStartOf="parent"
+                    android:layout_marginStart="10dp"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/etInputId"
+                    android:layout_marginTop="10dp"
+                    android:layout_marginBottom="15dp"
+                    android:text="@string/name_of_the_transferor"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"/>
+
+                <TextView
+                    android:id="@+id/tvTransferorName"
+                    android:textSize="14dp"
+                    android:textColor="#3D7FFF"
+                    android:textStyle="bold"
+                    app:layout_constraintStart_toEndOf="@+id/tvTips"
+                    android:layout_marginStart="10dp"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/etInputId"
+                    android:layout_marginTop="10dp"
+                    android:layout_marginBottom="15dp"
+                    tools:text="swago"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"/>
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:id="@+id/clAmount"
+                android:layout_marginStart="15dp"
+                android:layout_marginEnd="15dp"
+                android:background="@drawable/shape_white_20"
+                app:layout_constraintTop_toBottomOf="@+id/clName"
+                android:layout_marginTop="10dp"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <com.swago.baseswago.cusview.BoldTextView
+                    android:id="@+id/tv2"
+                    android:text="@string/transfer_amount"
+                    android:textSize="16dp"
+                    android:textColor="#131B23"
+                    android:layout_marginStart="10dp"
+                    android:layout_marginTop="15dp"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"/>
+
+                <EditText
+                    android:id="@+id/etInputAmount"
+                    android:maxLength="20"
+                    android:textSize="14dp"
+                    android:textStyle="bold"
+                    android:drawableStart="@mipmap/icon_coin_48"
+                    android:hint="@string/please_enter_the_transfer_amount"
+                    android:paddingStart="10dp"
+                    android:paddingEnd="10dp"
+                    android:textColor="#131B23"
+                    android:textColorHint="#AFB9C3"
+                    android:layout_marginTop="13dp"
+                    android:layout_marginStart="10dp"
+                    android:layout_marginEnd="10dp"
+                    android:background="@drawable/shape_f1f4f8_12"
+                    app:layout_constraintTop_toBottomOf="@+id/tv2"
+                    android:layout_width="match_parent"
+                    android:layout_height="44dp"/>
+
+                <com.swago.baseswago.cusview.MediumTextView
+                    android:id="@+id/tvCondition"
+                    android:drawablePadding="5dp"
+                    android:drawableStart="@mipmap/icon_transfer_tip"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    android:layout_marginStart="10dp"
+                    android:layout_marginEnd="10dp"
+                    android:layout_marginTop="10dp"
+                    android:textSize="14dp"
+                    android:textColor="#828C9D"
+                    android:text="@string/not_less_than_not_more_than"
+                    app:layout_constraintTop_toBottomOf="@+id/etInputAmount"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"/>
+
+                <View
+                    android:id="@+id/view"
+                    app:layout_constraintTop_toBottomOf="@+id/tvCondition"
+                    android:layout_marginTop="10dp"
+                    android:layout_marginStart="10dp"
+                    android:layout_marginEnd="10dp"
+                    android:background="#F1F4F8"
+                    android:layout_width="match_parent"
+                    android:layout_height="1dp"/>
+
+
+                <TextView
+                    android:id="@+id/tvCommonAmount"
+                    android:text="@string/common_amount"
+                    android:layout_marginStart="10dp"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/view"
+                    android:layout_marginTop="10dp"
+                    android:textSize="12dp"
+                    android:textColor="#435568"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"/>
+
+                <TextView
+                    android:id="@+id/tvOne"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintEnd_toStartOf="@+id/tvTwo"
+                    app:layout_constraintTop_toBottomOf="@+id/tvCommonAmount"
+                    android:layout_marginTop="15dp"
+                    android:textSize="14dp"
+                    android:textColor="#435568"
+                    android:text="100000"
+                    android:paddingStart="20dp"
+                    android:paddingEnd="20dp"
+                    android:paddingTop="5dp"
+                    android:paddingBottom="5dp"
+                    android:background="@drawable/selector_coin_click"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"/>
+
+                <TextView
+                    android:id="@+id/tvTwo"
+                    app:layout_constraintStart_toEndOf="@+id/tvOne"
+                    app:layout_constraintEnd_toStartOf="@+id/tvThree"
+                    app:layout_constraintTop_toBottomOf="@+id/tvCommonAmount"
+                    android:layout_marginTop="15dp"
+                    android:textSize="14dp"
+                    android:textColor="#435568"
+                    android:text="500000"
+                    android:paddingStart="20dp"
+                    android:paddingEnd="20dp"
+                    android:paddingTop="5dp"
+                    android:paddingBottom="5dp"
+                    android:background="@drawable/selector_coin_click"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"/>
+
+                <TextView
+                    android:id="@+id/tvThree"
+                    app:layout_constraintStart_toEndOf="@+id/tvTwo"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/tvCommonAmount"
+                    android:layout_marginTop="15dp"
+                    android:textSize="14dp"
+                    android:textColor="#435568"
+                    android:text="1000000"
+                    android:paddingStart="20dp"
+                    android:paddingEnd="20dp"
+                    android:paddingTop="5dp"
+                    android:paddingBottom="5dp"
+                    android:background="@drawable/selector_coin_click"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"/>
+
+
+                <TextView
+                    android:id="@+id/tvFour"
+                    app:layout_constraintStart_toStartOf="@+id/tvOne"
+                    app:layout_constraintTop_toBottomOf="@+id/tvOne"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    android:layout_marginBottom="15dp"
+                    android:layout_marginTop="15dp"
+                    android:textSize="14dp"
+                    android:textColor="#435568"
+                    android:text="5000000"
+                    android:paddingStart="20dp"
+                    android:paddingEnd="20dp"
+                    android:paddingTop="5dp"
+                    android:paddingBottom="5dp"
+                    android:background="@drawable/selector_coin_click"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"/>
+
+                <TextView
+                    android:id="@+id/tvFive"
+                    app:layout_constraintStart_toStartOf="@+id/tvTwo"
+                    app:layout_constraintTop_toBottomOf="@+id/tvOne"
+                    android:layout_marginTop="15dp"
+                    android:textSize="14dp"
+                    android:textColor="#435568"
+                    android:text="10000000"
+                    android:paddingStart="20dp"
+                    android:paddingEnd="20dp"
+                    android:paddingTop="5dp"
+                    android:paddingBottom="5dp"
+                    android:background="@drawable/selector_coin_click"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"/>
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:id="@+id/clNote"
+                android:layout_marginStart="15dp"
+                android:layout_marginEnd="15dp"
+                android:background="@drawable/shape_white_20"
+                app:layout_constraintTop_toBottomOf="@+id/clAmount"
+                android:layout_marginTop="13dp"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <com.swago.baseswago.cusview.BoldTextView
+                    android:id="@+id/tvTransferNote"
+                    android:text="@string/transfer_notes"
+                    android:textSize="16dp"
+                    android:textColor="#131B23"
+                    android:layout_marginStart="10dp"
+                    android:layout_marginTop="15dp"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"/>
+
+                <EditText
+                    android:id="@+id/etInputNote"
+                    android:maxLength="50"
+                    android:textSize="14dp"
+                    android:hint="@string/remarks_no_more_than_words"
+                    android:paddingStart="10dp"
+                    android:paddingEnd="10dp"
+                    android:textColor="#435568"
+                    android:textStyle="bold"
+                    android:textColorHint="#AFB9C3"
+                    android:layout_marginTop="13dp"
+                    android:layout_marginBottom="15dp"
+                    android:layout_marginStart="10dp"
+                    android:layout_marginEnd="10dp"
+                    android:gravity="start|top"
+                    android:padding="10dp"
+                    android:background="@drawable/shape_f1f4f8_12"
+                    app:layout_constraintTop_toBottomOf="@+id/tvTransferNote"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    android:layout_width="match_parent"
+                    android:layout_height="80dp"/>
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+            <TextView
+                android:id="@+id/tvTransfer"
+                app:layout_constraintTop_toBottomOf="@+id/clNote"
+                android:layout_marginStart="15dp"
+                android:layout_marginEnd="15dp"
+                app:layout_constraintBottom_toBottomOf="parent"
+                android:layout_marginBottom="10dp"
+                android:layout_marginTop="20dp"
+                android:textSize="16dp"
+                android:textColor="#fff"
+                android:text="@string/transfer_accounts"
+                android:enabled="false"
+                android:gravity="center"
+                android:background="@drawable/shape_50ff56b7_37"
+                android:layout_width="match_parent"
+                android:layout_height="48dp"/>
+
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+    </androidx.core.widget.NestedScrollView>
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 52 - 0
user/src/main/res/layout/activity_transfer_details.xml

@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <include
+        android:id="@+id/toolbar"
+        layout="@layout/layout_toolbar"
+        android:layout_width="match_parent"
+        android:layout_height="56dp"
+        android:layout_marginTop="25dp"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <com.swago.baseswago.cusview.MediumTextView
+        android:id="@+id/tvCoinBalance"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="15dp"
+        android:layout_marginTop="15dp"
+        android:text="@string/total_transfer_amount"
+        android:textColor="#435568"
+        android:textSize="12dp"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/toolbar" />
+
+    <com.swago.baseswago.cusview.BoldTextView
+        android:id="@+id/tvCoinNum"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="15dp"
+        android:layout_marginTop="10dp"
+        android:drawableStart="@mipmap/icon_coin_90"
+        android:drawablePadding="5dp"
+        android:textColor="#131B23"
+        android:textSize="24dp"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/tvCoinBalance"
+        tools:text="7000" />
+
+
+    <com.swago.baseswago.cusview.SwagoRecyclerView
+        android:id="@+id/rvTransferDetail"
+        android:layout_marginTop="16dp"
+        app:layout_constraintTop_toBottomOf="@+id/tvCoinNum"
+        app:layout_constraintBottom_toBottomOf="parent"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"/>
+
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 35 - 0
user/src/main/res/layout/dialog_recent_transfer.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        app:layout_constraintTop_toTopOf="parent"
+        android:background="@drawable/shape_white_top_20"
+        android:layout_width="match_parent"
+        android:layout_height="400dp">
+
+        <com.swago.baseswago.cusview.BoldTextView
+            android:id="@+id/tvTitle"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            android:textSize="20dp"
+            android:textColor="#131B23"
+            android:layout_marginTop="12dp"
+            android:text="@string/recent_transfers"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"/>
+
+        <com.swago.baseswago.cusview.SwagoRecyclerView
+            android:id="@+id/rvRecently"
+            android:layout_marginTop="16dp"
+            app:layout_constraintTop_toBottomOf="@+id/tvTitle"
+            app:layout_constraintBottom_toBottomOf="parent"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"/>
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 117 - 0
user/src/main/res/layout/dialog_transfer_sure.xml

@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:background="@drawable/shape_white_top_20"
+        app:layout_constraintTop_toTopOf="parent"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <com.swago.baseswago.cusview.BoldTextView
+            android:textSize="20dp"
+            android:textColor="#131B23"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            android:layout_marginTop="12dp"
+            android:text="Confirm transfer information"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"/>
+
+        <com.swago.baseswago.cusview.MediumTextView
+            android:id="@+id/tvOne"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            android:layout_marginStart="20dp"
+            android:layout_marginTop="72dp"
+            android:textSize="16dp"
+            android:textColor="#435568"
+            android:text="@string/transferor"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"/>
+
+        <com.swago.baseswago.cusview.BoldTextView
+            android:id="@+id/tvTransferor"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            android:layout_marginEnd="20dp"
+            android:layout_marginTop="72dp"
+            android:textSize="16dp"
+            android:textColor="#131B23"
+            tools:text="Bonit(2312312)"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"/>
+
+        <com.swago.baseswago.cusview.MediumTextView
+            android:id="@+id/tvTwo"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/tvOne"
+            android:layout_marginStart="20dp"
+            android:layout_marginTop="20dp"
+            android:textSize="16dp"
+            android:textColor="#435568"
+            android:text="@string/transfer_amount"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"/>
+
+        <com.swago.baseswago.cusview.BoldTextView
+            android:id="@+id/tvTransferAmount"
+            app:layout_constraintEnd_toEndOf="parent"
+            android:drawableStart="@mipmap/icon_coin_48"
+            app:layout_constraintTop_toBottomOf="@+id/tvTransferor"
+            android:layout_marginEnd="20dp"
+            android:layout_marginTop="20dp"
+            android:textSize="16dp"
+            android:textColor="#131B23"
+            tools:text="1000"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"/>
+
+
+        <com.swago.baseswago.cusview.BoldTextView
+            android:id="@+id/tvCancel"
+            android:text="@string/cancel"
+            app:layout_constraintTop_toBottomOf="@+id/tvTwo"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toStartOf="@+id/tvTransfer"
+            android:layout_marginTop="43dp"
+            android:layout_marginBottom="24dp"
+            android:textSize="16dp"
+            android:textColor="#435568"
+            android:background="@drawable/shape_f1f4f8_29"
+            android:layout_width="wrap_content"
+            android:paddingStart="50dp"
+            android:paddingEnd="50dp"
+            android:paddingTop="15dp"
+            android:paddingBottom="15dp"
+            android:layout_height="48dp"/>
+
+        <com.swago.baseswago.cusview.BoldTextView
+            android:id="@+id/tvTransfer"
+            android:text="@string/transfer"
+            android:textSize="16dp"
+            android:textColor="#fff"
+            android:background="@drawable/shape_ff56b7_37"
+            app:layout_constraintTop_toBottomOf="@+id/tvTwo"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toEndOf="@+id/tvCancel"
+            app:layout_constraintEnd_toEndOf="parent"
+            android:layout_marginTop="43dp"
+            android:layout_marginBottom="24dp"
+            android:paddingStart="50dp"
+            android:paddingEnd="50dp"
+            android:paddingTop="15dp"
+            android:paddingBottom="15dp"
+            android:layout_width="wrap_content"
+            android:layout_height="48dp"/>
+
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 57 - 0
user/src/main/res/layout/item_recent_transfer.xml

@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <com.swago.baseswago.cusview.BoldTextView
+        android:id="@+id/tvName"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        android:layout_marginStart="15dp"
+        android:layout_marginTop="5dp"
+        android:textSize="16dp"
+        android:textColor="#131B23"
+        tools:text="Mediasondddddddddddddddddddddddddddddd"
+        android:maxWidth="150dp"
+        android:maxLines="1"
+        android:ellipsize="end"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+    <com.swago.baseswago.cusview.MediumTextView
+        android:id="@+id/tvID"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/tvName"
+        android:layout_marginStart="15dp"
+        android:layout_marginTop="5dp"
+        android:textSize="14dp"
+        android:textColor="#435568"
+        tools:text="Mediasondddddddddddddddddddddddddddddd"
+        android:maxWidth="150dp"
+        android:maxLines="1"
+        android:ellipsize="end"
+        app:layout_constraintBottom_toBottomOf="parent"
+        android:layout_marginBottom="5dp"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+    <TextView
+        android:id="@+id/tvTransfer"
+        android:layout_marginEnd="15dp"
+        android:text="@string/transfer"
+        android:textSize="14dp"
+        android:textColor="#fff"
+        android:paddingStart="10dp"
+        android:paddingEnd="10dp"
+        android:paddingTop="3dp"
+        android:paddingBottom="5dp"
+        android:background="@drawable/shape_ff56b7_12"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 159 - 0
user/src/main/res/layout/item_transfer_detail.xml

@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@drawable/shape_white_20"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <com.swago.baseswago.cusview.MediumTextView
+        android:id="@+id/tvOne"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/tvTwo"
+        android:layout_marginStart="16dp"
+        android:layout_marginTop="18dp"
+        android:textSize="16dp"
+        android:textColor="#435568"
+        android:text="@string/transferor"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+    <TextView
+        android:id="@+id/tvTip"
+        android:text=":"
+        app:layout_constraintTop_toTopOf="@+id/tvOne"
+        app:layout_constraintStart_toEndOf="@+id/tvOne"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+    <com.swago.baseswago.cusview.BoldTextView
+        android:id="@+id/tvTransferor"
+        app:layout_constraintStart_toEndOf="@+id/tvTip"
+        app:layout_constraintTop_toBottomOf="@+id/tvTwo"
+        android:layout_marginEnd="20dp"
+        android:layout_marginTop="18dp"
+        android:textSize="16dp"
+        android:textColor="#131B23"
+        tools:text="Bonit(2312312)"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+
+    <com.swago.baseswago.cusview.MediumTextView
+        android:id="@+id/tvSuccess"
+        android:drawableStart="@mipmap/icon_status_success"
+        android:gravity="center"
+        app:layout_constraintTop_toTopOf="@+id/tvTwo"
+        app:layout_constraintEnd_toEndOf="parent"
+        android:layout_marginEnd="16dp"
+        android:background="@drawable/shape_54d925_10"
+        android:text="@string/success"
+        android:paddingStart="5dp"
+        android:paddingEnd="5dp"
+        android:paddingTop="3dp"
+        android:paddingBottom="3dp"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+    <com.swago.baseswago.cusview.MediumTextView
+        android:id="@+id/tvTwo"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        android:layout_marginStart="16dp"
+        android:layout_marginTop="18dp"
+        android:textSize="16dp"
+        android:textColor="#435568"
+        android:text="@string/transfer_amount"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+    <TextView
+        android:id="@+id/tvTip2"
+        android:text=":"
+        app:layout_constraintTop_toTopOf="@+id/tvTwo"
+        app:layout_constraintStart_toEndOf="@+id/tvTwo"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+    <com.swago.baseswago.cusview.BoldTextView
+        android:id="@+id/tvTransferAmount"
+        app:layout_constraintStart_toEndOf="@+id/tvTip2"
+        android:drawableStart="@mipmap/icon_coin_48"
+        app:layout_constraintTop_toTopOf="@+id/tvTwo"
+        android:layout_marginEnd="20dp"
+        android:textSize="16dp"
+        android:textColor="#131B23"
+        tools:text="1000"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+
+    <com.swago.baseswago.cusview.MediumTextView
+        android:id="@+id/tvDate"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/tvOne"
+        android:layout_marginStart="16dp"
+        android:layout_marginTop="18dp"
+        android:textSize="16dp"
+        android:textColor="#435568"
+        android:text="@string/transfer_time"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+    <TextView
+        android:id="@+id/tvTipDate"
+        android:text=":"
+        app:layout_constraintTop_toTopOf="@+id/tvDate"
+        app:layout_constraintStart_toEndOf="@+id/tvDate"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+    <com.swago.baseswago.cusview.BoldTextView
+        android:id="@+id/tvTransferDateDetail"
+        app:layout_constraintStart_toEndOf="@+id/tvTipDate"
+        app:layout_constraintTop_toTopOf="@+id/tvDate"
+        android:layout_marginEnd="20dp"
+        android:textSize="16dp"
+        android:textColor="#131B23"
+        tools:text="1000"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+
+    <com.swago.baseswago.cusview.MediumTextView
+        android:id="@+id/tvNote"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/tvDate"
+        android:layout_marginStart="16dp"
+        android:layout_marginTop="18dp"
+        android:textSize="16dp"
+        android:textColor="#435568"
+        android:text="@string/transfer_notes"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+
+    <TextView
+        android:id="@+id/tvTip3"
+        android:text=":"
+        app:layout_constraintTop_toTopOf="@+id/tvNote"
+        app:layout_constraintStart_toEndOf="@+id/tvNote"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+    <com.swago.baseswago.cusview.BoldTextView
+        android:id="@+id/tvNoteContent"
+        app:layout_constraintStart_toEndOf="@+id/tvTip3"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="@+id/tvTip3"
+        app:layout_constraintBottom_toBottomOf="parent"
+        android:layout_marginBottom="16dp"
+        android:layout_marginEnd="20dp"
+        android:textSize="16dp"
+        android:textColor="#435568"
+        tools:text="1000的首付多少佛挡杀佛范德萨范德萨范德萨发第三方第三方s"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"/>
+
+
+</androidx.constraintlayout.widget.ConstraintLayout>

BIN
user/src/main/res/mipmap-xxhdpi/bg_transfer.webp


BIN
user/src/main/res/mipmap-xxhdpi/icon_arrow_down.png


BIN
user/src/main/res/mipmap-xxhdpi/icon_status_success.png


BIN
user/src/main/res/mipmap-xxhdpi/icon_transfer_avatar.png


BIN
user/src/main/res/mipmap-xxhdpi/icon_transfer_tip.png