소스 검색

1.兼职编辑个人信息界面搭建
2.重置密码界面搭建
3.个人信息审核加急弹框界面搭建

Administrator 2 년 전
부모
커밋
2a02584a43
71개의 변경된 파일3265개의 추가작업 그리고 4개의 파일을 삭제
  1. 4 0
      cpt_parttime/src/main/AndroidManifest.xml
  2. 39 0
      cpt_parttime/src/main/java/com/hongyegroup/cpt_parttime/ui/PartJobEditProfileInfoActivity.kt
  3. 21 0
      cpt_parttime/src/main/java/com/hongyegroup/cpt_parttime/ui/PartJobProfileFragment.kt
  4. 37 0
      cpt_parttime/src/main/java/com/hongyegroup/cpt_parttime/ui/ResetPasswordActivity.kt
  5. 18 2
      cpt_parttime/src/main/java/com/hongyegroup/cpt_parttime/ui/SettingsActivity.kt
  6. 45 0
      cpt_parttime/src/main/java/com/hongyegroup/cpt_parttime/widget/UserUrgentAlertPopup.java
  7. 2175 0
      cpt_parttime/src/main/res/layout/activity_part_job_edit_profile_info.xml
  8. 166 0
      cpt_parttime/src/main/res/layout/activity_reset_password.xml
  9. 11 1
      cpt_parttime/src/main/res/layout/activity_settings.xml
  10. 3 1
      cpt_parttime/src/main/res/layout/fragment_parttime_job_profile.xml
  11. 48 0
      cpt_parttime/src/main/res/layout/view_popup_user_urgent.xml
  12. 2 0
      cs_baselib/src/main/res/values/dimens.xml
  13. 18 0
      cs_cptServices/src/main/java/com/guadou/cs_cptservices/widget/signWrite/DrawPoint.java
  14. 311 0
      cs_cptServices/src/main/java/com/guadou/cs_cptservices/widget/signWrite/HandWriteView.java
  15. 114 0
      cs_cptServices/src/main/java/com/guadou/cs_cptservices/widget/signWrite/PointUtil.java
  16. 44 0
      cs_cptServices/src/main/java/com/guadou/cs_cptservices/widget/signWrite/SignFileOutputStream.java
  17. 34 0
      cs_cptServices/src/main/java/com/guadou/cs_cptservices/widget/signWrite/TimedPoint.java
  18. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/choose_small.webp
  19. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/circlr_avatar_upload_bg.webp
  20. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/dialog_blue_delete.webp
  21. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/drop_down.webp
  22. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/iv_additional_info_contact.webp
  23. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/iv_additional_info_language.webp
  24. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/iv_additional_info_medical.webp
  25. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/iv_additional_info_method.webp
  26. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/iv_additional_info_photo.webp
  27. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/iv_additional_info_record.webp
  28. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/iv_additional_info_sign.webp
  29. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/iv_additional_info_terms.webp
  30. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/iv_additonal_info_edit_icon.webp
  31. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/iv_profile_additional_info_upload_picture.webp
  32. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/iv_profile_black_delete.webp
  33. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/iv_profile_choose_circle.webp
  34. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/iv_profile_choose_square.webp
  35. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/iv_profile_picture_photo_default.webp
  36. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/iv_profile_unchoose.webp
  37. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/iv_profile_unchoose_circle.webp
  38. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/password.webp
  39. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/unchoose_small.webp
  40. BIN
      cs_cptServices/src/main/res/drawable-xhdpi/user_urgent_dialog_img.webp
  41. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/choose_small.webp
  42. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/dialog_blue_delete.webp
  43. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/iv_additional_info_contact.webp
  44. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/iv_additional_info_language.webp
  45. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/iv_additional_info_medical.webp
  46. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/iv_additional_info_method.webp
  47. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/iv_additional_info_photo.webp
  48. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/iv_additional_info_record.webp
  49. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/iv_additional_info_sign.webp
  50. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/iv_additional_info_terms.webp
  51. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/iv_additonal_info_edit_icon.webp
  52. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/iv_profile_additional_info_upload_picture.webp
  53. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/iv_profile_black_delete.webp
  54. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/iv_profile_choose_circle.webp
  55. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/iv_profile_choose_square.webp
  56. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/iv_profile_picture_photo_default.webp
  57. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/iv_profile_unchoose.webp
  58. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/iv_profile_unchoose_circle.webp
  59. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/password.webp
  60. BIN
      cs_cptServices/src/main/res/drawable-xxhdpi/unchoose_small.webp
  61. 17 0
      cs_cptServices/src/main/res/drawable/gray_input_field.xml
  62. 18 0
      cs_cptServices/src/main/res/drawable/gray_input_field_pressed.xml
  63. 8 0
      cs_cptServices/src/main/res/drawable/gray_input_field_selector_disable_enable.xml
  64. 23 0
      cs_cptServices/src/main/res/drawable/ios_dialog_custom_yes_selector.xml
  65. 27 0
      cs_cptServices/src/main/res/drawable/selector_check_red.xml
  66. 27 0
      cs_cptServices/src/main/res/drawable/selector_check_red_circle.xml
  67. 27 0
      cs_cptServices/src/main/res/drawable/selector_check_red_square.xml
  68. 5 0
      cs_cptServices/src/main/res/drawable/shape_5round_white.xml
  69. 10 0
      cs_cptServices/src/main/res/drawable/shape_profile_gray_5conner_with_border.xml
  70. 8 0
      cs_cptServices/src/main/res/values/attrs.xml
  71. 5 0
      cs_cptServices/src/main/res/values/colors.xml

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

@@ -12,6 +12,10 @@
 
         <activity android:name=".ui.SettingsActivity"/>
 
+        <activity android:name=".ui.PartJobEditProfileInfoActivity"/>
+
+        <activity android:name=".ui.ResetPasswordActivity"/>
+
     </application>
 
 </manifest>

+ 39 - 0
cpt_parttime/src/main/java/com/hongyegroup/cpt_parttime/ui/PartJobEditProfileInfoActivity.kt

@@ -0,0 +1,39 @@
+package com.hongyegroup.cpt_parttime.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.base.vm.BaseViewModel
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.utils.CommUtils
+import com.hongyegroup.cpt_parttime.BR
+import com.hongyegroup.cpt_parttime.R
+import com.hongyegroup.cpt_parttime.databinding.ActivityPartJobEditProfileInfoBinding
+
+class PartJobEditProfileInfoActivity:BaseVDBActivity<BaseViewModel,ActivityPartJobEditProfileInfoBinding>() {
+
+    companion object {
+        fun startInstance() {
+            val context = CommUtils.getContext()
+            val intent = Intent(context, PartJobEditProfileInfoActivity::class.java)
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            context.startActivity(intent)
+        }
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+
+
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+
+        return DataBindingConfig(R.layout.activity_part_job_edit_profile_info,BR.viewModel,mViewModel)
+
+    }
+
+    override fun startObserve() {
+
+    }
+}

+ 21 - 0
cpt_parttime/src/main/java/com/hongyegroup/cpt_parttime/ui/PartJobProfileFragment.kt

@@ -15,6 +15,8 @@ import com.hongyegroup.cpt_parttime.BR
 import com.hongyegroup.cpt_parttime.R
 import com.hongyegroup.cpt_parttime.databinding.FragmentParttimeJobProfileBinding
 import com.hongyegroup.cpt_parttime.mvvm.PartJobProfileViewModel
+import com.hongyegroup.cpt_parttime.widget.UserUrgentAlertPopup
+import com.lxj.xpopup.XPopup
 import com.scwang.smart.refresh.layout.api.RefreshLayout
 import com.scwang.smart.refresh.layout.listener.OnRefreshListener
 
@@ -93,6 +95,25 @@ class PartJobProfileFragment : YYBaseVDBLoadingFragment<PartJobProfileViewModel,
      */
     inner class ClickProxy {
 
+        //跳转到编辑个人信息界面
+        fun editProfileInfo(){
+
+            PartJobEditProfileInfoActivity.startInstance()
+
+        }
+
+        //审核个人信息加急
+        fun userUrgent(){
+
+            //弹窗展示以及申请成功
+
+            XPopup.Builder(mActivity)
+                .hasShadowBg(true)
+                .asCustom(UserUrgentAlertPopup(mActivity))
+                .show()
+
+        }
+
     }
 
 

+ 37 - 0
cpt_parttime/src/main/java/com/hongyegroup/cpt_parttime/ui/ResetPasswordActivity.kt

@@ -0,0 +1,37 @@
+package com.hongyegroup.cpt_parttime.ui
+
+import android.content.Intent
+import android.os.Bundle
+import com.guadou.lib_baselib.base.activity.BaseVDBActivity
+import com.guadou.lib_baselib.base.vm.BaseViewModel
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.utils.CommUtils
+import com.hongyegroup.cpt_parttime.BR
+import com.hongyegroup.cpt_parttime.R
+import com.hongyegroup.cpt_parttime.databinding.ActivityResetPasswordBinding
+
+class ResetPasswordActivity:BaseVDBActivity<BaseViewModel,ActivityResetPasswordBinding>() {
+
+    companion object {
+        fun startInstance() {
+            val context = CommUtils.getContext()
+            val intent = Intent(context, ResetPasswordActivity::class.java)
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            context.startActivity(intent)
+        }
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+
+        return DataBindingConfig(R.layout.activity_reset_password,BR.viewModel,mViewModel)
+
+    }
+
+    override fun startObserve() {
+
+    }
+}

+ 18 - 2
cpt_parttime/src/main/java/com/hongyegroup/cpt_parttime/ui/SettingsActivity.kt

@@ -11,7 +11,7 @@ import com.hongyegroup.cpt_parttime.BR
 import com.hongyegroup.cpt_parttime.R
 import com.hongyegroup.cpt_parttime.databinding.ActivitySettingsBinding
 
-class SettingsActivity:YYBaseVDBActivity<BaseViewModel,ActivitySettingsBinding>() {
+class SettingsActivity : YYBaseVDBActivity<BaseViewModel, ActivitySettingsBinding>() {
 
     companion object {
         fun startInstance() {
@@ -29,11 +29,27 @@ class SettingsActivity:YYBaseVDBActivity<BaseViewModel,ActivitySettingsBinding>(
 
     override fun getDataBindingConfig(): DataBindingConfig {
 
-        return DataBindingConfig(R.layout.activity_settings,BR.viewModel,mViewModel)
+        return DataBindingConfig(R.layout.activity_settings, BR.viewModel, mViewModel)
+            .addBindingParams(BR.click, ClickProxy())
 
     }
 
     override fun startObserve() {
 
     }
+
+    /**
+     * DataBinding事件处理
+     */
+    inner class ClickProxy {
+
+        //点击重置密码
+        fun resetPassword() {
+
+            ResetPasswordActivity.startInstance()
+
+        }
+
+    }
+
 }

+ 45 - 0
cpt_parttime/src/main/java/com/hongyegroup/cpt_parttime/widget/UserUrgentAlertPopup.java

@@ -0,0 +1,45 @@
+package com.hongyegroup.cpt_parttime.widget;
+
+import android.content.Context;
+
+import com.guadou.lib_baselib.utils.CommUtils;
+import com.hongyegroup.cpt_parttime.R;
+import com.lxj.xpopup.core.CenterPopupView;
+import com.lxj.xpopup.util.XPopupUtils;
+
+import androidx.annotation.NonNull;
+
+/**
+ * 加急申请成功的弹窗
+ */
+public class UserUrgentAlertPopup extends CenterPopupView {
+
+    public UserUrgentAlertPopup(@NonNull Context context) {
+        super(context);
+    }
+
+    @Override
+    protected int getImplLayoutId() {
+        return R.layout.view_popup_user_urgent;
+    }
+
+    @Override
+    protected int getMaxWidth() {
+        return XPopupUtils.getWindowWidth(CommUtils.getContext());
+    }
+
+    @Override
+    protected void initPopupContent() {
+        super.initPopupContent();
+
+        findViewById(R.id.iv_dialog_delete).setOnClickListener(v -> {
+            dismiss();
+        });
+
+        findViewById(R.id.tv_dialog_ok).setOnClickListener(v -> {
+            dismiss();
+        });
+
+    }
+
+}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 2175 - 0
cpt_parttime/src/main/res/layout/activity_part_job_edit_profile_info.xml


+ 166 - 0
cpt_parttime/src/main/res/layout/activity_reset_password.xml

@@ -0,0 +1,166 @@
+<?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">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/white"
+        android:focusable="true"
+        android:focusableInTouchMode="true"
+        android:orientation="vertical">
+
+        <com.guadou.lib_baselib.view.titlebar.EasyTitleBar
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:Easy_title="重置密码" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginLeft="@dimen/d_10dp"
+            android:layout_marginRight="@dimen/d_10dp"
+            android:orientation="vertical">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:padding="@dimen/d_12dp">
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center"
+                    android:src="@drawable/password" />
+
+                <EditText
+                    android:id="@+id/edit_text_current"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="@dimen/d_10dp"
+                    android:layout_marginLeft="@dimen/d_10dp"
+                    android:layout_weight="1"
+                    android:background="@android:color/transparent"
+                    android:hint="当前密码(最少8位数,包含大小写和数字)"
+                    android:inputType="textPassword"
+                    android:padding="@dimen/d_5dp"
+                    android:textColor="@color/black"
+                    android:textColorHint="@color/gray_82"
+                    android:textSize="@dimen/d_14sp" />
+
+                <CheckBox
+                    android:id="@+id/cb_old_psd"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d_10dp"
+                    android:button="@drawable/selector_check_password_hide" />
+
+            </LinearLayout>
+
+            <ImageView
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/d_0.5dp"
+                android:src="@color/page_bg"/>
+
+            <LinearLayout
+                android:id="@+id/linear_layout_password"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:padding="@dimen/d_12dp">
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center"
+                    android:src="@drawable/password" />
+
+                <EditText
+                    android:id="@+id/edit_text_password"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="@dimen/d_10dp"
+                    android:layout_marginLeft="@dimen/d_10dp"
+                    android:layout_weight="1"
+                    android:background="@android:color/transparent"
+                    android:hint="新密码(最少8位数,包含大小写和数字)"
+                    android:inputType="textPassword"
+                    android:padding="@dimen/d_5dp"
+                    android:textColor="@color/black"
+                    android:textColorHint="@color/gray_82"
+                    android:textSize="@dimen/d_14sp" />
+
+                <CheckBox
+                    android:id="@+id/cb_new_psd"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d_10dp"
+                    android:button="@drawable/selector_check_password_hide" />
+
+            </LinearLayout>
+
+            <ImageView
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/d_0.5dp"
+                android:src="@color/page_bg"/>
+
+            <LinearLayout
+                android:id="@+id/linear_layout_repassword"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:padding="@dimen/d_12dp">
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center"
+                    android:src="@drawable/password" />
+
+                <EditText
+                    android:id="@+id/edit_text_repassword"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="@dimen/d_10dp"
+                    android:layout_marginLeft="@dimen/d_10dp"
+                    android:layout_weight="1"
+                    android:background="@android:color/transparent"
+                    android:hint="确认新密码(最少8位数,包含大小写和数字)"
+                    android:inputType="textPassword"
+                    android:padding="@dimen/d_5dp"
+                    android:textColor="@color/black"
+                    android:textColorHint="@color/gray_82"
+                    android:textSize="@dimen/d_14sp" />
+
+                <CheckBox
+                    android:id="@+id/cb_confirm_psd"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d_10dp"
+                    android:button="@drawable/selector_check_password_hide" />
+
+            </LinearLayout>
+
+            <ImageView
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/d_0.5dp"
+                android:src="@color/page_bg"/>
+
+            <Button
+                android:id="@+id/btn_sunmit"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/d_45dp"
+                android:layout_marginTop="@dimen/d_30dp"
+                android:background="@drawable/selector_app_blue_button_round2_bg"
+                android:text="提交"
+                android:textAllCaps="false"
+                android:textColor="@android:color/white"
+                android:textSize="@dimen/d_16sp" />
+
+
+        </LinearLayout>
+
+    </LinearLayout>
+
+</layout>

+ 11 - 1
cpt_parttime/src/main/res/layout/activity_settings.xml

@@ -1,7 +1,16 @@
 <?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">
+    xmlns:tool="http://schemas.android.com/tools"
+    xmlns:binding="http://schemas.android.com/apk/res-auto">
+
+    <data>
+
+        <variable
+            name="click"
+            type="com.hongyegroup.cpt_parttime.ui.SettingsActivity.ClickProxy" />
+
+    </data>
 
     <LinearLayout
         android:layout_width="match_parent"
@@ -153,6 +162,7 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:orientation="horizontal"
+            binding:clicks="@{click.resetPassword}"
             android:padding="@dimen/d_15dp">
 
             <TextView

+ 3 - 1
cpt_parttime/src/main/res/layout/fragment_parttime_job_profile.xml

@@ -192,6 +192,7 @@
                         android:layout_marginRight="@dimen/d_5dp"
                         android:background="@drawable/profile_white_shadow_comm_bg"
                         android:orientation="vertical"
+                        binding:clicks="@{click.editProfileInfo}"
                         android:paddingTop="@dimen/d_20dp"
                         android:paddingBottom="@dimen/d_20dp">
 
@@ -255,7 +256,7 @@
                             android:textSize="@dimen/d_14sp" />
 
                         <com.guadou.lib_baselib.font_text_view.TextViewMedium
-                            android:id="@+id/btn_urgent"
+                                android:id="@+id/btn_urgent"
                             android:layout_width="match_parent"
                             android:layout_height="@dimen/d_35dp"
                             android:layout_marginLeft="@dimen/d_23dp"
@@ -265,6 +266,7 @@
                             android:background="@drawable/selector_app_blue_button_round5_bg"
                             android:gravity="center"
                             android:text="加急"
+                            binding:clicks="@{click.userUrgent}"
                             android:textColor="@color/white"
                             android:textSize="@dimen/d_15sp"
                             android:visibility="visible" />

+ 48 - 0
cpt_parttime/src/main/res/layout/view_popup_user_urgent.xml

@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="322dp"
+    android:layout_height="376dp"
+    android:background="@drawable/shape_5round_white"
+    android:orientation="vertical">
+
+    <ImageView
+        android:id="@+id/iv_dialog_delete"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="right"
+        android:layout_marginTop="@dimen/d_3dp"
+        android:layout_marginRight="@dimen/d_5dp"
+        android:src="@drawable/dialog_blue_delete" />
+
+
+    <ImageView
+        android:layout_width="288dp"
+        android:layout_height="149dp"
+        android:layout_gravity="center_horizontal"
+        android:src="@drawable/user_urgent_dialog_img" />
+
+
+    <com.guadou.lib_baselib.font_text_view.TextViewLight
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="@dimen/d_32dp"
+        android:layout_marginTop="@dimen/d_25dp"
+        android:layout_marginRight="@dimen/d_32dp"
+        android:text="You have sent urgent notification to our admin already. Please wait for our admin for approval."
+        android:textColor="@color/black"
+        android:textSize="18sp" />
+
+    <com.guadou.lib_baselib.font_text_view.TextViewLight
+        android:id="@+id/tv_dialog_ok"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/d_42dp"
+        android:layout_marginLeft="@dimen/d_25dp"
+        android:layout_marginTop="@dimen/d_25dp"
+        android:layout_marginRight="@dimen/d_25dp"
+        android:background="@drawable/selector_app_blue_button_round2_bg"
+        android:gravity="center"
+        android:text="OK"
+        android:textColor="@color/white"
+        android:textSize="@dimen/d_16sp" />
+
+</LinearLayout>

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

@@ -57,9 +57,11 @@
     <dimen name="d_28dp">28dp</dimen>
     <dimen name="d_29dp">29dp</dimen>
     <dimen name="d_30dp">30dp</dimen>
+    <dimen name="d_32dp">32dp</dimen>
     <dimen name="d_35dp">35dp</dimen>
     <dimen name="d_38dp">38dp</dimen>
     <dimen name="d_40dp">40dp</dimen>
+    <dimen name="d_42dp">42dp</dimen>
     <dimen name="d_45dp">45dp</dimen>
     <dimen name="d_46dp">46dp</dimen>
     <dimen name="d_47dp">47dp</dimen>

+ 18 - 0
cs_cptServices/src/main/java/com/guadou/cs_cptservices/widget/signWrite/DrawPoint.java

@@ -0,0 +1,18 @@
+package com.guadou.cs_cptservices.widget.signWrite;
+
+/**
+ * Created by guado on 2018/3/5.
+ */
+
+public class DrawPoint {
+    public float x;
+    public float y;
+    public float width;
+
+    public DrawPoint set(float x, float y, float width) {
+        this.x = x;
+        this.y = y;
+        this.width = width;
+        return this;
+    }
+}

+ 311 - 0
cs_cptServices/src/main/java/com/guadou/cs_cptservices/widget/signWrite/HandWriteView.java

@@ -0,0 +1,311 @@
+package com.guadou.cs_cptservices.widget.signWrite;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.View;
+
+import com.guadou.cs_cptservices.R;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Stack;
+
+/**
+ * 签名View
+ */
+
+public class HandWriteView extends View {
+
+    List<TimedPoint> points = new ArrayList<>();
+    Stack<TimedPoint> cachePoints = new Stack<>();
+    PointUtil pointUtil = new PointUtil();
+    public Bitmap mBitmap;
+    private Canvas mCanvas;
+    private Paint mPaint;
+    public boolean isSign = false;
+
+    private int mBackColor = Color.TRANSPARENT;
+
+    public HandWriteView(Context context) {
+        this(context, null);
+    }
+
+    public HandWriteView(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public HandWriteView(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+
+        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.HandWriteView);
+        int maxWidth = a.getDimensionPixelSize(R.styleable.HandWriteView_paintMaxWidth, 16);
+        int minWidth = a.getDimensionPixelSize(R.styleable.HandWriteView_paintMinWidth, 8);
+        int paintColor = a.getColor(R.styleable.HandWriteView_paintColor, Color.BLACK);
+        pointUtil.setWidth(minWidth, maxWidth);
+        mPaint = new Paint();
+        mPaint.setColor(paintColor);
+        mPaint.setStrokeWidth(10);
+        mPaint.setAntiAlias(true);
+        mPaint.setStyle(Paint.Style.STROKE);
+        mPaint.setStrokeCap(Paint.Cap.ROUND);
+        mPaint.setStrokeJoin(Paint.Join.ROUND);
+    }
+
+    @Override
+    public boolean onTouchEvent(MotionEvent event) {
+        float x = event.getX();
+        float y = event.getY();
+        switch (event.getAction()) {
+            case MotionEvent.ACTION_DOWN:
+                //在此会掉,开始了绘制
+                if (mListener != null) mListener.onBeginSign();
+                getParent().requestDisallowInterceptTouchEvent(true);
+                points.clear();
+                addPoint(getNewPoint(x, y));
+                break;
+            case MotionEvent.ACTION_MOVE:
+                addPoint(getNewPoint(x, y));
+                break;
+            case MotionEvent.ACTION_UP:
+                isSign = true;
+                addPoint(getNewPoint(x, y));
+                getParent().requestDisallowInterceptTouchEvent(false);
+                break;
+        }
+        invalidate();
+        return true;
+    }
+
+    private TimedPoint getNewPoint(float x, float y) {
+        if (cachePoints.empty()) {
+            return new TimedPoint(x, y);
+        } else return cachePoints.pop().set(x, y);
+    }
+
+    private void recyclePoint(TimedPoint point) {
+        cachePoints.push(point);
+    }
+
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        //画背景 如果有需要的话
+        super.onDraw(canvas);
+        if (mBitmap != null) {
+            canvas.drawBitmap(mBitmap, 0, 0, null);
+        }
+    }
+
+    private void addPoint(TimedPoint point) {
+        points.add(point);
+        if (points.size() > 3) {
+            ensureSignatureBitmap();
+            TimedPoint s0 = points.get(0);
+            TimedPoint s1 = points.get(1);
+            TimedPoint s2 = points.get(2);
+            TimedPoint s3 = points.get(3);
+            float cx1 = s1.x + (s2.x - s0.x) / 4;
+            float cy1 = s1.y + (s2.y - s0.y) / 4;
+            float cx2 = s2.x - (s3.x - s1.x) / 4;
+            float cy2 = s2.y - (s3.y - s1.y) / 4;
+            pointUtil.set(s1, getNewPoint(cx1, cy1), getNewPoint(cx2, cy2), s2);
+            float originalWidth = mPaint.getStrokeWidth();
+            float drawSteps = (float) Math.floor(pointUtil.length());
+            for (int i = 0; i < drawSteps; i++) {
+                float t = (float) i / drawSteps;
+                DrawPoint drawPoint = pointUtil.calculate(t);
+                mPaint.setStrokeWidth(drawPoint.width);
+                mCanvas.drawPoint(drawPoint.x, drawPoint.y, mPaint);
+            }
+            mPaint.setStrokeWidth(originalWidth);
+            recyclePoint(points.remove(0));
+            recyclePoint(pointUtil.control1);
+            recyclePoint(pointUtil.control2);
+        } else if (points.size() == 1) {
+            points.add(getNewPoint(point.x, point.y));
+        }
+    }
+
+    private void ensureSignatureBitmap() {
+        if (mBitmap == null) {
+            mBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
+            mCanvas = new Canvas(mBitmap);
+        }
+    }
+
+
+    /**
+     * 保存画板
+     *
+     * @param path 保存到路劲
+     */
+
+    public void save(String path) throws IOException {
+        save(path, false, 0, false);
+    }
+
+    public void save(String path, boolean isEncrypt) throws IOException {
+        save(path, false, 0, isEncrypt);
+    }
+
+    /**
+     * 保存画板
+     *
+     * @param path       保存到路径
+     * @param clearBlank 是否清楚空白区域
+     * @param blank      边缘空白区域
+     * @param isEncrypt  加密存储,选择加密存储会自动追加后缀为.sign
+     */
+    public void save(String path, boolean clearBlank, int blank, boolean isEncrypt) throws IOException {
+        Bitmap bitmap = mBitmap;
+        if (clearBlank) {
+            bitmap = clearBlank(bitmap, blank);
+        }
+        if (isEncrypt) path = path + ".sign";
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        bitmap.compress(Bitmap.CompressFormat.PNG, 100, bos);
+        byte[] buffer = bos.toByteArray();
+        if (buffer != null) {
+            File file = new File(path);
+            if (file.exists()) {
+                file.delete();
+            }
+            OutputStream outputStream = isEncrypt ? new SignFileOutputStream(file) : new FileOutputStream(file);
+            outputStream.write(buffer);
+            outputStream.close();
+        }
+    }
+
+    public Bitmap getBitmap() {
+        return mBitmap;
+    }
+
+    /**
+     * 逐行扫描 清除边界空白。
+     *
+     * @param bp
+     * @param blank 边距留多少个像素
+     * @return
+     */
+    private Bitmap clearBlank(Bitmap bp, int blank) {
+        int HEIGHT = bp.getHeight();
+        int WIDTH = bp.getWidth();
+        int top = 0, left = 0, right = WIDTH, bottom = HEIGHT;
+        int[] pixs = new int[WIDTH];
+        boolean isStop;
+        for (int y = 0; y < HEIGHT; y++) {
+            bp.getPixels(pixs, 0, WIDTH, 0, y, WIDTH, 1);
+            isStop = false;
+            for (int pix : pixs) {
+                if (pix != mBackColor) {
+                    top = y;
+                    isStop = true;
+                    break;
+                }
+            }
+            if (isStop) {
+                break;
+            }
+        }
+        for (int y = HEIGHT - 1; y >= 0; y--) {
+            bp.getPixels(pixs, 0, WIDTH, 0, y, WIDTH, 1);
+            isStop = false;
+            for (int pix : pixs) {
+                if (pix != mBackColor) {
+                    bottom = y;
+                    isStop = true;
+                    break;
+                }
+            }
+            if (isStop) {
+                break;
+            }
+        }
+
+        int scanHeight = bottom - top;
+        pixs = new int[scanHeight];
+        for (int x = 0; x < WIDTH; x++) {
+            bp.getPixels(pixs, 0, 1, x, top, 1, scanHeight);
+            isStop = false;
+            for (int pix : pixs) {
+                if (pix != mBackColor) {
+                    left = x;
+                    isStop = true;
+                    break;
+                }
+            }
+            if (isStop) {
+                break;
+            }
+        }
+        for (int x = WIDTH - 1; x > 0; x--) {
+            bp.getPixels(pixs, 0, 1, x, top, 1, scanHeight);
+            isStop = false;
+            for (int pix : pixs) {
+                if (pix != mBackColor) {
+                    right = x;
+                    isStop = true;
+                    break;
+                }
+            }
+            if (isStop) {
+                break;
+            }
+        }
+        if (blank < 0) {
+            blank = 0;
+        }
+        left = left - blank > 0 ? left - blank : 0;
+        top = top - blank > 0 ? top - blank : 0;
+        right = right + blank > WIDTH - 1 ? WIDTH - 1 : right + blank;
+        bottom = bottom + blank > HEIGHT - 1 ? HEIGHT - 1 : bottom + blank;
+        return Bitmap.createBitmap(bp, left, top, right - left, bottom - top);
+    }
+
+    public void setPaintColor(int paintColor) {
+        mPaint.setColor(paintColor);
+    }
+
+    public void setPaintWidth(int mMinWidth, int mMaxWidth) {
+        if (mMinWidth > 0 && mMaxWidth > 0 && mMinWidth <= mMaxWidth)
+            pointUtil.setWidth(mMinWidth, mMaxWidth);
+    }
+
+    public void clear() {
+        if (mBitmap != null && !mBitmap.isRecycled()) {
+            mBitmap.recycle();
+        }
+        mBitmap = null;
+        ensureSignatureBitmap();
+        invalidate();
+        isSign = false;
+    }
+
+    public boolean isSign() {
+        return isSign;
+    }
+
+
+    //================== callback
+
+    private SignListener mListener;
+
+    public void SetSignListener(SignListener listener) {
+        mListener = listener;
+    }
+
+    public interface SignListener {
+        void onBeginSign();
+    }
+}

+ 114 - 0
cs_cptServices/src/main/java/com/guadou/cs_cptservices/widget/signWrite/PointUtil.java

@@ -0,0 +1,114 @@
+package com.guadou.cs_cptservices.widget.signWrite;
+
+/**
+ * Created by guado on 2018/3/5.
+ */
+
+public class PointUtil {
+
+    public TimedPoint startPoint;
+    public TimedPoint control1;
+    public TimedPoint control2;
+    public TimedPoint endPoint;
+    private int mMinWidth = 8;
+    private int mMaxWidth = 16;
+    private float mVelocityFilterWeight = 0.9f;
+    private float mLastVelocity;
+    private float mLastWidth;
+    private float mStartWidth;
+    private float widthDelta;
+    private DrawPoint drawPoint = new DrawPoint();
+
+    public PointUtil() {
+    }
+
+    public void setWidth(int mMinWidth, int mMaxWidth) {
+        this.mMinWidth = mMinWidth;
+        this.mMaxWidth = mMaxWidth;
+    }
+
+    public PointUtil set(TimedPoint startPoint, TimedPoint control1,
+                         TimedPoint control2, TimedPoint endPoint) {
+        this.startPoint = startPoint;
+        this.control1 = control1;
+        this.control2 = control2;
+        this.endPoint = endPoint;
+
+        float velocity = startPoint.velocityTo(endPoint);
+        velocity = Float.isNaN(velocity) ? 0.0f : velocity;
+
+        velocity = mVelocityFilterWeight * velocity
+                + (1 - mVelocityFilterWeight) * mLastVelocity;
+        float newWidth = mMinWidth + (mMaxWidth - mMinWidth) / (Math.max(1, velocity));
+        mLastVelocity = velocity;
+        widthDelta = newWidth - mLastWidth;
+        mStartWidth = mLastWidth;
+        mLastWidth = newWidth;
+        return this;
+    }
+
+    /**
+     * 获得贝塞尔曲线的长度
+     *
+     * @return
+     */
+    public float length() {
+        int steps = 10;
+        float length = 0;
+        double cx, cy, px = 0, py = 0, xDiff, yDiff;
+        for (int i = 0; i <= steps; i++) {
+            float t = (float) i / steps;
+            cx = point(t, this.startPoint.x, this.control1.x,
+                    this.control2.x, this.endPoint.x);
+            cy = point(t, this.startPoint.y, this.control1.y,
+                    this.control2.y, this.endPoint.y);
+            if (i > 0) {
+                xDiff = cx - px;
+                yDiff = cy - py;
+                length += Math.sqrt(xDiff * xDiff + yDiff * yDiff);
+            }
+            px = cx;
+            py = cy;
+        }
+        return length;
+
+    }
+
+    /**
+     * 求分段的贝塞尔曲线长度。
+     * //P(t)=p1(small_left-t)^3+3p2(small_left-t)^2t+3p3(small_left-t)t^small_right+p4t^3;
+     *
+     * @param t
+     * @param start
+     * @param c1
+     * @param c2
+     * @param end
+     * @return
+     */
+
+    public double point(float t, float start, float c1, float c2, float end) {
+        return start * (1.0 - t) * (1.0 - t) * (1.0 - t)
+                + 3.0 * c1 * (1.0 - t) * (1.0 - t) * t
+                + 3.0 * c2 * (1.0 - t) * t * t
+                + end * t * t * t;
+    }
+
+    public DrawPoint calculate(float t) {
+        float tt = t * t;
+        float ttt = tt * t;
+        float u = 1 - t;
+        float uu = u * u;
+        float uuu = uu * u;
+
+        float x = uuu * this.startPoint.x;
+        x += 3 * uu * t * this.control1.x;
+        x += 3 * u * tt * this.control2.x;
+        x += ttt * this.endPoint.x;
+
+        float y = uuu * this.startPoint.y;
+        y += 3 * uu * t * this.control1.y;
+        y += 3 * u * tt * this.control2.y;
+        y += ttt * this.endPoint.y;
+        return drawPoint.set(x, y, mStartWidth + ttt * widthDelta);
+    }
+}

+ 44 - 0
cs_cptServices/src/main/java/com/guadou/cs_cptservices/widget/signWrite/SignFileOutputStream.java

@@ -0,0 +1,44 @@
+package com.guadou.cs_cptservices.widget.signWrite;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Random;
+
+/**
+ * Created by guado on 2018/3/5.
+ */
+
+public class SignFileOutputStream extends FileOutputStream {
+    byte[] BYTE_MAP;
+
+    public SignFileOutputStream(String name) throws IOException {
+        this(new File(name));
+    }
+
+    public SignFileOutputStream(File file) throws IOException {
+        super(file);
+        BYTE_MAP = new byte[256];
+        for (int i = 0; i < 256; i++) {
+            BYTE_MAP[i] = (byte) i;
+        }
+        Random random = new Random();
+        for (int i = 0; i < BYTE_MAP.length; i++) {
+            int p = random.nextInt(256);
+            byte b = BYTE_MAP[i];
+            BYTE_MAP[i] = BYTE_MAP[p];
+            BYTE_MAP[p] = b;
+        }
+        //write magic num
+        super.write(new byte[]{0x1A, 0x2A}, 0, 2);
+        super.write(BYTE_MAP, 0, 256);
+    }
+
+    @Override
+    public void write(byte[] b, int off, int len) throws IOException {
+        for (int i = off; i < off + len; i++) {
+            b[i] = BYTE_MAP[b[i] & 0xFF];
+        }
+        super.write(b, off, len);
+    }
+}

+ 34 - 0
cs_cptServices/src/main/java/com/guadou/cs_cptservices/widget/signWrite/TimedPoint.java

@@ -0,0 +1,34 @@
+package com.guadou.cs_cptservices.widget.signWrite;
+
+/**
+ * Created by guado on 2018/3/5.
+ */
+
+public class TimedPoint {
+    public float x;
+    public float y;
+    public long timestamp;
+
+    public TimedPoint(float x, float y) {
+        this.x = x;
+        this.y = y;
+        this.timestamp = System.currentTimeMillis();
+    }
+
+    public TimedPoint set(float x, float y) {
+        this.x = x;
+        this.y = y;
+        this.timestamp = System.currentTimeMillis();
+        return this;
+    }
+
+    public float distanceTo(TimedPoint point) {
+        return (float) Math.sqrt(Math.pow(point.x - x, 2) + Math.pow(point.y - y, 2));
+    }
+
+    public float velocityTo(TimedPoint point) {
+        long t = point.timestamp - timestamp;
+        if (t == 0) return 0;
+        else return distanceTo(point) / t;
+    }
+}

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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


+ 17 - 0
cs_cptServices/src/main/res/drawable/gray_input_field.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/page_bg" />
+
+    <stroke android:color="#C8C8C8" />
+
+    <!--<padding android:left="1dp"-->
+        <!--android:top="1dp"-->
+        <!--android:right="1dp"-->
+        <!--android:bottom="1dp" />-->
+
+<!--    <corners android:bottomRightRadius="3dp"
+        android:bottomLeftRadius="3dp"
+        android:topLeftRadius="3dp"
+        android:topRightRadius="3dp" />-->
+
+</shape>

+ 18 - 0
cs_cptServices/src/main/res/drawable/gray_input_field_pressed.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <solid android:color="@color/disabled_field" />
+
+    <stroke android:color="#C8C8C8" />
+
+    <!--<padding android:left="1dp"-->
+        <!--android:top="1dp"-->
+        <!--android:right="1dp"-->
+        <!--android:bottom="1dp" />-->
+
+    <!--<corners android:bottomRightRadius="3dp"-->
+        <!--android:bottomLeftRadius="3dp"-->
+        <!--android:topLeftRadius="3dp"-->
+        <!--android:topRightRadius="3dp" />-->
+
+</shape>

+ 8 - 0
cs_cptServices/src/main/res/drawable/gray_input_field_selector_disable_enable.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:state_enabled="false"
+        android:drawable="@drawable/gray_input_field_pressed" />
+    <item android:drawable="@drawable/gray_input_field" />
+
+</selector>

+ 23 - 0
cs_cptServices/src/main/res/drawable/ios_dialog_custom_yes_selector.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:state_pressed="true">
+        <shape>
+
+            <solid android:color="#77FF5E75" />
+
+            <corners android:radius="2dp" />
+
+        </shape>
+    </item>
+
+    <item>
+        <shape>
+            <solid android:color="@color/status_text_bg_success" />
+
+            <corners android:radius="2dp" />
+
+        </shape>
+    </item>
+
+</selector>

+ 27 - 0
cs_cptServices/src/main/res/drawable/selector_check_red.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <!--<item-->
+        <!--android:state_checked="false"-->
+        <!--android:drawable="@drawable/unchoose" />-->
+    <!--<item-->
+        <!--android:state_checked="true"-->
+        <!--android:drawable="@drawable/choose" />-->
+
+    <item android:state_checked="true">
+        <layer-list>
+            <item android:right="10dp">
+                <bitmap android:src="@drawable/choose_small"/>
+            </item>
+        </layer-list>
+    </item>
+
+    <item android:state_checked="false">
+        <layer-list>
+            <item android:right="10dp">
+               <bitmap android:src="@drawable/unchoose_small"/>
+            </item>
+        </layer-list>
+    </item>
+
+</selector>
+

+ 27 - 0
cs_cptServices/src/main/res/drawable/selector_check_red_circle.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <!--<item-->
+    <!--android:state_checked="false"-->
+    <!--android:drawable="@drawable/unchoose" />-->
+    <!--<item-->
+    <!--android:state_checked="true"-->
+    <!--android:drawable="@drawable/choose" />-->
+
+    <item android:state_checked="true">
+        <layer-list>
+            <item android:right="10dp">
+                <bitmap android:src="@drawable/iv_profile_choose_circle"/>
+            </item>
+        </layer-list>
+    </item>
+
+    <item android:state_checked="false">
+        <layer-list>
+            <item android:right="10dp">
+                <bitmap android:src="@drawable/iv_profile_unchoose_circle"/>
+            </item>
+        </layer-list>
+    </item>
+
+</selector>
+

+ 27 - 0
cs_cptServices/src/main/res/drawable/selector_check_red_square.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <!--<item-->
+    <!--android:state_checked="false"-->
+    <!--android:drawable="@drawable/unchoose" />-->
+    <!--<item-->
+    <!--android:state_checked="true"-->
+    <!--android:drawable="@drawable/choose" />-->
+
+    <item android:state_checked="true">
+        <layer-list>
+            <item android:right="10dp">
+                <bitmap android:src="@drawable/iv_profile_choose_square"/>
+            </item>
+        </layer-list>
+    </item>
+
+    <item android:state_checked="false">
+        <layer-list>
+            <item android:right="10dp">
+                <bitmap android:src="@drawable/iv_profile_unchoose"/>
+            </item>
+        </layer-list>
+    </item>
+
+</selector>
+

+ 5 - 0
cs_cptServices/src/main/res/drawable/shape_5round_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="5dp"/>
+</shape>

+ 10 - 0
cs_cptServices/src/main/res/drawable/shape_profile_gray_5conner_with_border.xml

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

+ 8 - 0
cs_cptServices/src/main/res/values/attrs.xml

@@ -33,4 +33,12 @@
         <attr name="isanim" format="boolean" />
     </declare-styleable>
 
+    <!--  手写板  -->
+    <declare-styleable name="HandWriteView">
+        <attr name="paintColor" format="color" />
+        <attr name="paintMaxWidth" format="dimension" />
+        <attr name="paintMinWidth" format="dimension" />
+    </declare-styleable>
+
+
 </resources>

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

@@ -35,5 +35,10 @@
     <color name="main_date_unselected">#0689FB</color>
     <color name="gray_text">#767676</color>
     <color name="gray_8098B2">#8098B2</color>
+    <color name="red">#FF0000</color>
+    <color name="disabled_field">#DEDEDE</color>
+    <color name="status_text_bg_success">#FF5E75</color>
+    <color name="main_topitem_enable">#330689FB</color>
+    <color name="gray_82">#828282</color>
 
 </resources>