Browse Source

1.Rewards每日签到界面搭建
2.Rewards界面搭建
3.Rewards列表界面搭建
4.Rewards搜索界面搭建

Administrator 2 years ago
parent
commit
d4f4a7349c
93 changed files with 4114 additions and 2 deletions
  1. 4 1
      cpt_main/src/main/java/com/hongyegroup/cpt_main/ui/HomeFragment.kt
  2. 7 1
      cpt_rewards/src/main/AndroidManifest.xml
  3. 4 0
      cpt_rewards/src/main/java/com/hongyegroup/cpt_rewards/adapter/RewardsCategoryAdapter.kt
  4. 13 0
      cpt_rewards/src/main/java/com/hongyegroup/cpt_rewards/mvvm/RewardsListViewModel.kt
  5. 13 0
      cpt_rewards/src/main/java/com/hongyegroup/cpt_rewards/mvvm/RewardsSearchViewModel.kt
  6. 30 0
      cpt_rewards/src/main/java/com/hongyegroup/cpt_rewards/mvvm/RewardsViewModel.kt
  7. 4 0
      cpt_rewards/src/main/java/com/hongyegroup/cpt_rewards/router/RewardsComponentServiceImpl.kt
  8. 117 0
      cpt_rewards/src/main/java/com/hongyegroup/cpt_rewards/ui/RewardsActivity.kt
  9. 656 0
      cpt_rewards/src/main/java/com/hongyegroup/cpt_rewards/ui/RewardsDailyLoginActivity.java
  10. 56 0
      cpt_rewards/src/main/java/com/hongyegroup/cpt_rewards/ui/RewardsListActivity.kt
  11. 56 0
      cpt_rewards/src/main/java/com/hongyegroup/cpt_rewards/ui/RewardsSearchActivity.kt
  12. 93 0
      cpt_rewards/src/main/java/com/hongyegroup/cpt_rewards/utils/NumAnim.java
  13. 24 0
      cpt_rewards/src/main/java/com/hongyegroup/cpt_rewards/utils/PointFormatUtils.java
  14. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/iv_daily_login_default_pictrue.webp
  15. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/iv_daily_login_hlep.webp
  16. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/iv_daily_login_open_teasurechest.webp
  17. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/iv_daily_login_red_choose.webp
  18. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/iv_daily_login_teasurechest.webp
  19. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/iv_daily_login_unchoice.webp
  20. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/iv_my_rewards_icon.webp
  21. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/iv_rewards_address.webp
  22. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/iv_rewards_arrow_bottom.webp
  23. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/iv_rewards_arrow_top.webp
  24. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/iv_rewards_hot.webp
  25. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/iv_rewards_icon_f_and_b.webp
  26. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/iv_rewards_main_top_bg.webp
  27. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/iv_rewards_recommend_all_icon.webp
  28. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/iv_rewards_recommend_popularity_icon.webp
  29. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/iv_rewards_right_arrow.webp
  30. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/iv_rewards_search_bg.webp
  31. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/iv_rewards_star.webp
  32. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/login_top_bg.webp
  33. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/rewards_bronze.webp
  34. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/rewards_diamond.webp
  35. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/rewards_gold.webp
  36. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/rewards_icon_go_main.webp
  37. BIN
      cpt_rewards/src/main/res/drawable-xhdpi/rewards_silver.webp
  38. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/iv_daily_login_default_pictrue.webp
  39. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/iv_daily_login_hlep.webp
  40. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/iv_daily_login_open_teasurechest.webp
  41. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/iv_daily_login_red_choose.webp
  42. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/iv_daily_login_teasurechest.webp
  43. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/iv_daily_login_unchoice.webp
  44. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/iv_my_rewards_icon.webp
  45. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/iv_rewards_address.webp
  46. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/iv_rewards_arrow_bottom.webp
  47. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/iv_rewards_arrow_top.webp
  48. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/iv_rewards_hot.webp
  49. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/iv_rewards_icon_f_and_b.webp
  50. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/iv_rewards_main_top_bg.webp
  51. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/iv_rewards_recommend_all_icon.webp
  52. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/iv_rewards_recommend_popularity_icon.webp
  53. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/iv_rewards_right_arrow.webp
  54. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/iv_rewards_search_bg.webp
  55. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/iv_rewards_star.webp
  56. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/rewards_bronze.webp
  57. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/rewards_diamond.webp
  58. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/rewards_gold.webp
  59. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/rewards_icon_go_main.webp
  60. BIN
      cpt_rewards/src/main/res/drawable-xxhdpi/rewards_silver.webp
  61. 380 0
      cpt_rewards/src/main/res/layout/activity_rewards.xml
  62. 265 0
      cpt_rewards/src/main/res/layout/activity_rewards_daily_login.xml
  63. 125 0
      cpt_rewards/src/main/res/layout/activity_rewards_list.xml
  64. 217 0
      cpt_rewards/src/main/res/layout/activity_rewards_search.xml
  65. 144 0
      cpt_rewards/src/main/res/layout/item_rewards_best_offer.xml
  66. 37 0
      cpt_rewards/src/main/res/layout/item_rewards_category.xml
  67. 103 0
      cpt_rewards/src/main/res/layout/item_rewards_recomend.xml
  68. 463 0
      cpt_rewards/src/main/res/layout/layout_inflate_sign_group.xml
  69. 115 0
      cpt_rewards/src/main/res/xml/scene_rewards_main.xml
  70. 120 0
      cs_baselib/src/main/java/com/guadou/lib_baselib/utils/CheckUtil.java
  71. 746 0
      cs_baselib/src/main/java/com/guadou/lib_baselib/utils/DateAndTimeUtil.java
  72. 92 0
      cs_baselib/src/main/java/com/guadou/lib_baselib/utils/SPUtils.java
  73. 49 0
      cs_baselib/src/main/res/layout/item_points_history.xml
  74. 2 0
      cs_baselib/src/main/res/values/dimens.xml
  75. 3 0
      cs_cptServices/src/main/java/com/guadou/cs_cptservices/YYConstants.java
  76. 35 0
      cs_cptServices/src/main/java/com/guadou/cs_cptservices/commonBean/LevelPoints.java
  77. 106 0
      cs_cptServices/src/main/java/com/guadou/cs_cptservices/widget/CustomRound6ImageView.java
  78. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/back_blue.webp
  79. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/daliy_points_gold.webp
  80. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/reward_yy_circle_logo.png
  81. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/search.webp
  82. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/search_bg.webp
  83. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/search_delete.webp
  84. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/back_blue.webp
  85. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/daliy_points_gold.webp
  86. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/search.webp
  87. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/search_bg.webp
  88. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/search_delete.webp
  89. 5 0
      cs_cptServices/src/main/res/drawable/shape_15round_main_blue.xml
  90. 5 0
      cs_cptServices/src/main/res/drawable/shape_15round_white.xml
  91. 11 0
      cs_cptServices/src/main/res/drawable/shape_blue_8conner_no_right_top.xml
  92. 4 0
      cs_cptServices/src/main/res/values/colors.xml
  93. 10 0
      cs_cptServices/src/main/res/values/styles.xml

+ 4 - 1
cpt_main/src/main/java/com/hongyegroup/cpt_main/ui/HomeFragment.kt

@@ -5,6 +5,7 @@ import android.view.View
 import com.guadou.cs_cptservices.adapter.BannerRectangleCircleIndicator
 import com.guadou.cs_cptservices.base.fragment.YYBaseVDBLoadingFragment
 import com.guadou.cs_cptservices.interfaces.IFragmentRefresh
+import com.guadou.cs_router.YYRouterService
 import com.guadou.lib_baselib.bean.DataBindingConfig
 import com.guadou.lib_baselib.engine.toast
 import com.guadou.lib_baselib.ext.horizontal
@@ -137,7 +138,9 @@ class HomeFragment : YYBaseVDBLoadingFragment<HomeViewModel, FragmentHomeBinding
         }
 
         fun gotoRewardsPage() {
-            toast("去奖励页面")
+
+            YYRouterService.rewardsComponentServer?.startRewardsDailyPage()
+
         }
 
         fun gotoParttimePage() {

+ 7 - 1
cpt_rewards/src/main/AndroidManifest.xml

@@ -1,10 +1,16 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.hongyegroup.cpt_profile">
+    package="com.hongyegroup.cpt_rewards">
 
     <application android:allowBackup="true">
 
+        <activity android:name=".ui.RewardsDailyLoginActivity"/>
 
+        <activity android:name=".ui.RewardsActivity"/>
+
+        <activity android:name=".ui.RewardsListActivity"/>
+
+        <activity android:name=".ui.RewardsSearchActivity"/>
 
     </application>
 

+ 4 - 0
cpt_rewards/src/main/java/com/hongyegroup/cpt_rewards/adapter/RewardsCategoryAdapter.kt

@@ -0,0 +1,4 @@
+package com.hongyegroup.cpt_rewards.adapter
+
+class RewardsCategoryAdapter {
+}

+ 13 - 0
cpt_rewards/src/main/java/com/hongyegroup/cpt_rewards/mvvm/RewardsListViewModel.kt

@@ -0,0 +1,13 @@
+package com.hongyegroup.cpt_rewards.mvvm
+
+import com.guadou.cs_cptservices.binding.BaseDataBindingAdapter
+import com.guadou.lib_baselib.base.vm.BaseViewModel
+import com.hongyegroup.cpt_rewards.BR
+import com.hongyegroup.cpt_rewards.R
+
+class RewardsListViewModel : BaseViewModel() {
+
+    var mRewardsListData = ArrayList<String>()
+    val mRewardsListAdapter by lazy { BaseDataBindingAdapter(R.layout.item_rewards_best_offer, BR.item, mRewardsListData) }
+
+}

+ 13 - 0
cpt_rewards/src/main/java/com/hongyegroup/cpt_rewards/mvvm/RewardsSearchViewModel.kt

@@ -0,0 +1,13 @@
+package com.hongyegroup.cpt_rewards.mvvm
+
+import com.guadou.cs_cptservices.binding.BaseDataBindingAdapter
+import com.guadou.lib_baselib.base.vm.BaseViewModel
+import com.hongyegroup.cpt_rewards.BR
+import com.hongyegroup.cpt_rewards.R
+
+class RewardsSearchViewModel : BaseViewModel() {
+
+    var mRewardsData = ArrayList<String>()
+    val mRewardsAdapter by lazy { BaseDataBindingAdapter(R.layout.item_rewards_best_offer, BR.item, mRewardsData) }
+
+}

+ 30 - 0
cpt_rewards/src/main/java/com/hongyegroup/cpt_rewards/mvvm/RewardsViewModel.kt

@@ -0,0 +1,30 @@
+package com.hongyegroup.cpt_rewards.mvvm
+
+import com.guadou.cs_cptservices.binding.BaseDataBindingAdapter
+import com.guadou.lib_baselib.base.vm.BaseViewModel
+import com.hongyegroup.cpt_rewards.BR
+import com.hongyegroup.cpt_rewards.R
+
+class RewardsViewModel:BaseViewModel() {
+
+    //分类
+    var mCategoryDatas=ArrayList<String>()
+    val mCategoryAdapter by lazy { BaseDataBindingAdapter(R.layout.item_rewards_category,BR.item,mCategoryDatas) }
+
+    //推荐
+    var mRecommendDatas=ArrayList<String>()
+    val mRecommendAdapter by lazy { BaseDataBindingAdapter(R.layout.item_rewards_recomend,BR.item,mRecommendDatas) }
+
+    //Hottest
+    var mHottestDatas=ArrayList<String>()
+    val mHottestAdapter by lazy { BaseDataBindingAdapter(R.layout.item_rewards_recomend,BR.item,mHottestDatas) }
+
+    //Food & Beverage
+    var mFoodBeverageDatas=ArrayList<String>()
+    val mFoodBeverageAdapter by lazy { BaseDataBindingAdapter(R.layout.item_rewards_recomend,BR.item,mFoodBeverageDatas) }
+
+    //Best Offers
+    var mBestOfferDatas=ArrayList<String>()
+    val mBestOfferAdapter by lazy { BaseDataBindingAdapter(R.layout.item_rewards_best_offer,BR.item,mBestOfferDatas) }
+
+}

+ 4 - 0
cpt_rewards/src/main/java/com/hongyegroup/cpt_rewards/router/RewardsComponentServiceImpl.kt

@@ -4,6 +4,7 @@ import android.content.Context
 import com.alibaba.android.arouter.facade.annotation.Route
 import com.guadou.cs_router.ARouterPath
 import com.guadou.cs_router.rewards.IRewardsComponentServer
+import com.hongyegroup.cpt_rewards.ui.RewardsDailyLoginActivity
 
 @Route(path = ARouterPath.PATH_SERVICE_REWARDS, name = "Rewards模块路由服务")
 class RewardsComponentServiceImpl : IRewardsComponentServer {
@@ -12,6 +13,9 @@ class RewardsComponentServiceImpl : IRewardsComponentServer {
     }
 
     override fun startRewardsDailyPage() {
+
+        RewardsDailyLoginActivity.startInstance()
+
     }
 
     override fun init(context: Context?) {

+ 117 - 0
cpt_rewards/src/main/java/com/hongyegroup/cpt_rewards/ui/RewardsActivity.kt

@@ -0,0 +1,117 @@
+package com.hongyegroup.cpt_rewards.ui
+
+import android.content.Intent
+import android.os.Bundle
+import com.guadou.lib_baselib.base.activity.BaseVDBActivity
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.ext.horizontal
+import com.guadou.lib_baselib.ext.vertical
+import com.guadou.lib_baselib.utils.CommUtils
+import com.hongyegroup.cpt_rewards.BR
+import com.hongyegroup.cpt_rewards.R
+import com.hongyegroup.cpt_rewards.databinding.ActivityRewardsBinding
+import com.hongyegroup.cpt_rewards.mvvm.RewardsViewModel
+
+class RewardsActivity : BaseVDBActivity<RewardsViewModel, ActivityRewardsBinding>() {
+
+    companion object {
+        fun startInstance() {
+            val context = CommUtils.getContext()
+            val intent = Intent(context, RewardsActivity::class.java)
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            context.startActivity(intent)
+        }
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+
+        initView()
+
+    }
+
+    private fun initView() {
+
+        //分类
+        for (index in 0..8) {
+
+            mViewModel.mCategoryDatas.add("")
+
+        }
+        mBinding.recyclerViewPromotionRewardsCategory.horizontal().adapter = mViewModel.mCategoryAdapter
+        mViewModel.mCategoryAdapter.notifyDataSetChanged()
+
+        //Recommend
+        for (index in 0..8) {
+
+            mViewModel.mRecommendDatas.add("")
+
+        }
+
+        mBinding.recyclerViewPromotionRewardsRecommend.horizontal().adapter = mViewModel.mRecommendAdapter
+        mViewModel.mRecommendAdapter.notifyDataSetChanged()
+
+        //Hottest
+        for (index in 0..8) {
+
+            mViewModel.mHottestDatas.add("")
+
+        }
+
+        mBinding.recyclerViewPromotionRewardsHottest.horizontal().adapter = mViewModel.mHottestAdapter
+        mViewModel.mHottestAdapter.notifyDataSetChanged()
+
+        //Food & Beverage
+        for (index in 0..8) {
+
+            mViewModel.mFoodBeverageDatas.add("")
+
+        }
+
+        mBinding.recyclerViewPromotionRewardsFood.horizontal().adapter = mViewModel.mFoodBeverageAdapter
+        mViewModel.mFoodBeverageAdapter.notifyDataSetChanged()
+
+        //Best Offer
+        for (index in 0..8) {
+
+            mViewModel.mBestOfferDatas.add("")
+
+        }
+
+        mBinding.recyclerViewPromotionRewardsOffers.vertical().adapter = mViewModel.mBestOfferAdapter
+        mViewModel.mBestOfferAdapter.notifyDataSetChanged()
+
+
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+
+        return DataBindingConfig(R.layout.activity_rewards, BR.viewModel, mViewModel)
+            .addBindingParams(BR.click,ClickProxy())
+
+    }
+
+    override fun startObserve() {
+
+    }
+
+    /**
+     * DataBinding事件处理
+     */
+    inner class ClickProxy {
+
+        //跳转到搜索界面
+        fun gotoSearchActivity(){
+
+            RewardsSearchActivity.startInstance()
+
+        }
+
+        //查看Rewards列表
+        fun gotoRewardsList(){
+
+            RewardsListActivity.startInstance()
+
+        }
+
+    }
+}

+ 656 - 0
cpt_rewards/src/main/java/com/hongyegroup/cpt_rewards/ui/RewardsDailyLoginActivity.java

@@ -0,0 +1,656 @@
+package com.hongyegroup.cpt_rewards.ui;
+
+import android.animation.Animator;
+import android.animation.ValueAnimator;
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Path;
+import android.graphics.PathMeasure;
+import android.os.Bundle;
+import android.util.TypedValue;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewStub;
+import android.view.animation.LinearInterpolator;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.guadou.cs_cptservices.YYConstants;
+import com.guadou.cs_cptservices.commonBean.LevelPoints;
+import com.guadou.lib_baselib.base.activity.BaseVMActivity;
+import com.guadou.lib_baselib.base.vm.BaseViewModel;
+import com.guadou.lib_baselib.engine.ToastExtKt;
+import com.guadou.lib_baselib.ext.DateTimeExtKt;
+import com.guadou.lib_baselib.font_text_view.TextViewLight;
+import com.guadou.lib_baselib.utils.CommUtils;
+import com.guadou.lib_baselib.utils.DateAndTimeUtil;
+import com.guadou.lib_baselib.utils.SPUtils;
+import com.guadou.lib_baselib.view.titlebar.EasyTitleBar;
+import com.hongyegroup.cpt_rewards.R;
+import com.hongyegroup.cpt_rewards.utils.NumAnim;
+import com.hongyegroup.cpt_rewards.utils.PointFormatUtils;
+import com.scwang.smart.refresh.layout.SmartRefreshLayout;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+
+import androidx.annotation.Nullable;
+
+public class RewardsDailyLoginActivity extends BaseVMActivity<BaseViewModel> implements View.OnClickListener {
+
+    private TextView mHistoryTv;
+    private EasyTitleBar mEasyTitle;
+    private TextView mCheckInTv;
+    private RelativeLayout mRootRl;
+    private TextView mContinuousDayTv;
+    private TextView mNewsFeedPostTv;
+    private TextView mPromotionApplyTv;
+
+    private TextView mPointsTv;
+    private TextView mData1Tv;
+    private TextView mData2Tv;
+    private TextView mData3Tv;
+    private TextView mData4Tv;
+    private TextView mData5Tv;
+    private TextView mData6Tv;
+    private TextView mData7Tv;
+    private ImageView mChoose1Iv;
+    private ImageView mChoose2Iv;
+    private ImageView mChoose3Iv;
+    private ImageView mChoose4Iv;
+    private ImageView mChoose5Iv;
+    private ImageView mChoose6Iv;
+    private ImageView mChoose7Iv;
+    private TextView mPoints1Tv;
+    private TextView mPoints2Tv;
+    private TextView mPoints3Tv;
+    private TextView mPoints4Tv;
+    private TextView mPoints5Tv;
+    private TextView mPoints6Tv;
+    private TextView mPoints7Tv;
+    private ImageView mTeasurechest1Iv;
+    private ImageView mTeasurechest2Iv;
+    private ImageView mTeasurechest3Iv;
+    private ImageView mTeasurechest4Iv;
+    private ImageView mTeasurechest5Iv;
+    private ImageView mTeasurechest6Iv;
+    private ImageView mTeasurechest7Iv;
+
+    //昨天是否签到
+    private boolean isCheckInYesterday;
+    //签到当天有宝箱,是否打开
+    private boolean isBoxOpened = false;
+    private LevelPoints mLevelPoints;
+    //今天所在的位置
+    private int mCurrentDayPosition;
+    //当前是第几天
+    private int mCurrentDay = 0;
+    //总积分数
+    private int mPoint = 0;
+    //当前7天的连续签到天数
+    private List<Integer> mDays = new ArrayList<>();
+    //日期的数组
+    private TextView[] mDateTvs = new TextView[7];
+    //点卡图标的数组
+    private ImageView[] mChoosesIvs = new ImageView[7];
+    private ImageView[] mTeasurechesIvs = new ImageView[7];
+    //签到加的积分
+    private TextView[] mPointTvs = new TextView[7];
+    // 贝塞尔曲线中间过程点坐标
+    private float[] mCurrentPosition = new float[2];
+    // 路径测量
+    private PathMeasure mPathMeasure;
+    private ViewStub mViewstub_sign;
+    //    private View mRootView;
+    private View mView_placeholder;
+    private LinearLayout mLlHistory3itemRoot;
+    private SmartRefreshLayout mRefreshLayout;
+    private View mTvGotoRewards;
+    private TextViewLight mTvDailyBrowseNews;
+    private TextViewLight mTvDailyGiveLike;
+    private TextViewLight mTvDailyPostVideo;
+    private TextViewLight mTvDailyGetLikes;
+    private boolean isFirstEnter = true;
+    private boolean isInflateView = true;//每日签到布局只加载一次
+
+    public static void startInstance() {
+
+        Context context = CommUtils.getContext();
+        Intent intent = new Intent(context, RewardsDailyLoginActivity.class);
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        context.startActivity(intent);
+
+    }
+
+    @Override
+    public void init(@Nullable Bundle savedInstanceState) {
+
+        initView();
+        initListener();
+
+    }
+
+    private void initListener() {
+
+        mCheckInTv.setOnClickListener(this);
+        mTvGotoRewards.setOnClickListener(this);
+        mEasyTitle.addRightImg(R.drawable.help_blue, new EasyTitleBar.MenuBuilder.OnMenuClickListener() {
+            @Override
+            public void OnMenuEvent() {
+
+                ToastExtKt.toast(this, "Rules");
+
+            }
+        });
+
+    }
+
+    private void initView() {
+
+//        mLevelPoints = (LevelPoints) getArguments().getSerializable("level_points");
+//        isCheckInYesterday = getArguments().getBoolean("is_check_in_yesterday");
+
+        /**
+         * total : 0
+         * level : 1
+         * level_alias : Bronze
+         * "daily_check_in": false,
+         * "promotion_apply": false,
+         * "news_feed_post": false
+         * continuous_days : 0
+         */
+        mLevelPoints = new LevelPoints();
+        mLevelPoints.points = 200;
+        mLevelPoints.level = "1";
+        mLevelPoints.daily_check_in = false;
+        mLevelPoints.continuous_days = 3;
+
+        isCheckInYesterday = true;
+
+//        if (mLevelPoints.daily_check_in) {
+//            mCurrentDay = mLevelPoints.continuous_days;
+//        } else {
+//            mCurrentDay = mLevelPoints.continuous_days + 1;
+//        }
+
+        mTvGotoRewards = findViewById(R.id.tv_goto_rewards);
+        mRefreshLayout = findViewById(R.id.refresh_layout);
+        mViewstub_sign = findViewById(R.id.viewstub_sign);
+        mView_placeholder = findViewById(R.id.view_placeholder);
+        mEasyTitle = findViewById(R.id.easy_title);
+        mHistoryTv = findViewById(R.id.tv_daily_login_history);
+        mPointsTv = findViewById(R.id.tv_daily_login_points);
+        mCheckInTv = findViewById(R.id.tv_daily_login_check_in);
+        mRootRl = findViewById(R.id.rl_daily_login_root);
+        mLlHistory3itemRoot = findViewById(R.id.ll_history_3item_root);
+
+        mLlHistory3itemRoot.removeAllViews();
+
+        View inflate = CommUtils.inflate(R.layout.item_points_history);
+
+        mLlHistory3itemRoot.addView(inflate);
+//        mLlHistory3itemRoot.addView(inflate);
+//        mLlHistory3itemRoot.addView(inflate);
+
+        //设置其他的数据
+//        setupDailyStatus();
+
+    }
+
+    //其他的按钮状态设置
+    @SuppressLint("SetTextI18n")
+    private void setupDailyStatus() {
+        if (mLevelPoints != null) {
+
+            if (mLevelPoints.news_feed_post) {
+                mNewsFeedPostTv.setEnabled(false);
+                mNewsFeedPostTv.setBackgroundColor(CommUtils.getColor(R.color.gray));
+            }
+
+            if (mLevelPoints.promotion_apply) {
+                mPromotionApplyTv.setEnabled(false);
+                mPromotionApplyTv.setBackgroundColor(CommUtils.getColor(R.color.gray));
+            }
+
+            if (mLevelPoints.browse_news_feed) {
+                mTvDailyBrowseNews.setEnabled(false);
+                mTvDailyBrowseNews.setBackgroundColor(CommUtils.getColor(R.color.gray));
+            }
+
+            if (mLevelPoints.give_likes >= 10) {
+                mTvDailyGiveLike.setEnabled(false);
+                mTvDailyGiveLike.setBackgroundColor(CommUtils.getColor(R.color.gray));
+            } else {
+                mTvDailyGiveLike.setEnabled(true);
+                mTvDailyGiveLike.setBackgroundColor(CommUtils.getColor(R.color.profile_red));
+            }
+            mTvDailyGiveLike.setText(mLevelPoints.give_likes + " / 10");
+
+
+            if (mLevelPoints.post_video) {
+                mTvDailyPostVideo.setEnabled(false);
+                mTvDailyPostVideo.setBackgroundColor(CommUtils.getColor(R.color.gray));
+            }
+
+            if (mLevelPoints.get_likes >= 50) {
+                mTvDailyGetLikes.setEnabled(false);
+                mTvDailyGetLikes.setBackgroundColor(CommUtils.getColor(R.color.gray));
+            } else {
+                mTvDailyGetLikes.setEnabled(true);
+                mTvDailyGetLikes.setBackgroundColor(CommUtils.getColor(R.color.profile_red));
+            }
+            mTvDailyGetLikes.setText(mLevelPoints.get_likes + " / 50");
+
+        }
+    }
+
+    @Override
+    public int getLayoutIdRes() {
+        return R.layout.activity_rewards_daily_login;
+    }
+
+    @Override
+    public void onEnterAnimationComplete() {
+        super.onEnterAnimationComplete();
+
+        //每日签到界面只填充一次
+        if (isInflateView) {
+
+            isInflateView = false;
+
+            //展示顶部point和动画
+//        mPoint = SPUtils.getInstance(CommUtils.getContext()).getInt(YYConstants.CACHE_REWARDS_POINTS, 0);
+            mPoint = 200;
+            NumAnim.startAnim(mPointsTv, mPoint);
+
+            //加载布局
+            mView_placeholder.setVisibility(View.GONE);
+            mViewstub_sign.inflate();
+
+            mContinuousDayTv = findViewById(R.id.tv_daily_login_continuous_day);
+            mData1Tv = findViewById(R.id.tv_date1);
+            mData2Tv = findViewById(R.id.tv_date2);
+            mData3Tv = findViewById(R.id.tv_date3);
+            mData4Tv = findViewById(R.id.tv_date4);
+            mData5Tv = findViewById(R.id.tv_date5);
+            mData6Tv = findViewById(R.id.tv_date6);
+            mData7Tv = findViewById(R.id.tv_date7);
+
+            mDateTvs[0] = mData1Tv;
+            mDateTvs[1] = mData2Tv;
+            mDateTvs[2] = mData3Tv;
+            mDateTvs[3] = mData4Tv;
+            mDateTvs[4] = mData5Tv;
+            mDateTvs[5] = mData6Tv;
+            mDateTvs[6] = mData7Tv;
+
+            mChoose1Iv = findViewById(R.id.iv_daily_choose1);
+            mChoose2Iv = findViewById(R.id.iv_daily_choose2);
+            mChoose3Iv = findViewById(R.id.iv_daily_choose3);
+            mChoose4Iv = findViewById(R.id.iv_daily_choose4);
+            mChoose5Iv = findViewById(R.id.iv_daily_choose5);
+            mChoose6Iv = findViewById(R.id.iv_daily_choose6);
+            mChoose7Iv = findViewById(R.id.iv_daily_choose7);
+
+            mChoosesIvs[0] = mChoose1Iv;
+            mChoosesIvs[1] = mChoose2Iv;
+            mChoosesIvs[2] = mChoose3Iv;
+            mChoosesIvs[3] = mChoose4Iv;
+            mChoosesIvs[4] = mChoose5Iv;
+            mChoosesIvs[5] = mChoose6Iv;
+            mChoosesIvs[6] = mChoose7Iv;
+
+            mPoints1Tv = findViewById(R.id.tv_points1);
+            mPoints2Tv = findViewById(R.id.tv_points2);
+            mPoints3Tv = findViewById(R.id.tv_points3);
+            mPoints4Tv = findViewById(R.id.tv_points4);
+            mPoints5Tv = findViewById(R.id.tv_points5);
+            mPoints6Tv = findViewById(R.id.tv_points6);
+            mPoints7Tv = findViewById(R.id.tv_points7);
+
+            mPointTvs[0] = mPoints1Tv;
+            mPointTvs[1] = mPoints2Tv;
+            mPointTvs[2] = mPoints3Tv;
+            mPointTvs[3] = mPoints4Tv;
+            mPointTvs[4] = mPoints5Tv;
+            mPointTvs[5] = mPoints6Tv;
+            mPointTvs[6] = mPoints7Tv;
+
+            mTeasurechest1Iv = findViewById(R.id.iv_teasurechest1);
+            mTeasurechest2Iv = findViewById(R.id.iv_teasurechest2);
+            mTeasurechest3Iv = findViewById(R.id.iv_teasurechest3);
+            mTeasurechest4Iv = findViewById(R.id.iv_teasurechest4);
+            mTeasurechest5Iv = findViewById(R.id.iv_teasurechest5);
+            mTeasurechest6Iv = findViewById(R.id.iv_teasurechest6);
+            mTeasurechest7Iv = findViewById(R.id.iv_teasurechest7);
+
+            mTeasurechesIvs[0] = mTeasurechest1Iv;
+            mTeasurechesIvs[1] = mTeasurechest2Iv;
+            mTeasurechesIvs[2] = mTeasurechest3Iv;
+            mTeasurechesIvs[3] = mTeasurechest4Iv;
+            mTeasurechesIvs[4] = mTeasurechest5Iv;
+            mTeasurechesIvs[5] = mTeasurechest6Iv;
+            mTeasurechesIvs[6] = mTeasurechest7Iv;
+
+            //初始化签到控件的展示
+//        initCheckInView();
+//        mContinuousDayTv.setText(String.valueOf(mLevelPoints.continuous_days));
+
+
+            if (isCheckInYesterday) {
+
+                //昨天有签到
+                mContinuousDayTv.setText(String.valueOf(mLevelPoints.continuous_days));
+
+                if (mLevelPoints.daily_check_in) {
+                    mCurrentDay = mLevelPoints.continuous_days;
+                } else {
+                    mCurrentDay = mLevelPoints.continuous_days + 1;
+                }
+
+            } else {
+
+                //昨天没有签到
+                mCurrentDay = 1;
+                if (mLevelPoints.daily_check_in) {
+                    mContinuousDayTv.setText(String.valueOf(mLevelPoints.continuous_days));
+                } else {
+                    mContinuousDayTv.setText("0");
+                }
+
+            }
+
+            initCheckInView();
+
+            //如果今天签到了,并且有宝箱,则打开宝箱
+            if (mLevelPoints.daily_check_in) {
+
+                mCheckInTv.setEnabled(false);
+                mCheckInTv.setBackgroundColor(CommUtils.getColor(R.color.gray));
+
+                Integer day = mDays.get(mCurrentDayPosition);
+
+                if (day == 7 || day == 14 || day == 30) {
+
+                    mTeasurechesIvs[mCurrentDayPosition].setImageResource(R.drawable.iv_daily_login_open_teasurechest);
+                } else {
+
+                    mPointTvs[mCurrentDayPosition].setVisibility(View.GONE);
+                    mChoosesIvs[mCurrentDayPosition].setVisibility(View.VISIBLE);
+                }
+            }
+
+        }
+
+    }
+
+    //签到的控件展示
+    @SuppressLint("SetTextI18n")
+    private void initCheckInView() {
+
+        mCurrentDayPosition = mCurrentDay % 7;
+        if (mCurrentDayPosition == 0) {
+
+            mCurrentDayPosition = 6;
+        } else {
+
+            mCurrentDayPosition = mCurrentDayPosition - 1;
+        }
+
+        //以30天为周期,当前是第几天
+        int currentDay = mCurrentDay % 30;
+
+        for (int i = 0; i < mDateTvs.length; i++) {
+
+            //确定日期
+            Calendar calendar = Calendar.getInstance();
+            calendar.add(Calendar.DAY_OF_MONTH, i - mCurrentDayPosition);
+
+            if (i == mCurrentDayPosition) {
+
+                mDateTvs[i].setText("今天");
+            } else {
+
+                mDateTvs[i].setText(DateAndTimeUtil.stampToDate21(String.valueOf(calendar.getTime().getTime())));
+
+            }
+
+
+            //计算当前7天是哪几天
+            if (currentDay + i - mCurrentDayPosition > 0) {
+
+                mDays.add(currentDay + i - mCurrentDayPosition);
+            } else {
+
+                mDays.add(30 + currentDay + i - mCurrentDayPosition);
+
+            }
+
+            if (i < mCurrentDayPosition) {
+
+                mChoosesIvs[i].setVisibility(View.VISIBLE);
+                mPointTvs[i].setVisibility(View.GONE);
+
+            }
+
+        }
+
+        if (mDays.contains(7)) {
+
+            int index = mDays.indexOf(7);
+            boolean isOpen = index < mCurrentDayPosition;
+            setTeasureches(index, isOpen);
+            return;
+
+        }
+
+        if (mDays.contains(14)) {
+
+            int index = mDays.indexOf(14);
+            boolean isOpen = index < mCurrentDayPosition;
+            setTeasureches(index, isOpen);
+            return;
+
+        }
+
+        if (mDays.contains(30)) {
+
+            int index = mDays.indexOf(30);
+            boolean isOpen = index < mCurrentDayPosition;
+            setTeasureches(index, isOpen);
+            return;
+
+        }
+
+    }
+
+    //设置宝箱
+    private void setTeasureches(int position, boolean isOpen) {
+
+        mTeasurechesIvs[position].setVisibility(View.VISIBLE);
+        mChoosesIvs[position].setVisibility(View.INVISIBLE);
+        mPointTvs[position].setVisibility(View.INVISIBLE);
+
+        if (isOpen) {
+
+            mTeasurechesIvs[position].setImageResource(R.drawable.iv_daily_login_open_teasurechest);
+
+        } else {
+
+            mTeasurechesIvs[position].setImageResource(R.drawable.iv_daily_login_teasurechest);
+        }
+
+    }
+
+    @Override
+    public void startObserve() {
+
+    }
+
+    @Override
+    public void onClick(View view) {
+
+        int viewId = view.getId();
+        if (viewId == R.id.tv_daily_login_check_in) {
+
+            //积分+2移动动画
+            mPointTvs[mCurrentDayPosition].setText("+2");
+            addPointsToTotal(mPointTvs[mCurrentDayPosition]);
+
+        } else if (viewId == R.id.tv_goto_rewards) {
+
+            RewardsActivity.Companion.startInstance();
+
+        }
+
+    }
+
+    //增加积分的动画
+    private void addPointsToTotal(TextView pointsTv) {
+
+        // 创造出执行动画的主题goodsImg(这个图片就是执行动画的图片,从开始位置出发,经过一个抛物线(贝塞尔曲线),移动到购物车里)
+        TextView pointTv = new TextView(mActivity);
+//        goods.setImageDrawable(goodsImg.getDrawable());
+        pointTv.setBackgroundResource(R.drawable.iv_daily_login_unchoice);
+        pointTv.setText(pointsTv.getText().toString().trim());
+
+        pointTv.setTextColor(CommUtils.getColor(R.color.white));
+        pointTv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 8);
+        pointTv.setGravity(Gravity.CENTER);
+
+        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(CommUtils.dip2px(20), CommUtils.dip2px(20));
+//        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(100, 100);
+//        mShoppingCartRly.addView(goods, params);
+        mRootRl.addView(pointTv, params);
+
+        // 得到父布局的起始点坐标(用于辅助计算动画开始/结束时的点的坐标)
+        int[] parentLocation = new int[2];
+//        mShoppingCartRly.getLocationInWindow(parentLocation);
+        mRootRl.getLocationInWindow(parentLocation);
+
+        // 得到商品图片的坐标(用于计算动画开始的坐标)
+        int startLoc[] = new int[2];
+        pointsTv.getLocationInWindow(startLoc);
+
+        // 得到购物车图片的坐标(用于计算动画结束后的坐标)
+        int endLoc[] = new int[2];
+//        mShoppingCartIv.getLocationInWindow(endLoc);
+        mPointsTv.getLocationInWindow(endLoc);
+
+        // 开始掉落的商品的起始点:商品起始点-父布局起始点+该商品图片的一半
+        float startX = startLoc[0] - parentLocation[0] + pointsTv.getWidth() / 2;
+        float startY = startLoc[1] - parentLocation[1] + pointsTv.getHeight() / 2;
+
+        // 商品掉落后的终点坐标:购物车起始点-父布局起始点+购物车图片的1/5
+//        float toX = endLoc[0] - parentLocation[0] + mShoppingCartIv.getWidth() / 5;
+        float toX = endLoc[0] - parentLocation[0] + mPointsTv.getWidth() / 5;
+        float toY = endLoc[1] - parentLocation[1];
+
+        // 开始绘制贝塞尔曲线
+        Path path = new Path();
+        // 移动到起始点(贝塞尔曲线的起点)
+        path.moveTo(startX, startY);
+        // 使用二阶贝塞尔曲线:注意第一个起始坐标越大,贝塞尔曲线的横向距离就会越大,一般按照下面的式子取即可
+//        path.quadTo((startX + toX) / 2, startY, toX, toY);
+        path.quadTo(startX, (startY + toY) / 2, toX, toY);
+        // mPathMeasure用来计算贝塞尔曲线的曲线长度和贝塞尔曲线中间插值的坐标,如果是true,path会形成一个闭环
+        mPathMeasure = new PathMeasure(path, false);
+
+        // 属性动画实现(从0到贝塞尔曲线的长度之间进行插值计算,获取中间过程的距离值)
+        ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, mPathMeasure.getLength());
+        valueAnimator.setDuration(500);
+
+        // 匀速线性插值器
+        valueAnimator.setInterpolator(new LinearInterpolator());
+        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+            @Override
+            public void onAnimationUpdate(ValueAnimator animation) {
+                // 当插值计算进行时,获取中间的每个值,
+                // 这里这个值是中间过程中的曲线长度(下面根据这个值来得出中间点的坐标值)
+                float value = (Float) animation.getAnimatedValue();
+                // 获取当前点坐标封装到mCurrentPosition
+                // boolean getPosTan(float distance, float[] pos, float[] tan) :
+                // 传入一个距离distance(0<=distance<=getLength()),然后会计算当前距离的坐标点和切线,pos会自动填充上坐标,这个方法很重要。
+                // mCurrentPosition此时就是中间距离点的坐标值
+                mPathMeasure.getPosTan(value, mCurrentPosition, null);
+                // 移动的商品图片(动画图片)的坐标设置为该中间点的坐标
+                pointTv.setTranslationX(mCurrentPosition[0]);
+                pointTv.setTranslationY(mCurrentPosition[1]);
+            }
+        });
+
+        // 开始执行动画
+        valueAnimator.start();
+
+        // 动画结束后的处理
+        valueAnimator.addListener(new Animator.AnimatorListener() {
+            @Override
+            public void onAnimationStart(Animator animation) {
+
+            }
+
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                // 购物车商品数量加1
+//                goodsCount ++;
+//                isShowCartGoodsCount();
+//                mShoppingCartCountTv.setText(String.valueOf(goodsCount));
+                // 把执行动画的商品图片从父布局中移除
+//                mShoppingCartRly.removeView(goods);
+                mRootRl.removeView(pointTv);
+
+                mPoint = mPoint + Integer.valueOf(pointsTv.getText().toString());
+
+                mPointsTv.setText(PointFormatUtils.formatPoints(String.valueOf(mPoint)));
+
+                if (mDays.get(mCurrentDayPosition) == 7 && !isBoxOpened) {
+
+                    isBoxOpened = true;
+                    //设置宝箱金额
+                    mPointTvs[mCurrentDayPosition].setText("+10");
+                    //添加开启宝箱的第二次动画
+                    addPointsToTotal(mPointTvs[mCurrentDayPosition]);
+                    //打卡宝箱
+                    mTeasurechesIvs[mCurrentDayPosition].setImageResource(R.drawable.iv_daily_login_open_teasurechest);
+
+                } else if (mDays.get(mCurrentDayPosition) == 14 && !isBoxOpened) {
+
+                    isBoxOpened = true;
+                    mPointTvs[mCurrentDayPosition].setText("+20");
+                    addPointsToTotal(mPointTvs[mCurrentDayPosition]);
+                    mTeasurechesIvs[mCurrentDayPosition].setImageResource(R.drawable.iv_daily_login_open_teasurechest);
+
+                } else if (mDays.get(mCurrentDayPosition) == 30 && !isBoxOpened) {
+
+                    isBoxOpened = true;
+                    mPointTvs[mCurrentDayPosition].setText("+50");
+                    addPointsToTotal(mPointTvs[mCurrentDayPosition]);
+                    mTeasurechesIvs[mCurrentDayPosition].setImageResource(R.drawable.iv_daily_login_open_teasurechest);
+
+                } else {
+
+                    if (!isBoxOpened) {
+
+                        mPointTvs[mCurrentDayPosition].setVisibility(View.GONE);
+                        mChoosesIvs[mCurrentDayPosition].setVisibility(View.VISIBLE);
+                    }
+
+                }
+
+            }
+
+            @Override
+            public void onAnimationCancel(Animator animation) {
+            }
+
+            @Override
+            public void onAnimationRepeat(Animator animation) {
+            }
+        });
+    }
+
+}

+ 56 - 0
cpt_rewards/src/main/java/com/hongyegroup/cpt_rewards/ui/RewardsListActivity.kt

@@ -0,0 +1,56 @@
+package com.hongyegroup.cpt_rewards.ui
+
+import android.content.Intent
+import android.os.Bundle
+import com.guadou.lib_baselib.base.activity.BaseVDBActivity
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.ext.vertical
+import com.guadou.lib_baselib.utils.CommUtils
+import com.hongyegroup.cpt_rewards.BR
+import com.hongyegroup.cpt_rewards.R
+import com.hongyegroup.cpt_rewards.databinding.ActivityRewardsListBinding
+import com.hongyegroup.cpt_rewards.databinding.ActivityRewardsListBindingImpl
+import com.hongyegroup.cpt_rewards.mvvm.RewardsListViewModel
+
+class RewardsListActivity:BaseVDBActivity<RewardsListViewModel, ActivityRewardsListBinding>() {
+
+    companion object {
+
+        fun startInstance() {
+            val context = CommUtils.getContext()
+            val intent = Intent(context, RewardsListActivity::class.java)
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            context.startActivity(intent)
+        }
+
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+
+        initView()
+
+    }
+
+    private fun initView() {
+
+        for (index in 0..9){
+
+            mViewModel.mRewardsListData.add("")
+
+        }
+
+        mBinding.recyclerViewRewardsList.vertical().adapter=mViewModel.mRewardsListAdapter
+        mViewModel.mRewardsListAdapter.notifyDataSetChanged()
+
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+
+        return DataBindingConfig(R.layout.activity_rewards_list,BR.viewModel,mViewModel)
+
+    }
+
+    override fun startObserve() {
+
+    }
+}

+ 56 - 0
cpt_rewards/src/main/java/com/hongyegroup/cpt_rewards/ui/RewardsSearchActivity.kt

@@ -0,0 +1,56 @@
+package com.hongyegroup.cpt_rewards.ui
+
+import android.content.Intent
+import android.os.Bundle
+import androidx.databinding.ViewDataBinding
+import com.guadou.lib_baselib.base.activity.BaseVDBActivity
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.ext.vertical
+import com.guadou.lib_baselib.utils.CommUtils
+import com.hongyegroup.cpt_rewards.BR
+import com.hongyegroup.cpt_rewards.R
+import com.hongyegroup.cpt_rewards.databinding.ActivityRewardsSearchBinding
+import com.hongyegroup.cpt_rewards.mvvm.RewardsSearchViewModel
+
+class RewardsSearchActivity : BaseVDBActivity<RewardsSearchViewModel, ActivityRewardsSearchBinding>() {
+
+    companion object {
+
+        fun startInstance() {
+            val context = CommUtils.getContext()
+            val intent = Intent(context, RewardsSearchActivity::class.java)
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            context.startActivity(intent)
+        }
+
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+
+        initView()
+
+    }
+
+    private fun initView() {
+
+        for (index in 0..8){
+
+            mViewModel.mRewardsData.add("")
+
+        }
+
+        mBinding.recyclerViewRewardsSearch.vertical().adapter=mViewModel.mRewardsAdapter
+        mViewModel.mRewardsAdapter.notifyDataSetChanged()
+
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+
+        return DataBindingConfig(R.layout.activity_rewards_search, BR.viewModel, mViewModel)
+
+    }
+
+    override fun startObserve() {
+
+    }
+}

+ 93 - 0
cpt_rewards/src/main/java/com/hongyegroup/cpt_rewards/utils/NumAnim.java

@@ -0,0 +1,93 @@
+package com.hongyegroup.cpt_rewards.utils;
+
+import android.widget.TextView;
+
+import java.text.DecimalFormat;
+import java.util.LinkedList;
+import java.util.Random;
+
+public class NumAnim {
+
+    //每秒刷新多少次
+    private static final int COUNTPERS = 10;
+
+    public static void startAnim(TextView textV, float num) {
+        startAnim(textV, num, 500);
+    }
+
+    public static void startAnim(TextView textV, float num, long time) {
+        if (num == 0) {
+            textV.setText(NumberFormat(num, 0));
+            return;
+        }
+
+        Float[] nums = splitnum(num, (int) ((time / 1000f) * COUNTPERS));
+
+        Counter counter = new Counter(textV, nums, time);
+
+        textV.removeCallbacks(counter);
+        textV.post(counter);
+    }
+
+    private static Float[] splitnum(float num, int count) {
+        Random random = new Random();
+        float numtemp = num;
+        float sum = 0;
+        LinkedList<Float> nums = new LinkedList<Float>();
+        nums.add(0f);
+        while (true) {
+            float nextFloat = NumberFormatFloat(
+                    (random.nextFloat() * num * 2f) / (float) count,
+                    0);
+            System.out.println("next:" + nextFloat);
+            if (numtemp - nextFloat >= 0) {
+                sum = NumberFormatFloat(sum + nextFloat, 0);
+                nums.add(sum);
+                numtemp -= nextFloat;
+            } else {
+                nums.add(num);
+                return nums.toArray(new Float[0]);
+            }
+        }
+    }
+
+    static class Counter implements Runnable {
+
+        private final TextView view;
+        private Float[] nums;
+        private long pertime;
+
+        private int i = 0;
+
+        Counter(TextView view, Float[] nums, long time) {
+            this.view = view;
+            this.nums = nums;
+            this.pertime = time / nums.length;
+        }
+
+        @Override
+        public void run() {
+            if (i > nums.length - 1) {
+                view.removeCallbacks(Counter.this);
+                return;
+            }
+            view.setText(NumberFormat(nums[i++], 0));
+            view.removeCallbacks(Counter.this);
+            view.postDelayed(Counter.this, pertime);
+        }
+    }
+
+    public static String NumberFormat(float f, int m) {
+
+        return new DecimalFormat("###,###,###,###").format(f);
+//        return String.format("%."+m+"f",f);
+    }
+
+    public static float NumberFormatFloat(float f, int m) {
+        String strfloat = NumberFormat(f, m);
+//        return Float.parseFloat(strfloat);
+        return f;
+    }
+
+
+}

+ 24 - 0
cpt_rewards/src/main/java/com/hongyegroup/cpt_rewards/utils/PointFormatUtils.java

@@ -0,0 +1,24 @@
+package com.hongyegroup.cpt_rewards.utils;
+
+
+import com.guadou.lib_baselib.utils.CheckUtil;
+
+import java.text.DecimalFormat;
+
+public class PointFormatUtils {
+
+    /**
+     * 格式化point
+     */
+    public static String formatPoints(String value) {
+
+        if (CheckUtil.checkNumberPoint(value)) {
+            DecimalFormat df = new DecimalFormat("###,###,###.##");
+            value = df.format(Double.parseDouble(value));
+        }
+
+        return value;
+    }
+
+
+}

BIN
cpt_rewards/src/main/res/drawable-xhdpi/iv_daily_login_default_pictrue.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/iv_daily_login_hlep.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/iv_daily_login_open_teasurechest.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/iv_daily_login_red_choose.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/iv_daily_login_teasurechest.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/iv_daily_login_unchoice.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/iv_my_rewards_icon.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/iv_rewards_address.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/iv_rewards_arrow_bottom.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/iv_rewards_arrow_top.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/iv_rewards_hot.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/iv_rewards_icon_f_and_b.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/iv_rewards_main_top_bg.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/iv_rewards_recommend_all_icon.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/iv_rewards_recommend_popularity_icon.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/iv_rewards_right_arrow.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/iv_rewards_search_bg.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/iv_rewards_star.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/login_top_bg.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/rewards_bronze.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/rewards_diamond.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/rewards_gold.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/rewards_icon_go_main.webp


BIN
cpt_rewards/src/main/res/drawable-xhdpi/rewards_silver.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/iv_daily_login_default_pictrue.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/iv_daily_login_hlep.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/iv_daily_login_open_teasurechest.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/iv_daily_login_red_choose.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/iv_daily_login_teasurechest.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/iv_daily_login_unchoice.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/iv_my_rewards_icon.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/iv_rewards_address.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/iv_rewards_arrow_bottom.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/iv_rewards_arrow_top.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/iv_rewards_hot.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/iv_rewards_icon_f_and_b.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/iv_rewards_main_top_bg.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/iv_rewards_recommend_all_icon.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/iv_rewards_recommend_popularity_icon.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/iv_rewards_right_arrow.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/iv_rewards_search_bg.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/iv_rewards_star.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/rewards_bronze.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/rewards_diamond.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/rewards_gold.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/rewards_icon_go_main.webp


BIN
cpt_rewards/src/main/res/drawable-xxhdpi/rewards_silver.webp


+ 380 - 0
cpt_rewards/src/main/res/layout/activity_rewards.xml

@@ -0,0 +1,380 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:binding="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <data>
+
+        <variable
+            name="viewModel"
+            type="com.hongyegroup.cpt_rewards.mvvm.RewardsViewModel" />
+
+        <variable
+            name="click"
+            type="com.hongyegroup.cpt_rewards.ui.RewardsActivity.ClickProxy" />
+
+    </data>
+
+    <androidx.constraintlayout.motion.widget.MotionLayout
+        android:id="@+id/motion_layout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/white"
+        app:layoutDescription="@xml/scene_rewards_main">
+
+        <!--Top-->
+        <LinearLayout
+            android:id="@+id/ll_top_box"
+            android:layout_width="match_parent"
+            android:layout_height="170dp"
+            android:background="@drawable/iv_rewards_main_top_bg"
+            android:gravity="center_horizontal"
+            android:orientation="vertical">
+
+            <View
+                android:id="@+id/status_bar_view"
+                android:layout_width="match_parent"
+                android:layout_height="1dp" />
+
+            <!-- Available Points-->
+            <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+
+                <LinearLayout
+                    android:id="@+id/ll_promotion_rewards_available_point"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_centerInParent="true"
+                    android:layout_marginLeft="@dimen/d_30dp"
+                    android:orientation="horizontal">
+
+                    <com.guadou.lib_baselib.font_text_view.TextViewLight
+                        android:id="@+id/tv_promotion_rewards_available_point"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="-"
+                        android:textColor="@color/white"
+                        android:textSize="@dimen/d_14sp" />
+
+                    <com.guadou.lib_baselib.font_text_view.TextViewLight
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="@dimen/d_2dp"
+                        android:text="可用积分"
+                        android:textColor="#CAECFF"
+                        android:textSize="@dimen/d_14sp" />
+
+                </LinearLayout>
+
+            </RelativeLayout>
+
+            <!--Bronze-->
+            <LinearLayout
+                android:id="@+id/ll_promotion_rewards_level"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:gravity="center_vertical"
+                android:orientation="horizontal">
+
+                <ImageView
+                    android:id="@+id/iv_promotion_rewards_level"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:src="@drawable/iv_rewards_star" />
+
+                <com.guadou.lib_baselib.font_text_view.TextViewMedium
+                    android:id="@+id/tv_promotion_rewards_level"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d_5dp"
+                    android:text="Bronze"
+                    android:textColor="#E2F1FF"
+                    android:textSize="@dimen/d_15sp" />
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d_5dp"
+                    android:src="@drawable/iv_rewards_right_arrow" />
+
+            </LinearLayout>
+
+            <!--My Rewards-->
+            <LinearLayout
+                android:id="@+id/ll_promotion_rewards_my_rewards"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/d_10dp"
+                android:background="@drawable/shape_15round_white"
+                android:gravity="center_vertical"
+                android:paddingLeft="@dimen/d_15dp"
+                android:paddingTop="@dimen/d_5dp"
+                android:paddingRight="@dimen/d_15dp"
+                android:paddingBottom="@dimen/d_5dp">
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:src="@drawable/iv_my_rewards_icon" />
+
+                <com.guadou.lib_baselib.font_text_view.TextViewMedium
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d_5dp"
+                    android:text="我的奖励"
+                    android:textColor="#1C92FA"
+                    android:textSize="@dimen/d_14sp" />
+
+            </LinearLayout>
+
+        </LinearLayout>
+
+        <!-- placeholder   -->
+        <ImageView
+            android:id="@+id/img_top_bg"
+            android:layout_width="match_parent"
+            android:layout_height="85dp"
+            android:scaleType="centerCrop"
+            android:src="@drawable/login_top_bg" />
+
+        <!--Search-->
+        <LinearLayout
+            android:id="@+id/ll_promotion_rewards_search"
+            android:layout_width="match_parent"
+            android:layout_height="70dp"
+            android:background="@drawable/iv_rewards_search_bg"
+            android:focusable="true"
+            android:focusableInTouchMode="true"
+            android:gravity="center_vertical"
+            android:orientation="horizontal"
+            binding:clicks="@{click.gotoSearchActivity}"
+            tools:layout_editor_absoluteX="10dp"
+            tools:layout_editor_absoluteY="169dp">
+
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_20dp"
+                android:layout_marginTop="-5dp"
+                android:src="@drawable/search" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewLight
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_10dp"
+                android:layout_marginTop="-5dp"
+                android:layout_weight="1"
+                android:background="@null"
+                android:enabled="false"
+                android:hint="搜索"
+                android:textColor="@color/black"
+                android:textColorHint="@color/gray_text"
+                android:textSize="@dimen/d_14sp" />
+
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_10dp"
+                android:layout_marginTop="-5dp"
+                android:layout_marginRight="@dimen/d_20dp"
+                android:src="@drawable/search_delete"
+                android:visibility="gone" />
+
+        </LinearLayout>
+        <!--  Back -->
+        <ImageView
+            android:id="@+id/iv_promotion_rewards_main_back"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:padding="@dimen/d_5dp"
+            android:src="@mipmap/back_white_icon" />
+
+        <com.scwang.smart.refresh.layout.SmartRefreshLayout
+            android:id="@+id/refresh_layout_promotion_rewards"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            app:layout_behavior="@string/appbar_scrolling_view_behavior"
+            tools:layout_constraintBottom_toBottomOf="parent"
+            tools:layout_constraintTop_toBottomOf="@id/ll_promotion_rewards_search">
+
+            <com.scwang.smart.refresh.header.ClassicsHeader
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content" />
+
+            <androidx.core.widget.NestedScrollView
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:fillViewport="true"
+                android:overScrollMode="never"
+                app:layout_behavior="@string/appbar_scrolling_view_behavior">
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:orientation="vertical">
+
+                    <!--Category-->
+                    <androidx.recyclerview.widget.RecyclerView
+                        android:id="@+id/recycler_view_promotion_rewards_category"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:overScrollMode="never" />
+
+                    <!--Recommend-->
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:gravity="center_vertical"
+                        android:paddingTop="@dimen/d_12dp"
+                        android:paddingBottom="@dimen/d_12dp">
+
+                        <com.guadou.lib_baselib.font_text_view.TextViewBold
+                            android:layout_width="0dp"
+                            android:layout_height="wrap_content"
+                            android:layout_weight="1"
+                            android:paddingLeft="@dimen/d_15dp"
+                            android:text="推荐"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/d_15sp" />
+
+                        <com.guadou.lib_baselib.font_text_view.TextViewLight
+                            android:id="@+id/tv_promotion_rewards_recommend_see_all"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginRight="@dimen/d_10dp"
+                            android:padding="@dimen/d_5dp"
+                            android:text="查看所有"
+                            binding:clicks="@{click.gotoRewardsList}"
+                            android:textColor="@color/dark_gray_text"
+                            android:textSize="@dimen/d_13sp" />
+
+                    </LinearLayout>
+
+                    <androidx.recyclerview.widget.RecyclerView
+                        android:id="@+id/recycler_view_promotion_rewards_recommend"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="@dimen/d_10dp"
+                        android:overScrollMode="never" />
+
+                    <!--Hottest-->
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:gravity="center_vertical"
+                        android:paddingTop="@dimen/d_12dp"
+                        android:paddingBottom="@dimen/d_13sp">
+
+                        <com.guadou.lib_baselib.font_text_view.TextViewBold
+                            android:layout_width="0dp"
+                            android:layout_height="wrap_content"
+                            android:layout_weight="1"
+                            android:paddingLeft="@dimen/d_15dp"
+                            android:text="最热门的"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/d_15sp" />
+
+                        <com.guadou.lib_baselib.font_text_view.TextViewLight
+                            android:id="@+id/tv_promotion_rewards_hottest_see_all"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginRight="@dimen/d_10dp"
+                            android:padding="@dimen/d_5dp"
+                            android:text="查看所有"
+                            android:textColor="@color/dark_gray_text"
+                            android:textSize="@dimen/d_13sp" />
+
+                    </LinearLayout>
+
+                    <androidx.recyclerview.widget.RecyclerView
+                        android:id="@+id/recycler_view_promotion_rewards_hottest"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="@dimen/d_10dp"
+                        android:overScrollMode="never" />
+
+                    <!--Food & Beverage-->
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:gravity="center_vertical"
+                        android:paddingTop="@dimen/d_12dp"
+                        android:paddingBottom="@dimen/d_12dp">
+
+                        <com.guadou.lib_baselib.font_text_view.TextViewBold
+                            android:layout_width="0dp"
+                            android:layout_height="wrap_content"
+                            android:layout_weight="1"
+                            android:paddingLeft="@dimen/d_15dp"
+                            android:text="食品与饮料"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/d_15sp" />
+
+                        <com.guadou.lib_baselib.font_text_view.TextViewLight
+                            android:id="@+id/tv_promotion_rewards_food_see_all"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginRight="@dimen/d_10dp"
+                            android:padding="@dimen/d_5dp"
+                            android:text="查看所有"
+                            android:textColor="@color/dark_gray_text"
+                            android:textSize="@dimen/d_13sp" />
+
+                    </LinearLayout>
+
+                    <androidx.recyclerview.widget.RecyclerView
+                        android:id="@+id/recycler_view_promotion_rewards_food"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="@dimen/d_10dp"
+                        android:overScrollMode="never" />
+
+                    <!--Best Offers in Singapore-->
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:gravity="center_vertical"
+                        android:paddingTop="@dimen/d_12dp"
+                        android:paddingBottom="@dimen/d_13sp">
+
+                        <com.guadou.lib_baselib.font_text_view.TextViewBold
+                            android:id="@+id/tv_base_sell_text"
+                            android:layout_width="0dp"
+                            android:layout_height="wrap_content"
+                            android:layout_weight="1"
+                            android:paddingLeft="@dimen/d_15dp"
+                            tools:text="中国最佳优惠"
+                            android:text="中国最佳优惠"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/d_15sp" />
+
+                        <com.guadou.lib_baselib.font_text_view.TextViewLight
+                            android:id="@+id/tv_promotion_rewards_best_offer_see_all"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginRight="@dimen/d_10dp"
+                            android:padding="@dimen/d_5dp"
+                            android:text="查看所有"
+                            android:textColor="@color/dark_gray_text"
+                            android:textSize="@dimen/d_12sp" />
+
+                    </LinearLayout>
+
+                    <androidx.recyclerview.widget.RecyclerView
+                        android:id="@+id/recycler_view_promotion_rewards_offers"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:overScrollMode="never" />
+
+                </LinearLayout>
+
+            </androidx.core.widget.NestedScrollView>
+
+        </com.scwang.smart.refresh.layout.SmartRefreshLayout>
+
+    </androidx.constraintlayout.motion.widget.MotionLayout>
+
+</layout>

+ 265 - 0
cpt_rewards/src/main/res/layout/activity_rewards_daily_login.xml

@@ -0,0 +1,265 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout 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:id="@+id/rl_daily_login_root"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:ignore="MissingConstraints">
+
+    <com.guadou.lib_baselib.view.titlebar.EasyTitleBar
+        android:id="@+id/easy_title"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@color/white"
+        app:Easy_menuImgSize="@dimen/d_30dp"
+        app:Easy_title="积分兑换" />
+
+    <ImageView
+        android:id="@+id/iv_daily_line"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/d_0.1dp"
+        android:layout_below="@id/easy_title"
+        android:background="@color/main_divide" />
+
+    <com.scwang.smart.refresh.layout.SmartRefreshLayout
+        android:id="@+id/refresh_layout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_below="@+id/iv_daily_line">
+
+        <com.scwang.smart.refresh.header.ClassicsHeader
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content" />
+
+        <ScrollView
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+
+            android:background="@color/white"
+            android:overScrollMode="never"
+            android:scrollbars="none">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:orientation="vertical"
+                android:paddingBottom="@dimen/d_20dp">
+
+                <com.guadou.lib_baselib.font_text_view.TextViewMedium
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center_horizontal"
+                    android:layout_marginTop="@dimen/d_20dp"
+                    android:text="可用积分"
+                    android:textColor="@color/home_item_title_color"
+                    android:textSize="@dimen/d_18sp" />
+
+                <TextView
+                    android:id="@+id/tv_daily_login_points"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center_horizontal"
+                    android:layout_marginBottom="@dimen/d_20dp"
+                    android:text="-"
+                    android:textColor="@color/profile_red"
+                    android:textSize="@dimen/d_28sp" />
+
+                <ImageView
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/d_10dp"
+                    android:src="#BFE0FE" />
+
+                <!--填充布局-->
+                <ViewStub
+                    android:id="@+id/viewstub_sign"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout="@layout/layout_inflate_sign_group" />
+
+                <View
+                    android:id="@+id/view_placeholder"
+                    android:layout_width="match_parent"
+                    android:layout_height="110dp"
+                    android:background="@color/app_blue">
+
+                </View>
+
+                <!--<include layout="@layout/layout_inflate_sign_group"/>-->
+
+
+                <ImageView
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/d_10dp"
+                    android:src="#BFE0FE" />
+
+                <RelativeLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:paddingLeft="@dimen/d_15dp"
+                    android:paddingTop="@dimen/d_15dp"
+                    android:paddingRight="@dimen/d_15dp"
+                    android:paddingBottom="@dimen/d_15dp">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_centerVertical="true"
+                        android:text="如何获取积分?"
+                        android:textColor="@color/black"
+                        android:textSize="@dimen/d_15sp" />
+
+                    <LinearLayout
+                        android:id="@+id/tv_goto_rewards"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_alignParentRight="true"
+                        android:layout_centerVertical="true"
+                        android:background="@drawable/shape_15round_main_blue"
+                        android:gravity="center"
+                        android:orientation="horizontal"
+                        android:paddingLeft="@dimen/d_15dp"
+                        android:paddingTop="@dimen/d_5dp"
+                        android:paddingRight="@dimen/d_15dp"
+                        android:paddingBottom="@dimen/d_6dp">
+
+                        <ImageView
+                            android:layout_width="@dimen/d_16dp"
+                            android:layout_height="@dimen/d_10dp"
+                            android:src="@drawable/rewards_icon_go_main" />
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="@dimen/d_5dp"
+                            android:text="奖励"
+                            android:textColor="@color/white"
+                            android:textSize="@dimen/d_15sp" />
+
+                    </LinearLayout>
+
+
+                </RelativeLayout>
+
+                <ImageView
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/d_0.5dp"
+                    android:src="@color/main_divide"/>
+
+                <!--Daily Login-->
+                <RelativeLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:paddingLeft="@dimen/d_15dp"
+                    android:paddingTop="@dimen/d_20dp"
+                    android:paddingRight="@dimen/d_15dp"
+                    android:paddingBottom="@dimen/d_20dp">
+
+                    <ImageView
+                        android:id="@+id/iv_daily_login_logo1"
+                        android:layout_width="@dimen/d_54dp"
+                        android:layout_height="@dimen/d_54dp"
+                        android:background="@drawable/reward_yy_circle_logo" />
+
+                    <com.guadou.lib_baselib.font_text_view.TextViewMedium
+                        android:id="@+id/tv_daily_login"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="10dp"
+                        android:layout_toRightOf="@id/iv_daily_login_logo1"
+                        android:text="每日登录"
+                        android:textColor="@color/home_item_title_color"
+                        android:textSize="@dimen/d_15sp" />
+
+                    <com.guadou.lib_baselib.font_text_view.TextViewLight
+                        android:id="@+id/tv_daily_point"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_below="@id/tv_daily_login"
+                        android:layout_marginLeft="@dimen/d_10dp"
+                        android:layout_marginTop="@dimen/d_15dp"
+                        android:layout_toRightOf="@id/iv_daily_login_logo1"
+                        android:text="+2"
+                        android:textColor="@color/profile_red"
+                        android:textSize="@dimen/d_14sp" />
+
+                    <ImageView
+                        android:layout_width="@dimen/d_12dp"
+                        android:layout_height="@dimen/d_12dp"
+                        android:layout_below="@id/tv_daily_login"
+                        android:layout_marginLeft="@dimen/d_5dp"
+                        android:layout_marginTop="@dimen/d_18dp"
+                        android:layout_toRightOf="@id/tv_daily_point"
+                        android:src="@drawable/daliy_points_gold" />
+
+                    <com.guadou.lib_baselib.font_text_view.TextViewLight
+                        android:id="@+id/tv_daily_login_check_in"
+                        android:layout_width="88dp"
+                        android:layout_height="wrap_content"
+                        android:layout_alignParentRight="true"
+                        android:layout_centerVertical="true"
+                        android:background="@color/profile_red"
+                        android:gravity="center"
+                        android:paddingTop="@dimen/d_5dp"
+                        android:paddingBottom="@dimen/d_5dp"
+                        android:text="签到"
+                        android:textColor="@color/white"
+                        android:textSize="@dimen/d_12sp" />
+
+                </RelativeLayout>
+
+                <ImageView
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/d_0.5dp"
+                    android:src="@color/main_divide"/>
+
+
+                <RelativeLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/d_46dp"
+                    android:orientation="horizontal">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_centerVertical="true"
+                        android:layout_marginLeft="@dimen/d_15dp"
+                        android:text="积分历史"
+                        android:textColor="@color/black"
+                        android:textSize="@dimen/d_15sp" />
+
+                    <com.guadou.lib_baselib.font_text_view.TextViewMedium
+                        android:id="@+id/tv_daily_login_history"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_alignParentRight="true"
+                        android:layout_centerVertical="true"
+                        android:layout_marginRight="@dimen/d_15dp"
+                        android:paddingLeft="@dimen/d_5dp"
+                        android:paddingRight="@dimen/d_5dp"
+                        android:text="更多>"
+                        android:textColor="@color/home_item_title_color"
+                        android:textSize="@dimen/d_14sp" />
+
+                </RelativeLayout>
+
+                <ImageView
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/d_0.5dp"
+                    android:src="@color/main_divide"/>
+
+                <LinearLayout
+                    android:id="@+id/ll_history_3item_root"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical">
+
+                </LinearLayout>
+
+            </LinearLayout>
+
+        </ScrollView>
+
+    </com.scwang.smart.refresh.layout.SmartRefreshLayout>
+
+</RelativeLayout>

+ 125 - 0
cpt_rewards/src/main/res/layout/activity_rewards_list.xml

@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+    <data>
+
+        <variable
+            name="viewModel"
+            type="com.hongyegroup.cpt_rewards.mvvm.RewardsListViewModel" />
+
+    </data>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/white"
+        android:orientation="vertical">
+
+        <com.guadou.lib_baselib.view.titlebar.EasyTitleBar
+            android:id="@+id/easy_title_rewards"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:Easy_title="Recommend" />
+
+        <LinearLayout
+            android:id="@+id/ll_rewards_recommend_sort"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/d_40dp"
+            android:background="@color/food_gray_f7">
+
+            <!--All-->
+            <LinearLayout
+                android:id="@+id/ll_rewards_recommend_all"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:gravity="center_vertical"
+                android:orientation="horizontal">
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d_20dp"
+                    android:src="@drawable/iv_rewards_recommend_all_icon" />
+
+                <com.guadou.lib_baselib.font_text_view.TextViewLight
+                    android:id="@+id/tv_rewards_recommend_all"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d_10dp"
+                    android:layout_weight="1"
+                    android:text="All"
+                    android:textColor="@color/black"
+                    android:textSize="@dimen/d_16sp" />
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginRight="@dimen/d_20dp"
+                    android:src="@drawable/iv_rewards_arrow_bottom" />
+
+            </LinearLayout>
+
+            <ImageView
+                android:layout_width="@dimen/d_1dp"
+                android:layout_height="match_parent"
+                android:src="@color/page_bg" />
+
+            <!--Popularity-->
+            <LinearLayout
+                android:id="@+id/ll_rewards_recommend_sort_by"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:gravity="center_vertical"
+                android:orientation="horizontal">
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d_20dp"
+                    android:src="@drawable/iv_rewards_recommend_popularity_icon" />
+
+                <com.guadou.lib_baselib.font_text_view.TextViewLight
+                    android:id="@+id/tv_rewards_recommend_sort_by"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d_10dp"
+                    android:layout_weight="1"
+                    android:ellipsize="end"
+                    android:singleLine="true"
+                    android:text="Popularity"
+                    android:textColor="@color/black"
+                    android:textSize="@dimen/d_16sp" />
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginRight="@dimen/d_20dp"
+                    android:src="@drawable/iv_rewards_arrow_bottom" />
+
+            </LinearLayout>
+
+        </LinearLayout>
+
+        <com.scwang.smart.refresh.layout.SmartRefreshLayout
+            android:id="@+id/refresh_layout_rewards_recommend"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent">
+
+            <com.scwang.smart.refresh.header.ClassicsHeader
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content" />
+
+            <androidx.recyclerview.widget.RecyclerView
+                android:id="@+id/recycler_view_rewards_list"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_marginTop="@dimen/d_10dp" />
+
+        </com.scwang.smart.refresh.layout.SmartRefreshLayout>
+
+    </LinearLayout>
+
+</layout>

+ 217 - 0
cpt_rewards/src/main/res/layout/activity_rewards_search.xml

@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tool="http://schemas.android.com/tools">
+
+    <data>
+
+        <variable
+            name="viewModel"
+            type="com.hongyegroup.cpt_rewards.mvvm.RewardsSearchViewModel" />
+
+    </data>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/white"
+        android:orientation="vertical">
+
+        <com.guadou.lib_baselib.view.titlebar.StatusbarGrayView
+            android:id="@+id/status_bar_view_rewards_search"
+            android:layout_width="match_parent"
+            android:layout_height="1dp" />
+
+        <LinearLayout
+            android:id="@+id/toolbar"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/d_48dp"
+            android:background="@color/white"
+            android:gravity="center_vertical"
+            android:orientation="horizontal">
+
+            <ImageView
+                android:id="@+id/iv_back"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="left|center_vertical"
+                android:layout_marginLeft="@dimen/d_10dp"
+                android:padding="@dimen/d_8dp"
+                android:src="@drawable/back_blue"
+                android:visibility="visible" />
+
+            <FrameLayout
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_marginLeft="@dimen/dp_10"
+                android:layout_marginRight="@dimen/d_10dp"
+                android:layout_weight="1">
+
+                <LinearLayout
+                    android:id="@+id/ll_title_search"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center_vertical"
+                    android:layout_marginLeft="@dimen/d_5dp"
+                    android:layout_marginRight="@dimen/d_5dp"
+                    android:layout_marginBottom="@dimen/d_2dp"
+                    android:background="@drawable/search_bg"
+                    android:focusable="true"
+                    android:focusableInTouchMode="true"
+                    android:orientation="horizontal"
+                    android:paddingTop="@dimen/d_2dp"
+                    android:paddingBottom="@dimen/d_2dp"
+                    android:visibility="visible">
+
+                    <ImageView
+                        android:id="@+id/iv_title_search"
+                        android:layout_width="@dimen/d_16dp"
+                        android:layout_height="@dimen/d_16dp"
+                        android:layout_gravity="center_vertical"
+                        android:layout_marginStart="@dimen/d_10dp"
+                        android:layout_marginLeft="@dimen/d_10dp"
+                        android:clickable="true"
+                        android:src="@drawable/search" />
+
+                    <EditText
+                        android:id="@+id/et_search_content"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="center_vertical"
+                        android:layout_marginStart="@dimen/d_5dp"
+                        android:layout_marginLeft="@dimen/d_5dp"
+                        android:layout_weight="1"
+                        android:background="@null"
+                        android:enabled="true"
+                        android:hint="Search"
+                        android:imeOptions="actionSearch"
+                        android:padding="@dimen/d_3dp"
+                        android:singleLine="true"
+                        android:textColor="@color/gray_text"
+                        android:textSize="@dimen/d_15sp" />
+
+                    <ImageView
+                        android:id="@+id/iv_search_delete"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="center_vertical"
+                        android:layout_marginRight="@dimen/d_10dp"
+                        android:clickable="false"
+                        android:enabled="false"
+                        android:padding="@dimen/d_5dp"
+                        android:src="@drawable/search_delete"
+                        android:visibility="gone" />
+
+                </LinearLayout>
+
+            </FrameLayout>
+
+        </LinearLayout>
+
+        <ImageView
+            android:layout_width="match_parent"
+            android:layout_height="0.5dp"
+            android:src="@color/divider_color" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="@color/white"
+            android:orientation="vertical">
+
+
+            <com.guadou.lib_baselib.font_text_view.TextViewMedium
+                android:id="@+id/tv_rewards_search_recent_search"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@color/white"
+                android:paddingLeft="@dimen/d_15dp"
+                android:paddingTop="@dimen/d_15dp"
+                android:text="Recent Search"
+                android:textColor="@color/gray_text"
+                android:textSize="@dimen/d_16sp"
+                android:visibility="gone" />
+
+            <!--流式布局-->
+<!--            <com.guadou.ninegrid.flownine.FlowLayout-->
+<!--                android:id="@+id/flow_layout_rewards_search_recent_search"-->
+<!--                android:layout_width="match_parent"-->
+<!--                android:layout_height="wrap_content"-->
+<!--                android:background="@color/white"-->
+<!--                android:paddingLeft="@dimen/d_15dp"-->
+<!--                android:paddingTop="@dimen/d_13dp"-->
+<!--                android:paddingRight="@dimen/d_15dp"-->
+<!--                android:visibility="gone"-->
+<!--                app:itemSpacing="7dp"-->
+<!--                app:lineSpacing="@dimen/d_5dp">-->
+
+<!--            </com.guadou.ninegrid.flownine.FlowLayout>-->
+
+            <com.guadou.lib_baselib.font_text_view.TextViewMedium
+                android:id="@+id/tv_promotion_search_trending_search"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@color/white"
+                android:paddingLeft="@dimen/d_15dp"
+                android:paddingTop="@dimen/d_15dp"
+                android:text="Trending Searches"
+                android:textColor="@color/gray_text"
+                android:textSize="@dimen/d_16sp"
+                android:visibility="gone" />
+
+            <!--流式布局-->
+<!--            <com.guadou.ninegrid.flownine.FlowLayout-->
+<!--                android:id="@+id/flow_layout_rewards_search_trending_searches"-->
+<!--                android:layout_width="match_parent"-->
+<!--                android:layout_height="wrap_content"-->
+<!--                android:background="@color/white"-->
+<!--                android:paddingLeft="@dimen/d_15dp"-->
+<!--                android:paddingTop="@dimen/d_13dp"-->
+<!--                android:paddingRight="@dimen/d_15dp"-->
+<!--                android:visibility="gone"-->
+<!--                app:itemSpacing="7dp"-->
+<!--                app:lineSpacing="@dimen/d_5dp">-->
+
+<!--            </com.guadou.ninegrid.flownine.FlowLayout>-->
+
+            <LinearLayout
+                android:id="@+id/ll_promotion_rewards_search_recent_viewed"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:orientation="vertical">
+
+                <com.guadou.lib_baselib.font_text_view.TextViewBold
+                    android:id="@+id/tv_rewards_search_recent_view"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:background="@color/white"
+                    android:paddingLeft="@dimen/d_15dp"
+                    android:paddingTop="@dimen/d_15dp"
+                    android:paddingBottom="10dp"
+                    android:text="最近浏览过的"
+                    android:textColor="@color/gray_text"
+                    android:textSize="@dimen/d_16sp"
+                    android:visibility="visible" />
+
+                <ImageView
+                    android:layout_width="match_parent"
+                    android:layout_height="0.5dp"
+                    android:src="@color/divider_color"
+                    android:visibility="visible" />
+
+                <androidx.recyclerview.widget.RecyclerView
+                    android:id="@+id/recycler_view_rewards_search"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:background="@color/white"
+                    android:overScrollMode="never"
+                    android:visibility="visible" />
+
+            </LinearLayout>
+
+        </LinearLayout>
+
+
+    </LinearLayout>
+
+</layout>

+ 144 - 0
cpt_rewards/src/main/res/layout/item_rewards_best_offer.xml

@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout 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">
+
+    <data>
+        
+        <variable
+            name="item"
+            type="String" />
+        
+    </data>
+
+    <com.minminaya.widget.GeneralRoundLinearLayout
+        android:id="@+id/ll_item_promotion_rewards_offer_root"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="@dimen/d_15dp"
+        android:layout_marginRight="@dimen/d_15dp"
+        android:layout_marginBottom="@dimen/d_10dp"
+        android:orientation="vertical"
+        app:corner_radius="@dimen/d_8dp">
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+
+            <ImageView
+                android:id="@+id/iv_item_promotion_rewards_offer"
+                android:layout_width="match_parent"
+                android:layout_height="0dp"
+                android:background="@color/gray"
+                android:scaleType="centerCrop"
+                app:layout_constraintDimensionRatio="345:228"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toTopOf="parent"
+                tools:ignore="MissingConstraints" />
+
+            <ImageView
+                android:id="@+id/iv_item_promotion_rewards_offer_hot"
+                android:layout_width="@dimen/d_70dp"
+                android:layout_height="72dp"
+                android:layout_marginLeft="@dimen/d_20dp"
+                android:src="@drawable/iv_rewards_hot"
+                app:layout_constraintLeft_toLeftOf="parent"
+                tools:ignore="MissingConstraints" />
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@color/app_blue"
+            android:orientation="vertical">
+
+            <com.guadou.lib_baselib.font_text_view.TextViewMedium
+                android:id="@+id/tv_item_promotion_rewards_offer_title"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_10dp"
+                android:layout_marginTop="@dimen/d_10dp"
+                android:layout_marginRight="@dimen/d_10dp"
+                android:ellipsize="end"
+                android:maxLines="2"
+                android:text="Cute children multifunctional umbrella"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_15sp" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewLight
+                android:id="@+id/tv_item_promotion_rewards_offer_category"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_10dp"
+                android:layout_marginTop="@dimen/d_5dp"
+                android:text="Daily use offer"
+                android:textColor="@color/gray_promotion_rewards"
+                android:textSize="@dimen/d_14sp" />
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/d_5dp"
+                android:orientation="horizontal">
+
+                <com.guadou.lib_baselib.font_text_view.TextViewBold
+                    android:id="@+id/tv_item_promotion_rewards_offer_point"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d_10dp"
+                    android:text="300"
+                    android:textColor="#EBFF08"
+                    android:textSize="@dimen/d_18sp" />
+
+                <com.guadou.lib_baselib.font_text_view.TextViewLight
+                    android:id="@+id/tv_item_promotion_rewards_offer_original_point"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d_5dp"
+                    android:text="350"
+                    android:textColor="@color/white"
+                    android:textSize="@dimen/d_12sp" />
+
+                <com.guadou.lib_baselib.font_text_view.TextViewLight
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d_5dp"
+                    android:text="points"
+                    android:textColor="@color/gray_promotion_rewards"
+                    android:textSize="@dimen/d_14sp" />
+
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_vertical"
+                android:layout_marginLeft="@dimen/d_10dp"
+                android:layout_marginTop="5dp"
+                android:layout_marginBottom="@dimen/d_10dp"
+                android:orientation="horizontal">
+
+                <ImageView
+                    android:id="@+id/iv_item_promotion_rewards_offer_address_icon"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginRight="@dimen/d_5dp"
+                    android:src="@drawable/iv_rewards_address" />
+
+                <com.guadou.lib_baselib.font_text_view.TextViewLight
+                    android:id="@+id/tv_item_promotion_rewards_offer_address"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="176 Orchard Rd, #02-29/30 "
+                    android:textColor="@color/white"
+                    android:textSize="@dimen/d_15sp" />
+
+            </LinearLayout>
+
+        </LinearLayout>
+
+    </com.minminaya.widget.GeneralRoundLinearLayout>
+
+</layout>

+ 37 - 0
cpt_rewards/src/main/res/layout/item_rewards_category.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <data>
+
+        <variable
+            name="item"
+            type="String" />
+
+    </data>
+
+    <LinearLayout
+        android:id="@+id/ll_item_promotion_rewards_category_root"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:gravity="center_horizontal"
+        android:orientation="vertical">
+
+        <ImageView
+            android:id="@+id/iv_item_promotion_rewards_category_icon"
+            android:layout_width="@dimen/d_80dp"
+            android:layout_height="@dimen/d_80dp"
+            android:scaleType="centerCrop"
+            android:src="@drawable/iv_rewards_icon_f_and_b" />
+
+        <com.guadou.lib_baselib.font_text_view.TextViewRegular
+            android:id="@+id/tv_item_promotion_rewards_category_name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="-10dp"
+            android:text="Electronics"
+            android:textColor="@color/dark_gray_text"
+            android:textSize="@dimen/d_13sp" />
+
+    </LinearLayout>
+
+</layout>

+ 103 - 0
cpt_rewards/src/main/res/layout/item_rewards_recomend.xml

@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+    <data>
+
+        <variable
+            name="item"
+            type="String" />
+
+    </data>
+
+    <LinearLayout
+        android:id="@+id/ll_item_promotion_rewards_recommend_root"
+        android:layout_width="@dimen/d_200dp"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="@dimen/d_5dp"
+        android:layout_marginRight="@dimen/d_5dp"
+        android:orientation="vertical">
+
+        <com.guadou.cs_cptservices.widget.CustomRound6ImageView
+            android:id="@+id/iv_item_promotion_rewards_recommend"
+            android:layout_width="match_parent"
+            android:layout_height="130dp"
+            android:scaleType="centerCrop"
+            android:src="@color/page_bg_f4"
+            app:conner_radius_left_bottom="0dp"
+            app:conner_radius_left_top="@dimen/d_8dp"
+            app:conner_radius_right_bottom="0dp"
+            app:conner_radius_right_top="0dp" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="121dp"
+            android:layout_marginTop="-10dp"
+            android:background="@drawable/shape_blue_8conner_no_right_top"
+            android:orientation="vertical">
+
+            <com.guadou.lib_baselib.font_text_view.TextViewMedium
+                android:id="@+id/tv_item_promotion_rewards_recommend_title"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/d_40dp"
+                android:layout_marginLeft="@dimen/d_10dp"
+                android:layout_marginTop="@dimen/d_10dp"
+                android:layout_marginRight="@dimen/d_10dp"
+                android:ellipsize="end"
+                android:maxLines="2"
+                android:text="Cute children multifunctional umbrella"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_15sp" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewLight
+                android:id="@+id/tv_item_promotion_rewards_recommend_employer"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_10dp"
+                android:layout_marginTop="@dimen/d_5dp"
+                android:ellipsize="end"
+                android:singleLine="true"
+                android:text="Daily use offer"
+                android:textColor="@color/gray_promotion_rewards"
+                android:textSize="@dimen/d_14sp" />
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/d_5dp"
+                android:orientation="horizontal">
+
+                <com.guadou.lib_baselib.font_text_view.TextViewBold
+                    android:id="@+id/tv_item_promotion_rewards_recommend_point"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d_10dp"
+                    android:text="300"
+                    android:textColor="#EBFF08"
+                    android:textSize="@dimen/d_18sp" />
+
+                <com.guadou.lib_baselib.font_text_view.TextViewLight
+                    android:id="@+id/tv_item_promotion_rewards_recommend_original_point"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d_5dp"
+                    android:text="350"
+                    android:textColor="@color/white"
+                    android:textSize="@dimen/d_12sp" />
+
+                <com.guadou.lib_baselib.font_text_view.TextViewLight
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d_5dp"
+                    android:text="points"
+                    android:textColor="@color/gray_promotion_rewards"
+                    android:textSize="@dimen/d_14sp" />
+
+            </LinearLayout>
+
+        </LinearLayout>
+
+
+    </LinearLayout>
+
+</layout>

+ 463 - 0
cpt_rewards/src/main/res/layout/layout_inflate_sign_group.xml

@@ -0,0 +1,463 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout 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="wrap_content"
+    android:background="@color/app_blue"
+    tools:ignore="MissingConstraints">
+
+
+    <LinearLayout
+        android:id="@+id/ll_continuous_login"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="@dimen/d_23dp"
+        android:layout_marginTop="@dimen/d_15dp"
+        android:layout_marginBottom="@dimen/d_10dp"
+        android:orientation="horizontal">
+
+        <com.guadou.lib_baselib.font_text_view.TextViewLight
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="连续登录"
+            android:textColor="@color/white"
+            android:textSize="@dimen/d_12sp" />
+
+        <TextView
+            android:id="@+id/tv_daily_login_continuous_day"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:paddingLeft="@dimen/d_2dp"
+            android:paddingRight="@dimen/d_2dp"
+            android:text="-"
+            android:textColor="#F3D744"
+            android:textSize="@dimen/d_14sp" />
+
+        <com.guadou.lib_baselib.font_text_view.TextViewLight
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="天"
+            android:textColor="@color/white"
+            android:textSize="@dimen/d_12sp" />
+
+
+    </LinearLayout>
+
+    <ImageView
+        android:id="@+id/iv_line"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/d_0.5dp"
+        android:layout_below="@+id/ll_continuous_login"
+        android:src="@color/white" />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/iv_line"
+        android:layout_marginLeft="@dimen/d_10dp"
+        android:layout_marginRight="@dimen/d_5dp"
+        android:orientation="horizontal">
+
+        <!--Day1-->
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:orientation="vertical"
+            android:paddingTop="@dimen/d_9dp"
+            android:paddingBottom="@dimen/d_10dp">
+
+            <com.guadou.lib_baselib.font_text_view.TextViewLight
+                android:id="@+id/tv_date1"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="-"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_10sp"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent"
+                tools:ignore="MissingConstraints" />
+
+            <ImageView
+                android:id="@+id/iv_teasurechest1"
+                android:layout_width="@dimen/d_35dp"
+                android:layout_height="@dimen/d_35dp"
+                android:src="@drawable/iv_daily_login_teasurechest"
+                android:visibility="gone"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toBottomOf="@id/tv_date1" />
+
+            <ImageView
+                android:id="@+id/iv_daily_choose1"
+                android:layout_width="@dimen/d_24dp"
+                android:layout_height="@dimen/d_24dp"
+                android:layout_marginTop="@dimen/d_5dp"
+                android:src="@drawable/iv_daily_login_red_choose"
+                android:visibility="invisible"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toBottomOf="@id/tv_date1" />
+
+            <TextView
+                android:id="@+id/tv_points1"
+                android:layout_width="@dimen/d_20dp"
+                android:layout_height="@dimen/d_20dp"
+                android:background="@drawable/iv_daily_login_unchoice"
+                android:gravity="center"
+                android:text="+2"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_8sp"
+                android:visibility="visible"
+                app:layout_constraintBottom_toBottomOf="@id/iv_daily_choose1"
+                app:layout_constraintLeft_toLeftOf="@id/iv_daily_choose1"
+                app:layout_constraintRight_toRightOf="@id/iv_daily_choose1"
+                app:layout_constraintTop_toTopOf="@id/iv_daily_choose1" />
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <!--Day2-->
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:orientation="vertical"
+            android:paddingTop="@dimen/d_9dp"
+            android:paddingBottom="@dimen/d_10dp">
+
+            <com.guadou.lib_baselib.font_text_view.TextViewLight
+                android:id="@+id/tv_date2"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="-"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_10sp"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent" />
+
+            <ImageView
+                android:id="@+id/iv_teasurechest2"
+                android:layout_width="@dimen/d_35dp"
+                android:layout_height="@dimen/d_35dp"
+                android:src="@drawable/iv_daily_login_teasurechest"
+                android:visibility="gone"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toBottomOf="@id/tv_date2" />
+
+            <ImageView
+                android:id="@+id/iv_daily_choose2"
+                android:layout_width="@dimen/d_24dp"
+                android:layout_height="@dimen/d_24dp"
+                android:layout_marginTop="@dimen/d_5dp"
+                android:src="@drawable/iv_daily_login_red_choose"
+                android:visibility="invisible"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toBottomOf="@id/tv_date2" />
+
+            <TextView
+                android:id="@+id/tv_points2"
+                android:layout_width="@dimen/d_20dp"
+                android:layout_height="@dimen/d_20dp"
+                android:background="@drawable/iv_daily_login_unchoice"
+                android:gravity="center"
+                android:text="+2"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_8sp"
+                app:layout_constraintBottom_toBottomOf="@id/iv_daily_choose2"
+                app:layout_constraintLeft_toLeftOf="@id/iv_daily_choose2"
+                app:layout_constraintRight_toRightOf="@id/iv_daily_choose2"
+                app:layout_constraintTop_toTopOf="@id/iv_daily_choose2" />
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <!--Day3-->
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:orientation="vertical"
+            android:paddingTop="@dimen/d_9dp"
+            android:paddingBottom="@dimen/d_10dp">
+
+            <com.guadou.lib_baselib.font_text_view.TextViewLight
+                android:id="@+id/tv_date3"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="-"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_10sp"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent" />
+
+            <ImageView
+                android:id="@+id/iv_teasurechest3"
+                android:layout_width="@dimen/d_35dp"
+                android:layout_height="@dimen/d_35dp"
+                android:src="@drawable/iv_daily_login_teasurechest"
+                android:visibility="gone"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toBottomOf="@id/tv_date3" />
+
+            <ImageView
+                android:id="@+id/iv_daily_choose3"
+                android:layout_width="@dimen/d_24dp"
+                android:layout_height="@dimen/d_24dp"
+                android:layout_marginTop="@dimen/d_5dp"
+                android:src="@drawable/iv_daily_login_red_choose"
+                android:visibility="invisible"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toBottomOf="@id/tv_date3" />
+
+            <TextView
+                android:id="@+id/tv_points3"
+                android:layout_width="@dimen/d_20dp"
+                android:layout_height="@dimen/d_20dp"
+                android:background="@drawable/iv_daily_login_unchoice"
+                android:gravity="center"
+                android:text="+2"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_8sp"
+                app:layout_constraintBottom_toBottomOf="@id/iv_daily_choose3"
+                app:layout_constraintLeft_toLeftOf="@id/iv_daily_choose3"
+                app:layout_constraintRight_toRightOf="@id/iv_daily_choose3"
+                app:layout_constraintTop_toTopOf="@id/iv_daily_choose3" />
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <!--Day4-->
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:orientation="vertical"
+            android:paddingTop="@dimen/d_9dp"
+            android:paddingBottom="@dimen/d_10dp">
+
+            <com.guadou.lib_baselib.font_text_view.TextViewLight
+                android:id="@+id/tv_date4"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="-"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_10sp"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent" />
+
+            <ImageView
+                android:id="@+id/iv_teasurechest4"
+                android:layout_width="@dimen/d_35dp"
+                android:layout_height="@dimen/d_35dp"
+                android:src="@drawable/iv_daily_login_teasurechest"
+                android:visibility="gone"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toBottomOf="@id/tv_date4" />
+
+            <ImageView
+                android:id="@+id/iv_daily_choose4"
+                android:layout_width="@dimen/d_24dp"
+                android:layout_height="@dimen/d_24dp"
+                android:layout_marginTop="@dimen/d_5dp"
+                android:src="@drawable/iv_daily_login_red_choose"
+                android:visibility="invisible"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toBottomOf="@id/tv_date4" />
+
+            <TextView
+                android:id="@+id/tv_points4"
+                android:layout_width="@dimen/d_20dp"
+                android:layout_height="@dimen/d_20dp"
+                android:background="@drawable/iv_daily_login_unchoice"
+                android:gravity="center"
+                android:text="+2"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_8sp"
+                app:layout_constraintBottom_toBottomOf="@id/iv_daily_choose4"
+                app:layout_constraintLeft_toLeftOf="@id/iv_daily_choose4"
+                app:layout_constraintRight_toRightOf="@id/iv_daily_choose4"
+                app:layout_constraintTop_toTopOf="@id/iv_daily_choose4" />
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <!--Day5-->
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:orientation="vertical"
+            android:paddingTop="@dimen/d_9dp"
+            android:paddingBottom="@dimen/d_10dp">
+
+            <com.guadou.lib_baselib.font_text_view.TextViewLight
+                android:id="@+id/tv_date5"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="-"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_10sp"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent" />
+
+            <ImageView
+                android:id="@+id/iv_teasurechest5"
+                android:layout_width="@dimen/d_35dp"
+                android:layout_height="@dimen/d_35dp"
+                android:src="@drawable/iv_daily_login_teasurechest"
+                android:visibility="gone"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toBottomOf="@id/tv_date5" />
+
+            <ImageView
+                android:id="@+id/iv_daily_choose5"
+                android:layout_width="@dimen/d_24dp"
+                android:layout_height="@dimen/d_24dp"
+                android:layout_marginTop="@dimen/d_5dp"
+                android:src="@drawable/iv_daily_login_red_choose"
+                android:visibility="invisible"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toBottomOf="@id/tv_date5" />
+
+            <TextView
+                android:id="@+id/tv_points5"
+                android:layout_width="@dimen/d_20dp"
+                android:layout_height="@dimen/d_20dp"
+                android:background="@drawable/iv_daily_login_unchoice"
+                android:gravity="center"
+                android:text="+2"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_8sp"
+                app:layout_constraintBottom_toBottomOf="@id/iv_daily_choose5"
+                app:layout_constraintLeft_toLeftOf="@id/iv_daily_choose5"
+                app:layout_constraintRight_toRightOf="@id/iv_daily_choose5"
+                app:layout_constraintTop_toTopOf="@id/iv_daily_choose5" />
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <!--Day6-->
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:orientation="vertical"
+            android:paddingTop="@dimen/d_9dp"
+            android:paddingBottom="@dimen/d_10dp"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent">
+
+            <com.guadou.lib_baselib.font_text_view.TextViewLight
+                android:id="@+id/tv_date6"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="-"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_10sp"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent" />
+
+            <ImageView
+                android:id="@+id/iv_teasurechest6"
+                android:layout_width="@dimen/d_35dp"
+                android:layout_height="@dimen/d_35dp"
+                android:src="@drawable/iv_daily_login_teasurechest"
+                android:visibility="gone"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toBottomOf="@id/tv_date6" />
+
+            <ImageView
+                android:id="@+id/iv_daily_choose6"
+                android:layout_width="@dimen/d_24dp"
+                android:layout_height="@dimen/d_24dp"
+                android:layout_marginTop="@dimen/d_5dp"
+                android:src="@drawable/iv_daily_login_red_choose"
+                android:visibility="invisible"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toBottomOf="@id/tv_date6" />
+
+            <TextView
+                android:id="@+id/tv_points6"
+                android:layout_width="@dimen/d_20dp"
+                android:layout_height="@dimen/d_20dp"
+                android:background="@drawable/iv_daily_login_unchoice"
+                android:gravity="center"
+                android:text="+2"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_8sp"
+                app:layout_constraintBottom_toBottomOf="@id/iv_daily_choose6"
+                app:layout_constraintLeft_toLeftOf="@id/iv_daily_choose6"
+                app:layout_constraintRight_toRightOf="@id/iv_daily_choose6"
+                app:layout_constraintTop_toTopOf="@id/iv_daily_choose6" />
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <!--Day7-->
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:orientation="vertical"
+            android:paddingTop="@dimen/d_9dp"
+            android:paddingBottom="@dimen/d_10dp">
+
+            <com.guadou.lib_baselib.font_text_view.TextViewLight
+                android:id="@+id/tv_date7"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="-"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_10sp"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent" />
+
+            <ImageView
+                android:id="@+id/iv_teasurechest7"
+                android:layout_width="@dimen/d_35dp"
+                android:layout_height="@dimen/d_35dp"
+                android:src="@drawable/iv_daily_login_teasurechest"
+                android:visibility="gone"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toBottomOf="@id/tv_date7" />
+
+            <ImageView
+                android:id="@+id/iv_daily_choose7"
+                android:layout_width="@dimen/d_24dp"
+                android:layout_height="@dimen/d_24dp"
+                android:layout_marginTop="@dimen/d_5dp"
+                android:src="@drawable/iv_daily_login_red_choose"
+                android:visibility="invisible"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toBottomOf="@id/tv_date7" />
+
+            <TextView
+                android:id="@+id/tv_points7"
+                android:layout_width="@dimen/d_20dp"
+                android:layout_height="@dimen/d_20dp"
+                android:background="@drawable/iv_daily_login_unchoice"
+                android:gravity="center"
+                android:text="+2"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_8sp"
+                android:visibility="visible"
+                app:layout_constraintBottom_toBottomOf="@id/iv_daily_choose7"
+                app:layout_constraintLeft_toLeftOf="@id/iv_daily_choose7"
+                app:layout_constraintRight_toRightOf="@id/iv_daily_choose7"
+                app:layout_constraintTop_toTopOf="@id/iv_daily_choose7" />
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+    </LinearLayout>
+
+
+</RelativeLayout>

+ 115 - 0
cpt_rewards/src/main/res/xml/scene_rewards_main.xml

@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="utf-8"?>
+<MotionScene xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:motion="http://schemas.android.com/apk/res-auto">
+
+    <Transition
+        motion:constraintSetEnd="@+id/end"
+        motion:constraintSetStart="@+id/start"
+        motion:duration="350">
+
+        <OnSwipe
+            motion:dragDirection="dragUp"
+            motion:touchAnchorId="@id/refresh_layout_promotion_rewards" />
+
+    </Transition>
+
+    <ConstraintSet android:id="@+id/start">
+
+        <Constraint
+            android:id="@+id/img_top_bg"
+            android:layout_width="match_parent"
+            android:layout_height="85dp"
+            android:alpha="0.0"
+            motion:layout_constraintLeft_toLeftOf="parent"
+            motion:layout_constraintRight_toRightOf="parent"
+            motion:layout_constraintTop_toTopOf="parent" />
+
+        <Constraint
+            android:id="@+id/ll_top_box"
+            android:layout_width="match_parent"
+            android:layout_height="170dp"
+            android:alpha="1.0"
+            motion:layout_constraintLeft_toLeftOf="parent"
+            motion:layout_constraintRight_toRightOf="parent"
+            motion:layout_constraintTop_toTopOf="parent" />
+
+        <Constraint
+            android:id="@+id/ll_promotion_rewards_search"
+            android:layout_width="0dp"
+            android:layout_height="70dp"
+            android:layout_marginLeft="@dimen/d_10dp"
+            android:layout_marginTop="-30dp"
+            android:layout_marginRight="@dimen/d_10dp"
+            motion:layout_constraintLeft_toLeftOf="parent"
+            motion:layout_constraintRight_toRightOf="parent"
+            motion:layout_constraintTop_toBottomOf="@id/ll_top_box" />
+
+        <Constraint
+            android:id="@+id/iv_promotion_rewards_main_back"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="@dimen/d_10dp"
+            android:layout_marginTop="@dimen/d_35dp"
+            motion:layout_constraintLeft_toLeftOf="parent"
+            motion:layout_constraintTop_toTopOf="parent" />
+
+        <Constraint
+            android:id="@id/refresh_layout_promotion_rewards"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            motion:layout_constraintBottom_toBottomOf="parent"
+            motion:layout_constraintTop_toBottomOf="@id/ll_promotion_rewards_search" />
+
+    </ConstraintSet>
+
+    <ConstraintSet android:id="@+id/end">
+
+        <Constraint
+            android:id="@+id/img_top_bg"
+            android:layout_width="match_parent"
+            android:layout_height="85dp"
+            android:alpha="0.6"
+            motion:layout_constraintLeft_toLeftOf="parent"
+            motion:layout_constraintRight_toRightOf="parent"
+            motion:layout_constraintTop_toTopOf="parent" />
+
+        <Constraint
+            android:id="@+id/ll_top_box"
+            android:layout_width="match_parent"
+            android:layout_height="85dp"
+            android:alpha="0.0"
+            motion:layout_constraintLeft_toLeftOf="parent"
+            motion:layout_constraintRight_toRightOf="parent"
+            motion:layout_constraintTop_toTopOf="parent" />
+
+
+        <Constraint
+            android:id="@+id/ll_promotion_rewards_search"
+            android:layout_width="0dp"
+            android:layout_height="60dp"
+            android:layout_marginLeft="5dp"
+            android:layout_marginTop="0dp"
+            android:layout_marginRight="@dimen/d_10dp"
+            motion:layout_constraintBottom_toBottomOf="@id/ll_top_box"
+            motion:layout_constraintLeft_toRightOf="@+id/iv_promotion_rewards_main_back"
+            motion:layout_constraintRight_toRightOf="parent" />
+
+        <Constraint
+            android:id="@+id/iv_promotion_rewards_main_back"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="@dimen/d_10dp"
+            android:layout_marginTop="@dimen/d_35dp"
+            motion:layout_constraintLeft_toLeftOf="parent"
+            motion:layout_constraintTop_toTopOf="parent" />
+
+        <Constraint
+            android:id="@id/refresh_layout_promotion_rewards"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            motion:layout_constraintBottom_toBottomOf="parent"
+            motion:layout_constraintTop_toBottomOf="@id/ll_top_box" />
+
+    </ConstraintSet>
+
+</MotionScene>

+ 120 - 0
cs_baselib/src/main/java/com/guadou/lib_baselib/utils/CheckUtil.java

@@ -0,0 +1,120 @@
+package com.guadou.lib_baselib.utils;
+
+import android.text.TextUtils;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * 检测工具类
+ */
+
+public class CheckUtil {
+
+    private CheckUtil() {
+    }
+
+    /**
+     * 验证手机号码(支持国际格式,+86135xxxx...(中国内地),+00852137xxxx...(中国香港))
+     *
+     * @param mobile 移动、联通、电信运营商的号码段
+     *               <p>移动的号段:134(0-8)、135、136、137、138、139、147、150、151、152、157、158、159、187、188</p>
+     *               <p>联通的号段:130、131、132、155、156、185、186</p>
+     *               <p>电信的号段:133、153、180、189</p>
+     * @return 验证成功返回true,验证失败返回false
+     * <p>
+     * Android 自带Email和MobileMun的检测
+     */
+    public static boolean checkMobile(String mobile) {
+        String regex = "(\\+\\d+)?1[3456789]\\d{9}$";
+        return Pattern.matches(regex, mobile);
+    }
+
+    /**
+     * 判断字符串是否是数字带小数点
+     */
+    public static boolean checkNumberPoint(String str) {
+
+        if (CheckUtil.isEmpty(str)) {
+            return false;
+        }
+        Pattern pattern = Pattern.compile("-?[0-9]*.?[0-9]*");
+        Matcher matcher = pattern.matcher((CharSequence) str);
+        return matcher.matches();
+    }
+
+    /**
+     * 验证URL地址
+     *
+     * @param url 格式:http://blog.csdn.net:80/xyang81/article/details/7705960? 或 http://www.csdn.net:80
+     * @return 验证成功返回true,验证失败返回false
+     * <p>
+     * Android也有Url地址的检测
+     */
+    public static boolean checkURL(String url) {
+        String regex = "(https?://(w{3}\\.)?)?\\w+\\.\\w+(\\.[a-zA-Z]+)*(:\\d{1,5})?(/\\w*)*(\\??(.+=.*)?(&.+=.*)?)?";
+        return Pattern.matches(regex, url);
+//        URLUtil.isValidUrl()
+    }
+
+    /**
+     * 判断字符串是否有值,如果为null或者是空字符串或者只有空格或者为"null"字符串,则返回true,否则则返回false
+     */
+    public static boolean isEmpty(String value) {
+        if (value != null && !"".equalsIgnoreCase(value.trim()) && !"null".equalsIgnoreCase(value.trim())) {
+            return false;
+        } else {
+            return true;
+        }
+    }
+
+    public static boolean isEmpty(Object[] os) {
+        return isNull(os) || os.length == 0;
+    }
+
+    public static boolean isEmpty(Collection<?> l) {
+        return isNull(l) || l.isEmpty();
+    }
+
+    public static boolean isEmpty(Map<?, ?> m) {
+        return isNull(m) || m.isEmpty();
+    }
+
+    public static boolean isNull(Object o) {
+        return o == null;
+    }
+
+    /**
+     * 抽象出的方法 用来得到验证结果 参数 0 是空 -1不匹配 1是匹配
+     *
+     * @param pattern_str  正则
+     * @param inputContent 输入的内容
+     * @return
+     */
+    private static int patternInt(String pattern_str, String inputContent) {
+        Pattern p = Pattern.compile(pattern_str);
+        Matcher m = p.matcher(inputContent);
+
+        if (TextUtils.isEmpty(inputContent)) {
+            return 0;
+        } else if (!m.matches()) {
+            return -1;
+        }
+        return 1;
+    }
+
+    /**
+     * 验证身份证号码
+     *
+     * @param idCard 9位数,第一个和最后一个为字母,中间7位是数字。
+     *               确认使用
+     * @return 验证成功返回true,验证失败返回false
+     */
+    public static int checkIdCard(String idCard) {
+        String str = "[a-zA-Z]\\d{7}[a-zA-Z]{1}";
+        return patternInt(str, idCard);
+    }
+
+}

+ 746 - 0
cs_baselib/src/main/java/com/guadou/lib_baselib/utils/DateAndTimeUtil.java

@@ -0,0 +1,746 @@
+package com.guadou.lib_baselib.utils;
+
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * 时间转换工具类
+ */
+
+public class DateAndTimeUtil {
+
+    /*
+     * 将时间戳转换为时间 年月日
+     */
+    public static String stampToDate(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd MMM, yyyy", Locale.ENGLISH);
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+
+    /*
+     * PhP 时间戳转换
+     */
+    public static String stampToDate1(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm dd/MM/yyyy");
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+
+    /**
+     * 转换时间的另一种格式
+     */
+    public static String stampToDate2(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+
+    public static String stampToDate3(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+
+    public static String stampToDate4(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd MMMM");
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+    public static String stampToDate5(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm", Locale.ENGLISH);
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+
+    public static String stampToDate6(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+    public static String stampToDate7(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMM yyyy", Locale.ENGLISH);
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+    /**
+     * 兼容php时间戳转换 yyyymmdd   只是自己数据库中查询保存的时候用
+     */
+    public static String stampToDate8(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+    /**
+     * 兼容php时间戳转换 yyyymm 只是自己数据库中查询保存的时候用
+     */
+    public static String stampToDate9(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+
+    /*
+     * 将时间戳转换为时间 年月日
+     */
+    public static String stampToDate10(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd MMM, yyyy HH:mm", Locale.ENGLISH);
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+    /*
+     * 将时间戳转换为时间 星期 年月日
+     */
+    public static String stampToDate11(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM, yyyy", Locale.ENGLISH);
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+    /*
+     * 将时间戳转换为时间 星期 年月日
+     */
+    public static String stampToDate12(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, MMM dd, yyyy", Locale.ENGLISH);
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+
+    /*
+     * 将时间戳转换为时间 星期 年月日
+     */
+    public static String stampToDate13(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy", Locale.ENGLISH);
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+    public static String stampToDate14(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm", Locale.ENGLISH);
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res.toLowerCase();
+    }
+
+    /*
+     * 将时间戳转换为时间 星期 年月日
+     */
+    public static String stampToDate15(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE dd MMM yyyy");
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+
+    public static String stampToDate19(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy EEE HH:mm");
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+
+    /*
+     * 将时间戳转换为时间 星期 年月日
+     */
+    public static String stampToDate16(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMM dd yyyy");
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+    public static String stampToDate28(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMM, yyyy", Locale.ENGLISH);
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+
+    public static String getYear(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy");
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+    public static String stampToDate17(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMM");
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+    public static String stampToDate20(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMM dd, yyyy", Locale.ENGLISH);
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+
+    public static String stampToDate21(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("M.dd", Locale.ENGLISH);
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+    public static String stampToDate22(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm, dd MMM yyyy", Locale.ENGLISH);
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res.toLowerCase();
+    }
+
+    public static String stampToDate23(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(" d MMM yyyy HH:mm", Locale.ENGLISH);
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+    public static String stampToDate24(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM", Locale.ENGLISH);
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res.toLowerCase();
+    }
+
+    public static String stampToDate25(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(" dd MMM yyyy", Locale.ENGLISH);
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+    public static String stampToDate26(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EE, MMMM dd", Locale.ENGLISH);
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+    /*
+     * 将时间戳转换为时间 年月日
+     */
+    public static String stampToDate27(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMM dd yyyy HH:mm");
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+    public static String stampToDate29(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd/yyyy");
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+    /*
+     * 将时间戳转换为时间 年月日
+     */
+    public static String stampToDate30(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMM dd, yyyy HH:mm");
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+
+    public static String stampToDateNewsFeed(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+        long lt = new Long(s);
+        Date date = new Date(lt);
+
+        String before;
+        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("MMM dd, yyyy");
+        before = simpleDateFormat1.format(date);
+
+        String after;
+//        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("HH:mm a.");
+        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("HH:mm");
+        after = simpleDateFormat2.format(date);
+//        if (!after.contains("午")) {
+//            //英文才加上点 中文不加点
+//            after = after.substring(0, after.length() - 2) + "." + after.substring(after.length() - 2, after.length());
+//        }
+        return before + " at " + after.toLowerCase();
+    }
+
+
+    public static String getMonth(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM");
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+    public static String getMonthEN(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMM");
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+    public static String getDay(String s) {
+        //转换PHP时间戳
+        if (s.length() < 11) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        String res;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd");
+        long lt = new Long(s);
+        Date date = new Date(lt);
+        res = simpleDateFormat.format(date);
+        return res;
+    }
+
+    /**
+     * 时间转换为时间戳
+     *
+     * @param timeStr 时间 例如: 2016-03-09
+     * @param format  时间对应格式  例如: yyyy-MM-dd
+     * @return 时间戳格式
+     */
+    public static long getTimeStamp(String timeStr, String format) {
+
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format, Locale.ENGLISH);
+        Date date = null;
+        try {
+            date = simpleDateFormat.parse(timeStr);
+            long timeStamp = date.getTime();
+            return timeStamp;
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return 0;
+    }
+
+
+    //日期转换成多少天前 (改成从秒开始的时间戳开始计算)
+    private static long minute = 60;
+    private static long hour = minute * 60;
+    private static long day = hour * 24;
+    private static long halfamonth = day * 15;
+    private static long month = day * 30;
+    private static long year = month * 12;
+
+    public static String getDateDiff(String s) {
+
+//        if (s.length() < 13) {
+//            StringBuilder builder = new StringBuilder(s);
+//            builder.append("000");
+//            s = builder.toString();
+//        }
+
+        long dateTimeStamp = Long.parseLong(s);
+        String result;
+        long nowTimeStamp = System.currentTimeMillis() / 1000;
+        long diffValue = nowTimeStamp - dateTimeStamp;
+        if (diffValue < 0) {
+            //toast("结束日期不能小于开始日期!");
+        }
+        long monthC = diffValue / month;
+        long weekC = diffValue / (7 * day);
+        long dayC = diffValue / day;
+        long hourC = diffValue / hour;
+        long minC = diffValue / minute;
+        if (monthC >= 1) {
+            result = Integer.parseInt(monthC + "") == 1 ? "1 month ago" : Integer.parseInt(monthC + "") + " months ago";
+            return result;
+        } else if (weekC >= 1) {
+            result = Integer.parseInt(weekC + "") == 1 ? "1 week ago" : Integer.parseInt(weekC + "") + " weeks ago";
+            return result;
+        } else if (dayC >= 1) {
+            result = Integer.parseInt(dayC + "") == 1 ? "1 day ago" : Integer.parseInt(dayC + "") + " days ago";
+            return result;
+        } else if (hourC >= 1) {
+            result = Integer.parseInt(hourC + "") == 1 ? "1 hour ago" : Integer.parseInt(hourC + "") + " hours ago";
+            return result;
+        } else if (minC >= 1) {
+            result = Integer.parseInt(minC + "") == 1 ? "1 minute ago" : Integer.parseInt(minC + "") + " minutes ago";
+            return result;
+        } else {
+            result = "a moment ago";
+            return result;
+        }
+    }
+
+    public static String getDiffYear(String s) {
+        if (s.length() < 13) {
+            StringBuilder builder = new StringBuilder(s);
+            builder.append("000");
+            s = builder.toString();
+        }
+
+        Long dateTimeStamp = Long.parseLong(s);
+        String result;
+        long now = new Date().getTime();
+        long diffValue = now - dateTimeStamp;
+        if (diffValue < 0) {
+            //toast("结束日期不能小于开始日期!");
+        }
+        long years = diffValue / year / 1000;
+
+        return String.valueOf(years);
+    }
+
+    /**
+     * 计算时间差-转换为时分秒
+     */
+    public static String getDiffTimeMinutes(long mss) {
+
+        String hour = (mss % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60) + "";
+        String minutes = (mss % (1000 * 60 * 60)) / (1000 * 60) + "";
+        String seconds = (mss % (1000 * 60)) / 1000 + "";
+        if (hour.length() == 1) {
+            hour = "0" + hour;
+        }
+        if (minutes.length() == 1) {
+            minutes = "0" + minutes;
+        }
+        if (seconds.length() == 1) {
+            seconds = "0" + seconds;
+        }
+
+        return hour + ":" + minutes + ":" + seconds;
+    }
+}

+ 92 - 0
cs_baselib/src/main/java/com/guadou/lib_baselib/utils/SPUtils.java

@@ -0,0 +1,92 @@
+package com.guadou.lib_baselib.utils;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+
+/**
+ * SharedPreferences的工具类,单例模式,可以链式调用
+ */
+
+public class SPUtils {
+    private static final String SHARED_PREFERENCES_NAME = "config";
+
+    private static SPUtils sharedUtil;
+    private Context context;
+    private SharedPreferences sharedPreferences;
+
+    private SPUtils(Context context) {
+        this.context = context.getApplicationContext();
+        this.sharedPreferences = context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
+    }
+
+    public static SPUtils getInstance(Context context) {
+        synchronized (SPUtils.class) {
+            if (sharedUtil == null || sharedUtil.context == null) {
+                sharedUtil = new SPUtils(context.getApplicationContext());
+            }
+        }
+        return sharedUtil;
+    }
+
+    public SharedPreferences getSharedPreferences() {
+        return this.sharedPreferences;
+    }
+
+    public SPUtils putString(String key, String value) {
+        SharedPreferences preference = this.getSharedPreferences();
+        SharedPreferences.Editor editor = preference.edit();
+        editor.putString(key, value);
+        editor.commit();
+        return this;
+    }
+
+    public SPUtils putInt(String key, int value) {
+        SharedPreferences preference = this.getSharedPreferences();
+        SharedPreferences.Editor editor = preference.edit();
+        editor.putInt(key, value);
+        editor.commit();
+        return this;
+    }
+
+    public SPUtils putBoolean(String key, boolean value) {
+        SharedPreferences preference = this.getSharedPreferences();
+        SharedPreferences.Editor editor = preference.edit();
+        editor.putBoolean(key, value);
+        editor.commit();
+        return this;
+    }
+
+    public String getString(String key, String defValue) {
+        SharedPreferences preference = this.getSharedPreferences();
+        return preference.getString(key, defValue);
+    }
+
+    public int getInt(String key, int defValue) {
+        SharedPreferences preference = this.getSharedPreferences();
+        return preference.getInt(key, defValue);
+    }
+
+    public boolean getBoolean(String key, boolean defValue) {
+        SharedPreferences preference = this.getSharedPreferences();
+        return preference.getBoolean(key, defValue);
+    }
+
+    public boolean contains(String key) {
+        SharedPreferences preference = this.getSharedPreferences();
+        return preference.contains(key);
+    }
+
+    public SPUtils remove(String key) {
+        SharedPreferences preference = this.getSharedPreferences();
+        SharedPreferences.Editor editor = preference.edit();
+        editor.remove(key);
+        editor.commit();
+        return this;
+    }
+
+    public void clear() {
+        SharedPreferences.Editor editor = this.getSharedPreferences().edit();
+        editor.clear();
+        editor.commit();
+    }
+}

+ 49 - 0
cs_baselib/src/main/res/layout/item_points_history.xml

@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingTop="@dimen/d_15dp"
+    android:orientation="vertical">
+
+    <com.guadou.lib_baselib.font_text_view.TextViewRegular
+        android:id="@+id/tv_item_points_history_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textSize="@dimen/d_15sp"
+        android:textColor="@color/home_item_title_color"
+        android:layout_marginLeft="@dimen/d_25dp"
+        android:text="Payment"/>
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="@dimen/d_25dp"
+        android:layout_marginRight="@dimen/d_25dp"
+        android:layout_marginTop="10dp">
+
+        <TextView
+            android:id="@+id/tv_item_points_history_date"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textSize="@dimen/d_13sp"
+            android:textColor="@color/gray_text"
+            android:text="13 Jun 2019, 10:52 am"/>
+
+        <TextView
+            android:id="@+id/tv_item_points_history_point"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentRight="true"
+            android:textColor="@color/profile_red"
+            android:textSize="@dimen/d_14sp"
+            android:text="+1,200"/>
+
+    </RelativeLayout>
+
+    <ImageView
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/d_1dp"
+        android:layout_marginTop="@dimen/d_20dp"
+        android:src="@color/divider_color"/>
+
+</LinearLayout>

+ 2 - 0
cs_baselib/src/main/res/values/dimens.xml

@@ -24,6 +24,7 @@
     <dimen name="d_28sp">28sp</dimen>
     <dimen name="d_30sp">30sp</dimen>
 
+    <dimen name="d_0.1dp">0.1dp</dimen>
     <dimen name="d_0.5dp">0.5dp</dimen>
     <dimen name="d_0.7dp">0.7dp</dimen>
     <dimen name="d_1dp">1dp</dimen>
@@ -67,6 +68,7 @@
     <dimen name="d_47dp">47dp</dimen>
     <dimen name="d_48dp">48dp</dimen>
     <dimen name="d_50dp">50dp</dimen>
+    <dimen name="d_54dp">54dp</dimen>
     <dimen name="d_55dp">55dp</dimen>
     <dimen name="d_60dp">60dp</dimen>
     <dimen name="d_65dp">65dp</dimen>

+ 3 - 0
cs_cptServices/src/main/java/com/guadou/cs_cptservices/YYConstants.java

@@ -11,4 +11,7 @@ public class YYConstants {
     public static final int NEWS_FEED_TYPE_VIDEO = 1;
     public static final int NEWS_FEED_TYPE_BALLOT = 2;
     public static final int NEWS_FEED_TYPE_NEWS = 3;
+
+    public static final String CACHE_REWARDS_POINTS="cache_rewards_points";
+
 }

+ 35 - 0
cs_cptServices/src/main/java/com/guadou/cs_cptservices/commonBean/LevelPoints.java

@@ -0,0 +1,35 @@
+package com.guadou.cs_cptservices.commonBean;
+
+import com.google.gson.annotations.SerializedName;
+
+import java.io.Serializable;
+
+public class LevelPoints implements Serializable {
+
+    /**
+     * total : 0
+     * level : 1
+     * level_alias : Bronze
+     * "daily_check_in": false,
+     * "promotion_apply": false,
+     * "news_feed_post": false
+     * continuous_days : 0
+     */
+    @SerializedName("available")
+    public int points;
+
+    public int total;
+
+    public String level;
+    public String level_alias;
+    public boolean daily_check_in;
+    public boolean promotion_apply;
+    public boolean news_feed_post;
+    public int continuous_days;
+
+    public boolean browse_news_feed;  //浏览NewsFeed
+    public int give_likes;  //点赞数量
+    public int get_likes;   //获取点赞数量
+    public boolean post_video;  //发布视频
+
+}

+ 106 - 0
cs_cptServices/src/main/java/com/guadou/cs_cptservices/widget/CustomRound6ImageView.java

@@ -0,0 +1,106 @@
+package com.guadou.cs_cptservices.widget;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
+import android.graphics.Path;
+import android.os.Build;
+import android.util.AttributeSet;
+import android.view.View;
+
+import com.guadou.cs_cptservices.R;
+import com.guadou.lib_baselib.utils.CommUtils;
+
+import androidx.appcompat.widget.AppCompatImageView;
+
+public class CustomRound6ImageView extends AppCompatImageView {
+    float width, height;
+    private int defaultRadius = CommUtils.dip2px(6);
+
+    private int leftTopRadius;
+    private int rightTopRadius;
+    private int rightBottomRadius;
+    private int leftBottomRadius;
+
+    public CustomRound6ImageView(Context context) {
+        this(context, null);
+        init(context, null);
+    }
+
+    public CustomRound6ImageView(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+        init(context, attrs);
+    }
+
+    public CustomRound6ImageView(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        init(context, attrs);
+    }
+
+    private void init(Context context, AttributeSet attrs) {
+        if (Build.VERSION.SDK_INT < 18) {
+            setLayerType(View.LAYER_TYPE_SOFTWARE, null);
+        }
+
+//        setBackground(getContext().getResources().getDrawable(R.drawable.iv_emergency_report_detail_pictrue));
+
+        initAttribute(attrs);
+
+    }
+
+    private void initAttribute(AttributeSet attrs) {
+
+        TypedArray typedArray = getContext().obtainStyledAttributes(attrs, R.styleable.custom_round_image);
+
+        float leftTop = typedArray.getDimension(R.styleable.custom_round_image_conner_radius_left_top, defaultRadius);
+        float leftBottom = typedArray.getDimension(R.styleable.custom_round_image_conner_radius_left_bottom, defaultRadius);
+        float rightTop = typedArray.getDimension(R.styleable.custom_round_image_conner_radius_right_top, defaultRadius);
+        float rightBottom = typedArray.getDimension(R.styleable.custom_round_image_conner_radius_right_bottom, defaultRadius);
+
+        leftTopRadius = CommUtils.dip2px((int) leftTop);
+        leftBottomRadius = CommUtils.dip2px((int) leftBottom);
+        rightTopRadius = CommUtils.dip2px((int) rightTop);
+        rightBottomRadius = CommUtils.dip2px((int) rightBottom);
+
+
+        typedArray.recycle();
+
+    }
+
+    @Override
+    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+        super.onLayout(changed, left, top, right, bottom);
+        width = getWidth();
+        height = getHeight();
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        int maxLeft = Math.max(leftTopRadius, leftBottomRadius);
+        int maxRight = Math.max(rightTopRadius, rightBottomRadius);
+        int minWidth = maxLeft + maxRight;
+        int maxTop = Math.max(leftTopRadius, rightTopRadius);
+        int maxBottom = Math.max(leftBottomRadius, rightBottomRadius);
+        int minHeight = maxTop + maxBottom;
+        if (width >= minWidth && height > minHeight) {
+            Path path = new Path();
+            //四个角:右上,右下,左下,左上
+            path.moveTo(leftTopRadius, 0);
+            path.lineTo(width - rightTopRadius, 0);
+            path.quadTo(width, 0, width, rightTopRadius);
+
+            path.lineTo(width, height - rightBottomRadius);
+            path.quadTo(width, height, width - rightBottomRadius, height);
+
+            path.lineTo(leftBottomRadius, height);
+            path.quadTo(0, height, 0, height - leftBottomRadius);
+
+            path.lineTo(0, leftTopRadius);
+            path.quadTo(0, 0, leftTopRadius, 0);
+
+            canvas.clipPath(path);
+        }
+        super.onDraw(canvas);
+    }
+
+}

BIN
cs_cptServices/src/main/res/drawable-xhdpi/back_blue.webp


BIN
cs_cptServices/src/main/res/drawable-xhdpi/daliy_points_gold.webp


BIN
cs_cptServices/src/main/res/drawable-xhdpi/reward_yy_circle_logo.png


BIN
cs_cptServices/src/main/res/drawable-xhdpi/search.webp


BIN
cs_cptServices/src/main/res/drawable-xhdpi/search_bg.webp


BIN
cs_cptServices/src/main/res/drawable-xhdpi/search_delete.webp


BIN
cs_cptServices/src/main/res/drawable-xxhdpi/back_blue.webp


BIN
cs_cptServices/src/main/res/drawable-xxhdpi/daliy_points_gold.webp


BIN
cs_cptServices/src/main/res/drawable-xxhdpi/search.webp


BIN
cs_cptServices/src/main/res/drawable-xxhdpi/search_bg.webp


BIN
cs_cptServices/src/main/res/drawable-xxhdpi/search_delete.webp


+ 5 - 0
cs_cptServices/src/main/res/drawable/shape_15round_main_blue.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="@color/main_topitem_selected_bg"/>
+    <corners android:radius="15dp"/>
+</shape>

+ 5 - 0
cs_cptServices/src/main/res/drawable/shape_15round_white.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="@color/white" />
+    <corners android:radius="@dimen/d_15dp" />
+</shape>

+ 11 - 0
cs_cptServices/src/main/res/drawable/shape_blue_8conner_no_right_top.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+    <solid android:color="@color/app_blue" />
+    <corners
+        android:bottomLeftRadius="@dimen/d_8dp"
+        android:bottomRightRadius="@dimen/d_8dp"
+        android:topLeftRadius="@dimen/d_8dp" />
+
+</shape>

+ 4 - 0
cs_cptServices/src/main/res/values/colors.xml

@@ -42,5 +42,9 @@
     <color name="status_text_bg_success">#FF5E75</color>
     <color name="main_topitem_enable">#330689FB</color>
     <color name="gray_82">#828282</color>
+    <color name="main_divide">#D8D8D8</color>
+    <color name="dark_gray_text">#666666</color>
+    <color name="gray_promotion_rewards">#C7EAFF</color>
+    <color name="food_gray_f7">#f7f7f7</color>
 
 </resources>

+ 10 - 0
cs_cptServices/src/main/res/values/styles.xml

@@ -26,4 +26,14 @@
         <item name="android:colorForeground">#00000000</item>
     </style>
 
+    <!--Image 圆角-->
+    <declare-styleable name="custom_round_image">
+
+        <attr name="conner_radius_left_top" format="dimension" />
+        <attr name="conner_radius_left_bottom" format="dimension" />
+        <attr name="conner_radius_right_top" format="dimension" />
+        <attr name="conner_radius_right_bottom" format="dimension" />
+
+    </declare-styleable>
+
 </resources>