desc:app compose
| @ -0,0 +1 @@ | ||||
| /build | ||||
| @ -0,0 +1,39 @@ | ||||
| apply from: "${rootProject.rootDir}/buildCommon/commonLibConfig.gradle" | ||||
| project.ext.setAppDefaultConfig project | ||||
| 
 | ||||
| android { | ||||
|     namespace 'com.yinuo.safetywatcher' | ||||
| 
 | ||||
|     defaultConfig { | ||||
|         applicationId "com.yinuo.safetywatcher" | ||||
|         vectorDrawables { | ||||
|             useSupportLibrary true | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     buildFeatures { | ||||
|         compose true | ||||
|     } | ||||
|     composeOptions { | ||||
|         kotlinCompilerExtensionVersion '1.3.2' | ||||
|     } | ||||
|     packagingOptions { | ||||
|         resources { | ||||
|             excludes += '/META-INF/{AL2.0,LGPL2.1}' | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| dependencies { | ||||
|     implementation 'androidx.core:core-ktx:1.8.0' | ||||
|     implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' | ||||
|     implementation 'androidx.lifecycle:lifecycle-viewmodel-compose:2.5.1' | ||||
|     implementation platform('androidx.compose:compose-bom:2022.10.00') | ||||
|     implementation 'androidx.activity:activity-compose:1.5.1' | ||||
|     implementation 'androidx.compose.ui:ui' | ||||
|     implementation 'androidx.compose.ui:ui-graphics' | ||||
|     implementation 'androidx.compose.ui:ui-tooling-preview' | ||||
|     implementation 'androidx.compose.material3:material3' | ||||
|     implementation 'androidx.navigation:navigation-runtime-ktx:2.5.2' | ||||
|     implementation "androidx.navigation:navigation-compose:2.4.0-rc01" | ||||
| } | ||||
| @ -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 | ||||
| @ -0,0 +1,24 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <manifest xmlns:android="http://schemas.android.com/apk/res/android"> | ||||
| 
 | ||||
|     <application | ||||
|         android:allowBackup="true" | ||||
|         android:icon="@mipmap/ic_launcher" | ||||
|         android:label="@string/app_name" | ||||
|         android:roundIcon="@mipmap/ic_launcher_round" | ||||
|         android:supportsRtl="true" | ||||
|         android:theme="@style/Theme.Easypusher"> | ||||
|         <activity | ||||
|             android:name=".MainActivity" | ||||
|             android:exported="true" | ||||
|             android:label="@string/app_name" | ||||
|             android:theme="@style/Theme.Easypusher"> | ||||
|             <intent-filter> | ||||
|                 <action android:name="android.intent.action.MAIN" /> | ||||
| 
 | ||||
|                 <category android:name="android.intent.category.LAUNCHER" /> | ||||
|             </intent-filter> | ||||
|         </activity> | ||||
|     </application> | ||||
| 
 | ||||
| </manifest> | ||||
| @ -0,0 +1,61 @@ | ||||
| package com.yinuo.safetywatcher | ||||
| 
 | ||||
| import android.os.Bundle | ||||
| import android.widget.Toast | ||||
| import androidx.activity.ComponentActivity | ||||
| import androidx.activity.OnBackPressedCallback | ||||
| import androidx.activity.compose.setContent | ||||
| import androidx.compose.foundation.layout.fillMaxSize | ||||
| import androidx.compose.material3.MaterialTheme | ||||
| import androidx.compose.material3.Surface | ||||
| import androidx.compose.ui.Modifier | ||||
| import androidx.lifecycle.viewmodel.compose.viewModel | ||||
| import androidx.navigation.compose.rememberNavController | ||||
| import com.yinuo.safetywatcher.navi.NavigationUtil | ||||
| import com.yinuo.safetywatcher.navi.NavigationView | ||||
| import com.yinuo.safetywatcher.ui.SplashView | ||||
| import com.yinuo.safetywatcher.ui.theme.EasypusherTheme | ||||
| 
 | ||||
| class MainActivity : ComponentActivity() { | ||||
|     var exitTime = 0L | ||||
| 
 | ||||
|     override fun onCreate(savedInstanceState: Bundle?) { | ||||
|         super.onCreate(savedInstanceState) | ||||
|         setContent { | ||||
|             EasypusherTheme { | ||||
|                 // A surface container using the 'background' color from the theme | ||||
|                 Surface( | ||||
|                     modifier = Modifier.fillMaxSize(), | ||||
|                     color = MaterialTheme.colorScheme.background | ||||
|                 ) { | ||||
|                     val viewModel: MainViewModel = viewModel() | ||||
|                     if (viewModel.isSplash) { | ||||
|                         SplashView { viewModel.isSplash = false } | ||||
|                     } else { | ||||
|                         NavigationUtil.navHostController = rememberNavController() | ||||
|                         NavigationView() | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         addBackListener() | ||||
|     } | ||||
| 
 | ||||
|     private fun addBackListener() { | ||||
|         onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true) { | ||||
|             override fun handleOnBackPressed() { | ||||
|                 if (NavigationUtil.backAndReturnsIsLastPage()) { | ||||
|                     //是主页 | ||||
|                     if (System.currentTimeMillis() - exitTime > 2000) { | ||||
|                         Toast.makeText(this@MainActivity, "再点一次退出!", Toast.LENGTH_SHORT) | ||||
|                             .show() | ||||
|                         exitTime = System.currentTimeMillis() | ||||
|                     } else { | ||||
|                         finish() | ||||
|                         overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out) | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         }) | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,10 @@ | ||||
| package com.yinuo.safetywatcher | ||||
| 
 | ||||
| import androidx.compose.runtime.getValue | ||||
| import androidx.compose.runtime.mutableStateOf | ||||
| import androidx.compose.runtime.setValue | ||||
| import androidx.lifecycle.ViewModel | ||||
| 
 | ||||
| class MainViewModel: ViewModel() { | ||||
|     var isSplash by mutableStateOf(true) | ||||
| } | ||||
| @ -0,0 +1,10 @@ | ||||
| package com.yinuo.safetywatcher.navi | ||||
| 
 | ||||
| /** | ||||
|  * @Description: todo | ||||
|  * @CreateDate: 2022/1/5  9:42 | ||||
|  */ | ||||
| sealed class ModelPath(val route: String) { | ||||
|     object Home : ModelPath("home") | ||||
|     object Setting : ModelPath("setting") | ||||
| } | ||||
| @ -0,0 +1,31 @@ | ||||
| package com.yinuo.safetywatcher.navi | ||||
| 
 | ||||
| import androidx.compose.animation.core.tween | ||||
| import androidx.compose.animation.fadeIn | ||||
| import androidx.compose.animation.fadeOut | ||||
| import androidx.compose.foundation.background | ||||
| import androidx.compose.foundation.layout.fillMaxSize | ||||
| import androidx.compose.foundation.layout.navigationBarsPadding | ||||
| import androidx.compose.runtime.Composable | ||||
| import androidx.compose.ui.Modifier | ||||
| import androidx.navigation.compose.NavHost | ||||
| import androidx.navigation.compose.composable | ||||
| import com.yinuo.safetywatcher.ui.home.HomeView | ||||
| import com.yinuo.safetywatcher.ui.setting.SettingView | ||||
| 
 | ||||
| /** | ||||
|  * @Description: todo | ||||
|  * @CreateDate: 2022/2/22  19:31 | ||||
|  */ | ||||
| @Composable | ||||
| fun NavigationView() { | ||||
|     NavHost(navController = NavigationUtil.navHostController, | ||||
|         startDestination = ModelPath.Home.route) { | ||||
|         composable(ModelPath.Home.route) { | ||||
|             HomeView() | ||||
|         } | ||||
|         composable(ModelPath.Setting.route) { | ||||
|             SettingView(Modifier.fillMaxSize()) | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,55 @@ | ||||
| package com.yinuo.safetywatcher.ui | ||||
| 
 | ||||
| import androidx.compose.animation.animateColorAsState | ||||
| import androidx.compose.animation.core.tween | ||||
| import androidx.compose.foundation.background | ||||
| import androidx.compose.foundation.layout.Box | ||||
| import androidx.compose.foundation.layout.fillMaxSize | ||||
| import androidx.compose.material3.MaterialTheme | ||||
| import androidx.compose.material3.Text | ||||
| import androidx.compose.runtime.* | ||||
| import androidx.compose.ui.Alignment | ||||
| import androidx.compose.ui.Modifier | ||||
| import androidx.compose.ui.graphics.Color | ||||
| import kotlinx.coroutines.delay | ||||
| 
 | ||||
| /** | ||||
|  * @Description: todo | ||||
|  * @Author: yshh | ||||
|  * @CreateDate: 2022/2/22  14:19 | ||||
|  */ | ||||
| 
 | ||||
| @Composable | ||||
| fun SplashView(startMain: () -> Unit) { | ||||
|     var enabled by remember { mutableStateOf(false) } | ||||
|     val bgColor: Color by animateColorAsState( | ||||
|         if (enabled) MaterialTheme.colorScheme.primary | ||||
|         else MaterialTheme.colorScheme.primary.copy(alpha = 0.3f), | ||||
|         animationSpec = tween(durationMillis = 2000) | ||||
|     ) | ||||
|     val textColor: Color by animateColorAsState( | ||||
|         if (enabled) Color.White | ||||
|         else Color.White.copy(alpha = 0.3f), | ||||
|         animationSpec = tween(durationMillis = 2000) | ||||
|     ) | ||||
|     Box( | ||||
|         Modifier | ||||
|             .fillMaxSize() | ||||
|             .background(Color.White) | ||||
|     ) { | ||||
|         Box( | ||||
|             Modifier | ||||
|                 .fillMaxSize() | ||||
|                 .background(bgColor), | ||||
|             contentAlignment = Alignment.Center | ||||
|         ) { | ||||
|             Text(text = "Safety Watcher", color = textColor) | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
|     LaunchedEffect(Unit) { | ||||
|         enabled = true | ||||
|         delay(2000) | ||||
|         startMain.invoke() | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,21 @@ | ||||
| package com.yinuo.safetywatcher.ui.home | ||||
| 
 | ||||
| import androidx.compose.foundation.layout.Column | ||||
| import androidx.compose.foundation.layout.fillMaxSize | ||||
| import androidx.compose.material3.Button | ||||
| import androidx.compose.material3.Text | ||||
| import androidx.compose.runtime.Composable | ||||
| import androidx.compose.ui.Modifier | ||||
| import com.yinuo.safetywatcher.navi.ModelPath | ||||
| import com.yinuo.safetywatcher.navi.NavigationUtil | ||||
| 
 | ||||
| @Composable | ||||
| fun HomeView() { | ||||
|     Column(modifier = Modifier.fillMaxSize()) { | ||||
|         Text(text = "Home") | ||||
| 
 | ||||
|         Button(onClick = { NavigationUtil.to(ModelPath.Setting) }) { | ||||
|             Text(text = "设置") | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,13 @@ | ||||
| package com.yinuo.safetywatcher.ui.setting | ||||
| 
 | ||||
| import androidx.compose.foundation.layout.Box | ||||
| import androidx.compose.material3.Text | ||||
| import androidx.compose.runtime.Composable | ||||
| import androidx.compose.ui.Modifier | ||||
| 
 | ||||
| @Composable | ||||
| fun SettingView(modifier: Modifier = Modifier) { | ||||
|     Box(modifier = modifier){ | ||||
|         Text(text = "这是设置页面") | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,11 @@ | ||||
| package com.yinuo.safetywatcher.ui.theme | ||||
| 
 | ||||
| import androidx.compose.ui.graphics.Color | ||||
| 
 | ||||
| val Purple80 = Color(0xFFD0BCFF) | ||||
| val PurpleGrey80 = Color(0xFFCCC2DC) | ||||
| val Pink80 = Color(0xFFEFB8C8) | ||||
| 
 | ||||
| val Purple40 = Color(0xFF6650a4) | ||||
| val PurpleGrey40 = Color(0xFF625b71) | ||||
| val Pink40 = Color(0xFF7D5260) | ||||
| @ -0,0 +1,24 @@ | ||||
| package com.yinuo.safetywatcher.ui.theme | ||||
| 
 | ||||
| import androidx.compose.material3.MaterialTheme | ||||
| import androidx.compose.material3.lightColorScheme | ||||
| import androidx.compose.runtime.Composable | ||||
| 
 | ||||
| 
 | ||||
| private val LightColorScheme = lightColorScheme( | ||||
|     primary = Purple40, | ||||
|     secondary = PurpleGrey40, | ||||
|     tertiary = Pink40 | ||||
| ) | ||||
| 
 | ||||
| @Composable | ||||
| fun EasypusherTheme( | ||||
|     content: @Composable () -> Unit | ||||
| ) { | ||||
|     val colorScheme = LightColorScheme | ||||
|     MaterialTheme( | ||||
|         colorScheme = colorScheme, | ||||
|         typography = Typography, | ||||
|         content = content | ||||
|     ) | ||||
| } | ||||
| @ -0,0 +1,34 @@ | ||||
| package com.yinuo.safetywatcher.ui.theme | ||||
| 
 | ||||
| import androidx.compose.material3.Typography | ||||
| import androidx.compose.ui.text.TextStyle | ||||
| import androidx.compose.ui.text.font.FontFamily | ||||
| import androidx.compose.ui.text.font.FontWeight | ||||
| import androidx.compose.ui.unit.sp | ||||
| 
 | ||||
| // Set of Material typography styles to start with | ||||
| val Typography = Typography( | ||||
|     bodyLarge = TextStyle( | ||||
|         fontFamily = FontFamily.Default, | ||||
|         fontWeight = FontWeight.Normal, | ||||
|         fontSize = 16.sp, | ||||
|         lineHeight = 24.sp, | ||||
|         letterSpacing = 0.5.sp | ||||
|     ) | ||||
|     /* Other default text styles to override | ||||
|     titleLarge = TextStyle( | ||||
|         fontFamily = FontFamily.Default, | ||||
|         fontWeight = FontWeight.Normal, | ||||
|         fontSize = 22.sp, | ||||
|         lineHeight = 28.sp, | ||||
|         letterSpacing = 0.sp | ||||
|     ), | ||||
|     labelSmall = TextStyle( | ||||
|         fontFamily = FontFamily.Default, | ||||
|         fontWeight = FontWeight.Medium, | ||||
|         fontSize = 11.sp, | ||||
|         lineHeight = 16.sp, | ||||
|         letterSpacing = 0.5.sp | ||||
|     ) | ||||
|     */ | ||||
| ) | ||||
| @ -0,0 +1,30 @@ | ||||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:aapt="http://schemas.android.com/aapt" | ||||
|     android:width="108dp" | ||||
|     android:height="108dp" | ||||
|     android:viewportWidth="108" | ||||
|     android:viewportHeight="108"> | ||||
|     <path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z"> | ||||
|         <aapt:attr name="android:fillColor"> | ||||
|             <gradient | ||||
|                 android:endX="85.84757" | ||||
|                 android:endY="92.4963" | ||||
|                 android:startX="42.9492" | ||||
|                 android:startY="49.59793" | ||||
|                 android:type="linear"> | ||||
|                 <item | ||||
|                     android:color="#44000000" | ||||
|                     android:offset="0.0" /> | ||||
|                 <item | ||||
|                     android:color="#00000000" | ||||
|                     android:offset="1.0" /> | ||||
|             </gradient> | ||||
|         </aapt:attr> | ||||
|     </path> | ||||
|     <path | ||||
|         android:fillColor="#FFFFFF" | ||||
|         android:fillType="nonZero" | ||||
|         android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z" | ||||
|         android:strokeWidth="1" | ||||
|         android:strokeColor="#00000000" /> | ||||
| </vector> | ||||
| @ -0,0 +1,170 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     android:width="108dp" | ||||
|     android:height="108dp" | ||||
|     android:viewportWidth="108" | ||||
|     android:viewportHeight="108"> | ||||
|     <path | ||||
|         android:fillColor="#3DDC84" | ||||
|         android:pathData="M0,0h108v108h-108z" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M9,0L9,108" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M19,0L19,108" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M29,0L29,108" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M39,0L39,108" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M49,0L49,108" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M59,0L59,108" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M69,0L69,108" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M79,0L79,108" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M89,0L89,108" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M99,0L99,108" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M0,9L108,9" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M0,19L108,19" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M0,29L108,29" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M0,39L108,39" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M0,49L108,49" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M0,59L108,59" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M0,69L108,69" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M0,79L108,79" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M0,89L108,89" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M0,99L108,99" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M19,29L89,29" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M19,39L89,39" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M19,49L89,49" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M19,59L89,59" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M19,69L89,69" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M19,79L89,79" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M29,19L29,89" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M39,19L39,89" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M49,19L49,89" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M59,19L59,89" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M69,19L69,89" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
|     <path | ||||
|         android:fillColor="#00000000" | ||||
|         android:pathData="M79,19L79,89" | ||||
|         android:strokeWidth="0.8" | ||||
|         android:strokeColor="#33FFFFFF" /> | ||||
| </vector> | ||||
| @ -0,0 +1,6 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> | ||||
|     <background android:drawable="@drawable/ic_launcher_background" /> | ||||
|     <foreground android:drawable="@drawable/ic_launcher_foreground" /> | ||||
|     <monochrome android:drawable="@drawable/ic_launcher_foreground" /> | ||||
| </adaptive-icon> | ||||
| @ -0,0 +1,6 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> | ||||
|     <background android:drawable="@drawable/ic_launcher_background" /> | ||||
|     <foreground android:drawable="@drawable/ic_launcher_foreground" /> | ||||
|     <monochrome android:drawable="@drawable/ic_launcher_foreground" /> | ||||
| </adaptive-icon> | ||||
| After Width: | Height: | Size: 1.4 KiB | 
| After Width: | Height: | Size: 2.8 KiB | 
| After Width: | Height: | Size: 982 B | 
| After Width: | Height: | Size: 1.7 KiB | 
| After Width: | Height: | Size: 1.9 KiB | 
| After Width: | Height: | Size: 3.8 KiB | 
| After Width: | Height: | Size: 2.8 KiB | 
| After Width: | Height: | Size: 5.8 KiB | 
| After Width: | Height: | Size: 3.8 KiB | 
| After Width: | Height: | Size: 7.6 KiB | 
| @ -0,0 +1,10 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <resources> | ||||
|     <color name="purple_200">#FFBB86FC</color> | ||||
|     <color name="purple_500">#FF6200EE</color> | ||||
|     <color name="purple_700">#FF3700B3</color> | ||||
|     <color name="teal_200">#FF03DAC5</color> | ||||
|     <color name="teal_700">#FF018786</color> | ||||
|     <color name="black">#FF000000</color> | ||||
|     <color name="white">#FFFFFFFF</color> | ||||
| </resources> | ||||
| @ -0,0 +1,3 @@ | ||||
| <resources> | ||||
|     <string name="app_name">app-compose</string> | ||||
| </resources> | ||||
| @ -0,0 +1,5 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <resources> | ||||
| 
 | ||||
|     <style name="Theme.Easypusher" parent="android:Theme.Material.Light.NoActionBar" /> | ||||
| </resources> | ||||
| @ -1,4 +1,5 @@ | ||||
| include ':app' //, ':libuvccamera-release' | ||||
| include ':app-compose' | ||||
| include ':library-push' | ||||
| include ':library-ijkplayer' | ||||
| include ':library-serialPort' | ||||
|  | ||||