소스 검색

feat: 公共弹窗,Button样式

DoggyZhang 3 달 전
부모
커밋
08905c1fbe

+ 139 - 60
app/src/main/java/com/adealink/weparty/commonui/widget/CommonButton.kt

@@ -1,18 +1,21 @@
 package com.adealink.weparty.commonui.widget
 
 import android.content.Context
+import android.content.res.ColorStateList
 import android.graphics.Typeface
 import android.graphics.drawable.GradientDrawable
 import android.graphics.drawable.StateListDrawable
 import android.util.AttributeSet
 import android.view.Gravity
 import androidx.appcompat.widget.AppCompatTextView
+import androidx.core.content.withStyledAttributes
 import com.adealink.frame.aab.util.getCompatColor
 import com.adealink.frame.aab.util.getCompatFont
-import com.adealink.frame.util.DisplayUtil
 import com.adealink.weparty.R
 import com.adealink.weparty.commonui.drawabletoolbox.DrawableBuilder
 import com.adealink.weparty.commonui.drawabletoolbox.FlipDrawable
+import com.adealink.weparty.commonui.ext.dp
+import com.adealink.weparty.commonui.ext.dpf
 
 class CommonButton @JvmOverloads constructor(
     context: Context,
@@ -20,7 +23,14 @@ class CommonButton @JvmOverloads constructor(
     defStyleAttr: Int = 0,
 ) : AppCompatTextView(context, attrs, defStyleAttr) {
 
+    companion object {
+        const val BUTTON_NORMAL = 0
+        const val BUTTON_CONFIRM = 1
+        const val BUTTON_CANCEL = 2
+    }
+
     private var buttonRadius = 0f
+    private var buttonType = BUTTON_NORMAL
 
     init {
         gravity = Gravity.CENTER
@@ -34,70 +44,139 @@ class CommonButton @JvmOverloads constructor(
             setBackgroundResource(R.drawable.common_button_bg)
             return
         }
-        val ta = context.theme.obtainStyledAttributes(
-            attrs,
-            R.styleable.CommonButton,
-            0, 0
-        ).apply {
-
+        context.withStyledAttributes(attrs, R.styleable.CommonButton) {
+            buttonRadius = getDimension(
+                R.styleable.CommonButton_button_radius,
+                24.dpf()
+            )
+            buttonType = getInt(
+                R.styleable.CommonButton_common_button_type,
+                BUTTON_NORMAL
+            )
         }
-        buttonRadius = ta.getDimension(
-            R.styleable.CommonButton_button_radius,
-            DisplayUtil.dp2px(24f).toFloat()
-        )
-        ta.recycle()
 
-        background = StateListDrawable().apply {
-            addState(
-                intArrayOf(-android.R.attr.state_enabled),
-                DrawableBuilder()
-                    .gradient(true)
-                    .orientation(FlipDrawable.ORIENTATION_HORIZONTAL)
-                    .gradientRadius(buttonRadius)
-                    .cornerRadius(buttonRadius.toInt())
-                    .gradientColors(
-//                        getCompatColor(R.color.color_FFB0F5EA),
-//                        getCompatColor(R.color.color_FFA3CDF9),
-                        getCompatColor(R.color.color_FFB0F5EA),
-                        getCompatColor(R.color.color_FFA3CDF9),
-                        null
+        initView()
+
+    }
+
+    private fun initView() {
+        when (buttonType) {
+            BUTTON_CANCEL -> {
+                background = StateListDrawable().apply {
+                    addState(
+                        intArrayOf(-android.R.attr.state_enabled),
+                        DrawableBuilder()
+                            .cornerRadius(buttonRadius.toInt())
+                            .solidColor(getCompatColor(R.color.white))
+                            .strokeColor(getCompatColor(R.color.color_FF4E5969))
+                            .strokeWidth(1.dp())
+                            .build()
                     )
-                    .gradientType(GradientDrawable.LINEAR_GRADIENT)
-                    .angle(0)
-                    .build()
-            )
-            addState(
-                intArrayOf(android.R.attr.state_pressed),
-                DrawableBuilder()
-                    .gradient(true)
-                    .orientation(FlipDrawable.ORIENTATION_HORIZONTAL)
-                    .gradientRadius(buttonRadius)
-                    .cornerRadius(buttonRadius.toInt())
-                    .gradientColors(
-                        getCompatColor(R.color.color_FF48E6C2),
-                        getCompatColor(R.color.color_FF2A86E6),
-                        null
+                    addState(
+                        intArrayOf(android.R.attr.state_pressed),
+                        DrawableBuilder()
+                            .cornerRadius(buttonRadius.toInt())
+                            .solidColor(getCompatColor(R.color.white))
+                            .strokeColor(getCompatColor(R.color.color_FF4E5969))
+                            .strokeWidth(1.dp())
+                            .build()
                     )
-                    .gradientType(GradientDrawable.LINEAR_GRADIENT)
-                    .angle(0)
-                    .build()
-            )
-            addState(
-                intArrayOf(),
-                DrawableBuilder()
-                    .gradient(true)
-                    .orientation(FlipDrawable.ORIENTATION_HORIZONTAL)
-                    .gradientRadius(buttonRadius)
-                    .cornerRadius(buttonRadius.toInt())
-                    .gradientColors(
-                        getCompatColor(R.color.color_FF50FFD8),
-                        getCompatColor(R.color.color_FF2F95FF),
-                        null
+                    addState(
+                        intArrayOf(),
+                        DrawableBuilder()
+                            .cornerRadius(buttonRadius.toInt())
+                            .solidColor(getCompatColor(R.color.white))
+                            .strokeColor(getCompatColor(R.color.color_FF4E5969))
+                            .strokeWidth(1.dp())
+                            .build()
                     )
-                    .gradientType(GradientDrawable.LINEAR_GRADIENT)
-                    .angle(0)
-                    .build()
-            )
+                }
+
+                setTextColor(
+                    ColorStateList(
+                        arrayOf(
+                            intArrayOf(-android.R.attr.state_enabled), //不可点击
+                            intArrayOf(android.R.attr.state_pressed), //按压
+                            intArrayOf() //一般状态
+                        ),
+                        intArrayOf(
+                            getCompatColor(R.color.color_FF4E5969),
+                            getCompatColor(R.color.color_FF4E5969),
+                            getCompatColor(R.color.color_FF4E5969),
+                        )
+                    )
+                )
+            }
+
+            else -> {
+                // BUTTON_NORMAL
+                // BUTTON_CONFIRM
+                background = StateListDrawable().apply {
+                    addState(
+                        intArrayOf(-android.R.attr.state_enabled),
+                        DrawableBuilder()
+                            .gradient(true)
+                            .orientation(FlipDrawable.ORIENTATION_HORIZONTAL)
+                            .gradientRadius(buttonRadius)
+                            .cornerRadius(buttonRadius.toInt())
+                            .gradientColors(
+                                getCompatColor(R.color.color_FFB0F5EA),
+                                getCompatColor(R.color.color_FFA3CDF9),
+                                null
+                            )
+                            .gradientType(GradientDrawable.LINEAR_GRADIENT)
+                            .angle(0)
+                            .build()
+                    )
+                    addState(
+                        intArrayOf(android.R.attr.state_pressed),
+                        DrawableBuilder()
+                            .gradient(true)
+                            .orientation(FlipDrawable.ORIENTATION_HORIZONTAL)
+                            .gradientRadius(buttonRadius)
+                            .cornerRadius(buttonRadius.toInt())
+                            .gradientColors(
+                                getCompatColor(R.color.color_FF48E6C2),
+                                getCompatColor(R.color.color_FF2A86E6),
+                                null
+                            )
+                            .gradientType(GradientDrawable.LINEAR_GRADIENT)
+                            .angle(0)
+                            .build()
+                    )
+                    addState(
+                        intArrayOf(),
+                        DrawableBuilder()
+                            .gradient(true)
+                            .orientation(FlipDrawable.ORIENTATION_HORIZONTAL)
+                            .gradientRadius(buttonRadius)
+                            .cornerRadius(buttonRadius.toInt())
+                            .gradientColors(
+                                getCompatColor(R.color.color_FF50FFD8),
+                                getCompatColor(R.color.color_FF2F95FF),
+                                null
+                            )
+                            .gradientType(GradientDrawable.LINEAR_GRADIENT)
+                            .angle(0)
+                            .build()
+                    )
+                }
+
+                setTextColor(
+                    ColorStateList(
+                        arrayOf(
+                            intArrayOf(-android.R.attr.state_enabled), //不可点击
+                            intArrayOf(android.R.attr.state_pressed), //按压
+                            intArrayOf() //一般状态
+                        ),
+                        intArrayOf(
+                            getCompatColor(R.color.white),
+                            getCompatColor(R.color.white),
+                            getCompatColor(R.color.white),
+                        )
+                    )
+                )
+            }
         }
     }
 

+ 0 - 1
app/src/main/res/layout/activity_clip_image.xml

@@ -38,7 +38,6 @@
             android:layout_width="wrap_content"
             android:layout_height="36dp"
             android:text="@string/commonui_next_step"
-            app:is_strong="true"
             android:paddingStart="16dp"
             android:paddingEnd="16dp"
             android:gravity="center"

+ 0 - 1
app/src/main/res/layout/activity_image_select.xml

@@ -68,7 +68,6 @@
             android:textSize="14sp"
             android:visibility="gone"
             app:button_radius="20dp"
-            app:is_strong="true"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintTop_toTopOf="parent" />

+ 0 - 1
app/src/main/res/layout/activity_select_preview.xml

@@ -78,7 +78,6 @@
             android:textColor="@color/white"
             android:textSize="16sp"
             app:button_radius="20dp"
-            app:is_strong="true"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintTop_toTopOf="parent" />

+ 29 - 34
app/src/main/res/layout/layout_common_dialog.xml

@@ -27,8 +27,8 @@
             android:id="@+id/iv_top_bg"
             android:layout_width="match_parent"
             android:layout_height="140dp"
-            android:visibility="visible"
             android:scaleType="fitXY"
+            android:visibility="visible"
             app:layout_constraintTop_toTopOf="parent" />
 
         <androidx.constraintlayout.widget.ConstraintLayout
@@ -95,50 +95,45 @@
 
             </FrameLayout>
 
-            <!--取消-->
+            <!--确定-->
             <com.adealink.weparty.commonui.widget.CommonButton
-                android:id="@+id/tvCancel"
+                android:id="@+id/tvConfirm"
                 android:layout_width="0dp"
-                android:layout_height="44dp"
+                android:layout_height="36dp"
+                android:layout_marginHorizontal="50dp"
                 android:layout_marginTop="24dp"
-                android:layout_marginEnd="24dp"
+                android:fontFamily="@font/poppins_semibold"
                 android:gravity="center"
-                android:text="@string/commonui_cancel"
-                android:textSize="16sp"
-                android:textStyle="bold"
-                android:visibility="gone"
+                android:text="@string/commonui_confirm"
+                android:textColor="@color/white"
+                android:textSize="14sp"
                 app:button_radius="22dp"
-                app:is_strong="false"
-                app:layout_constraintEnd_toStartOf="@id/tvConfirm"
-                app:layout_constraintLeft_toLeftOf="parent"
-                app:layout_constraintRight_toLeftOf="@id/tvConfirm"
+                app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toBottomOf="@id/flSubBlock"
                 app:layout_constraintWidth_default="spread"
-                app:layout_goneMarginEnd="0dp"
-                app:layout_goneMarginTop="20dp"
-                tools:ignore="SpUsage"
-                tools:visibility="visible" />
+                app:layout_goneMarginTop="20dp" />
 
-            <!--确定-->
+            <!--取消-->
             <com.adealink.weparty.commonui.widget.CommonButton
-                android:id="@+id/tvConfirm"
+                android:id="@+id/tvCancel"
                 android:layout_width="0dp"
-                android:layout_height="44dp"
+                android:layout_height="36dp"
+                android:layout_marginHorizontal="50dp"
                 android:layout_marginTop="24dp"
                 android:gravity="center"
-                android:text="@string/commonui_confirm"
-                android:textSize="16sp"
-                android:textStyle="bold"
+                android:text="@string/commonui_cancel"
+                android:textColor="@color/color_FF4E5969"
+                android:textSize="14sp"
+                android:visibility="gone"
                 app:button_radius="22dp"
-                app:is_strong="true"
+                app:common_button_type="cancel"
                 app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintLeft_toRightOf="@id/tvCancel"
-                app:layout_constraintRight_toRightOf="parent"
-                app:layout_constraintStart_toEndOf="@id/tvCancel"
-                app:layout_constraintTop_toBottomOf="@id/flSubBlock"
-                app:layout_constraintWidth_default="spread"
-                app:layout_goneMarginTop="20dp" />
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@id/tvConfirm"
+                app:layout_goneMarginTop="20dp"
+                tools:ignore="SpUsage"
+                tools:visibility="visible" />
 
         </androidx.constraintlayout.widget.ConstraintLayout>
 
@@ -148,10 +143,10 @@
         android:id="@+id/top_close_btn"
         android:layout_width="16dp"
         android:layout_height="16dp"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        android:layout_marginEnd="12dp"
         android:layout_marginTop="12dp"
-        android:src="@drawable/commonui_dialog_close_ic"/>
+        android:layout_marginEnd="12dp"
+        android:src="@drawable/commonui_dialog_close_ic"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
 
 </androidx.constraintlayout.widget.ConstraintLayout>

+ 0 - 1
app/src/main/res/layout/layout_common_empty_error.xml

@@ -64,7 +64,6 @@
             android:paddingStart="30dp"
             android:paddingEnd="30dp"
             android:visibility="gone"
-            app:is_strong="true"
             tools:visibility="visible"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"

+ 5 - 6
app/src/main/res/values/attrs.xml

@@ -21,7 +21,6 @@
     <attr name="fixed_tab_scrollable_mode" format="boolean"/>
 
     <!-- 是否是强按钮(绿色)-->
-    <attr name="is_strong" format="boolean" />
     <attr name="item_margin" format="dimension" />
     <attr name="item_height" format="dimension" />
     <attr name="choice_type">
@@ -60,6 +59,11 @@
 
     <declare-styleable name="CommonButton" tools:ignore="ResourceName">
         <attr name="button_radius" format="dimension" />
+        <attr name="common_button_type" format="enum">
+            <enum name="normal" value="0" />
+            <enum name="confirm" value="1" />
+            <enum name="cancel" value="2" />
+        </attr>
     </declare-styleable>
 
     <declare-styleable name="OperateBox">
@@ -345,11 +349,6 @@
         <attr name="phaseAngleRadian" format="float" />
     </declare-styleable>
 
-    <attr name="button_type" format="enum">
-        <enum name="confirm" value="0" />
-        <enum name="normal" value="1" />
-    </attr>
-
     <attr name="stroke_width" format="dimension" />
     <attr name="font_weight" format="enum">
         <enum name="regular" value="400"/>

+ 22 - 3
module/setting/src/main/java/com/adealink/weparty/setting/SettingActivity.kt

@@ -11,6 +11,7 @@ import com.adealink.frame.router.annotation.RouterUri
 import com.adealink.frame.util.onClick
 import com.adealink.frame.util.statusBarHeight
 import com.adealink.weparty.commonui.BaseActivity
+import com.adealink.weparty.commonui.toast.util.showToast
 import com.adealink.weparty.commonui.widget.CommonDialog
 import com.adealink.weparty.module.account.AccountModule
 import com.adealink.weparty.module.setting.Setting
@@ -61,7 +62,17 @@ class SettingActivity : BaseActivity() {
     }
 
     private fun clearCache() {
-
+        CommonDialog.Builder()
+            .title(getCompatString(R.string.setting_clear_cache_confirm_title))
+            .message(getCompatString(R.string.setting_clear_cache_confirm_desc))
+            .showTopClosetButton(false)
+            .canceledOnTouchOutside(true)
+            .cancelable(true)
+            .setShowDefaultCancel(true)
+            .onPositive {
+                showToast(getCompatString(APP_R.string.common_success))
+            }
+            .show(supportFragmentManager, "ClearCache")
     }
 
     private fun clickAbout() {
@@ -69,8 +80,16 @@ class SettingActivity : BaseActivity() {
     }
 
     private fun clickLogout() {
-        CommonDialog
-        AccountModule.logout(true)
+        CommonDialog.Builder()
+            .title(getCompatString(R.string.setting_logout_confirm_title))
+            .showTopClosetButton(false)
+            .canceledOnTouchOutside(true)
+            .cancelable(true)
+            .setShowDefaultCancel(true)
+            .onPositive {
+                AccountModule.logout(true)
+            }
+            .show(supportFragmentManager, "Logout")
     }
 
 }

+ 4 - 0
module/setting/src/main/res/values/strings.xml

@@ -14,4 +14,8 @@
     <string name="setting_help_input_desc">Please enter</string>
     <string name="setting_help_picture_title">Picture proof (up to 9 images)</string>
     <string name="setting_help_picture_desc">Upload a picture to display your evidence</string>
+    <string name="setting_clear_cache_confirm_title">清理缓存</string>
+    <string name="setting_clear_cache_confirm_desc">清理缓存提示词</string>
+    <string name="setting_logout_confirm_title">是否退出登录?</string>
+
 </resources>