feat : gradle ,modules

This commit is contained in:
eggmanQQQ2
2025-07-07 10:47:19 +08:00
parent 8bd00eae6a
commit b93fb7d318
83 changed files with 793 additions and 0 deletions

BIN
gradle/wrapper/gradle-wrapper.jar vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1,6 @@
#Thu Aug 09 10:54:29 CST 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip

View File

@@ -0,0 +1,53 @@
/*
* 文件说明module的基础配置
*/
apply plugin: "com.android.library"
apply plugin: "org.jetbrains.kotlin.android"
apply plugin: "kotlin-android"
apply plugin: "kotlin-kapt"
apply plugin: "com.alibaba.arouter"
android {
compileSdkVersion COMPILE_SDK_VERSION.toInteger()
defaultConfig {
minSdkVersion MIN_SDK_VERSION.toInteger()
targetSdkVersion TARGET_SDK_VERSION.toInteger()
versionCode 1
versionName "1.0.0"
consumerProguardFiles 'proguard-rules.pro'
}
buildTypes {
release {
minifyEnabled true
zipAlignEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
debuggable true
minifyEnabled false
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = '11'
}
}
dependencies {
implementation 'com.google.android.material:material:1.6.1'
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
// aRouter
api 'com.alibaba:arouter-api:1.4.0'
api 'com.alibaba:arouter-annotation:1.0.6'
kapt 'com.alibaba:arouter-compiler:1.5.2'
}

1
modules/module_base/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/build

View File

@@ -0,0 +1,11 @@
apply from: "../module_base.gradle"
android {
namespace 'com.example.module_base'
}
kapt {
arguments {
arg("AROUTER_MODULE_NAME", project.getName())
}
}

View File

21
modules/module_base/proguard-rules.pro vendored Normal file
View File

@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
</manifest>

View File

@@ -0,0 +1,9 @@
package com.example.module_base.config
/**
* Created by Max on 2023/11/22 16:01
* Desc:
**/
object RouterPath {
const val GOOGLE_SERVICE = "/google/service"
}

View File

@@ -0,0 +1,12 @@
package com.example.module_base.support.billing
/**
* Created by Max on 2023/11/22 20:55
* Desc:
**/
interface IAccountIdentifiers {
fun getObfuscatedAccountId(): String?
fun getObfuscatedProfileId(): String?
}

View File

@@ -0,0 +1,12 @@
package com.example.module_base.support.billing
/**
* Created by Max on 2023/11/22 20:20
* Desc:
**/
interface IBillingResult {
fun getResponseCode(): Int
fun isResponseOk(): Boolean
}

View File

@@ -0,0 +1,34 @@
package com.example.module_base.support.billing
/**
* Created by Max on 2023/11/22 17:44
* Desc:支付
**/
@Deprecated("逐步迁移到IBillingService2")
interface IBillingService {
fun setLogEnabled(enabled: Boolean)
fun isServiceConnected(): Boolean
fun onQueryPurchases()
fun querySkuDetailsAsync(
productIdList: List<String>,
listener: IBillingService.ProductDetailsResponseListener
)
fun consumeAsync(purchaseToken: String)
fun initiatePurchaseFlow(productDetails: IProductDetails, recordId: String)
fun destroy()
interface Listener {
fun onBillingClientSetupFinished()
fun onPurchasesUpdated(purchases: List<IPurchase>)
fun onConsumeFinished(token: String?, result: Int)
fun onFailedHandle(result: Int)
}
interface ProductDetailsResponseListener : OnProductDetailsResponseListener
}

View File

@@ -0,0 +1,31 @@
package com.example.module_base.support.billing
/**
* Created by Max on 2023/11/22 17:44
* Desc:支付
**/
interface IBillingService2 {
fun setLogEnabled(enabled: Boolean)
fun startConnection(listener: OnBillingClientStateListener)
fun isServiceConnected(): Boolean
fun queryPurchases(listener: OnPurchasesResponseListener)
fun querySkuDetailsAsync(
productIdList: List<String>,
listener: OnProductDetailsResponseListener
)
fun consumeAsync(purchaseToken: String, listener: OnConsumeResponseListener)
fun launchBillingFlow(productDetails: IProductDetails, recordId: String)
fun destroy()
interface Listener {
fun onPurchasesUpdated(billingResult: IBillingResult, purchases: List<IPurchase>?)
}
}

View File

@@ -0,0 +1,13 @@
package com.example.module_base.support.billing
/**
* Created by Max on 2023/11/22 21:06
* Desc:
**/
interface IOneTimePurchaseOfferDetails {
fun getPriceAmountMicros(): Long
fun getFormattedPrice(): String
fun getPriceCurrencyCode(): String
}

View File

@@ -0,0 +1,14 @@
package com.example.module_base.support.billing
/**
* Created by Max on 2023/11/22 20:17
* Desc:
**/
interface IProductDetails {
fun getData(): Any
fun getProductId(): String
fun getOneTimePurchaseOfferDetails(): IOneTimePurchaseOfferDetails?
}

View File

@@ -0,0 +1,23 @@
package com.example.module_base.support.billing
/**
* Created by Max on 2023/11/22 19:22
* Desc:
**/
interface IPurchase {
fun getData(): Any
fun getPurchaseState(): Int
fun isPurchasedState(): Boolean
fun getAccountIdentifiers(): IAccountIdentifiers?
fun getProducts(): List<String>
fun getPackageName(): String
fun getPurchaseToken(): String
fun getOrderId(): String?
}

View File

@@ -0,0 +1,5 @@
package com.example.module_base.support.billing
interface OnBillingClientStateListener {
fun onBillingSetupFinished(billingResult: IBillingResult)
}

View File

@@ -0,0 +1,8 @@
package com.example.module_base.support.billing
interface OnConsumeResponseListener {
fun onConsumeResponse(
billingResult: IBillingResult,
purchaseToken: String
)
}

View File

@@ -0,0 +1,8 @@
package com.example.module_base.support.billing
interface OnProductDetailsResponseListener {
fun onProductDetailsResponse(
billingResult: IBillingResult,
productDetails: List<IProductDetails>
)
}

View File

@@ -0,0 +1,5 @@
package com.example.module_base.support.billing
interface OnPurchasesResponseListener {
fun onQueryPurchasesResponse(billingResult: IBillingResult, purchases: List<IPurchase>)
}

View File

@@ -0,0 +1,50 @@
package com.example.module_base.support.google
import android.app.Activity
import com.alibaba.android.arouter.facade.template.IProvider
import com.alibaba.android.arouter.launcher.ARouter
import com.example.module_base.support.billing.IBillingService
import com.example.module_base.support.billing.IBillingService2
import com.example.module_base.support.login.ILoginService
/**
* Created by Max on 2023/11/22 15:30
* Desc:google服务
**/
interface IGoogleService : IProvider {
companion object {
val instance: IGoogleService? by lazy {
ARouter.getInstance().navigation(IGoogleService::class.java)
}
fun newLoginService(): ILoginService? {
return instance?.newLoginService()
}
fun newBillingService(
activity: Activity,
listener: IBillingService.Listener
): IBillingService? {
return instance?.newBillingService(activity, listener)
}
fun newBillingService2(
activity: Activity,
listener: IBillingService2.Listener
): IBillingService2? {
return instance?.newBillingService2(activity, listener)
}
}
fun newLoginService(): ILoginService
fun newBillingService(
activity: Activity,
listener: IBillingService.Listener
): IBillingService
fun newBillingService2(
activity: Activity,
listener: IBillingService2.Listener
): IBillingService2
}

View File

@@ -0,0 +1,22 @@
package com.example.module_base.support.login
import android.app.Activity
import android.content.Intent
/**
* Created by Max on 2023/11/22 15:52
* Desc:登录服务
**/
interface ILoginService {
fun login(activity: Activity, listener: Listener)
fun logout()
fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)
interface Listener {
fun onSuccess(platformInfo: PlatformInfo)
fun onFailure(exception: LoginSDKException)
}
}

View File

@@ -0,0 +1,21 @@
package com.example.module_base.support.login
/**
* Created by Max on 2023/11/22 17:06
* Desc:登录SDK-异常
**/
class LoginSDKException : Exception {
private var code: Int = -1
fun getCode(): Int {
return code
}
constructor(code: Int) : super() {
this.code = code
}
constructor(code: Int, cause: Throwable?) : super(cause) {
this.code = code
}
}

View File

@@ -0,0 +1,8 @@
package com.example.module_base.support.login
/**
* Created by Max on 2023/11/22 15:45
* Desc:第三方平台信息
**/
data class PlatformInfo(val id: String, var name: String?, var gender: Int?, var avatar: String?) {
}

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#FFFFFF" android:state_pressed="true" />
<item android:color="#FFFFFF" android:state_focused="true" />
<item android:color="#FFFFFF" android:state_enabled="true" />
<item android:color="#FFFFFF" android:state_enabled="false" />
</selector>

View File

@@ -0,0 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:width="18dp"
android:height="18dp"
android:viewportWidth="18"
android:viewportHeight="18">
<path
android:pathData="M6.97,14.834C6.677,14.541 6.677,14.066 6.97,13.773L11.742,9.001L6.97,4.227C6.677,3.934 6.677,3.459 6.97,3.166C7.263,2.873 7.737,2.873 8.03,3.166L13.334,8.47L13.334,8.47C13.627,8.763 13.627,9.237 13.334,9.53L8.03,14.834C7.737,15.127 7.263,15.127 6.97,14.834Z"
android:strokeWidth="0.2"
android:fillColor="#1E1E1F"
android:strokeColor="#1E1E1F"
android:fillType="evenOdd"/>
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="9dp"
android:height="9dp"
android:viewportWidth="9"
android:viewportHeight="9">
<path
android:pathData="M2.5158,7.0939L6.5158,3.7124L7,4.2851L6.524,4.8647L2.524,1.5796L3.476,0.4204L7.476,3.7055Q7.5287,3.7488 7.5728,3.8009Q7.6205,3.8573 7.6562,3.922Q7.692,3.9866 7.7144,4.057Q7.7369,4.1273 7.7452,4.2007Q7.7536,4.2741 7.7474,4.3477Q7.7412,4.4213 7.7208,4.4923Q7.7004,4.5633 7.6665,4.629Q7.6327,4.6946 7.5866,4.7524Q7.5406,4.8102 7.4842,4.8579L3.4842,8.2394L2.5158,7.0939ZM3.75,7.6667Q3.75,7.7405 3.7356,7.813Q3.7212,7.8854 3.6929,7.9537Q3.6646,8.0219 3.6236,8.0833Q3.5826,8.1448 3.5303,8.197Q3.4781,8.2492 3.4167,8.2903Q3.3553,8.3313 3.287,8.3596Q3.2188,8.3878 3.1463,8.4023Q3.0739,8.4167 3,8.4167Q2.9261,8.4167 2.8537,8.4023Q2.7812,8.3878 2.713,8.3596Q2.6447,8.3313 2.5833,8.2903Q2.5219,8.2492 2.4697,8.197Q2.4174,8.1448 2.3764,8.0833Q2.3354,8.0219 2.3071,7.9537Q2.2788,7.8854 2.2644,7.813Q2.25,7.7405 2.25,7.6667Q2.25,7.5928 2.2644,7.5203Q2.2788,7.4479 2.3071,7.3797Q2.3354,7.3114 2.3764,7.25Q2.4174,7.1886 2.4697,7.1363Q2.5219,7.0841 2.5833,7.0431Q2.6447,7.002 2.713,6.9738Q2.7812,6.9455 2.8537,6.9311Q2.9261,6.9167 3,6.9167Q3.0739,6.9167 3.1463,6.9311Q3.2188,6.9455 3.287,6.9738Q3.3553,7.002 3.4167,7.0431Q3.4781,7.0841 3.5303,7.1363Q3.5826,7.1886 3.6236,7.25Q3.6646,7.3114 3.6929,7.3797Q3.7212,7.4479 3.7356,7.5203Q3.75,7.5928 3.75,7.6667ZM3.75,1Q3.75,1.0739 3.7356,1.1463Q3.7212,1.2188 3.6929,1.287Q3.6646,1.3553 3.6236,1.4167Q3.5826,1.4781 3.5303,1.5303Q3.4781,1.5826 3.4167,1.6236Q3.3553,1.6646 3.287,1.6929Q3.2188,1.7212 3.1463,1.7356Q3.0739,1.75 3,1.75Q2.9261,1.75 2.8537,1.7356Q2.7812,1.7212 2.713,1.6929Q2.6447,1.6646 2.5833,1.6236Q2.5219,1.5826 2.4697,1.5303Q2.4174,1.4781 2.3764,1.4167Q2.3354,1.3553 2.3071,1.287Q2.2788,1.2188 2.2644,1.1463Q2.25,1.0739 2.25,1Q2.25,0.9261 2.2644,0.8537Q2.2788,0.7812 2.3071,0.713Q2.3354,0.6447 2.3764,0.5833Q2.4174,0.5219 2.4697,0.4697Q2.5219,0.4174 2.5833,0.3764Q2.6447,0.3354 2.713,0.3071Q2.7812,0.2788 2.8537,0.2644Q2.9261,0.25 3,0.25Q3.0739,0.25 3.1463,0.2644Q3.2188,0.2788 3.287,0.3071Q3.3553,0.3354 3.4167,0.3764Q3.4781,0.4174 3.5303,0.4697Q3.5826,0.5219 3.6236,0.5833Q3.6646,0.6447 3.6929,0.713Q3.7212,0.7812 3.7356,0.8537Q3.75,0.9261 3.75,1Z"
android:fillColor="#F1F1FA"/>
</vector>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#e29030"
android:endColor="#fcc074" />
<corners android:radius="25dp" />
</shape>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#4DE29030"
android:endColor="#4DFCC074" />
<corners android:radius="25dp" />
</shape>

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<gradient android:startColor="#E29030" android:endColor="#FCC074" />
<corners android:radius="30dp"/>
</shape>
</item>
<item android:state_focused="true">
<shape>
<gradient android:startColor="#E29030" android:endColor="#FCC074" />
<corners android:radius="30dp"/>
</shape>
</item>
<item android:state_enabled="true">
<shape>
<gradient android:startColor="#E29030" android:endColor="#FCC074" />
<corners android:radius="30dp"/>
</shape>
</item>
<item android:state_enabled="false">
<shape>
<gradient android:startColor="#80E29030" android:endColor="#80FCC074" />
<corners android:radius="30dp"/>
</shape>
</item>
</selector>

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#2D1E4D" />
<corners
android:bottomLeftRadius="0dp"
android:bottomRightRadius="0dp"
android:topLeftRadius="12dp"
android:topRightRadius="12dp" />
</shape>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#F7F7F7" />
<stroke
android:width="1dp"
android:color="#1E1E1F" />
<corners android:radius="8dp" />
</shape>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#ffffff" />
<stroke
android:width="1dp"
android:color="#1E1E1F" />
<corners android:radius="22dp" />
</shape>

View File

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

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#ffffff" />
<corners
android:topLeftRadius="16dp"
android:topRightRadius="16dp" />
</shape>

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#57E193" android:endColor="#14D2A6"/>
<corners android:radius="15dp" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#57E193" android:endColor="#14D2A6"/>
<corners android:radius="19dp" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#57E193" android:endColor="#14D2A6"/>
<corners android:radius="26dp" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#57E193" android:endColor="#14D2A6"/>
<corners android:radius="30dp" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#57E193" android:endColor="#14D2A6"/>
<corners android:radius="5dp" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#57E193" android:endColor="#14D2A6"/>
<corners android:radius="13dp" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#57E193" android:endColor="#14D2A6"/>
<corners android:radius="15dp" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#57E193" android:endColor="#14D2A6"/>
<corners android:radius="19dp" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#57E193" android:endColor="#14D2A6"/>
<corners android:radius="20dp" />
</shape>

View File

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

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#57E193" android:endColor="#14D2A6"/>
<corners android:radius="24dp" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#57E193" android:endColor="#14D2A6"/>
<corners android:radius="26dp" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#57E193" android:endColor="#14D2A6"/>
<corners android:radius="30dp" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#57E193" android:endColor="#14D2A6"/>
<corners android:radius="8dp" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#A5EEC8" android:endColor="#ABF5E3"/>
<corners android:radius="24dp" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#A5EEC8" android:endColor="#ABF5E3"/>
<corners android:radius="26dp" />
</shape>

View File

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

View File

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

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!--主题色-->
<color name="base_color_theme">#718CFF</color>
<!--主题色对应的文本色-->
<color name="base_color_theme_text">#FFFFFF</color>
<!--正面按钮-文本色-->
<color name="base_color_positive_text">#FFFFFF</color>
<!--负面按钮-文本色-->
<color name="base_color_negative_text">#FFFFFF</color>
<!--负面按钮-背景色-->
<color name="base_color_positive_bg">#D2D4D6</color>
</resources>