commit c480ac9cd46be910dd11600e625fdc8671f51408 Author: yuqian Date: Mon Jan 5 15:10:12 2026 +0800 接入top on diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/AndroidProjectSystem.xml b/.idea/AndroidProjectSystem.xml new file mode 100644 index 0000000..4a53bee --- /dev/null +++ b/.idea/AndroidProjectSystem.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..b86273d --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml new file mode 100644 index 0000000..b268ef3 --- /dev/null +++ b/.idea/deploymentTargetSelector.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..639c779 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/migrations.xml b/.idea/migrations.xml new file mode 100644 index 0000000..f8051a6 --- /dev/null +++ b/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..b2c751a --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..16660f1 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/Sweet Drawing b/app/Sweet Drawing new file mode 100644 index 0000000..e335655 Binary files /dev/null and b/app/Sweet Drawing differ diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 0000000..ef66d5e --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,168 @@ + +import java.util.Date +import java.text.SimpleDateFormat +plugins { + id("com.android.application") + id ("org.jetbrains.kotlin.android") + id("com.google.gms.google-services") + id("com.google.firebase.crashlytics") +} +val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date()) +android { + namespace = "com.paint.sweet.drawing" + compileSdk = 36 + buildFeatures { + dataBinding = true + } + defaultConfig { + //com.paint.sweet.drawing + applicationId = "com.paint.sweet.drawing" + minSdk = 24 + targetSdk = 36 + versionCode = 2 + versionName = "2.0" + setProperty("archivesBaseName", "Sweet Drawing_V" + versionName + "(${versionCode})_$timestamp") + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + isMinifyEnabled = true + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = "1.8" + } + buildFeatures{ + viewBinding = true + } +} + +dependencies { + + implementation("androidx.appcompat:appcompat:1.7.1") + implementation("com.google.android.material:material:1.13.0") + implementation("androidx.constraintlayout:constraintlayout:2.1.4") + testImplementation("junit:junit:4.13.2") + androidTestImplementation("androidx.test.ext:junit:1.1.5") + androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") + + val camerax_version = "1.5.1" + implementation ("androidx.camera:camera-core:${camerax_version}") + implementation ("androidx.camera:camera-camera2:${camerax_version}") + implementation ("androidx.camera:camera-lifecycle:${camerax_version}") + implementation ("androidx.camera:camera-view:${camerax_version}") + implementation ("androidx.camera:camera-extensions:${camerax_version}") + implementation("com.google.android.material:material:1.9.0") + + + + //sdk + implementation(files("libs/TopOnLibrary_11_06_18_02-release.aar")) + implementation(files("libs/UpLoadLibrary_12_03_15_13-release.aar")) + //-----------------------------------------------TopOn(Mintegral、Pangle、UnitAds、Digital Turbine(Fyber)、Chartboost&Helium、Ironsource、Liftoff(Vungle)、Inmobi、Start.io、Bigo) + //TU (Necessary) + implementation("com.thinkup.sdk:core-tpn:6.5.36") + implementation("com.thinkup.sdk:nativead-tpn:6.5.36") + implementation("com.thinkup.sdk:banner-tpn:6.5.36") + implementation("com.thinkup.sdk:interstitial-tpn:6.5.36") + implementation("com.thinkup.sdk:rewardedvideo-tpn:6.5.36") + implementation("com.thinkup.sdk:splash-tpn:6.5.36") + + //Androidx (Necessary) + implementation("androidx.appcompat:appcompat:1.6.1") + implementation("androidx.browser:browser:1.4.0") + + //StartApp + implementation("com.thinkup.sdk:adapter-tpn-startapp:6.5.36") + implementation("com.startapp:inapp-sdk:5.2.4") + + //Vungle + implementation("com.thinkup.sdk:adapter-tpn-vungle:6.5.36") + implementation("com.vungle:vungle-ads:7.5.0") + implementation("com.google.android.gms:play-services-basement:18.1.0") + implementation("com.google.android.gms:play-services-ads-identifier:18.0.1") + + //UnityAds + implementation("com.thinkup.sdk:adapter-tpn-unityads:6.5.36") + implementation("com.unity3d.ads:unity-ads:4.16.1") + + //Ironsource + implementation("com.thinkup.sdk:adapter-tpn-ironsource:6.5.36") + implementation("com.ironsource.sdk:mediationsdk:8.10.0") + implementation("com.google.android.gms:play-services-appset:16.0.2") + implementation("com.google.android.gms:play-services-ads-identifier:18.0.1") + implementation("com.google.android.gms:play-services-basement:18.1.0") + + //Bigo + implementation("com.thinkup.sdk:adapter-tpn-bigo:6.5.36") + implementation("com.bigossp:bigo-ads:5.5.1") + + //Pangle + implementation("com.thinkup.sdk:adapter-tpn-pangle:6.5.36") + implementation("com.pangle.global:pag-sdk:7.6.0.2") + implementation("com.google.android.gms:play-services-ads-identifier:18.2.0") + + //Inmobi + implementation("com.thinkup.sdk:adapter-tpn-inmobi:6.5.36") + implementation("com.inmobi.monetization:inmobi-ads-kotlin:10.8.7") + + //TU Adx SDK(Necessary) + implementation("com.thinkup.sdk:adapter-tpn-sdm:6.5.36.4") + implementation("com.smartdigimkttech.sdk:smartdigimkttech-sdk:6.5.40") + + //Mintegral + implementation("com.thinkup.sdk:adapter-tpn-mintegral:6.5.36") + implementation("com.mbridge.msdk.oversea:mbridge_android_sdk:16.9.91") + implementation("androidx.recyclerview:recyclerview:1.1.0") + + //Chartboost + implementation("com.thinkup.sdk:adapter-tpn-chartboost:6.5.36") + implementation("com.chartboost:chartboost-sdk:9.8.3") + implementation("com.chartboost:chartboost-mediation-sdk:4.9.2") + implementation("com.chartboost:chartboost-mediation-adapter-chartboost:4.9.8.1.0") + implementation("com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0") + implementation("com.squareup.okhttp3:logging-interceptor:4.10.0") + implementation("com.squareup.okhttp3:okhttp:4.10.0") + implementation("com.squareup.retrofit2:converter-scalars:2.9.0") + implementation("com.squareup.retrofit2:retrofit:2.9.0") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1") + + //Fyber + implementation("com.thinkup.sdk:adapter-tpn-fyber:6.5.36") + implementation("com.fyber:marketplace-sdk:8.3.7") + implementation("com.google.android.gms:play-services-ads-identifier:18.0.1") + +//Tramini + implementation("com.thinkup.sdk:tramini-plugin-tpn:6.5.36") + // Debugger UI Tools + implementation("com.thinkup.sdk:debugger-ui:1.1.2") + + //firebase + implementation(platform("com.google.firebase:firebase-bom:33.7.0")) + implementation("com.google.firebase:firebase-crashlytics") + implementation("com.google.firebase:firebase-analytics") + implementation("com.google.firebase:firebase-config") + + //upload + implementation ("com.squareup.okhttp3:okhttp:4.12.0") + implementation("com.squareup.okhttp3:logging-interceptor:4.12.0") + + implementation ("com.google.android.gms:play-services-ads-identifier:18.0.1") + + + + + + + +} \ No newline at end of file diff --git a/app/debug/output-metadata.json b/app/debug/output-metadata.json new file mode 100644 index 0000000..0e6f587 --- /dev/null +++ b/app/debug/output-metadata.json @@ -0,0 +1,21 @@ +{ + "version": 3, + "artifactType": { + "type": "APK", + "kind": "Directory" + }, + "applicationId": "com.paint.sweet.drawing", + "variantName": "debug", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "attributes": [], + "versionCode": 1, + "versionName": "1.0", + "outputFile": "Vector Drawing_V1.0(1)_12_16_18_06-debug.apk" + } + ], + "elementType": "File", + "minSdkVersionForDexing": 24 +} \ No newline at end of file diff --git a/app/google-services.json b/app/google-services.json new file mode 100644 index 0000000..c89da17 --- /dev/null +++ b/app/google-services.json @@ -0,0 +1,29 @@ +{ + "project_info": { + "project_number": "242227695090", + "project_id": "sweet-drawing", + "storage_bucket": "sweet-drawing.firebasestorage.app" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:242227695090:android:d83120713310306d236f6b", + "android_client_info": { + "package_name": "com.paint.sweet.drawing" + } + }, + "oauth_client": [], + "api_key": [ + { + "current_key": "AIzaSyD7LI_zRI6KM8hqTRcb1LKsbft27CfP7hU" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/app/libs/TopOnLibrary_11_06_18_02-release.aar b/app/libs/TopOnLibrary_11_06_18_02-release.aar new file mode 100644 index 0000000..76472df Binary files /dev/null and b/app/libs/TopOnLibrary_11_06_18_02-release.aar differ diff --git a/app/libs/UpLoadLibrary_12_03_15_13-release.aar b/app/libs/UpLoadLibrary_12_03_15_13-release.aar new file mode 100644 index 0000000..a3e30aa Binary files /dev/null and b/app/libs/UpLoadLibrary_12_03_15_13-release.aar differ diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..cf50408 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,22 @@ +# 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 + diff --git a/app/release/baselineProfiles/0/Sweet Drawing_V1.0(1)_12_23_09_58-release.dm b/app/release/baselineProfiles/0/Sweet Drawing_V1.0(1)_12_23_09_58-release.dm new file mode 100644 index 0000000..41e19cb Binary files /dev/null and b/app/release/baselineProfiles/0/Sweet Drawing_V1.0(1)_12_23_09_58-release.dm differ diff --git a/app/release/baselineProfiles/1/Sweet Drawing_V1.0(1)_12_23_09_58-release.dm b/app/release/baselineProfiles/1/Sweet Drawing_V1.0(1)_12_23_09_58-release.dm new file mode 100644 index 0000000..f96df18 Binary files /dev/null and b/app/release/baselineProfiles/1/Sweet Drawing_V1.0(1)_12_23_09_58-release.dm differ diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json new file mode 100644 index 0000000..fba92df --- /dev/null +++ b/app/release/output-metadata.json @@ -0,0 +1,37 @@ +{ + "version": 3, + "artifactType": { + "type": "APK", + "kind": "Directory" + }, + "applicationId": "com.paint.sweet.drawing", + "variantName": "release", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "attributes": [], + "versionCode": 1, + "versionName": "1.0", + "outputFile": "Sweet Drawing_V1.0(1)_12_23_09_58-release.apk" + } + ], + "elementType": "File", + "baselineProfiles": [ + { + "minApi": 28, + "maxApi": 30, + "baselineProfiles": [ + "baselineProfiles/1/Sweet Drawing_V1.0(1)_12_23_09_58-release.dm" + ] + }, + { + "minApi": 31, + "maxApi": 2147483647, + "baselineProfiles": [ + "baselineProfiles/0/Sweet Drawing_V1.0(1)_12_23_09_58-release.dm" + ] + } + ], + "minSdkVersionForDexing": 24 +} \ No newline at end of file diff --git a/app/src/androidTest/java/com/paint/sweet/drawing/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/paint/sweet/drawing/ExampleInstrumentedTest.java new file mode 100644 index 0000000..888462d --- /dev/null +++ b/app/src/androidTest/java/com/paint/sweet/drawing/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.paint.sweet.drawing; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("com.paint.sweet.com.paint.sweet.com.paint.sweet.drawing", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..ae07e2f --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/assets/png_Animals/1.jpg b/app/src/main/assets/png_Animals/1.jpg new file mode 100644 index 0000000..9488c65 Binary files /dev/null and b/app/src/main/assets/png_Animals/1.jpg differ diff --git a/app/src/main/assets/png_Animals/10.jpg b/app/src/main/assets/png_Animals/10.jpg new file mode 100644 index 0000000..78382a4 Binary files /dev/null and b/app/src/main/assets/png_Animals/10.jpg differ diff --git a/app/src/main/assets/png_Animals/11.jpg b/app/src/main/assets/png_Animals/11.jpg new file mode 100644 index 0000000..a4f7512 Binary files /dev/null and b/app/src/main/assets/png_Animals/11.jpg differ diff --git a/app/src/main/assets/png_Animals/12.jpg b/app/src/main/assets/png_Animals/12.jpg new file mode 100644 index 0000000..bab3cff Binary files /dev/null and b/app/src/main/assets/png_Animals/12.jpg differ diff --git a/app/src/main/assets/png_Animals/13.jpg b/app/src/main/assets/png_Animals/13.jpg new file mode 100644 index 0000000..5c3ef19 Binary files /dev/null and b/app/src/main/assets/png_Animals/13.jpg differ diff --git a/app/src/main/assets/png_Animals/14.jpg b/app/src/main/assets/png_Animals/14.jpg new file mode 100644 index 0000000..8b446f2 Binary files /dev/null and b/app/src/main/assets/png_Animals/14.jpg differ diff --git a/app/src/main/assets/png_Animals/15.jpg b/app/src/main/assets/png_Animals/15.jpg new file mode 100644 index 0000000..2f9dc4e Binary files /dev/null and b/app/src/main/assets/png_Animals/15.jpg differ diff --git a/app/src/main/assets/png_Animals/16.jpg b/app/src/main/assets/png_Animals/16.jpg new file mode 100644 index 0000000..aad9788 Binary files /dev/null and b/app/src/main/assets/png_Animals/16.jpg differ diff --git a/app/src/main/assets/png_Animals/17.jpg b/app/src/main/assets/png_Animals/17.jpg new file mode 100644 index 0000000..17c6f07 Binary files /dev/null and b/app/src/main/assets/png_Animals/17.jpg differ diff --git a/app/src/main/assets/png_Animals/18.jpg b/app/src/main/assets/png_Animals/18.jpg new file mode 100644 index 0000000..2ce93a7 Binary files /dev/null and b/app/src/main/assets/png_Animals/18.jpg differ diff --git a/app/src/main/assets/png_Animals/19.jpg b/app/src/main/assets/png_Animals/19.jpg new file mode 100644 index 0000000..2b24f31 Binary files /dev/null and b/app/src/main/assets/png_Animals/19.jpg differ diff --git a/app/src/main/assets/png_Animals/2.jpg b/app/src/main/assets/png_Animals/2.jpg new file mode 100644 index 0000000..0a0c2e7 Binary files /dev/null and b/app/src/main/assets/png_Animals/2.jpg differ diff --git a/app/src/main/assets/png_Animals/20.jpg b/app/src/main/assets/png_Animals/20.jpg new file mode 100644 index 0000000..347cddc Binary files /dev/null and b/app/src/main/assets/png_Animals/20.jpg differ diff --git a/app/src/main/assets/png_Animals/21.jpg b/app/src/main/assets/png_Animals/21.jpg new file mode 100644 index 0000000..5a04764 Binary files /dev/null and b/app/src/main/assets/png_Animals/21.jpg differ diff --git a/app/src/main/assets/png_Animals/22.jpg b/app/src/main/assets/png_Animals/22.jpg new file mode 100644 index 0000000..c18d8ad Binary files /dev/null and b/app/src/main/assets/png_Animals/22.jpg differ diff --git a/app/src/main/assets/png_Animals/23.jpg b/app/src/main/assets/png_Animals/23.jpg new file mode 100644 index 0000000..4270d19 Binary files /dev/null and b/app/src/main/assets/png_Animals/23.jpg differ diff --git a/app/src/main/assets/png_Animals/24.jpg b/app/src/main/assets/png_Animals/24.jpg new file mode 100644 index 0000000..355a944 Binary files /dev/null and b/app/src/main/assets/png_Animals/24.jpg differ diff --git a/app/src/main/assets/png_Animals/25.jpg b/app/src/main/assets/png_Animals/25.jpg new file mode 100644 index 0000000..c670943 Binary files /dev/null and b/app/src/main/assets/png_Animals/25.jpg differ diff --git a/app/src/main/assets/png_Animals/26.jpg b/app/src/main/assets/png_Animals/26.jpg new file mode 100644 index 0000000..4b95b01 Binary files /dev/null and b/app/src/main/assets/png_Animals/26.jpg differ diff --git a/app/src/main/assets/png_Animals/27.jpg b/app/src/main/assets/png_Animals/27.jpg new file mode 100644 index 0000000..87a8c12 Binary files /dev/null and b/app/src/main/assets/png_Animals/27.jpg differ diff --git a/app/src/main/assets/png_Animals/28.jpg b/app/src/main/assets/png_Animals/28.jpg new file mode 100644 index 0000000..770686a Binary files /dev/null and b/app/src/main/assets/png_Animals/28.jpg differ diff --git a/app/src/main/assets/png_Animals/29.jpg b/app/src/main/assets/png_Animals/29.jpg new file mode 100644 index 0000000..7127a11 Binary files /dev/null and b/app/src/main/assets/png_Animals/29.jpg differ diff --git a/app/src/main/assets/png_Animals/3.jpg b/app/src/main/assets/png_Animals/3.jpg new file mode 100644 index 0000000..4bf4897 Binary files /dev/null and b/app/src/main/assets/png_Animals/3.jpg differ diff --git a/app/src/main/assets/png_Animals/30.jpg b/app/src/main/assets/png_Animals/30.jpg new file mode 100644 index 0000000..f1d2047 Binary files /dev/null and b/app/src/main/assets/png_Animals/30.jpg differ diff --git a/app/src/main/assets/png_Animals/31.jpg b/app/src/main/assets/png_Animals/31.jpg new file mode 100644 index 0000000..0d08aa8 Binary files /dev/null and b/app/src/main/assets/png_Animals/31.jpg differ diff --git a/app/src/main/assets/png_Animals/4.jpg b/app/src/main/assets/png_Animals/4.jpg new file mode 100644 index 0000000..838c582 Binary files /dev/null and b/app/src/main/assets/png_Animals/4.jpg differ diff --git a/app/src/main/assets/png_Animals/5.jpg b/app/src/main/assets/png_Animals/5.jpg new file mode 100644 index 0000000..36bd2bf Binary files /dev/null and b/app/src/main/assets/png_Animals/5.jpg differ diff --git a/app/src/main/assets/png_Animals/6.jpg b/app/src/main/assets/png_Animals/6.jpg new file mode 100644 index 0000000..dceb49b Binary files /dev/null and b/app/src/main/assets/png_Animals/6.jpg differ diff --git a/app/src/main/assets/png_Animals/7.jpg b/app/src/main/assets/png_Animals/7.jpg new file mode 100644 index 0000000..ebd4694 Binary files /dev/null and b/app/src/main/assets/png_Animals/7.jpg differ diff --git a/app/src/main/assets/png_Animals/8.jpg b/app/src/main/assets/png_Animals/8.jpg new file mode 100644 index 0000000..e5e3c63 Binary files /dev/null and b/app/src/main/assets/png_Animals/8.jpg differ diff --git a/app/src/main/assets/png_Animals/9.jpg b/app/src/main/assets/png_Animals/9.jpg new file mode 100644 index 0000000..e7a1862 Binary files /dev/null and b/app/src/main/assets/png_Animals/9.jpg differ diff --git a/app/src/main/assets/png_Birds/1.jpg b/app/src/main/assets/png_Birds/1.jpg new file mode 100644 index 0000000..d235225 Binary files /dev/null and b/app/src/main/assets/png_Birds/1.jpg differ diff --git a/app/src/main/assets/png_Birds/10.jpg b/app/src/main/assets/png_Birds/10.jpg new file mode 100644 index 0000000..e348ffe Binary files /dev/null and b/app/src/main/assets/png_Birds/10.jpg differ diff --git a/app/src/main/assets/png_Birds/11.jpg b/app/src/main/assets/png_Birds/11.jpg new file mode 100644 index 0000000..921b5b9 Binary files /dev/null and b/app/src/main/assets/png_Birds/11.jpg differ diff --git a/app/src/main/assets/png_Birds/12.jpg b/app/src/main/assets/png_Birds/12.jpg new file mode 100644 index 0000000..7b4055b Binary files /dev/null and b/app/src/main/assets/png_Birds/12.jpg differ diff --git a/app/src/main/assets/png_Birds/13.jpg b/app/src/main/assets/png_Birds/13.jpg new file mode 100644 index 0000000..021b7a4 Binary files /dev/null and b/app/src/main/assets/png_Birds/13.jpg differ diff --git a/app/src/main/assets/png_Birds/14.jpg b/app/src/main/assets/png_Birds/14.jpg new file mode 100644 index 0000000..2074c6f Binary files /dev/null and b/app/src/main/assets/png_Birds/14.jpg differ diff --git a/app/src/main/assets/png_Birds/15.jpg b/app/src/main/assets/png_Birds/15.jpg new file mode 100644 index 0000000..59b0e47 Binary files /dev/null and b/app/src/main/assets/png_Birds/15.jpg differ diff --git a/app/src/main/assets/png_Birds/16.jpg b/app/src/main/assets/png_Birds/16.jpg new file mode 100644 index 0000000..fe950d1 Binary files /dev/null and b/app/src/main/assets/png_Birds/16.jpg differ diff --git a/app/src/main/assets/png_Birds/17.jpg b/app/src/main/assets/png_Birds/17.jpg new file mode 100644 index 0000000..484f39a Binary files /dev/null and b/app/src/main/assets/png_Birds/17.jpg differ diff --git a/app/src/main/assets/png_Birds/18.jpg b/app/src/main/assets/png_Birds/18.jpg new file mode 100644 index 0000000..2792ed1 Binary files /dev/null and b/app/src/main/assets/png_Birds/18.jpg differ diff --git a/app/src/main/assets/png_Birds/19.jpg b/app/src/main/assets/png_Birds/19.jpg new file mode 100644 index 0000000..9e9bb27 Binary files /dev/null and b/app/src/main/assets/png_Birds/19.jpg differ diff --git a/app/src/main/assets/png_Birds/2.jpg b/app/src/main/assets/png_Birds/2.jpg new file mode 100644 index 0000000..0929272 Binary files /dev/null and b/app/src/main/assets/png_Birds/2.jpg differ diff --git a/app/src/main/assets/png_Birds/3.jpg b/app/src/main/assets/png_Birds/3.jpg new file mode 100644 index 0000000..1376a50 Binary files /dev/null and b/app/src/main/assets/png_Birds/3.jpg differ diff --git a/app/src/main/assets/png_Birds/4.jpg b/app/src/main/assets/png_Birds/4.jpg new file mode 100644 index 0000000..1cd8f9c Binary files /dev/null and b/app/src/main/assets/png_Birds/4.jpg differ diff --git a/app/src/main/assets/png_Birds/5.jpg b/app/src/main/assets/png_Birds/5.jpg new file mode 100644 index 0000000..7637589 Binary files /dev/null and b/app/src/main/assets/png_Birds/5.jpg differ diff --git a/app/src/main/assets/png_Birds/6.jpg b/app/src/main/assets/png_Birds/6.jpg new file mode 100644 index 0000000..3bf16b6 Binary files /dev/null and b/app/src/main/assets/png_Birds/6.jpg differ diff --git a/app/src/main/assets/png_Birds/7.jpg b/app/src/main/assets/png_Birds/7.jpg new file mode 100644 index 0000000..076e51d Binary files /dev/null and b/app/src/main/assets/png_Birds/7.jpg differ diff --git a/app/src/main/assets/png_Birds/8.jpg b/app/src/main/assets/png_Birds/8.jpg new file mode 100644 index 0000000..71f5cf7 Binary files /dev/null and b/app/src/main/assets/png_Birds/8.jpg differ diff --git a/app/src/main/assets/png_Birds/9.jpg b/app/src/main/assets/png_Birds/9.jpg new file mode 100644 index 0000000..8767032 Binary files /dev/null and b/app/src/main/assets/png_Birds/9.jpg differ diff --git a/app/src/main/assets/png_Butterfly/1.jpg b/app/src/main/assets/png_Butterfly/1.jpg new file mode 100644 index 0000000..0d713b7 Binary files /dev/null and b/app/src/main/assets/png_Butterfly/1.jpg differ diff --git a/app/src/main/assets/png_Butterfly/10.jpg b/app/src/main/assets/png_Butterfly/10.jpg new file mode 100644 index 0000000..ae497c8 Binary files /dev/null and b/app/src/main/assets/png_Butterfly/10.jpg differ diff --git a/app/src/main/assets/png_Butterfly/11.jpg b/app/src/main/assets/png_Butterfly/11.jpg new file mode 100644 index 0000000..d2e39ef Binary files /dev/null and b/app/src/main/assets/png_Butterfly/11.jpg differ diff --git a/app/src/main/assets/png_Butterfly/12.jpg b/app/src/main/assets/png_Butterfly/12.jpg new file mode 100644 index 0000000..410af7c Binary files /dev/null and b/app/src/main/assets/png_Butterfly/12.jpg differ diff --git a/app/src/main/assets/png_Butterfly/13.jpg b/app/src/main/assets/png_Butterfly/13.jpg new file mode 100644 index 0000000..233a998 Binary files /dev/null and b/app/src/main/assets/png_Butterfly/13.jpg differ diff --git a/app/src/main/assets/png_Butterfly/14.jpg b/app/src/main/assets/png_Butterfly/14.jpg new file mode 100644 index 0000000..9545c0f Binary files /dev/null and b/app/src/main/assets/png_Butterfly/14.jpg differ diff --git a/app/src/main/assets/png_Butterfly/15.jpg b/app/src/main/assets/png_Butterfly/15.jpg new file mode 100644 index 0000000..aa0da5b Binary files /dev/null and b/app/src/main/assets/png_Butterfly/15.jpg differ diff --git a/app/src/main/assets/png_Butterfly/16.jpg b/app/src/main/assets/png_Butterfly/16.jpg new file mode 100644 index 0000000..4b118cf Binary files /dev/null and b/app/src/main/assets/png_Butterfly/16.jpg differ diff --git a/app/src/main/assets/png_Butterfly/17.jpg b/app/src/main/assets/png_Butterfly/17.jpg new file mode 100644 index 0000000..ebfdc2e Binary files /dev/null and b/app/src/main/assets/png_Butterfly/17.jpg differ diff --git a/app/src/main/assets/png_Butterfly/18.jpg b/app/src/main/assets/png_Butterfly/18.jpg new file mode 100644 index 0000000..7b81ca1 Binary files /dev/null and b/app/src/main/assets/png_Butterfly/18.jpg differ diff --git a/app/src/main/assets/png_Butterfly/19.jpg b/app/src/main/assets/png_Butterfly/19.jpg new file mode 100644 index 0000000..903fd82 Binary files /dev/null and b/app/src/main/assets/png_Butterfly/19.jpg differ diff --git a/app/src/main/assets/png_Butterfly/2.jpg b/app/src/main/assets/png_Butterfly/2.jpg new file mode 100644 index 0000000..f92c438 Binary files /dev/null and b/app/src/main/assets/png_Butterfly/2.jpg differ diff --git a/app/src/main/assets/png_Butterfly/20.jpg b/app/src/main/assets/png_Butterfly/20.jpg new file mode 100644 index 0000000..7d0dc2e Binary files /dev/null and b/app/src/main/assets/png_Butterfly/20.jpg differ diff --git a/app/src/main/assets/png_Butterfly/21.jpg b/app/src/main/assets/png_Butterfly/21.jpg new file mode 100644 index 0000000..ff82d93 Binary files /dev/null and b/app/src/main/assets/png_Butterfly/21.jpg differ diff --git a/app/src/main/assets/png_Butterfly/3.jpg b/app/src/main/assets/png_Butterfly/3.jpg new file mode 100644 index 0000000..5251134 Binary files /dev/null and b/app/src/main/assets/png_Butterfly/3.jpg differ diff --git a/app/src/main/assets/png_Butterfly/4.jpg b/app/src/main/assets/png_Butterfly/4.jpg new file mode 100644 index 0000000..01d5932 Binary files /dev/null and b/app/src/main/assets/png_Butterfly/4.jpg differ diff --git a/app/src/main/assets/png_Butterfly/5.jpg b/app/src/main/assets/png_Butterfly/5.jpg new file mode 100644 index 0000000..cc99ed5 Binary files /dev/null and b/app/src/main/assets/png_Butterfly/5.jpg differ diff --git a/app/src/main/assets/png_Butterfly/6.jpg b/app/src/main/assets/png_Butterfly/6.jpg new file mode 100644 index 0000000..6d02805 Binary files /dev/null and b/app/src/main/assets/png_Butterfly/6.jpg differ diff --git a/app/src/main/assets/png_Butterfly/7.jpg b/app/src/main/assets/png_Butterfly/7.jpg new file mode 100644 index 0000000..dd52dbd Binary files /dev/null and b/app/src/main/assets/png_Butterfly/7.jpg differ diff --git a/app/src/main/assets/png_Butterfly/8.jpg b/app/src/main/assets/png_Butterfly/8.jpg new file mode 100644 index 0000000..d519ca7 Binary files /dev/null and b/app/src/main/assets/png_Butterfly/8.jpg differ diff --git a/app/src/main/assets/png_Butterfly/9.jpg b/app/src/main/assets/png_Butterfly/9.jpg new file mode 100644 index 0000000..0cedb47 Binary files /dev/null and b/app/src/main/assets/png_Butterfly/9.jpg differ diff --git a/app/src/main/assets/png_Cafe/1.jpg b/app/src/main/assets/png_Cafe/1.jpg new file mode 100644 index 0000000..b347b44 Binary files /dev/null and b/app/src/main/assets/png_Cafe/1.jpg differ diff --git a/app/src/main/assets/png_Cafe/10.jpg b/app/src/main/assets/png_Cafe/10.jpg new file mode 100644 index 0000000..3728490 Binary files /dev/null and b/app/src/main/assets/png_Cafe/10.jpg differ diff --git a/app/src/main/assets/png_Cafe/11.jpg b/app/src/main/assets/png_Cafe/11.jpg new file mode 100644 index 0000000..bff21e1 Binary files /dev/null and b/app/src/main/assets/png_Cafe/11.jpg differ diff --git a/app/src/main/assets/png_Cafe/12.jpg b/app/src/main/assets/png_Cafe/12.jpg new file mode 100644 index 0000000..3966d4a Binary files /dev/null and b/app/src/main/assets/png_Cafe/12.jpg differ diff --git a/app/src/main/assets/png_Cafe/13.jpg b/app/src/main/assets/png_Cafe/13.jpg new file mode 100644 index 0000000..8200e12 Binary files /dev/null and b/app/src/main/assets/png_Cafe/13.jpg differ diff --git a/app/src/main/assets/png_Cafe/14.jpg b/app/src/main/assets/png_Cafe/14.jpg new file mode 100644 index 0000000..65ee383 Binary files /dev/null and b/app/src/main/assets/png_Cafe/14.jpg differ diff --git a/app/src/main/assets/png_Cafe/15.jpg b/app/src/main/assets/png_Cafe/15.jpg new file mode 100644 index 0000000..01df5e5 Binary files /dev/null and b/app/src/main/assets/png_Cafe/15.jpg differ diff --git a/app/src/main/assets/png_Cafe/16.jpg b/app/src/main/assets/png_Cafe/16.jpg new file mode 100644 index 0000000..ff679c1 Binary files /dev/null and b/app/src/main/assets/png_Cafe/16.jpg differ diff --git a/app/src/main/assets/png_Cafe/17.jpg b/app/src/main/assets/png_Cafe/17.jpg new file mode 100644 index 0000000..42fdf87 Binary files /dev/null and b/app/src/main/assets/png_Cafe/17.jpg differ diff --git a/app/src/main/assets/png_Cafe/18.jpg b/app/src/main/assets/png_Cafe/18.jpg new file mode 100644 index 0000000..06d300e Binary files /dev/null and b/app/src/main/assets/png_Cafe/18.jpg differ diff --git a/app/src/main/assets/png_Cafe/19.jpg b/app/src/main/assets/png_Cafe/19.jpg new file mode 100644 index 0000000..42aaa2c Binary files /dev/null and b/app/src/main/assets/png_Cafe/19.jpg differ diff --git a/app/src/main/assets/png_Cafe/2.jpg b/app/src/main/assets/png_Cafe/2.jpg new file mode 100644 index 0000000..14d9b25 Binary files /dev/null and b/app/src/main/assets/png_Cafe/2.jpg differ diff --git a/app/src/main/assets/png_Cafe/20.jpg b/app/src/main/assets/png_Cafe/20.jpg new file mode 100644 index 0000000..5dad84c Binary files /dev/null and b/app/src/main/assets/png_Cafe/20.jpg differ diff --git a/app/src/main/assets/png_Cafe/21.jpg b/app/src/main/assets/png_Cafe/21.jpg new file mode 100644 index 0000000..c019faa Binary files /dev/null and b/app/src/main/assets/png_Cafe/21.jpg differ diff --git a/app/src/main/assets/png_Cafe/22.jpg b/app/src/main/assets/png_Cafe/22.jpg new file mode 100644 index 0000000..28cdc4e Binary files /dev/null and b/app/src/main/assets/png_Cafe/22.jpg differ diff --git a/app/src/main/assets/png_Cafe/23.jpg b/app/src/main/assets/png_Cafe/23.jpg new file mode 100644 index 0000000..973a5c2 Binary files /dev/null and b/app/src/main/assets/png_Cafe/23.jpg differ diff --git a/app/src/main/assets/png_Cafe/24.jpg b/app/src/main/assets/png_Cafe/24.jpg new file mode 100644 index 0000000..3c36d8a Binary files /dev/null and b/app/src/main/assets/png_Cafe/24.jpg differ diff --git a/app/src/main/assets/png_Cafe/25.jpg b/app/src/main/assets/png_Cafe/25.jpg new file mode 100644 index 0000000..c7be496 Binary files /dev/null and b/app/src/main/assets/png_Cafe/25.jpg differ diff --git a/app/src/main/assets/png_Cafe/26.jpg b/app/src/main/assets/png_Cafe/26.jpg new file mode 100644 index 0000000..7229696 Binary files /dev/null and b/app/src/main/assets/png_Cafe/26.jpg differ diff --git a/app/src/main/assets/png_Cafe/27.jpg b/app/src/main/assets/png_Cafe/27.jpg new file mode 100644 index 0000000..f857542 Binary files /dev/null and b/app/src/main/assets/png_Cafe/27.jpg differ diff --git a/app/src/main/assets/png_Cafe/28.jpg b/app/src/main/assets/png_Cafe/28.jpg new file mode 100644 index 0000000..8cde6de Binary files /dev/null and b/app/src/main/assets/png_Cafe/28.jpg differ diff --git a/app/src/main/assets/png_Cafe/29.jpg b/app/src/main/assets/png_Cafe/29.jpg new file mode 100644 index 0000000..8affd30 Binary files /dev/null and b/app/src/main/assets/png_Cafe/29.jpg differ diff --git a/app/src/main/assets/png_Cafe/3.jpg b/app/src/main/assets/png_Cafe/3.jpg new file mode 100644 index 0000000..b1c3cfa Binary files /dev/null and b/app/src/main/assets/png_Cafe/3.jpg differ diff --git a/app/src/main/assets/png_Cafe/30.jpg b/app/src/main/assets/png_Cafe/30.jpg new file mode 100644 index 0000000..f71ce84 Binary files /dev/null and b/app/src/main/assets/png_Cafe/30.jpg differ diff --git a/app/src/main/assets/png_Cafe/31.jpg b/app/src/main/assets/png_Cafe/31.jpg new file mode 100644 index 0000000..a5d22ca Binary files /dev/null and b/app/src/main/assets/png_Cafe/31.jpg differ diff --git a/app/src/main/assets/png_Cafe/32.jpg b/app/src/main/assets/png_Cafe/32.jpg new file mode 100644 index 0000000..8513a5e Binary files /dev/null and b/app/src/main/assets/png_Cafe/32.jpg differ diff --git a/app/src/main/assets/png_Cafe/33.jpg b/app/src/main/assets/png_Cafe/33.jpg new file mode 100644 index 0000000..fcdcbcc Binary files /dev/null and b/app/src/main/assets/png_Cafe/33.jpg differ diff --git a/app/src/main/assets/png_Cafe/34.jpg b/app/src/main/assets/png_Cafe/34.jpg new file mode 100644 index 0000000..51bbf4b Binary files /dev/null and b/app/src/main/assets/png_Cafe/34.jpg differ diff --git a/app/src/main/assets/png_Cafe/35.jpg b/app/src/main/assets/png_Cafe/35.jpg new file mode 100644 index 0000000..e1067da Binary files /dev/null and b/app/src/main/assets/png_Cafe/35.jpg differ diff --git a/app/src/main/assets/png_Cafe/36.jpg b/app/src/main/assets/png_Cafe/36.jpg new file mode 100644 index 0000000..181a84a Binary files /dev/null and b/app/src/main/assets/png_Cafe/36.jpg differ diff --git a/app/src/main/assets/png_Cafe/37.jpg b/app/src/main/assets/png_Cafe/37.jpg new file mode 100644 index 0000000..d8ffb00 Binary files /dev/null and b/app/src/main/assets/png_Cafe/37.jpg differ diff --git a/app/src/main/assets/png_Cafe/38.jpg b/app/src/main/assets/png_Cafe/38.jpg new file mode 100644 index 0000000..abdba50 Binary files /dev/null and b/app/src/main/assets/png_Cafe/38.jpg differ diff --git a/app/src/main/assets/png_Cafe/4.jpg b/app/src/main/assets/png_Cafe/4.jpg new file mode 100644 index 0000000..8792f16 Binary files /dev/null and b/app/src/main/assets/png_Cafe/4.jpg differ diff --git a/app/src/main/assets/png_Cafe/5.jpg b/app/src/main/assets/png_Cafe/5.jpg new file mode 100644 index 0000000..89630aa Binary files /dev/null and b/app/src/main/assets/png_Cafe/5.jpg differ diff --git a/app/src/main/assets/png_Cafe/6.jpg b/app/src/main/assets/png_Cafe/6.jpg new file mode 100644 index 0000000..7e6832e Binary files /dev/null and b/app/src/main/assets/png_Cafe/6.jpg differ diff --git a/app/src/main/assets/png_Cafe/7.jpg b/app/src/main/assets/png_Cafe/7.jpg new file mode 100644 index 0000000..f4d2afb Binary files /dev/null and b/app/src/main/assets/png_Cafe/7.jpg differ diff --git a/app/src/main/assets/png_Cafe/8.jpg b/app/src/main/assets/png_Cafe/8.jpg new file mode 100644 index 0000000..78f5ccf Binary files /dev/null and b/app/src/main/assets/png_Cafe/8.jpg differ diff --git a/app/src/main/assets/png_Cafe/9.jpg b/app/src/main/assets/png_Cafe/9.jpg new file mode 100644 index 0000000..4038bb5 Binary files /dev/null and b/app/src/main/assets/png_Cafe/9.jpg differ diff --git a/app/src/main/assets/png_Cartoons/1.jpg b/app/src/main/assets/png_Cartoons/1.jpg new file mode 100644 index 0000000..74bf123 Binary files /dev/null and b/app/src/main/assets/png_Cartoons/1.jpg differ diff --git a/app/src/main/assets/png_Cartoons/10.jpg b/app/src/main/assets/png_Cartoons/10.jpg new file mode 100644 index 0000000..450fa6e Binary files /dev/null and b/app/src/main/assets/png_Cartoons/10.jpg differ diff --git a/app/src/main/assets/png_Cartoons/11.jpg b/app/src/main/assets/png_Cartoons/11.jpg new file mode 100644 index 0000000..1f2a904 Binary files /dev/null and b/app/src/main/assets/png_Cartoons/11.jpg differ diff --git a/app/src/main/assets/png_Cartoons/12.jpg b/app/src/main/assets/png_Cartoons/12.jpg new file mode 100644 index 0000000..86ef206 Binary files /dev/null and b/app/src/main/assets/png_Cartoons/12.jpg differ diff --git a/app/src/main/assets/png_Cartoons/13.jpg b/app/src/main/assets/png_Cartoons/13.jpg new file mode 100644 index 0000000..92e1d75 Binary files /dev/null and b/app/src/main/assets/png_Cartoons/13.jpg differ diff --git a/app/src/main/assets/png_Cartoons/14.jpg b/app/src/main/assets/png_Cartoons/14.jpg new file mode 100644 index 0000000..c82e897 Binary files /dev/null and b/app/src/main/assets/png_Cartoons/14.jpg differ diff --git a/app/src/main/assets/png_Cartoons/15.jpg b/app/src/main/assets/png_Cartoons/15.jpg new file mode 100644 index 0000000..bcd8678 Binary files /dev/null and b/app/src/main/assets/png_Cartoons/15.jpg differ diff --git a/app/src/main/assets/png_Cartoons/16.jpg b/app/src/main/assets/png_Cartoons/16.jpg new file mode 100644 index 0000000..18377bd Binary files /dev/null and b/app/src/main/assets/png_Cartoons/16.jpg differ diff --git a/app/src/main/assets/png_Cartoons/17.jpg b/app/src/main/assets/png_Cartoons/17.jpg new file mode 100644 index 0000000..45aafbb Binary files /dev/null and b/app/src/main/assets/png_Cartoons/17.jpg differ diff --git a/app/src/main/assets/png_Cartoons/18.jpg b/app/src/main/assets/png_Cartoons/18.jpg new file mode 100644 index 0000000..048d253 Binary files /dev/null and b/app/src/main/assets/png_Cartoons/18.jpg differ diff --git a/app/src/main/assets/png_Cartoons/19.jpg b/app/src/main/assets/png_Cartoons/19.jpg new file mode 100644 index 0000000..c2501b2 Binary files /dev/null and b/app/src/main/assets/png_Cartoons/19.jpg differ diff --git a/app/src/main/assets/png_Cartoons/2.jpg b/app/src/main/assets/png_Cartoons/2.jpg new file mode 100644 index 0000000..8baf95b Binary files /dev/null and b/app/src/main/assets/png_Cartoons/2.jpg differ diff --git a/app/src/main/assets/png_Cartoons/20.jpg b/app/src/main/assets/png_Cartoons/20.jpg new file mode 100644 index 0000000..fb7901c Binary files /dev/null and b/app/src/main/assets/png_Cartoons/20.jpg differ diff --git a/app/src/main/assets/png_Cartoons/21.jpg b/app/src/main/assets/png_Cartoons/21.jpg new file mode 100644 index 0000000..ed7104e Binary files /dev/null and b/app/src/main/assets/png_Cartoons/21.jpg differ diff --git a/app/src/main/assets/png_Cartoons/22.jpg b/app/src/main/assets/png_Cartoons/22.jpg new file mode 100644 index 0000000..cd003eb Binary files /dev/null and b/app/src/main/assets/png_Cartoons/22.jpg differ diff --git a/app/src/main/assets/png_Cartoons/23.jpg b/app/src/main/assets/png_Cartoons/23.jpg new file mode 100644 index 0000000..77b49a4 Binary files /dev/null and b/app/src/main/assets/png_Cartoons/23.jpg differ diff --git a/app/src/main/assets/png_Cartoons/24.jpg b/app/src/main/assets/png_Cartoons/24.jpg new file mode 100644 index 0000000..1c7dc65 Binary files /dev/null and b/app/src/main/assets/png_Cartoons/24.jpg differ diff --git a/app/src/main/assets/png_Cartoons/25.jpg b/app/src/main/assets/png_Cartoons/25.jpg new file mode 100644 index 0000000..442aec2 Binary files /dev/null and b/app/src/main/assets/png_Cartoons/25.jpg differ diff --git a/app/src/main/assets/png_Cartoons/26.jpg b/app/src/main/assets/png_Cartoons/26.jpg new file mode 100644 index 0000000..ec4a2ff Binary files /dev/null and b/app/src/main/assets/png_Cartoons/26.jpg differ diff --git a/app/src/main/assets/png_Cartoons/3.jpg b/app/src/main/assets/png_Cartoons/3.jpg new file mode 100644 index 0000000..e099902 Binary files /dev/null and b/app/src/main/assets/png_Cartoons/3.jpg differ diff --git a/app/src/main/assets/png_Cartoons/4.jpg b/app/src/main/assets/png_Cartoons/4.jpg new file mode 100644 index 0000000..a4c69ba Binary files /dev/null and b/app/src/main/assets/png_Cartoons/4.jpg differ diff --git a/app/src/main/assets/png_Cartoons/5.jpg b/app/src/main/assets/png_Cartoons/5.jpg new file mode 100644 index 0000000..b32485d Binary files /dev/null and b/app/src/main/assets/png_Cartoons/5.jpg differ diff --git a/app/src/main/assets/png_Cartoons/6.jpg b/app/src/main/assets/png_Cartoons/6.jpg new file mode 100644 index 0000000..0e0a7ef Binary files /dev/null and b/app/src/main/assets/png_Cartoons/6.jpg differ diff --git a/app/src/main/assets/png_Cartoons/7.jpg b/app/src/main/assets/png_Cartoons/7.jpg new file mode 100644 index 0000000..ecd8dc0 Binary files /dev/null and b/app/src/main/assets/png_Cartoons/7.jpg differ diff --git a/app/src/main/assets/png_Cartoons/8.jpg b/app/src/main/assets/png_Cartoons/8.jpg new file mode 100644 index 0000000..f6ea587 Binary files /dev/null and b/app/src/main/assets/png_Cartoons/8.jpg differ diff --git a/app/src/main/assets/png_Cartoons/9.jpg b/app/src/main/assets/png_Cartoons/9.jpg new file mode 100644 index 0000000..da4c151 Binary files /dev/null and b/app/src/main/assets/png_Cartoons/9.jpg differ diff --git a/app/src/main/assets/png_Christmas/1.jpg b/app/src/main/assets/png_Christmas/1.jpg new file mode 100644 index 0000000..cc1fafb Binary files /dev/null and b/app/src/main/assets/png_Christmas/1.jpg differ diff --git a/app/src/main/assets/png_Christmas/10.jpg b/app/src/main/assets/png_Christmas/10.jpg new file mode 100644 index 0000000..e5e63d6 Binary files /dev/null and b/app/src/main/assets/png_Christmas/10.jpg differ diff --git a/app/src/main/assets/png_Christmas/11.jpg b/app/src/main/assets/png_Christmas/11.jpg new file mode 100644 index 0000000..cae5d66 Binary files /dev/null and b/app/src/main/assets/png_Christmas/11.jpg differ diff --git a/app/src/main/assets/png_Christmas/12.jpg b/app/src/main/assets/png_Christmas/12.jpg new file mode 100644 index 0000000..13fd21f Binary files /dev/null and b/app/src/main/assets/png_Christmas/12.jpg differ diff --git a/app/src/main/assets/png_Christmas/13.jpg b/app/src/main/assets/png_Christmas/13.jpg new file mode 100644 index 0000000..1fa30fe Binary files /dev/null and b/app/src/main/assets/png_Christmas/13.jpg differ diff --git a/app/src/main/assets/png_Christmas/14.jpg b/app/src/main/assets/png_Christmas/14.jpg new file mode 100644 index 0000000..aec6dcf Binary files /dev/null and b/app/src/main/assets/png_Christmas/14.jpg differ diff --git a/app/src/main/assets/png_Christmas/15.jpg b/app/src/main/assets/png_Christmas/15.jpg new file mode 100644 index 0000000..647c8b6 Binary files /dev/null and b/app/src/main/assets/png_Christmas/15.jpg differ diff --git a/app/src/main/assets/png_Christmas/16.jpg b/app/src/main/assets/png_Christmas/16.jpg new file mode 100644 index 0000000..b36a79c Binary files /dev/null and b/app/src/main/assets/png_Christmas/16.jpg differ diff --git a/app/src/main/assets/png_Christmas/17.jpg b/app/src/main/assets/png_Christmas/17.jpg new file mode 100644 index 0000000..2655af2 Binary files /dev/null and b/app/src/main/assets/png_Christmas/17.jpg differ diff --git a/app/src/main/assets/png_Christmas/18.jpg b/app/src/main/assets/png_Christmas/18.jpg new file mode 100644 index 0000000..e784d64 Binary files /dev/null and b/app/src/main/assets/png_Christmas/18.jpg differ diff --git a/app/src/main/assets/png_Christmas/19.jpg b/app/src/main/assets/png_Christmas/19.jpg new file mode 100644 index 0000000..fcf2085 Binary files /dev/null and b/app/src/main/assets/png_Christmas/19.jpg differ diff --git a/app/src/main/assets/png_Christmas/2.jpg b/app/src/main/assets/png_Christmas/2.jpg new file mode 100644 index 0000000..326e86b Binary files /dev/null and b/app/src/main/assets/png_Christmas/2.jpg differ diff --git a/app/src/main/assets/png_Christmas/20.jpg b/app/src/main/assets/png_Christmas/20.jpg new file mode 100644 index 0000000..a9e3c89 Binary files /dev/null and b/app/src/main/assets/png_Christmas/20.jpg differ diff --git a/app/src/main/assets/png_Christmas/21.jpg b/app/src/main/assets/png_Christmas/21.jpg new file mode 100644 index 0000000..71b4150 Binary files /dev/null and b/app/src/main/assets/png_Christmas/21.jpg differ diff --git a/app/src/main/assets/png_Christmas/22.jpg b/app/src/main/assets/png_Christmas/22.jpg new file mode 100644 index 0000000..3c99d0d Binary files /dev/null and b/app/src/main/assets/png_Christmas/22.jpg differ diff --git a/app/src/main/assets/png_Christmas/23.jpg b/app/src/main/assets/png_Christmas/23.jpg new file mode 100644 index 0000000..32c3b03 Binary files /dev/null and b/app/src/main/assets/png_Christmas/23.jpg differ diff --git a/app/src/main/assets/png_Christmas/24.jpg b/app/src/main/assets/png_Christmas/24.jpg new file mode 100644 index 0000000..80fd836 Binary files /dev/null and b/app/src/main/assets/png_Christmas/24.jpg differ diff --git a/app/src/main/assets/png_Christmas/25.jpg b/app/src/main/assets/png_Christmas/25.jpg new file mode 100644 index 0000000..8e2bef6 Binary files /dev/null and b/app/src/main/assets/png_Christmas/25.jpg differ diff --git a/app/src/main/assets/png_Christmas/3.jpg b/app/src/main/assets/png_Christmas/3.jpg new file mode 100644 index 0000000..4c24cd2 Binary files /dev/null and b/app/src/main/assets/png_Christmas/3.jpg differ diff --git a/app/src/main/assets/png_Christmas/4.jpg b/app/src/main/assets/png_Christmas/4.jpg new file mode 100644 index 0000000..28fb1b0 Binary files /dev/null and b/app/src/main/assets/png_Christmas/4.jpg differ diff --git a/app/src/main/assets/png_Christmas/5.jpg b/app/src/main/assets/png_Christmas/5.jpg new file mode 100644 index 0000000..93ad555 Binary files /dev/null and b/app/src/main/assets/png_Christmas/5.jpg differ diff --git a/app/src/main/assets/png_Christmas/6.jpg b/app/src/main/assets/png_Christmas/6.jpg new file mode 100644 index 0000000..02fe302 Binary files /dev/null and b/app/src/main/assets/png_Christmas/6.jpg differ diff --git a/app/src/main/assets/png_Christmas/7.jpg b/app/src/main/assets/png_Christmas/7.jpg new file mode 100644 index 0000000..dc41982 Binary files /dev/null and b/app/src/main/assets/png_Christmas/7.jpg differ diff --git a/app/src/main/assets/png_Christmas/8.jpg b/app/src/main/assets/png_Christmas/8.jpg new file mode 100644 index 0000000..5f13019 Binary files /dev/null and b/app/src/main/assets/png_Christmas/8.jpg differ diff --git a/app/src/main/assets/png_Christmas/9.jpg b/app/src/main/assets/png_Christmas/9.jpg new file mode 100644 index 0000000..e556980 Binary files /dev/null and b/app/src/main/assets/png_Christmas/9.jpg differ diff --git a/app/src/main/assets/png_Festivals/1.jpg b/app/src/main/assets/png_Festivals/1.jpg new file mode 100644 index 0000000..125d632 Binary files /dev/null and b/app/src/main/assets/png_Festivals/1.jpg differ diff --git a/app/src/main/assets/png_Festivals/10.jpg b/app/src/main/assets/png_Festivals/10.jpg new file mode 100644 index 0000000..d17b9f1 Binary files /dev/null and b/app/src/main/assets/png_Festivals/10.jpg differ diff --git a/app/src/main/assets/png_Festivals/11.jpg b/app/src/main/assets/png_Festivals/11.jpg new file mode 100644 index 0000000..702f052 Binary files /dev/null and b/app/src/main/assets/png_Festivals/11.jpg differ diff --git a/app/src/main/assets/png_Festivals/12.jpg b/app/src/main/assets/png_Festivals/12.jpg new file mode 100644 index 0000000..6f231e1 Binary files /dev/null and b/app/src/main/assets/png_Festivals/12.jpg differ diff --git a/app/src/main/assets/png_Festivals/13.jpg b/app/src/main/assets/png_Festivals/13.jpg new file mode 100644 index 0000000..20556a1 Binary files /dev/null and b/app/src/main/assets/png_Festivals/13.jpg differ diff --git a/app/src/main/assets/png_Festivals/14.jpg b/app/src/main/assets/png_Festivals/14.jpg new file mode 100644 index 0000000..fb78127 Binary files /dev/null and b/app/src/main/assets/png_Festivals/14.jpg differ diff --git a/app/src/main/assets/png_Festivals/15.jpg b/app/src/main/assets/png_Festivals/15.jpg new file mode 100644 index 0000000..e74f47e Binary files /dev/null and b/app/src/main/assets/png_Festivals/15.jpg differ diff --git a/app/src/main/assets/png_Festivals/16.jpg b/app/src/main/assets/png_Festivals/16.jpg new file mode 100644 index 0000000..136f6e8 Binary files /dev/null and b/app/src/main/assets/png_Festivals/16.jpg differ diff --git a/app/src/main/assets/png_Festivals/17.jpg b/app/src/main/assets/png_Festivals/17.jpg new file mode 100644 index 0000000..fd50e67 Binary files /dev/null and b/app/src/main/assets/png_Festivals/17.jpg differ diff --git a/app/src/main/assets/png_Festivals/18.jpg b/app/src/main/assets/png_Festivals/18.jpg new file mode 100644 index 0000000..d3f7936 Binary files /dev/null and b/app/src/main/assets/png_Festivals/18.jpg differ diff --git a/app/src/main/assets/png_Festivals/19.jpg b/app/src/main/assets/png_Festivals/19.jpg new file mode 100644 index 0000000..9a4f1b8 Binary files /dev/null and b/app/src/main/assets/png_Festivals/19.jpg differ diff --git a/app/src/main/assets/png_Festivals/2.jpg b/app/src/main/assets/png_Festivals/2.jpg new file mode 100644 index 0000000..84aa31a Binary files /dev/null and b/app/src/main/assets/png_Festivals/2.jpg differ diff --git a/app/src/main/assets/png_Festivals/20.jpg b/app/src/main/assets/png_Festivals/20.jpg new file mode 100644 index 0000000..268c943 Binary files /dev/null and b/app/src/main/assets/png_Festivals/20.jpg differ diff --git a/app/src/main/assets/png_Festivals/21.jpg b/app/src/main/assets/png_Festivals/21.jpg new file mode 100644 index 0000000..614bffd Binary files /dev/null and b/app/src/main/assets/png_Festivals/21.jpg differ diff --git a/app/src/main/assets/png_Festivals/22.jpg b/app/src/main/assets/png_Festivals/22.jpg new file mode 100644 index 0000000..f81eb8d Binary files /dev/null and b/app/src/main/assets/png_Festivals/22.jpg differ diff --git a/app/src/main/assets/png_Festivals/3.jpg b/app/src/main/assets/png_Festivals/3.jpg new file mode 100644 index 0000000..5ca2b11 Binary files /dev/null and b/app/src/main/assets/png_Festivals/3.jpg differ diff --git a/app/src/main/assets/png_Festivals/4.jpg b/app/src/main/assets/png_Festivals/4.jpg new file mode 100644 index 0000000..1f8cc81 Binary files /dev/null and b/app/src/main/assets/png_Festivals/4.jpg differ diff --git a/app/src/main/assets/png_Festivals/5.jpg b/app/src/main/assets/png_Festivals/5.jpg new file mode 100644 index 0000000..7f1bd1a Binary files /dev/null and b/app/src/main/assets/png_Festivals/5.jpg differ diff --git a/app/src/main/assets/png_Festivals/6.jpg b/app/src/main/assets/png_Festivals/6.jpg new file mode 100644 index 0000000..9cf832a Binary files /dev/null and b/app/src/main/assets/png_Festivals/6.jpg differ diff --git a/app/src/main/assets/png_Festivals/7.jpg b/app/src/main/assets/png_Festivals/7.jpg new file mode 100644 index 0000000..dcd83f3 Binary files /dev/null and b/app/src/main/assets/png_Festivals/7.jpg differ diff --git a/app/src/main/assets/png_Festivals/8.jpg b/app/src/main/assets/png_Festivals/8.jpg new file mode 100644 index 0000000..1117f09 Binary files /dev/null and b/app/src/main/assets/png_Festivals/8.jpg differ diff --git a/app/src/main/assets/png_Festivals/9.jpg b/app/src/main/assets/png_Festivals/9.jpg new file mode 100644 index 0000000..39d8467 Binary files /dev/null and b/app/src/main/assets/png_Festivals/9.jpg differ diff --git a/app/src/main/assets/png_Flowers/1.jpg b/app/src/main/assets/png_Flowers/1.jpg new file mode 100644 index 0000000..217d9c8 Binary files /dev/null and b/app/src/main/assets/png_Flowers/1.jpg differ diff --git a/app/src/main/assets/png_Flowers/10.jpg b/app/src/main/assets/png_Flowers/10.jpg new file mode 100644 index 0000000..ba84e61 Binary files /dev/null and b/app/src/main/assets/png_Flowers/10.jpg differ diff --git a/app/src/main/assets/png_Flowers/11.jpg b/app/src/main/assets/png_Flowers/11.jpg new file mode 100644 index 0000000..e579753 Binary files /dev/null and b/app/src/main/assets/png_Flowers/11.jpg differ diff --git a/app/src/main/assets/png_Flowers/12.jpg b/app/src/main/assets/png_Flowers/12.jpg new file mode 100644 index 0000000..26092f9 Binary files /dev/null and b/app/src/main/assets/png_Flowers/12.jpg differ diff --git a/app/src/main/assets/png_Flowers/13.jpg b/app/src/main/assets/png_Flowers/13.jpg new file mode 100644 index 0000000..41d2df3 Binary files /dev/null and b/app/src/main/assets/png_Flowers/13.jpg differ diff --git a/app/src/main/assets/png_Flowers/14.jpg b/app/src/main/assets/png_Flowers/14.jpg new file mode 100644 index 0000000..c44df66 Binary files /dev/null and b/app/src/main/assets/png_Flowers/14.jpg differ diff --git a/app/src/main/assets/png_Flowers/15.jpg b/app/src/main/assets/png_Flowers/15.jpg new file mode 100644 index 0000000..ea34d36 Binary files /dev/null and b/app/src/main/assets/png_Flowers/15.jpg differ diff --git a/app/src/main/assets/png_Flowers/16.jpg b/app/src/main/assets/png_Flowers/16.jpg new file mode 100644 index 0000000..506beb1 Binary files /dev/null and b/app/src/main/assets/png_Flowers/16.jpg differ diff --git a/app/src/main/assets/png_Flowers/17.jpg b/app/src/main/assets/png_Flowers/17.jpg new file mode 100644 index 0000000..3764b21 Binary files /dev/null and b/app/src/main/assets/png_Flowers/17.jpg differ diff --git a/app/src/main/assets/png_Flowers/18.jpg b/app/src/main/assets/png_Flowers/18.jpg new file mode 100644 index 0000000..a759ab6 Binary files /dev/null and b/app/src/main/assets/png_Flowers/18.jpg differ diff --git a/app/src/main/assets/png_Flowers/19.jpg b/app/src/main/assets/png_Flowers/19.jpg new file mode 100644 index 0000000..e8c2a84 Binary files /dev/null and b/app/src/main/assets/png_Flowers/19.jpg differ diff --git a/app/src/main/assets/png_Flowers/2.jpg b/app/src/main/assets/png_Flowers/2.jpg new file mode 100644 index 0000000..fb7e56f Binary files /dev/null and b/app/src/main/assets/png_Flowers/2.jpg differ diff --git a/app/src/main/assets/png_Flowers/20.jpg b/app/src/main/assets/png_Flowers/20.jpg new file mode 100644 index 0000000..93e5408 Binary files /dev/null and b/app/src/main/assets/png_Flowers/20.jpg differ diff --git a/app/src/main/assets/png_Flowers/21.jpg b/app/src/main/assets/png_Flowers/21.jpg new file mode 100644 index 0000000..4fa3a77 Binary files /dev/null and b/app/src/main/assets/png_Flowers/21.jpg differ diff --git a/app/src/main/assets/png_Flowers/22.jpg b/app/src/main/assets/png_Flowers/22.jpg new file mode 100644 index 0000000..6f45df7 Binary files /dev/null and b/app/src/main/assets/png_Flowers/22.jpg differ diff --git a/app/src/main/assets/png_Flowers/23.jpg b/app/src/main/assets/png_Flowers/23.jpg new file mode 100644 index 0000000..46e806d Binary files /dev/null and b/app/src/main/assets/png_Flowers/23.jpg differ diff --git a/app/src/main/assets/png_Flowers/3.jpg b/app/src/main/assets/png_Flowers/3.jpg new file mode 100644 index 0000000..22a741c Binary files /dev/null and b/app/src/main/assets/png_Flowers/3.jpg differ diff --git a/app/src/main/assets/png_Flowers/4.jpg b/app/src/main/assets/png_Flowers/4.jpg new file mode 100644 index 0000000..dd0a30f Binary files /dev/null and b/app/src/main/assets/png_Flowers/4.jpg differ diff --git a/app/src/main/assets/png_Flowers/5.jpg b/app/src/main/assets/png_Flowers/5.jpg new file mode 100644 index 0000000..9dcb4f5 Binary files /dev/null and b/app/src/main/assets/png_Flowers/5.jpg differ diff --git a/app/src/main/assets/png_Flowers/6.jpg b/app/src/main/assets/png_Flowers/6.jpg new file mode 100644 index 0000000..cdf1f65 Binary files /dev/null and b/app/src/main/assets/png_Flowers/6.jpg differ diff --git a/app/src/main/assets/png_Flowers/7.jpg b/app/src/main/assets/png_Flowers/7.jpg new file mode 100644 index 0000000..caab990 Binary files /dev/null and b/app/src/main/assets/png_Flowers/7.jpg differ diff --git a/app/src/main/assets/png_Flowers/8.jpg b/app/src/main/assets/png_Flowers/8.jpg new file mode 100644 index 0000000..c43832b Binary files /dev/null and b/app/src/main/assets/png_Flowers/8.jpg differ diff --git a/app/src/main/assets/png_Flowers/9.jpg b/app/src/main/assets/png_Flowers/9.jpg new file mode 100644 index 0000000..5b78ee1 Binary files /dev/null and b/app/src/main/assets/png_Flowers/9.jpg differ diff --git a/app/src/main/assets/png_Fruits/1.jpg b/app/src/main/assets/png_Fruits/1.jpg new file mode 100644 index 0000000..767c0b4 Binary files /dev/null and b/app/src/main/assets/png_Fruits/1.jpg differ diff --git a/app/src/main/assets/png_Fruits/10.jpg b/app/src/main/assets/png_Fruits/10.jpg new file mode 100644 index 0000000..95bdbca Binary files /dev/null and b/app/src/main/assets/png_Fruits/10.jpg differ diff --git a/app/src/main/assets/png_Fruits/11.jpg b/app/src/main/assets/png_Fruits/11.jpg new file mode 100644 index 0000000..b0bb89a Binary files /dev/null and b/app/src/main/assets/png_Fruits/11.jpg differ diff --git a/app/src/main/assets/png_Fruits/12.jpg b/app/src/main/assets/png_Fruits/12.jpg new file mode 100644 index 0000000..c1d9bad Binary files /dev/null and b/app/src/main/assets/png_Fruits/12.jpg differ diff --git a/app/src/main/assets/png_Fruits/13.jpg b/app/src/main/assets/png_Fruits/13.jpg new file mode 100644 index 0000000..f44fb86 Binary files /dev/null and b/app/src/main/assets/png_Fruits/13.jpg differ diff --git a/app/src/main/assets/png_Fruits/14.jpg b/app/src/main/assets/png_Fruits/14.jpg new file mode 100644 index 0000000..459a60c Binary files /dev/null and b/app/src/main/assets/png_Fruits/14.jpg differ diff --git a/app/src/main/assets/png_Fruits/15.jpg b/app/src/main/assets/png_Fruits/15.jpg new file mode 100644 index 0000000..a4e4abe Binary files /dev/null and b/app/src/main/assets/png_Fruits/15.jpg differ diff --git a/app/src/main/assets/png_Fruits/16.jpg b/app/src/main/assets/png_Fruits/16.jpg new file mode 100644 index 0000000..33a7a9a Binary files /dev/null and b/app/src/main/assets/png_Fruits/16.jpg differ diff --git a/app/src/main/assets/png_Fruits/17.jpg b/app/src/main/assets/png_Fruits/17.jpg new file mode 100644 index 0000000..c193b1e Binary files /dev/null and b/app/src/main/assets/png_Fruits/17.jpg differ diff --git a/app/src/main/assets/png_Fruits/18.jpg b/app/src/main/assets/png_Fruits/18.jpg new file mode 100644 index 0000000..f0ca248 Binary files /dev/null and b/app/src/main/assets/png_Fruits/18.jpg differ diff --git a/app/src/main/assets/png_Fruits/19.jpg b/app/src/main/assets/png_Fruits/19.jpg new file mode 100644 index 0000000..d93dfde Binary files /dev/null and b/app/src/main/assets/png_Fruits/19.jpg differ diff --git a/app/src/main/assets/png_Fruits/2.jpg b/app/src/main/assets/png_Fruits/2.jpg new file mode 100644 index 0000000..b32f9f5 Binary files /dev/null and b/app/src/main/assets/png_Fruits/2.jpg differ diff --git a/app/src/main/assets/png_Fruits/20.jpg b/app/src/main/assets/png_Fruits/20.jpg new file mode 100644 index 0000000..cc3fe93 Binary files /dev/null and b/app/src/main/assets/png_Fruits/20.jpg differ diff --git a/app/src/main/assets/png_Fruits/21.jpg b/app/src/main/assets/png_Fruits/21.jpg new file mode 100644 index 0000000..c1813eb Binary files /dev/null and b/app/src/main/assets/png_Fruits/21.jpg differ diff --git a/app/src/main/assets/png_Fruits/22.jpg b/app/src/main/assets/png_Fruits/22.jpg new file mode 100644 index 0000000..47387e1 Binary files /dev/null and b/app/src/main/assets/png_Fruits/22.jpg differ diff --git a/app/src/main/assets/png_Fruits/23.jpg b/app/src/main/assets/png_Fruits/23.jpg new file mode 100644 index 0000000..7f173ec Binary files /dev/null and b/app/src/main/assets/png_Fruits/23.jpg differ diff --git a/app/src/main/assets/png_Fruits/24.jpg b/app/src/main/assets/png_Fruits/24.jpg new file mode 100644 index 0000000..a7ae235 Binary files /dev/null and b/app/src/main/assets/png_Fruits/24.jpg differ diff --git a/app/src/main/assets/png_Fruits/25.jpg b/app/src/main/assets/png_Fruits/25.jpg new file mode 100644 index 0000000..dd664bb Binary files /dev/null and b/app/src/main/assets/png_Fruits/25.jpg differ diff --git a/app/src/main/assets/png_Fruits/26.jpg b/app/src/main/assets/png_Fruits/26.jpg new file mode 100644 index 0000000..c8e4723 Binary files /dev/null and b/app/src/main/assets/png_Fruits/26.jpg differ diff --git a/app/src/main/assets/png_Fruits/27.jpg b/app/src/main/assets/png_Fruits/27.jpg new file mode 100644 index 0000000..816337d Binary files /dev/null and b/app/src/main/assets/png_Fruits/27.jpg differ diff --git a/app/src/main/assets/png_Fruits/28.jpg b/app/src/main/assets/png_Fruits/28.jpg new file mode 100644 index 0000000..29973d5 Binary files /dev/null and b/app/src/main/assets/png_Fruits/28.jpg differ diff --git a/app/src/main/assets/png_Fruits/29.jpg b/app/src/main/assets/png_Fruits/29.jpg new file mode 100644 index 0000000..4f0750f Binary files /dev/null and b/app/src/main/assets/png_Fruits/29.jpg differ diff --git a/app/src/main/assets/png_Fruits/3.jpg b/app/src/main/assets/png_Fruits/3.jpg new file mode 100644 index 0000000..f57893b Binary files /dev/null and b/app/src/main/assets/png_Fruits/3.jpg differ diff --git a/app/src/main/assets/png_Fruits/30.jpg b/app/src/main/assets/png_Fruits/30.jpg new file mode 100644 index 0000000..cfd117a Binary files /dev/null and b/app/src/main/assets/png_Fruits/30.jpg differ diff --git a/app/src/main/assets/png_Fruits/31.jpg b/app/src/main/assets/png_Fruits/31.jpg new file mode 100644 index 0000000..b59a7c5 Binary files /dev/null and b/app/src/main/assets/png_Fruits/31.jpg differ diff --git a/app/src/main/assets/png_Fruits/32.jpg b/app/src/main/assets/png_Fruits/32.jpg new file mode 100644 index 0000000..8f70790 Binary files /dev/null and b/app/src/main/assets/png_Fruits/32.jpg differ diff --git a/app/src/main/assets/png_Fruits/33.jpg b/app/src/main/assets/png_Fruits/33.jpg new file mode 100644 index 0000000..373b142 Binary files /dev/null and b/app/src/main/assets/png_Fruits/33.jpg differ diff --git a/app/src/main/assets/png_Fruits/34.jpg b/app/src/main/assets/png_Fruits/34.jpg new file mode 100644 index 0000000..c5beb91 Binary files /dev/null and b/app/src/main/assets/png_Fruits/34.jpg differ diff --git a/app/src/main/assets/png_Fruits/35.jpg b/app/src/main/assets/png_Fruits/35.jpg new file mode 100644 index 0000000..79cd667 Binary files /dev/null and b/app/src/main/assets/png_Fruits/35.jpg differ diff --git a/app/src/main/assets/png_Fruits/36.jpg b/app/src/main/assets/png_Fruits/36.jpg new file mode 100644 index 0000000..c0cb185 Binary files /dev/null and b/app/src/main/assets/png_Fruits/36.jpg differ diff --git a/app/src/main/assets/png_Fruits/37.jpg b/app/src/main/assets/png_Fruits/37.jpg new file mode 100644 index 0000000..ba1b245 Binary files /dev/null and b/app/src/main/assets/png_Fruits/37.jpg differ diff --git a/app/src/main/assets/png_Fruits/38.jpg b/app/src/main/assets/png_Fruits/38.jpg new file mode 100644 index 0000000..c7eccb8 Binary files /dev/null and b/app/src/main/assets/png_Fruits/38.jpg differ diff --git a/app/src/main/assets/png_Fruits/39.jpg b/app/src/main/assets/png_Fruits/39.jpg new file mode 100644 index 0000000..bc95aaa Binary files /dev/null and b/app/src/main/assets/png_Fruits/39.jpg differ diff --git a/app/src/main/assets/png_Fruits/4.jpg b/app/src/main/assets/png_Fruits/4.jpg new file mode 100644 index 0000000..2d7465d Binary files /dev/null and b/app/src/main/assets/png_Fruits/4.jpg differ diff --git a/app/src/main/assets/png_Fruits/5.jpg b/app/src/main/assets/png_Fruits/5.jpg new file mode 100644 index 0000000..8ed633f Binary files /dev/null and b/app/src/main/assets/png_Fruits/5.jpg differ diff --git a/app/src/main/assets/png_Fruits/6.jpg b/app/src/main/assets/png_Fruits/6.jpg new file mode 100644 index 0000000..06ce330 Binary files /dev/null and b/app/src/main/assets/png_Fruits/6.jpg differ diff --git a/app/src/main/assets/png_Fruits/7.jpg b/app/src/main/assets/png_Fruits/7.jpg new file mode 100644 index 0000000..6153618 Binary files /dev/null and b/app/src/main/assets/png_Fruits/7.jpg differ diff --git a/app/src/main/assets/png_Fruits/8.jpg b/app/src/main/assets/png_Fruits/8.jpg new file mode 100644 index 0000000..e333f0f Binary files /dev/null and b/app/src/main/assets/png_Fruits/8.jpg differ diff --git a/app/src/main/assets/png_Fruits/9.jpg b/app/src/main/assets/png_Fruits/9.jpg new file mode 100644 index 0000000..d549d15 Binary files /dev/null and b/app/src/main/assets/png_Fruits/9.jpg differ diff --git a/app/src/main/assets/png_General/1.jpg b/app/src/main/assets/png_General/1.jpg new file mode 100644 index 0000000..eb7c14b Binary files /dev/null and b/app/src/main/assets/png_General/1.jpg differ diff --git a/app/src/main/assets/png_General/10.jpg b/app/src/main/assets/png_General/10.jpg new file mode 100644 index 0000000..eacd298 Binary files /dev/null and b/app/src/main/assets/png_General/10.jpg differ diff --git a/app/src/main/assets/png_General/11.jpg b/app/src/main/assets/png_General/11.jpg new file mode 100644 index 0000000..273a876 Binary files /dev/null and b/app/src/main/assets/png_General/11.jpg differ diff --git a/app/src/main/assets/png_General/12.jpg b/app/src/main/assets/png_General/12.jpg new file mode 100644 index 0000000..5d786c5 Binary files /dev/null and b/app/src/main/assets/png_General/12.jpg differ diff --git a/app/src/main/assets/png_General/13.jpg b/app/src/main/assets/png_General/13.jpg new file mode 100644 index 0000000..486441a Binary files /dev/null and b/app/src/main/assets/png_General/13.jpg differ diff --git a/app/src/main/assets/png_General/14.jpg b/app/src/main/assets/png_General/14.jpg new file mode 100644 index 0000000..c36516b Binary files /dev/null and b/app/src/main/assets/png_General/14.jpg differ diff --git a/app/src/main/assets/png_General/15.jpg b/app/src/main/assets/png_General/15.jpg new file mode 100644 index 0000000..9d19fdf Binary files /dev/null and b/app/src/main/assets/png_General/15.jpg differ diff --git a/app/src/main/assets/png_General/2.jpg b/app/src/main/assets/png_General/2.jpg new file mode 100644 index 0000000..090d5d5 Binary files /dev/null and b/app/src/main/assets/png_General/2.jpg differ diff --git a/app/src/main/assets/png_General/3.jpg b/app/src/main/assets/png_General/3.jpg new file mode 100644 index 0000000..a17f1b2 Binary files /dev/null and b/app/src/main/assets/png_General/3.jpg differ diff --git a/app/src/main/assets/png_General/4.jpg b/app/src/main/assets/png_General/4.jpg new file mode 100644 index 0000000..2f4d8a2 Binary files /dev/null and b/app/src/main/assets/png_General/4.jpg differ diff --git a/app/src/main/assets/png_General/5.jpg b/app/src/main/assets/png_General/5.jpg new file mode 100644 index 0000000..8ac1cdb Binary files /dev/null and b/app/src/main/assets/png_General/5.jpg differ diff --git a/app/src/main/assets/png_General/6.jpg b/app/src/main/assets/png_General/6.jpg new file mode 100644 index 0000000..95cc582 Binary files /dev/null and b/app/src/main/assets/png_General/6.jpg differ diff --git a/app/src/main/assets/png_General/7.jpg b/app/src/main/assets/png_General/7.jpg new file mode 100644 index 0000000..91cbcfd Binary files /dev/null and b/app/src/main/assets/png_General/7.jpg differ diff --git a/app/src/main/assets/png_General/8.jpg b/app/src/main/assets/png_General/8.jpg new file mode 100644 index 0000000..af8da73 Binary files /dev/null and b/app/src/main/assets/png_General/8.jpg differ diff --git a/app/src/main/assets/png_General/9.jpg b/app/src/main/assets/png_General/9.jpg new file mode 100644 index 0000000..d5cfb72 Binary files /dev/null and b/app/src/main/assets/png_General/9.jpg differ diff --git a/app/src/main/assets/png_Mehndi/1.jpg b/app/src/main/assets/png_Mehndi/1.jpg new file mode 100644 index 0000000..8dd8843 Binary files /dev/null and b/app/src/main/assets/png_Mehndi/1.jpg differ diff --git a/app/src/main/assets/png_Mehndi/10.jpg b/app/src/main/assets/png_Mehndi/10.jpg new file mode 100644 index 0000000..2432a79 Binary files /dev/null and b/app/src/main/assets/png_Mehndi/10.jpg differ diff --git a/app/src/main/assets/png_Mehndi/11.jpg b/app/src/main/assets/png_Mehndi/11.jpg new file mode 100644 index 0000000..aba85bf Binary files /dev/null and b/app/src/main/assets/png_Mehndi/11.jpg differ diff --git a/app/src/main/assets/png_Mehndi/12.jpg b/app/src/main/assets/png_Mehndi/12.jpg new file mode 100644 index 0000000..f71ae22 Binary files /dev/null and b/app/src/main/assets/png_Mehndi/12.jpg differ diff --git a/app/src/main/assets/png_Mehndi/2.jpg b/app/src/main/assets/png_Mehndi/2.jpg new file mode 100644 index 0000000..0f56bf7 Binary files /dev/null and b/app/src/main/assets/png_Mehndi/2.jpg differ diff --git a/app/src/main/assets/png_Mehndi/3.jpg b/app/src/main/assets/png_Mehndi/3.jpg new file mode 100644 index 0000000..2bc7b69 Binary files /dev/null and b/app/src/main/assets/png_Mehndi/3.jpg differ diff --git a/app/src/main/assets/png_Mehndi/4.jpg b/app/src/main/assets/png_Mehndi/4.jpg new file mode 100644 index 0000000..6fc3f70 Binary files /dev/null and b/app/src/main/assets/png_Mehndi/4.jpg differ diff --git a/app/src/main/assets/png_Mehndi/5.jpg b/app/src/main/assets/png_Mehndi/5.jpg new file mode 100644 index 0000000..dccb5cf Binary files /dev/null and b/app/src/main/assets/png_Mehndi/5.jpg differ diff --git a/app/src/main/assets/png_Mehndi/6.jpg b/app/src/main/assets/png_Mehndi/6.jpg new file mode 100644 index 0000000..4e052dd Binary files /dev/null and b/app/src/main/assets/png_Mehndi/6.jpg differ diff --git a/app/src/main/assets/png_Mehndi/7.jpg b/app/src/main/assets/png_Mehndi/7.jpg new file mode 100644 index 0000000..021e789 Binary files /dev/null and b/app/src/main/assets/png_Mehndi/7.jpg differ diff --git a/app/src/main/assets/png_Mehndi/8.jpg b/app/src/main/assets/png_Mehndi/8.jpg new file mode 100644 index 0000000..dd45b50 Binary files /dev/null and b/app/src/main/assets/png_Mehndi/8.jpg differ diff --git a/app/src/main/assets/png_Mehndi/9.jpg b/app/src/main/assets/png_Mehndi/9.jpg new file mode 100644 index 0000000..6ff2300 Binary files /dev/null and b/app/src/main/assets/png_Mehndi/9.jpg differ diff --git a/app/src/main/assets/png_Nature/1.jpg b/app/src/main/assets/png_Nature/1.jpg new file mode 100644 index 0000000..22c00e3 Binary files /dev/null and b/app/src/main/assets/png_Nature/1.jpg differ diff --git a/app/src/main/assets/png_Nature/10.jpg b/app/src/main/assets/png_Nature/10.jpg new file mode 100644 index 0000000..65aab09 Binary files /dev/null and b/app/src/main/assets/png_Nature/10.jpg differ diff --git a/app/src/main/assets/png_Nature/11.jpg b/app/src/main/assets/png_Nature/11.jpg new file mode 100644 index 0000000..23c6653 Binary files /dev/null and b/app/src/main/assets/png_Nature/11.jpg differ diff --git a/app/src/main/assets/png_Nature/12.jpg b/app/src/main/assets/png_Nature/12.jpg new file mode 100644 index 0000000..36e1835 Binary files /dev/null and b/app/src/main/assets/png_Nature/12.jpg differ diff --git a/app/src/main/assets/png_Nature/13.jpg b/app/src/main/assets/png_Nature/13.jpg new file mode 100644 index 0000000..5816b61 Binary files /dev/null and b/app/src/main/assets/png_Nature/13.jpg differ diff --git a/app/src/main/assets/png_Nature/14.jpg b/app/src/main/assets/png_Nature/14.jpg new file mode 100644 index 0000000..b4e5dc6 Binary files /dev/null and b/app/src/main/assets/png_Nature/14.jpg differ diff --git a/app/src/main/assets/png_Nature/15.jpg b/app/src/main/assets/png_Nature/15.jpg new file mode 100644 index 0000000..5424ac4 Binary files /dev/null and b/app/src/main/assets/png_Nature/15.jpg differ diff --git a/app/src/main/assets/png_Nature/16.jpg b/app/src/main/assets/png_Nature/16.jpg new file mode 100644 index 0000000..fd00791 Binary files /dev/null and b/app/src/main/assets/png_Nature/16.jpg differ diff --git a/app/src/main/assets/png_Nature/17.jpg b/app/src/main/assets/png_Nature/17.jpg new file mode 100644 index 0000000..38410e8 Binary files /dev/null and b/app/src/main/assets/png_Nature/17.jpg differ diff --git a/app/src/main/assets/png_Nature/18.jpg b/app/src/main/assets/png_Nature/18.jpg new file mode 100644 index 0000000..5ae5028 Binary files /dev/null and b/app/src/main/assets/png_Nature/18.jpg differ diff --git a/app/src/main/assets/png_Nature/19.jpg b/app/src/main/assets/png_Nature/19.jpg new file mode 100644 index 0000000..e49b4f1 Binary files /dev/null and b/app/src/main/assets/png_Nature/19.jpg differ diff --git a/app/src/main/assets/png_Nature/2.jpg b/app/src/main/assets/png_Nature/2.jpg new file mode 100644 index 0000000..3b5ec4c Binary files /dev/null and b/app/src/main/assets/png_Nature/2.jpg differ diff --git a/app/src/main/assets/png_Nature/20.jpg b/app/src/main/assets/png_Nature/20.jpg new file mode 100644 index 0000000..cc94724 Binary files /dev/null and b/app/src/main/assets/png_Nature/20.jpg differ diff --git a/app/src/main/assets/png_Nature/21.jpg b/app/src/main/assets/png_Nature/21.jpg new file mode 100644 index 0000000..dfa6c09 Binary files /dev/null and b/app/src/main/assets/png_Nature/21.jpg differ diff --git a/app/src/main/assets/png_Nature/22.jpg b/app/src/main/assets/png_Nature/22.jpg new file mode 100644 index 0000000..c05e638 Binary files /dev/null and b/app/src/main/assets/png_Nature/22.jpg differ diff --git a/app/src/main/assets/png_Nature/23.jpg b/app/src/main/assets/png_Nature/23.jpg new file mode 100644 index 0000000..6f932ec Binary files /dev/null and b/app/src/main/assets/png_Nature/23.jpg differ diff --git a/app/src/main/assets/png_Nature/3.jpg b/app/src/main/assets/png_Nature/3.jpg new file mode 100644 index 0000000..1423546 Binary files /dev/null and b/app/src/main/assets/png_Nature/3.jpg differ diff --git a/app/src/main/assets/png_Nature/4.jpg b/app/src/main/assets/png_Nature/4.jpg new file mode 100644 index 0000000..5499510 Binary files /dev/null and b/app/src/main/assets/png_Nature/4.jpg differ diff --git a/app/src/main/assets/png_Nature/5.jpg b/app/src/main/assets/png_Nature/5.jpg new file mode 100644 index 0000000..434261a Binary files /dev/null and b/app/src/main/assets/png_Nature/5.jpg differ diff --git a/app/src/main/assets/png_Nature/6.jpg b/app/src/main/assets/png_Nature/6.jpg new file mode 100644 index 0000000..f50166b Binary files /dev/null and b/app/src/main/assets/png_Nature/6.jpg differ diff --git a/app/src/main/assets/png_Nature/7.jpg b/app/src/main/assets/png_Nature/7.jpg new file mode 100644 index 0000000..96e178c Binary files /dev/null and b/app/src/main/assets/png_Nature/7.jpg differ diff --git a/app/src/main/assets/png_Nature/8.jpg b/app/src/main/assets/png_Nature/8.jpg new file mode 100644 index 0000000..c68f4f1 Binary files /dev/null and b/app/src/main/assets/png_Nature/8.jpg differ diff --git a/app/src/main/assets/png_Nature/9.jpg b/app/src/main/assets/png_Nature/9.jpg new file mode 100644 index 0000000..6b8ccb4 Binary files /dev/null and b/app/src/main/assets/png_Nature/9.jpg differ diff --git a/app/src/main/assets/png_Properties/1.jpg b/app/src/main/assets/png_Properties/1.jpg new file mode 100644 index 0000000..3289a38 Binary files /dev/null and b/app/src/main/assets/png_Properties/1.jpg differ diff --git a/app/src/main/assets/png_Properties/10.jpg b/app/src/main/assets/png_Properties/10.jpg new file mode 100644 index 0000000..b065539 Binary files /dev/null and b/app/src/main/assets/png_Properties/10.jpg differ diff --git a/app/src/main/assets/png_Properties/11.jpg b/app/src/main/assets/png_Properties/11.jpg new file mode 100644 index 0000000..12d28b1 Binary files /dev/null and b/app/src/main/assets/png_Properties/11.jpg differ diff --git a/app/src/main/assets/png_Properties/12.jpg b/app/src/main/assets/png_Properties/12.jpg new file mode 100644 index 0000000..182879f Binary files /dev/null and b/app/src/main/assets/png_Properties/12.jpg differ diff --git a/app/src/main/assets/png_Properties/13.jpg b/app/src/main/assets/png_Properties/13.jpg new file mode 100644 index 0000000..4263530 Binary files /dev/null and b/app/src/main/assets/png_Properties/13.jpg differ diff --git a/app/src/main/assets/png_Properties/14.jpg b/app/src/main/assets/png_Properties/14.jpg new file mode 100644 index 0000000..42e4ab3 Binary files /dev/null and b/app/src/main/assets/png_Properties/14.jpg differ diff --git a/app/src/main/assets/png_Properties/15.jpg b/app/src/main/assets/png_Properties/15.jpg new file mode 100644 index 0000000..b529436 Binary files /dev/null and b/app/src/main/assets/png_Properties/15.jpg differ diff --git a/app/src/main/assets/png_Properties/16.jpg b/app/src/main/assets/png_Properties/16.jpg new file mode 100644 index 0000000..85caef0 Binary files /dev/null and b/app/src/main/assets/png_Properties/16.jpg differ diff --git a/app/src/main/assets/png_Properties/17.jpg b/app/src/main/assets/png_Properties/17.jpg new file mode 100644 index 0000000..6295f58 Binary files /dev/null and b/app/src/main/assets/png_Properties/17.jpg differ diff --git a/app/src/main/assets/png_Properties/18.jpg b/app/src/main/assets/png_Properties/18.jpg new file mode 100644 index 0000000..f8e4e87 Binary files /dev/null and b/app/src/main/assets/png_Properties/18.jpg differ diff --git a/app/src/main/assets/png_Properties/19.jpg b/app/src/main/assets/png_Properties/19.jpg new file mode 100644 index 0000000..c476493 Binary files /dev/null and b/app/src/main/assets/png_Properties/19.jpg differ diff --git a/app/src/main/assets/png_Properties/2.jpg b/app/src/main/assets/png_Properties/2.jpg new file mode 100644 index 0000000..084fa51 Binary files /dev/null and b/app/src/main/assets/png_Properties/2.jpg differ diff --git a/app/src/main/assets/png_Properties/3.jpg b/app/src/main/assets/png_Properties/3.jpg new file mode 100644 index 0000000..4ee71c4 Binary files /dev/null and b/app/src/main/assets/png_Properties/3.jpg differ diff --git a/app/src/main/assets/png_Properties/4.jpg b/app/src/main/assets/png_Properties/4.jpg new file mode 100644 index 0000000..25912f1 Binary files /dev/null and b/app/src/main/assets/png_Properties/4.jpg differ diff --git a/app/src/main/assets/png_Properties/5.jpg b/app/src/main/assets/png_Properties/5.jpg new file mode 100644 index 0000000..77c2aa8 Binary files /dev/null and b/app/src/main/assets/png_Properties/5.jpg differ diff --git a/app/src/main/assets/png_Properties/6.jpg b/app/src/main/assets/png_Properties/6.jpg new file mode 100644 index 0000000..75b1e32 Binary files /dev/null and b/app/src/main/assets/png_Properties/6.jpg differ diff --git a/app/src/main/assets/png_Properties/7.jpg b/app/src/main/assets/png_Properties/7.jpg new file mode 100644 index 0000000..f059989 Binary files /dev/null and b/app/src/main/assets/png_Properties/7.jpg differ diff --git a/app/src/main/assets/png_Properties/8.jpg b/app/src/main/assets/png_Properties/8.jpg new file mode 100644 index 0000000..6be97eb Binary files /dev/null and b/app/src/main/assets/png_Properties/8.jpg differ diff --git a/app/src/main/assets/png_Properties/9.jpg b/app/src/main/assets/png_Properties/9.jpg new file mode 100644 index 0000000..626cab9 Binary files /dev/null and b/app/src/main/assets/png_Properties/9.jpg differ diff --git a/app/src/main/assets/png_Rangoli/1.jpg b/app/src/main/assets/png_Rangoli/1.jpg new file mode 100644 index 0000000..e628714 Binary files /dev/null and b/app/src/main/assets/png_Rangoli/1.jpg differ diff --git a/app/src/main/assets/png_Rangoli/10.jpg b/app/src/main/assets/png_Rangoli/10.jpg new file mode 100644 index 0000000..f6e9d09 Binary files /dev/null and b/app/src/main/assets/png_Rangoli/10.jpg differ diff --git a/app/src/main/assets/png_Rangoli/13.jpg b/app/src/main/assets/png_Rangoli/13.jpg new file mode 100644 index 0000000..9741d57 Binary files /dev/null and b/app/src/main/assets/png_Rangoli/13.jpg differ diff --git a/app/src/main/assets/png_Rangoli/14.jpg b/app/src/main/assets/png_Rangoli/14.jpg new file mode 100644 index 0000000..3ca4970 Binary files /dev/null and b/app/src/main/assets/png_Rangoli/14.jpg differ diff --git a/app/src/main/assets/png_Rangoli/15.jpg b/app/src/main/assets/png_Rangoli/15.jpg new file mode 100644 index 0000000..98abac3 Binary files /dev/null and b/app/src/main/assets/png_Rangoli/15.jpg differ diff --git a/app/src/main/assets/png_Rangoli/16.jpg b/app/src/main/assets/png_Rangoli/16.jpg new file mode 100644 index 0000000..150dfdc Binary files /dev/null and b/app/src/main/assets/png_Rangoli/16.jpg differ diff --git a/app/src/main/assets/png_Rangoli/17.jpg b/app/src/main/assets/png_Rangoli/17.jpg new file mode 100644 index 0000000..4127115 Binary files /dev/null and b/app/src/main/assets/png_Rangoli/17.jpg differ diff --git a/app/src/main/assets/png_Rangoli/18.jpg b/app/src/main/assets/png_Rangoli/18.jpg new file mode 100644 index 0000000..6ae96e9 Binary files /dev/null and b/app/src/main/assets/png_Rangoli/18.jpg differ diff --git a/app/src/main/assets/png_Rangoli/19.jpg b/app/src/main/assets/png_Rangoli/19.jpg new file mode 100644 index 0000000..ffcbd6a Binary files /dev/null and b/app/src/main/assets/png_Rangoli/19.jpg differ diff --git a/app/src/main/assets/png_Rangoli/2.jpg b/app/src/main/assets/png_Rangoli/2.jpg new file mode 100644 index 0000000..7329109 Binary files /dev/null and b/app/src/main/assets/png_Rangoli/2.jpg differ diff --git a/app/src/main/assets/png_Rangoli/20.jpg b/app/src/main/assets/png_Rangoli/20.jpg new file mode 100644 index 0000000..b7be138 Binary files /dev/null and b/app/src/main/assets/png_Rangoli/20.jpg differ diff --git a/app/src/main/assets/png_Rangoli/21.jpg b/app/src/main/assets/png_Rangoli/21.jpg new file mode 100644 index 0000000..eaa5fdf Binary files /dev/null and b/app/src/main/assets/png_Rangoli/21.jpg differ diff --git a/app/src/main/assets/png_Rangoli/22.jpg b/app/src/main/assets/png_Rangoli/22.jpg new file mode 100644 index 0000000..28aca48 Binary files /dev/null and b/app/src/main/assets/png_Rangoli/22.jpg differ diff --git a/app/src/main/assets/png_Rangoli/23.jpg b/app/src/main/assets/png_Rangoli/23.jpg new file mode 100644 index 0000000..057d2d4 Binary files /dev/null and b/app/src/main/assets/png_Rangoli/23.jpg differ diff --git a/app/src/main/assets/png_Rangoli/24.jpg b/app/src/main/assets/png_Rangoli/24.jpg new file mode 100644 index 0000000..e933061 Binary files /dev/null and b/app/src/main/assets/png_Rangoli/24.jpg differ diff --git a/app/src/main/assets/png_Rangoli/25.jpg b/app/src/main/assets/png_Rangoli/25.jpg new file mode 100644 index 0000000..569a74c Binary files /dev/null and b/app/src/main/assets/png_Rangoli/25.jpg differ diff --git a/app/src/main/assets/png_Rangoli/3.jpg b/app/src/main/assets/png_Rangoli/3.jpg new file mode 100644 index 0000000..569342c Binary files /dev/null and b/app/src/main/assets/png_Rangoli/3.jpg differ diff --git a/app/src/main/assets/png_Rangoli/4.jpg b/app/src/main/assets/png_Rangoli/4.jpg new file mode 100644 index 0000000..7c5d0de Binary files /dev/null and b/app/src/main/assets/png_Rangoli/4.jpg differ diff --git a/app/src/main/assets/png_Rangoli/5.jpg b/app/src/main/assets/png_Rangoli/5.jpg new file mode 100644 index 0000000..5a3228f Binary files /dev/null and b/app/src/main/assets/png_Rangoli/5.jpg differ diff --git a/app/src/main/assets/png_Rangoli/6.jpg b/app/src/main/assets/png_Rangoli/6.jpg new file mode 100644 index 0000000..270f078 Binary files /dev/null and b/app/src/main/assets/png_Rangoli/6.jpg differ diff --git a/app/src/main/assets/png_Rangoli/7.jpg b/app/src/main/assets/png_Rangoli/7.jpg new file mode 100644 index 0000000..241beac Binary files /dev/null and b/app/src/main/assets/png_Rangoli/7.jpg differ diff --git a/app/src/main/assets/png_Rangoli/8.jpg b/app/src/main/assets/png_Rangoli/8.jpg new file mode 100644 index 0000000..c62e0d7 Binary files /dev/null and b/app/src/main/assets/png_Rangoli/8.jpg differ diff --git a/app/src/main/assets/png_Rangoli/9.jpg b/app/src/main/assets/png_Rangoli/9.jpg new file mode 100644 index 0000000..bcd14a7 Binary files /dev/null and b/app/src/main/assets/png_Rangoli/9.jpg differ diff --git a/app/src/main/assets/png_Sports/1.jpg b/app/src/main/assets/png_Sports/1.jpg new file mode 100644 index 0000000..cd1cb09 Binary files /dev/null and b/app/src/main/assets/png_Sports/1.jpg differ diff --git a/app/src/main/assets/png_Sports/10.jpg b/app/src/main/assets/png_Sports/10.jpg new file mode 100644 index 0000000..2ec81a5 Binary files /dev/null and b/app/src/main/assets/png_Sports/10.jpg differ diff --git a/app/src/main/assets/png_Sports/11.jpg b/app/src/main/assets/png_Sports/11.jpg new file mode 100644 index 0000000..f00ecb5 Binary files /dev/null and b/app/src/main/assets/png_Sports/11.jpg differ diff --git a/app/src/main/assets/png_Sports/12.jpg b/app/src/main/assets/png_Sports/12.jpg new file mode 100644 index 0000000..b004929 Binary files /dev/null and b/app/src/main/assets/png_Sports/12.jpg differ diff --git a/app/src/main/assets/png_Sports/13.jpg b/app/src/main/assets/png_Sports/13.jpg new file mode 100644 index 0000000..73fa886 Binary files /dev/null and b/app/src/main/assets/png_Sports/13.jpg differ diff --git a/app/src/main/assets/png_Sports/14.jpg b/app/src/main/assets/png_Sports/14.jpg new file mode 100644 index 0000000..3d9069e Binary files /dev/null and b/app/src/main/assets/png_Sports/14.jpg differ diff --git a/app/src/main/assets/png_Sports/15.jpg b/app/src/main/assets/png_Sports/15.jpg new file mode 100644 index 0000000..a090c83 Binary files /dev/null and b/app/src/main/assets/png_Sports/15.jpg differ diff --git a/app/src/main/assets/png_Sports/16.jpg b/app/src/main/assets/png_Sports/16.jpg new file mode 100644 index 0000000..185d6e3 Binary files /dev/null and b/app/src/main/assets/png_Sports/16.jpg differ diff --git a/app/src/main/assets/png_Sports/17.jpg b/app/src/main/assets/png_Sports/17.jpg new file mode 100644 index 0000000..b8193fa Binary files /dev/null and b/app/src/main/assets/png_Sports/17.jpg differ diff --git a/app/src/main/assets/png_Sports/18.jpg b/app/src/main/assets/png_Sports/18.jpg new file mode 100644 index 0000000..ba4fcea Binary files /dev/null and b/app/src/main/assets/png_Sports/18.jpg differ diff --git a/app/src/main/assets/png_Sports/19.jpg b/app/src/main/assets/png_Sports/19.jpg new file mode 100644 index 0000000..617c2af Binary files /dev/null and b/app/src/main/assets/png_Sports/19.jpg differ diff --git a/app/src/main/assets/png_Sports/2.jpg b/app/src/main/assets/png_Sports/2.jpg new file mode 100644 index 0000000..59890e5 Binary files /dev/null and b/app/src/main/assets/png_Sports/2.jpg differ diff --git a/app/src/main/assets/png_Sports/20.jpg b/app/src/main/assets/png_Sports/20.jpg new file mode 100644 index 0000000..4032ff4 Binary files /dev/null and b/app/src/main/assets/png_Sports/20.jpg differ diff --git a/app/src/main/assets/png_Sports/21.jpg b/app/src/main/assets/png_Sports/21.jpg new file mode 100644 index 0000000..23979ba Binary files /dev/null and b/app/src/main/assets/png_Sports/21.jpg differ diff --git a/app/src/main/assets/png_Sports/22.jpg b/app/src/main/assets/png_Sports/22.jpg new file mode 100644 index 0000000..c61e91e Binary files /dev/null and b/app/src/main/assets/png_Sports/22.jpg differ diff --git a/app/src/main/assets/png_Sports/23.jpg b/app/src/main/assets/png_Sports/23.jpg new file mode 100644 index 0000000..7bf0806 Binary files /dev/null and b/app/src/main/assets/png_Sports/23.jpg differ diff --git a/app/src/main/assets/png_Sports/24.jpg b/app/src/main/assets/png_Sports/24.jpg new file mode 100644 index 0000000..23cbc17 Binary files /dev/null and b/app/src/main/assets/png_Sports/24.jpg differ diff --git a/app/src/main/assets/png_Sports/25.jpg b/app/src/main/assets/png_Sports/25.jpg new file mode 100644 index 0000000..06d992e Binary files /dev/null and b/app/src/main/assets/png_Sports/25.jpg differ diff --git a/app/src/main/assets/png_Sports/26.jpg b/app/src/main/assets/png_Sports/26.jpg new file mode 100644 index 0000000..26af61e Binary files /dev/null and b/app/src/main/assets/png_Sports/26.jpg differ diff --git a/app/src/main/assets/png_Sports/27.jpg b/app/src/main/assets/png_Sports/27.jpg new file mode 100644 index 0000000..91bf104 Binary files /dev/null and b/app/src/main/assets/png_Sports/27.jpg differ diff --git a/app/src/main/assets/png_Sports/28.jpg b/app/src/main/assets/png_Sports/28.jpg new file mode 100644 index 0000000..8c790e7 Binary files /dev/null and b/app/src/main/assets/png_Sports/28.jpg differ diff --git a/app/src/main/assets/png_Sports/3.jpg b/app/src/main/assets/png_Sports/3.jpg new file mode 100644 index 0000000..8315af5 Binary files /dev/null and b/app/src/main/assets/png_Sports/3.jpg differ diff --git a/app/src/main/assets/png_Sports/4.jpg b/app/src/main/assets/png_Sports/4.jpg new file mode 100644 index 0000000..8070e68 Binary files /dev/null and b/app/src/main/assets/png_Sports/4.jpg differ diff --git a/app/src/main/assets/png_Sports/5.jpg b/app/src/main/assets/png_Sports/5.jpg new file mode 100644 index 0000000..5bcb837 Binary files /dev/null and b/app/src/main/assets/png_Sports/5.jpg differ diff --git a/app/src/main/assets/png_Sports/6.jpg b/app/src/main/assets/png_Sports/6.jpg new file mode 100644 index 0000000..038521f Binary files /dev/null and b/app/src/main/assets/png_Sports/6.jpg differ diff --git a/app/src/main/assets/png_Sports/7.jpg b/app/src/main/assets/png_Sports/7.jpg new file mode 100644 index 0000000..73bf0de Binary files /dev/null and b/app/src/main/assets/png_Sports/7.jpg differ diff --git a/app/src/main/assets/png_Sports/8.jpg b/app/src/main/assets/png_Sports/8.jpg new file mode 100644 index 0000000..6c565f8 Binary files /dev/null and b/app/src/main/assets/png_Sports/8.jpg differ diff --git a/app/src/main/assets/png_Sports/9.jpg b/app/src/main/assets/png_Sports/9.jpg new file mode 100644 index 0000000..130cd94 Binary files /dev/null and b/app/src/main/assets/png_Sports/9.jpg differ diff --git a/app/src/main/assets/png_Vehicles/1.jpg b/app/src/main/assets/png_Vehicles/1.jpg new file mode 100644 index 0000000..da449f7 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/1.jpg differ diff --git a/app/src/main/assets/png_Vehicles/10.jpg b/app/src/main/assets/png_Vehicles/10.jpg new file mode 100644 index 0000000..0084613 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/10.jpg differ diff --git a/app/src/main/assets/png_Vehicles/11.jpg b/app/src/main/assets/png_Vehicles/11.jpg new file mode 100644 index 0000000..ba5f4d4 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/11.jpg differ diff --git a/app/src/main/assets/png_Vehicles/12.jpg b/app/src/main/assets/png_Vehicles/12.jpg new file mode 100644 index 0000000..32c7908 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/12.jpg differ diff --git a/app/src/main/assets/png_Vehicles/13.jpg b/app/src/main/assets/png_Vehicles/13.jpg new file mode 100644 index 0000000..dd47e76 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/13.jpg differ diff --git a/app/src/main/assets/png_Vehicles/14.jpg b/app/src/main/assets/png_Vehicles/14.jpg new file mode 100644 index 0000000..8b886e6 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/14.jpg differ diff --git a/app/src/main/assets/png_Vehicles/15.jpg b/app/src/main/assets/png_Vehicles/15.jpg new file mode 100644 index 0000000..cf78752 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/15.jpg differ diff --git a/app/src/main/assets/png_Vehicles/16.jpg b/app/src/main/assets/png_Vehicles/16.jpg new file mode 100644 index 0000000..87f8a19 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/16.jpg differ diff --git a/app/src/main/assets/png_Vehicles/17.jpg b/app/src/main/assets/png_Vehicles/17.jpg new file mode 100644 index 0000000..011b53b Binary files /dev/null and b/app/src/main/assets/png_Vehicles/17.jpg differ diff --git a/app/src/main/assets/png_Vehicles/18.jpg b/app/src/main/assets/png_Vehicles/18.jpg new file mode 100644 index 0000000..c4433c8 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/18.jpg differ diff --git a/app/src/main/assets/png_Vehicles/19.jpg b/app/src/main/assets/png_Vehicles/19.jpg new file mode 100644 index 0000000..b9361f1 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/19.jpg differ diff --git a/app/src/main/assets/png_Vehicles/2.jpg b/app/src/main/assets/png_Vehicles/2.jpg new file mode 100644 index 0000000..ff06675 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/2.jpg differ diff --git a/app/src/main/assets/png_Vehicles/20.jpg b/app/src/main/assets/png_Vehicles/20.jpg new file mode 100644 index 0000000..3e22c5c Binary files /dev/null and b/app/src/main/assets/png_Vehicles/20.jpg differ diff --git a/app/src/main/assets/png_Vehicles/21.jpg b/app/src/main/assets/png_Vehicles/21.jpg new file mode 100644 index 0000000..f93b99a Binary files /dev/null and b/app/src/main/assets/png_Vehicles/21.jpg differ diff --git a/app/src/main/assets/png_Vehicles/22.jpg b/app/src/main/assets/png_Vehicles/22.jpg new file mode 100644 index 0000000..952afa9 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/22.jpg differ diff --git a/app/src/main/assets/png_Vehicles/23.jpg b/app/src/main/assets/png_Vehicles/23.jpg new file mode 100644 index 0000000..a6e1c25 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/23.jpg differ diff --git a/app/src/main/assets/png_Vehicles/24.jpg b/app/src/main/assets/png_Vehicles/24.jpg new file mode 100644 index 0000000..83c706a Binary files /dev/null and b/app/src/main/assets/png_Vehicles/24.jpg differ diff --git a/app/src/main/assets/png_Vehicles/25.jpg b/app/src/main/assets/png_Vehicles/25.jpg new file mode 100644 index 0000000..6ebdbf7 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/25.jpg differ diff --git a/app/src/main/assets/png_Vehicles/26.jpg b/app/src/main/assets/png_Vehicles/26.jpg new file mode 100644 index 0000000..3805357 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/26.jpg differ diff --git a/app/src/main/assets/png_Vehicles/27.jpg b/app/src/main/assets/png_Vehicles/27.jpg new file mode 100644 index 0000000..0849027 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/27.jpg differ diff --git a/app/src/main/assets/png_Vehicles/28.jpg b/app/src/main/assets/png_Vehicles/28.jpg new file mode 100644 index 0000000..019baa9 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/28.jpg differ diff --git a/app/src/main/assets/png_Vehicles/29.jpg b/app/src/main/assets/png_Vehicles/29.jpg new file mode 100644 index 0000000..c7e0d3a Binary files /dev/null and b/app/src/main/assets/png_Vehicles/29.jpg differ diff --git a/app/src/main/assets/png_Vehicles/3.jpg b/app/src/main/assets/png_Vehicles/3.jpg new file mode 100644 index 0000000..eb33365 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/3.jpg differ diff --git a/app/src/main/assets/png_Vehicles/30.jpg b/app/src/main/assets/png_Vehicles/30.jpg new file mode 100644 index 0000000..3820102 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/30.jpg differ diff --git a/app/src/main/assets/png_Vehicles/31.jpg b/app/src/main/assets/png_Vehicles/31.jpg new file mode 100644 index 0000000..bba9999 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/31.jpg differ diff --git a/app/src/main/assets/png_Vehicles/32.jpg b/app/src/main/assets/png_Vehicles/32.jpg new file mode 100644 index 0000000..6d64a3f Binary files /dev/null and b/app/src/main/assets/png_Vehicles/32.jpg differ diff --git a/app/src/main/assets/png_Vehicles/4.jpg b/app/src/main/assets/png_Vehicles/4.jpg new file mode 100644 index 0000000..968f0ad Binary files /dev/null and b/app/src/main/assets/png_Vehicles/4.jpg differ diff --git a/app/src/main/assets/png_Vehicles/5.jpg b/app/src/main/assets/png_Vehicles/5.jpg new file mode 100644 index 0000000..abdd96c Binary files /dev/null and b/app/src/main/assets/png_Vehicles/5.jpg differ diff --git a/app/src/main/assets/png_Vehicles/6.jpg b/app/src/main/assets/png_Vehicles/6.jpg new file mode 100644 index 0000000..7eeb870 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/6.jpg differ diff --git a/app/src/main/assets/png_Vehicles/7.jpg b/app/src/main/assets/png_Vehicles/7.jpg new file mode 100644 index 0000000..c5e6294 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/7.jpg differ diff --git a/app/src/main/assets/png_Vehicles/8.jpg b/app/src/main/assets/png_Vehicles/8.jpg new file mode 100644 index 0000000..6628782 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/8.jpg differ diff --git a/app/src/main/assets/png_Vehicles/9.jpg b/app/src/main/assets/png_Vehicles/9.jpg new file mode 100644 index 0000000..367b772 Binary files /dev/null and b/app/src/main/assets/png_Vehicles/9.jpg differ diff --git a/app/src/main/java/com/paint/sweet/drawing/PaintingApp.java b/app/src/main/java/com/paint/sweet/drawing/PaintingApp.java new file mode 100644 index 0000000..794b926 --- /dev/null +++ b/app/src/main/java/com/paint/sweet/drawing/PaintingApp.java @@ -0,0 +1,38 @@ +package com.paint.sweet.drawing; + +import android.app.Application; +import android.util.Log; + +import com.ad.toponlibrary.AdManager; +import com.up.uploadlibrary.UpLoadManager; + +public class PaintingApp extends Application { + + public static String Key_ViewDir = "pre_dir"; + + public static String Key_Camera = "camera_data"; + private static PaintingApp app; + public static final String TAG = "PaintingApp"; + + + + + + @Override + public void onCreate() { + super.onCreate(); + app = this; + UpLoadManager.INSTANCE.init(app,TAG,(k1, k2)-> null); + AdManager.INSTANCE.init(TAG,app,"h695b2d5426284","ace8085eb1fc49325cd7f977843f39974", + "919fa8db4107c1d44a2f2c88b62709fffee67cfd", + "n695b2dd60ca62", + "n695b2dd5361da", + "n695b2d6becb7f",false);//测试开true + Log.d(TAG, "onCreate: sdk init success"); + + } + + + + +} diff --git a/app/src/main/java/com/paint/sweet/drawing/onClickListener.java b/app/src/main/java/com/paint/sweet/drawing/onClickListener.java new file mode 100644 index 0000000..440f24e --- /dev/null +++ b/app/src/main/java/com/paint/sweet/drawing/onClickListener.java @@ -0,0 +1,6 @@ +package com.paint.sweet.drawing; + +public interface onClickListener { + + void onClickItem(boolean viewAll,String dir); +} diff --git a/app/src/main/java/com/paint/sweet/drawing/sweetactivity/DrawingSearchActivity.java b/app/src/main/java/com/paint/sweet/drawing/sweetactivity/DrawingSearchActivity.java new file mode 100644 index 0000000..bc0425f --- /dev/null +++ b/app/src/main/java/com/paint/sweet/drawing/sweetactivity/DrawingSearchActivity.java @@ -0,0 +1,620 @@ +package com.paint.sweet.drawing.sweetactivity; + +import android.content.Context; +import android.content.SharedPreferences; +import android.graphics.Color; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.os.Build; +import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.text.TextUtils; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.ad.toponlibrary.AdManager; +import com.paint.sweet.drawing.R; +import com.paint.sweet.drawing.sweetadapter.ImagePreviewListAdapter; +import com.paint.sweet.drawing.sweetmanager.AppUtils; +import com.paint.sweet.drawing.sweetmanager.AppConstants; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +public class DrawingSearchActivity extends AppCompatActivity implements View.OnClickListener { + private static final String TAG = "SearchActivity"; + private EditText etSearch; + private RecyclerView rvSearchResult; + private RecyclerView rvKeywordSuggest; + private RecyclerView rvHistorySuggest; // 历史搜索列表 + private LinearLayout llBackContainer; // ========== 修改1:扩大返回键点击区域(用容器包裹) ========== + private TextView tvSearchBtn; + private ImageView ivClearHistory; // 清除图标 + private TextView tvNoHistory; // 无历史提示文字 + private LinearLayout llHotSearchContainer; + private LinearLayout llHistorySearchContainer; // 历史搜索容器 + private ImagePreviewListAdapter resultAdapter; + private KeywordAdapter suggestAdapter; + private KeywordAdapter historyAdapter; // 历史搜索适配器 + private List allContentList = new ArrayList<>(); + private List allContentListLower = new ArrayList<>(); + private List suggestKeywords = new ArrayList<>(); + private List historyKeywords = new ArrayList<>(); // 历史搜索数据 + private boolean isInSearchResultState = false; + + // SharedPreferences存储历史搜索(持久化) + private static final String SP_HISTORY_SEARCH = "sp_history_search"; + private static final String KEY_HISTORY_KEYWORDS = "key_history_keywords"; + private static final int MAX_HISTORY_COUNT = 10; // 历史搜索最大数量 + + // ========== 核心修改:统一布局参数(和ImagePreviewFragment完全一致) ========== + private static final int GRID_COLUMN_COUNT = 2; // 列数改为2(和主页面一致) + private static final int PAGE_PADDING_DP = 15; // 页面内边距改为15dp(和主页面一致) + private static final int ITEM_SPACING_DP = 12; // Item间距改为12dp(和主页面一致) + private static final long SEARCH_DEBOUNCE_DELAY = 150; + + private static final List DEFAULT_SUGGEST_KEYWORDS; + private static final List DEFAULT_SUGGEST_KEYWORDS_LOWER; + static { + DEFAULT_SUGGEST_KEYWORDS = new ArrayList<>(); + DEFAULT_SUGGEST_KEYWORDS.add("animals"); + DEFAULT_SUGGEST_KEYWORDS.add("cafe"); + DEFAULT_SUGGEST_KEYWORDS.add("cartoons"); + DEFAULT_SUGGEST_KEYWORDS.add("butterfly"); + DEFAULT_SUGGEST_KEYWORDS.add("nature"); + DEFAULT_SUGGEST_KEYWORDS.add("sports"); + + DEFAULT_SUGGEST_KEYWORDS_LOWER = new ArrayList<>(); + for (String keyword : DEFAULT_SUGGEST_KEYWORDS) { + DEFAULT_SUGGEST_KEYWORDS_LOWER.add(keyword.toLowerCase()); + } + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + supportRequestWindowFeature(Window.FEATURE_NO_TITLE); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + Window window = getWindow(); + window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + window.getDecorView().setSystemUiVisibility( + View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + ); + } else { + window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + } + window.setStatusBarColor(getResources().getColor(android.R.color.transparent)); + } + AppUtils.setStatusBarTextColor(this, false); + + setContentView(R.layout.activity_drawing_search); + AdManager.loadAllAd(); + AdManager.showTopOn(this, () -> {}); + View rootLayout = findViewById(R.id.root_layout); + if (rootLayout != null) { + int statusBarHeight = getStatusBarHeight(); + rootLayout.setPadding(0, statusBarHeight, 0, 0); + } + + getWindow().getDecorView().postDelayed(() -> { + initViews(); + initRecyclerViews(); + setSearchIcon(); + loadAllContent(); + loadHistorySearch(); // 加载历史搜索 + setSearchListener(); + handleInitKeyword(); + showSuggestKeywords(DEFAULT_SUGGEST_KEYWORDS); // 始终显示默认热门关键词 + showHistoryKeywords(); // 显示历史搜索 + }, 100); + } + + private void initRecyclerViews() { + // 搜索结果列表:完全对齐主页面ImagePreviewFragment的逻辑 + if (rvSearchResult == null) return; + resultAdapter = new ImagePreviewListAdapter(this, new ArrayList<>(), true); + rvSearchResult.setAdapter(resultAdapter); + + // 1. 2列网格布局(和主页面一致) + GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 2); + rvSearchResult.setLayoutManager(gridLayoutManager); + + // 2. 页面四周边距:15dp(和主页面搜索栏的start/end margin一致) + int pagePadding = dp2px(15); + rvSearchResult.setPadding(pagePadding, pagePadding, pagePadding, pagePadding); + rvSearchResult.setClipToPadding(false); + + // 3. 计算Item宽度(完全复用主页面Fragment的逻辑) + int screenWidth = getResources().getDisplayMetrics().widthPixels; + int usableWidth = screenWidth - pagePadding * 2; + int itemSpacing = dp2px(12); // 和主页面一致的Item间距 + int itemWidth = (usableWidth - itemSpacing) / 2; + + // 4. Item间距:对称分配(和主页面Fragment完全一致) + rvSearchResult.addItemDecoration(new RecyclerView.ItemDecoration() { + @Override + public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { + ViewGroup.LayoutParams params = view.getLayoutParams(); + if (params != null) { + params.width = itemWidth; + params.height = ViewGroup.LayoutParams.WRAP_CONTENT; + view.setLayoutParams(params); + } + + int position = parent.getChildAdapterPosition(view); + int column = position % 2; + int halfSpacing = itemSpacing / 2; + + // 水平对称间距 + if (column == 0) { + outRect.left = 0; + outRect.right = halfSpacing; + } else { + outRect.left = halfSpacing; + outRect.right = 0; + } + + // 垂直对称间距 + outRect.top = halfSpacing; + outRect.bottom = halfSpacing; + } + }); + + // 热门/历史搜索列表逻辑不变(仅调整了布局的padding,代码无需改动) + if (rvKeywordSuggest == null) return; + suggestAdapter = new KeywordAdapter(this, new ArrayList<>()); + rvKeywordSuggest.setAdapter(suggestAdapter); + LinearLayoutManager hotLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false); + rvKeywordSuggest.setLayoutManager(hotLayoutManager); + suggestAdapter.setOnKeywordClickListener(keyword -> { + etSearch.setText(keyword); + etSearch.setSelection(keyword.length()); + performSearch(keyword); + }); + + if (rvHistorySuggest == null) return; + historyAdapter = new KeywordAdapter(this, new ArrayList<>()); + rvHistorySuggest.setAdapter(historyAdapter); + LinearLayoutManager historyLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false); + rvHistorySuggest.setLayoutManager(historyLayoutManager); + historyAdapter.setOnKeywordClickListener(keyword -> { + etSearch.setText(keyword); + etSearch.setSelection(keyword.length()); + performSearch(keyword); + }); + } + + + private void initViews() { + // 原有控件绑定 + etSearch = findViewById(R.id.et_search); + rvSearchResult = findViewById(R.id.rv_search_result); + rvKeywordSuggest = findViewById(R.id.rv_keyword_suggest); + // ========== 修改2:替换ivBack为llBackContainer(容器) ========== + llBackContainer = findViewById(R.id.ll_back_container); + tvSearchBtn = findViewById(R.id.tv_search_btn); + llHotSearchContainer = findViewById(R.id.ll_hot_search_container); + + // 历史搜索相关控件绑定 + rvHistorySuggest = findViewById(R.id.rv_history_suggest); + ivClearHistory = findViewById(R.id.iv_clear_history); + tvNoHistory = findViewById(R.id.tv_no_history); + llHistorySearchContainer = findViewById(R.id.ll_history_search_container); + + // 日志打印 + Log.d(TAG, "etSearch is null: " + (etSearch == null)); + Log.d(TAG, "rvSearchResult is null: " + (rvSearchResult == null)); + Log.d(TAG, "rvKeywordSuggest is null: " + (rvKeywordSuggest == null)); + Log.d(TAG, "rvHistorySuggest is null: " + (rvHistorySuggest == null)); + Log.d(TAG, "llBackContainer is null: " + (llBackContainer == null)); // 修改日志 + Log.d(TAG, "tvSearchBtn is null: " + (tvSearchBtn == null)); + Log.d(TAG, "ivClearHistory is null: " + (ivClearHistory == null)); + Log.d(TAG, "tvNoHistory is null: " + (tvNoHistory == null)); + Log.d(TAG, "llHotSearchContainer is null: " + (llHotSearchContainer == null)); + Log.d(TAG, "llHistorySearchContainer is null: " + (llHistorySearchContainer == null)); + + // 设置无历史搜索提示文字为英文 + if (tvNoHistory != null) { + tvNoHistory.setText("No search history"); + } + + // ========== 修改3:给llBackContainer设置点击事件(扩大返回键区域) ========== + if (llBackContainer != null) { + llBackContainer.setOnClickListener(this); + } + if (tvSearchBtn != null) { + tvSearchBtn.setOnClickListener(this); + } + + // 清除历史图标按钮点击事件 + if (ivClearHistory != null) { + ivClearHistory.setOnClickListener(this); + } + } + + private void setSearchIcon() { + if (etSearch == null) { + Log.e(TAG, "Search input box is null"); + return; + } + Drawable searchIcon = ContextCompat.getDrawable(this, R.mipmap.search2); + if (searchIcon != null) { + int iconSize = dp2px(18); + searchIcon.setBounds(0, 0, iconSize, iconSize); + searchIcon.setTint(Color.parseColor("#CC9E9E9E")); + etSearch.setCompoundDrawables(searchIcon, null, null, null); + etSearch.setCompoundDrawablePadding(dp2px(10)); + } + } + + private void loadAllContent() { + try { + allContentList.clear(); + allContentListLower.clear(); + List dirs = AppConstants.getAllDir(); + if (dirs == null || dirs.isEmpty()) { + Log.e(TAG, "No resource directories"); + return; + } + for (String dir : dirs) { + List files = AppUtils.fileExistsInAssets(this, dir); + if (files != null && !files.isEmpty()) { + allContentList.addAll(files); + for (String file : files) { + allContentListLower.add(file.toLowerCase()); + } + } + } + Log.d(TAG, "Total resources: " + allContentList.size()); + resultAdapter.updateData(new ArrayList<>()); + } catch (Exception e) { + e.printStackTrace(); + Log.e(TAG, "Failed to load resources: " + e.getMessage()); + } + } + + // 从SharedPreferences加载历史搜索记录 + private void loadHistorySearch() { + SharedPreferences sp = getSharedPreferences(SP_HISTORY_SEARCH, Context.MODE_PRIVATE); + Set historySet = sp.getStringSet(KEY_HISTORY_KEYWORDS, new HashSet<>()); + historyKeywords.clear(); + historyKeywords.addAll(historySet); + // 限制历史记录最大数量 + if (historyKeywords.size() > MAX_HISTORY_COUNT) { + historyKeywords = historyKeywords.subList(0, MAX_HISTORY_COUNT); + } + } + + // 保存历史搜索(去重+置顶+限制数量) + private void saveHistorySearch(String keyword) { + if (TextUtils.isEmpty(keyword)) return; + // 去重:如果已存在则移除,再添加到首位 + historyKeywords.remove(keyword); + historyKeywords.add(0, keyword); + // 限制最大数量 + if (historyKeywords.size() > MAX_HISTORY_COUNT) { + historyKeywords.remove(historyKeywords.size() - 1); + } + // 持久化存储 + SharedPreferences sp = getSharedPreferences(SP_HISTORY_SEARCH, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sp.edit(); + editor.putStringSet(KEY_HISTORY_KEYWORDS, new HashSet<>(historyKeywords)); + editor.apply(); + // 更新UI(仅在非搜索状态下刷新) + if (!isInSearchResultState) { + showHistoryKeywords(); + } + } + + // ========== 新增:补全缺失的clearHistorySearch()方法 ========== + private void clearHistorySearch() { + historyKeywords.clear(); + SharedPreferences sp = getSharedPreferences(SP_HISTORY_SEARCH, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sp.edit(); + editor.remove(KEY_HISTORY_KEYWORDS); + editor.apply(); + showHistoryKeywords(); // 刷新UI + Log.d(TAG, "All search history cleared"); + } + + // 修改:显示历史搜索(仅在非搜索状态下显示) + private void showHistoryKeywords() { + if (llHistorySearchContainer == null || rvHistorySuggest == null || tvNoHistory == null || ivClearHistory == null) return; + + // 仅在非搜索状态下显示历史搜索容器 + if (isInSearchResultState) { + llHistorySearchContainer.setVisibility(View.GONE); + return; + } + + llHistorySearchContainer.setVisibility(View.VISIBLE); + if (historyKeywords.isEmpty()) { + // 无历史记录:显示提示文字,隐藏列表和清除图标 + rvHistorySuggest.setVisibility(View.GONE); + tvNoHistory.setVisibility(View.VISIBLE); + ivClearHistory.setVisibility(View.GONE); + } else { + // 有历史记录:显示列表和清除图标,隐藏提示文字 + rvHistorySuggest.setVisibility(View.VISIBLE); + tvNoHistory.setVisibility(View.GONE); + ivClearHistory.setVisibility(View.VISIBLE); + historyAdapter.updateData(historyKeywords); + } + } + + // 修改:移除输入框变化时的热门关键词过滤(保持热门搜索不变) + private void setSearchListener() { + if (etSearch == null) { + Log.e(TAG, "Search input box is null"); + return; + } + // 仅保留防抖,但不触发关键词过滤(热门搜索始终显示默认值) + Handler searchHandler = new Handler(Looper.getMainLooper()); + Runnable searchRunnable = new Runnable() { + @Override + public void run() { + // 空实现:不再根据输入过滤热门关键词 + } + }; + + etSearch.addTextChangedListener(new android.text.TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) {} + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + searchHandler.removeCallbacks(searchRunnable); + searchHandler.postDelayed(searchRunnable, SEARCH_DEBOUNCE_DELAY); + } + + @Override + public void afterTextChanged(android.text.Editable s) {} + }); + } + + // 修改 + private void performSearch(String keyword) { + List filteredList = new ArrayList<>(); + if (allContentList.isEmpty() || resultAdapter == null) { + resultAdapter.updateData(filteredList); + return; + } + if (TextUtils.isEmpty(keyword)) { + // 关键词为空(返回搜索页面):显示历史+热门搜索 + filteredList = new ArrayList<>(); + isInSearchResultState = false; + llHistorySearchContainer.setVisibility(View.VISIBLE); + showHistoryKeywords(); + if (llHotSearchContainer != null) { + llHotSearchContainer.setVisibility(View.VISIBLE); + } + } else { + // 关键词不为空(搜索中):隐藏历史+热门搜索,执行搜索 + String lowerKeyword = keyword.toLowerCase().trim(); + for (int i = 0; i < allContentListLower.size(); i++) { + if (allContentListLower.get(i).contains(lowerKeyword)) { + filteredList.add(allContentList.get(i)); + } + } + isInSearchResultState = true; + if (llHistorySearchContainer != null) { + llHistorySearchContainer.setVisibility(View.GONE); + } + if (llHotSearchContainer != null) { + llHotSearchContainer.setVisibility(View.GONE); + } + saveHistorySearch(keyword); + } + resultAdapter.updateData(filteredList); + // 核心修改:搜索无结果时显示提示,且保持输入框文字颜色默认 + if (!TextUtils.isEmpty(keyword)) { + if (filteredList.isEmpty()) { + // 显示“找不到结果”提示(英文) + Toast.makeText(this, "No results found", Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(this, "Found " + filteredList.size() + " results", Toast.LENGTH_SHORT).show(); + } + } + // 确保输入框文字颜色始终为默认(避免标红) + if (etSearch != null) { + etSearch.setTextColor(Color.parseColor("#CC9E9E9E")); // 与布局中textcolor一致 + } + rvSearchResult.setVisibility(filteredList.size() > 0 ? View.VISIBLE : View.GONE); + showSuggestKeywords(DEFAULT_SUGGEST_KEYWORDS); + showHistoryKeywords(); + } + + + // 修改:始终显示默认热门关键词 + private void showSuggestKeywords(List keywords) { + if (suggestAdapter == null || rvKeywordSuggest == null) return; + if (!isInSearchResultState) { + // 非搜索状态(返回搜索页面):显示Popular Search关键词 + suggestAdapter.updateData(DEFAULT_SUGGEST_KEYWORDS); + rvKeywordSuggest.setVisibility(View.VISIBLE); + } else { + rvKeywordSuggest.setVisibility(View.GONE); + } + } + + private void handleInitKeyword() { + String initKeyword = getIntent().getStringExtra("keyword"); + if (!TextUtils.isEmpty(initKeyword) && etSearch != null) { + etSearch.setText(initKeyword); + etSearch.setSelection(initKeyword.length()); + } + } + + // 点击事件处理 + @Override + public void onClick(View v) { + int id = v.getId(); + // ========== 修改4:替换iv_back的id为ll_back_container ========== + if (id == R.id.ll_back_container) { + AdManager.showTopOn(this, () -> { + // ========== 修改5:优化返回逻辑(搜索结果页直接返回首页) ========== + if (isInSearchResultState) { + // 当前是搜索结果页:直接返回首页 + super.onBackPressed(); + Log.d(TAG, "Current state is search result, return to Home page directly"); + } else { + // 当前是搜索初始页:返回上一级 + super.onBackPressed(); + Log.d(TAG, "Current state is search initial, return to Home page"); + } + }); + + } else if (id == R.id.tv_search_btn) { + AdManager.showTopOn(this, () -> { + String keyword = etSearch.getText().toString().trim(); + performSearch(keyword); + }); + + } else if (id == R.id.iv_clear_history) { + // 清除历史搜索 + clearHistorySearch(); + Log.d(TAG, "Clear all search history records"); + } + } + + // ========== 修改6:简化onBackPressed逻辑(和点击事件统一) ========== + @Override + public void onBackPressed() { + onClick(findViewById(R.id.ll_back_container)); // 复用点击事件的逻辑 + } + + private int getStatusBarHeight() { + int statusBarHeight = 0; + int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); + if (resourceId > 0) { + statusBarHeight = getResources().getDimensionPixelSize(resourceId); + } + if (statusBarHeight == 0) { + statusBarHeight = dp2px(48); + } + return statusBarHeight; + } + + private int dp2px(int dp) { + return (int) (dp * getResources().getDisplayMetrics().density + 0.5f); + } + + + // 关键词适配器(复用,同时支持历史/热门搜索) + private static class KeywordAdapter extends RecyclerView.Adapter { + private Context context; + private List keywords; + private OnKeywordClickListener listener; + + public KeywordAdapter(Context context, List keywords) { + this.context = context; + this.keywords = keywords; + } + + public void updateData(List newKeywords) { + this.keywords.clear(); + this.keywords.addAll(newKeywords); + notifyDataSetChanged(); + } + + public void setOnKeywordClickListener(OnKeywordClickListener listener) { + this.listener = listener; + } + + @NonNull + @Override + public KeywordViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(context).inflate(R.layout.item_keyword_suggest, parent, false); + return new KeywordViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull KeywordViewHolder holder, int position) { + String keyword = keywords.get(position); + holder.tvKeyword.setText(keyword); + holder.itemView.setOnClickListener(v -> { + if (listener != null) { + listener.onKeywordClick(keyword); + } + }); + } + + @Override + public int getItemCount() { + return keywords.size(); + } + + static class KeywordViewHolder extends RecyclerView.ViewHolder { + TextView tvKeyword; + public KeywordViewHolder(@NonNull View itemView) { + super(itemView); + tvKeyword = itemView.findViewById(R.id.tv_keyword); + } + } + + public interface OnKeywordClickListener { + void onKeywordClick(String keyword); + } + } + + @Override + protected void onResume() { + super.onResume(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + getWindow().getDecorView().setSystemUiVisibility( + View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + ); + AppUtils.setStatusBarTextColor(this, false); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + // 释放所有控件引用 + etSearch = null; + rvSearchResult = null; + rvKeywordSuggest = null; + rvHistorySuggest = null; + llBackContainer = null; // 修改释放引用 + tvSearchBtn = null; + ivClearHistory = null; + tvNoHistory = null; + llHotSearchContainer = null; + llHistorySearchContainer = null; + resultAdapter = null; + suggestAdapter = null; + historyAdapter = null; + allContentList.clear(); + allContentList = null; + allContentListLower.clear(); + allContentListLower = null; + suggestKeywords.clear(); + suggestKeywords = null; + historyKeywords.clear(); + historyKeywords = null; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/paint/sweet/drawing/sweetactivity/HomeMainActivity.java b/app/src/main/java/com/paint/sweet/drawing/sweetactivity/HomeMainActivity.java new file mode 100644 index 0000000..27143f6 --- /dev/null +++ b/app/src/main/java/com/paint/sweet/drawing/sweetactivity/HomeMainActivity.java @@ -0,0 +1,228 @@ +package com.paint.sweet.drawing.sweetactivity; + +import android.os.Build; +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; + +import com.paint.sweet.drawing.R; +import com.paint.sweet.drawing.sweetfragment.SettingCenterFragment; +import com.paint.sweet.drawing.sweetfragment.HomeMainFragment; +import com.paint.sweet.drawing.sweetmanager.AppUtils; +import com.paint.sweet.drawing.sweetview.BottomTabScrollView; + +public class HomeMainActivity extends AppCompatActivity implements View.OnClickListener { + private static final String TAG = "HomeActivity"; + // 底部Tab控件 + private BottomTabScrollView tabTraceDraw; + private BottomTabScrollView tabMineSettings; + private BottomTabScrollView currentTab; + + // Fragment实例 + private HomeMainFragment homeFragment; + private SettingCenterFragment settingFragment; + // Fragment容器ID(确保与布局中的ID一致) + private static final int FRAGMENT_CONTAINER_ID = R.id.fragment_container; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // ========== 状态栏适配核心逻辑(最终版) ========== + // 1. 隐藏系统标题栏(必须放在setContentView前) + supportRequestWindowFeature(Window.FEATURE_NO_TITLE); + + // 2. Android 5.0+ 状态栏透明 + 白色文字/图标适配 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + Window window = getWindow(); + // 基础配置:清除全屏Flag,保留状态栏 + window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); + + // 关键:Android 6.0+ 透明状态栏兼容配置 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + // 移除深色文字标志,确保白色文字 + window.getDecorView().setSystemUiVisibility( + View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN // 布局延伸到状态栏 + ); + } else { + // 5.0-5.1 适配 + window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + } + + // 强制设置状态栏为全透明 + window.setStatusBarColor(getResources().getColor(android.R.color.transparent)); + } + + // 3. 调用Utils方法确保状态栏文字为白色(最终确认) + AppUtils.setStatusBarTextColor(this, false); + + // ========== 原有业务逻辑(完全保留) ========== + setContentView(R.layout.activity_draw_main); + + // 延迟初始化是为了确保View完全加载,避免空指针 + getWindow().getDecorView().postDelayed(() -> { + initTabs(); + initFragments(); + // 默认选中第一个Tab和HomeFragment + switchFragment(homeFragment); + setCurrentTab(tabTraceDraw); + }, 100); + } + + /** + * 初始化底部Tab:设置图标、文字、点击事件 + * 优化:增加空指针判断,避免控件未找到导致崩溃 + */ + private void initTabs() { + // 绑定底部Tab控件(关键:确保布局中ID与代码一致) + tabTraceDraw = findViewById(R.id.tab_trace_draw); + tabMineSettings = findViewById(R.id.tab_mine_settings); + + // 日志打印:排查控件是否绑定成功 + Log.d(TAG, "tabTraceDraw是否为空:" + (tabTraceDraw == null)); + Log.d(TAG, "tabMineSettings是否为空:" + (tabMineSettings == null)); + + // 空指针保护:避免控件未找到时执行后续逻辑 + if (tabTraceDraw == null || tabMineSettings == null) { + Log.e(TAG, "底部Tab控件绑定失败,请检查布局文件中的ID是否正确"); + return; + } + + // 设置Tab的图标和文字(适配业务需求) + tabTraceDraw.setDrawTabData(R.drawable.drawing3, "Trace&Draw"); + tabMineSettings.setDrawTabData(R.drawable.setting2, "More Settings"); + + // 设置点击事件 + tabTraceDraw.setOnClickListener(this); + tabMineSettings.setOnClickListener(this); + } + + /** + * 初始化Fragment实例 + * 优化:懒加载,避免提前创建导致资源浪费 + */ + private void initFragments() { + // 双重检查:确保Fragment只创建一次 + if (homeFragment == null) { + homeFragment = HomeMainFragment.newInstance(); + } + if (settingFragment == null) { + settingFragment = SettingCenterFragment.newInstance(); + } + } + + /** + * 切换Fragment + * 优化: + * 1. 增加空指针判断 + * 2. 使用commitAllowingStateLoss(),避免Activity状态保存后提交崩溃 + * 3. 统一Fragment管理逻辑 + */ + private void switchFragment(Fragment targetFragment) { + // 空指针保护 + if (targetFragment == null) { + Log.e(TAG, "目标Fragment为空,无法切换"); + return; + } + + FragmentManager fragmentManager = getSupportFragmentManager(); + FragmentTransaction transaction = fragmentManager.beginTransaction(); + + // 隐藏所有已添加的Fragment + if (homeFragment != null && homeFragment.isAdded()) { + transaction.hide(homeFragment); + } + if (settingFragment != null && settingFragment.isAdded()) { + transaction.hide(settingFragment); + } + + // 添加目标Fragment(未添加时) + if (!targetFragment.isAdded()) { + transaction.add(FRAGMENT_CONTAINER_ID, targetFragment); + } + // 显示目标Fragment + transaction.show(targetFragment); + + // 优化提交方式:避免状态丢失导致的崩溃 + transaction.commitAllowingStateLoss(); + } + + /** + * 设置当前选中的Tab + * 优化:增加空指针判断,确保Tab状态切换正常 + */ + private void setCurrentTab(BottomTabScrollView tab) { + // 空指针保护 + if (tab == null) { + Log.e(TAG, "要选中的Tab为空"); + return; + } + // 取消上一个选中Tab的状态 + if (currentTab != null && currentTab != tab) { + currentTab.setTabSelected(false); + } + // 设置当前Tab为选中状态 + tab.setTabSelected(true); + currentTab = tab; + + // 日志:方便调试Tab选中状态 + Log.d(TAG, "当前选中Tab:" + (tab == tabTraceDraw ? "Trace&Draw" : "Mine Settings")); + } + + /** + * Tab点击事件处理 + * 优化:增加ID判断的健壮性 + */ + @Override + public void onClick(View v) { + int id = v.getId(); + if (id == R.id.tab_trace_draw) { + switchFragment(homeFragment); + setCurrentTab(tabTraceDraw); + } else if (id == R.id.tab_mine_settings) { + switchFragment(settingFragment); + setCurrentTab(tabMineSettings); + } else { + Log.w(TAG, "未知的Tab点击ID:" + id); + } + } + + /** + * 补充:页面恢复时重置状态栏状态,避免切换后台后失效 + */ + @Override + protected void onResume() { + super.onResume(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + getWindow().getDecorView().setSystemUiVisibility( + View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + ); + // 重新确认状态栏文字为白色 + AppUtils.setStatusBarTextColor(this, false); + } + } + + /** + * 生命周期优化:避免Fragment内存泄漏 + */ + @Override + protected void onDestroy() { + super.onDestroy(); + // 清空Fragment引用 + homeFragment = null; + settingFragment = null; + // 清空Tab引用 + tabTraceDraw = null; + tabMineSettings = null; + currentTab = null; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/paint/sweet/drawing/sweetactivity/PhotoSelectActivity.java b/app/src/main/java/com/paint/sweet/drawing/sweetactivity/PhotoSelectActivity.java new file mode 100644 index 0000000..7c7c39d --- /dev/null +++ b/app/src/main/java/com/paint/sweet/drawing/sweetactivity/PhotoSelectActivity.java @@ -0,0 +1,410 @@ +package com.paint.sweet.drawing.sweetactivity; + +import android.Manifest; +import android.app.Activity; +import android.content.ContentResolver; +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.graphics.Bitmap; +import android.graphics.Matrix; +import android.graphics.Point; +import android.graphics.PointF; +import android.net.Uri; +import android.os.Build; +import android.os.Bundle; +import android.os.ParcelFileDescriptor; +import android.provider.MediaStore; +import android.util.Log; +import android.view.MotionEvent; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.widget.ImageView; +import android.widget.SeekBar; +import android.widget.Toast; + +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.camera.core.Camera; +import androidx.camera.core.CameraSelector; +import androidx.camera.core.ImageCapture; +import androidx.camera.core.Preview; +import androidx.camera.lifecycle.ProcessCameraProvider; +import androidx.camera.view.PreviewView; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; + +import com.ad.toponlibrary.AdManager; +import com.google.common.util.concurrent.ListenableFuture; +import com.paint.sweet.drawing.PaintingApp; +import com.paint.sweet.drawing.R; +import com.paint.sweet.drawing.sweetmanager.AppUtils; + +import java.io.File; +import java.io.IOException; +import java.util.Objects; + +public class PhotoSelectActivity extends AppCompatActivity implements View.OnTouchListener, View.OnClickListener { + + private CameraSelector cameraSelector; + private String[] permissions; + private int range; + private Camera camera; + private ImageCapture imageCapture; + private PreviewView previewView; + private ImageView imageView; + private SeekBar seekBar; + + private Double d; + + private int MODE;//当前状态 + public static final int MODE_NONE = 0;//无操作 + public static final int MODE_DRAG = 1;//单指操作 + public static final int MODE_SCALE = 2;//双指操作 + + private Matrix startMatrix; + private Matrix endMatrix = new Matrix();//变化后的矩阵 + private PointF startPointF = new PointF();//初始坐标 + private float distance;//初始距离 + private float scaleMultiple;//缩放倍数 + + private ImageView flashIm, imZoom, imBack, imLock; // 新增:锁定按钮 + private ImageView imPhoto; + + private String curBitmapPath; + private boolean hasPermission = false; + private ActivityResultLauncher intentActivityResultLauncher; + + // 新增:锁定状态标记 - 默认未锁定 + private boolean isImageLocked = false; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setTransparentStatusBarAndFullScreenContent(); + setContentView(R.layout.activity_photo_select); + AdManager.loadAllAd(); + AdManager.showTopOn(this, () -> {}); + previewView = findViewById(R.id.preview); + imageView = findViewById(R.id.image); + imBack = findViewById(R.id.back); + + seekBar = findViewById(R.id.seekbar); + flashIm = findViewById(R.id.im_flash); + imPhoto = findViewById(R.id.im_photo); + imZoom = findViewById(R.id.im_zoom); + imLock = findViewById(R.id.im_lock); // 新增:绑定锁定按钮 + + curBitmapPath = getIntent().getStringExtra(PaintingApp.Key_Camera); + + // 注册相册选择回调,增加图片大小和类型校验 + intentActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { + if (result.getResultCode() == Activity.RESULT_OK && result.getData() != null) { + Uri imageUri = result.getData().getData(); + if (imageUri == null) { + // 图片URI为空 + Toast.makeText(PhotoSelectActivity.this, "Failed to upload", Toast.LENGTH_SHORT).show(); + Log.d("---------------tt", "----imageUri-111-null"); + return; + } + + // 校验文件大小(不超过4M) + double uriFileSize = getUriFileSize(PhotoSelectActivity.this, imageUri); + if (uriFileSize >= 4) { + // 超过4M:Toast提示 + Toast.makeText(PhotoSelectActivity.this, "Please ensure the file is no larger than 4M", Toast.LENGTH_SHORT).show(); + Log.d("---------------tt", "----imageUri-222-uriFileSize=" + uriFileSize); + return; + } + + // 校验通过:设置图片 + Log.d("---------------tt", "----imageUri-333-uriFileSize=" + uriFileSize); + imageView.setImageURI(imageUri); + } + }); + + init(); + initClick(); + } + + // ========== 补充方法实现 ========== + private void setTransparentStatusBarAndFullScreenContent() { + supportRequestWindowFeature(Window.FEATURE_NO_TITLE); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + getWindow().setStatusBarColor(ContextCompat.getColor(this, android.R.color.transparent)); + getWindow().getDecorView().setSystemUiVisibility( + View.SYSTEM_UI_FLAG_LAYOUT_STABLE | + View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + ); + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); + } + getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); + } + // ========== 方法实现结束 ========== + + private void onInitIm(float imW, float imH) { + Point screen = AppUtils.getScreen(this); + float newX = screen.x / 2f - imW / 2; + float newY = screen.y / 2f - imH / 2; + startMatrix = new Matrix(); + startMatrix.postTranslate(newX, newY); + imageView.setImageMatrix(startMatrix); + + Log.d("---------------tt", "------startMatrix-----x=" + newX + "------y=" + newY); + } + + @Override + public boolean onTouch(View v, MotionEvent event) { + // 新增:如果锁定状态为true,直接返回false,不处理触摸事件 + if (isImageLocked) { + return false; + } + + switch (event.getAction() & event.getActionMasked()) { + case MotionEvent.ACTION_DOWN: + startMatrix.set(imageView.getImageMatrix()); + endMatrix.set(imageView.getImageMatrix()); + startPointF.set(event.getX(), event.getY()); + Log.d("---------------tt", "------ACTION_DOWN-----x=" + event.getX() + "------y=" + event.getY()); + MODE = MODE_DRAG; + break; + case MotionEvent.ACTION_POINTER_DOWN: + startMatrix.set(endMatrix); + distance = AppUtils.getDistance(event); + MODE = MODE_SCALE; + break; + case MotionEvent.ACTION_MOVE://滑动(单+双) + if (MODE == MODE_DRAG) {//单指滑动时 + endMatrix.set(startMatrix); + //向矩阵传入位移距离 + endMatrix.postTranslate(event.getX() - startPointF.x, event.getY() - startPointF.y); + Log.d("---------------tt", "------ACTION_MOVE-----x=" + event.getX() + "------y=" + event.getY()); + } else if (MODE == MODE_SCALE) {//双指滑动时 + //计算缩放倍数 + scaleMultiple = AppUtils.getDistance(event) / distance; + //获取初始矩阵 + endMatrix.set(startMatrix); + //向矩阵传入缩放倍数 + endMatrix.postScale(scaleMultiple, scaleMultiple, startPointF.x, startPointF.y); + } + break; + case MotionEvent.ACTION_UP://单指离开 + case MotionEvent.ACTION_POINTER_UP://双指离开 + //手指离开后,重置状态 + MODE = MODE_NONE; + break; + } + //事件结束后,把矩阵的变化同步到ImageView上 + imageView.setImageMatrix(endMatrix); + return true; + } + + @Override + public void onClick(View v) { + if (v.equals(imBack)) { + AdManager.showTopOn(this, () -> { + finish(); + }); + + } else { + if (!hasPermission) { + // 无权限:Toast提示(通过showNoPermission方法实现) + showNoPermission(); + return; + } + + // 新增:锁定按钮点击逻辑 + if (v.equals(imLock)) { + AdManager.showTopOn(this, () -> { + isImageLocked = !isImageLocked; // 切换锁定状态 + imLock.setSelected(isImageLocked); // 更新按钮选中状态(对应selector图标切换) + // 可选:添加Toast提示 + String tip = isImageLocked ? "Image locked" : "Image unlocked"; + Toast.makeText(this, tip, Toast.LENGTH_SHORT).show(); + + }); + return; + } + + if (v.equals(flashIm)) { + // 增加camera非空判断,避免崩溃 + if (camera != null) { + boolean selected = flashIm.isSelected(); + flashIm.setSelected(!selected); + camera.getCameraControl().enableTorch(!selected); + } else { + // 相机未就绪:Toast提示 + Toast.makeText(this, "The camera is not ready yet", Toast.LENGTH_SHORT).show(); + } + } else if (v.equals(imPhoto)) { + AdManager.showTopOn(this, () -> { + Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); + intent.setType("image/*"); // 限制选择类型为图片 + intentActivityResultLauncher.launch(intent); + }); + // 相册按钮:打开相册(限制仅选择图片类型) + + } else if (v.equals(imZoom)) { + // 缩放按钮:切换选中状态+显示/隐藏SeekBar + boolean selected = imZoom.isSelected(); + imZoom.setSelected(!selected); // 切换选中状态(自动切换图标) + if (seekBar.getVisibility() == View.VISIBLE) { + seekBar.setVisibility(View.GONE); + } else { + seekBar.setVisibility(View.VISIBLE); + } + } + } + } + + private void initClick() { + imBack.setOnClickListener(this); + flashIm.setOnClickListener(this); + imPhoto.setOnClickListener(this); + imZoom.setOnClickListener(this); + imLock.setOnClickListener(this); // 新增:绑定锁定按钮点击事件 + + seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { + @Override + public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { + float v = (seekBar.getMax() - progress) / 10.0f; + imageView.setAlpha(v); + } + + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + } + + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + } + }); + } + + private void init() { + cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA; + permissions = new String[]{Manifest.permission.CAMERA}; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + permissions = new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_MEDIA_IMAGES}; + } else { + permissions = new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}; + } + if (!checkPermission()) { + hasPermission = false; + imageView.setOnTouchListener(null); + ActivityCompat.requestPermissions(this, permissions, 0); + } else { + hasPermission = true; + imageView.setOnTouchListener(this); + startCamera(); + } + } + + private void startCamera() { + ListenableFuture future = ProcessCameraProvider.getInstance(this); + future.addListener(() -> { + try { + ProcessCameraProvider cameraProvider = future.get(); + Preview preview = new Preview.Builder().build(); + cameraProvider.unbindAll(); + ImageCapture.Builder builder1 = new ImageCapture.Builder(); + imageCapture = builder1.build(); + camera = cameraProvider.bindToLifecycle(this, cameraSelector, preview, imageCapture); + range = AppUtils.getRange(camera); + preview.setSurfaceProvider(previewView.getSurfaceProvider()); + + if (curBitmapPath != null) { + Bitmap bitmap = AppUtils.loadImageFromAssets(this, curBitmapPath); + if (bitmap != null) { // 增加bitmap非空判断 + imageView.setImageBitmap(bitmap); + int width = bitmap.getWidth(); + int height = bitmap.getHeight(); + onInitIm(width, height); + } else { + // 加载位图失败:Toast提示 + Toast.makeText(this, "Bitmap load failed", Toast.LENGTH_SHORT).show(); + Log.e("CameraPickerActivity", "Bitmap load failed"); + } + } + } catch (Exception e) { + e.printStackTrace(); + // 相机初始化失败:Toast提示 + Toast.makeText(this, "Camera initialization unsuccessful", Toast.LENGTH_SHORT).show(); + } + }, ContextCompat.getMainExecutor(this)); + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + if (requestCode == 0) { + if (checkPermission()) { + hasPermission = true; + imageView.setOnTouchListener(this); + startCamera(); + } else { + hasPermission = false; + imageView.setOnTouchListener(null); + // 权限未授予:Toast提示 + Toast.makeText(this, "Camera permission denied", Toast.LENGTH_SHORT).show(); + } + } + } + + private boolean checkPermission() { + boolean result = true; + for (String per : permissions) { + if (ActivityCompat.checkSelfPermission(this, per) != PackageManager.PERMISSION_GRANTED) { + result = false; + break; // 优化:发现未授权直接返回 + } + } + return result; + } + + private void showNoPermission() { + // 无权限提示:使用string资源+Toast + Toast.makeText(this, getString(R.string.permission_fail), Toast.LENGTH_SHORT).show(); + } + + /** + * 计算Uri对应的文件大小(单位:MB) + * @param context 上下文 + * @param uri 文件Uri + * @return 文件大小(MB) + */ + public static double getUriFileSize(Context context, Uri uri) { + double fileSize = 0.0; + ContentResolver contentResolver = context.getContentResolver(); + if ("file".equals(uri.getScheme())) { + File file = new File(Objects.requireNonNull(uri.getPath())); + if (file.exists()) { + fileSize = (double) file.length(); + } + } else { + ParcelFileDescriptor pfd = null; + try { + pfd = contentResolver.openFileDescriptor(uri, "r"); + if (pfd != null) { + fileSize = (double) pfd.getStatSize(); + } + } catch (Exception e) { + Log.e("UriUtils", "Error while retrieving file size: " + e.getMessage(), e); + } finally { + if (pfd != null) { + try { + pfd.close(); + } catch (IOException e) { + // ignore + } + } + } + } + return fileSize / 1048576.0; // 转换为MB(1MB = 1024*1024 = 1048576 字节) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/paint/sweet/drawing/sweetactivity/SplashScreenActivity.java b/app/src/main/java/com/paint/sweet/drawing/sweetactivity/SplashScreenActivity.java new file mode 100644 index 0000000..abe1a78 --- /dev/null +++ b/app/src/main/java/com/paint/sweet/drawing/sweetactivity/SplashScreenActivity.java @@ -0,0 +1,165 @@ +package com.paint.sweet.drawing.sweetactivity; + +import android.animation.ValueAnimator; +import android.content.Intent; +import android.os.Build; +import android.os.Bundle; +import android.os.CountDownTimer; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; + +import androidx.appcompat.app.AppCompatActivity; + +import com.ad.toponlibrary.AdManager; +import com.paint.sweet.drawing.databinding.ActivitySplashScreenBinding; +import com.paint.sweet.drawing.sweetmanager.AppUtils; + +import kotlin.Unit; +import kotlin.jvm.functions.Function0; +import kotlin.jvm.functions.Function1; + +public class SplashScreenActivity extends AppCompatActivity { + + private ActivitySplashScreenBinding binding; + // 核心修改1:缩短总加载时长 + private long time = 2000; + private CountDownTimer countDownTimer; + private static final long SPLASH_TIME_OUT = 15000; // 总时长15秒 + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // ========== 新增:状态栏透明+白色文字适配 ========== + // 1. 隐藏系统标题栏 + supportRequestWindowFeature(Window.FEATURE_NO_TITLE); + + // 2. Android 5.0+ 状态栏透明 + 白色文字/图标适配 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + Window window = getWindow(); + // 清除全屏Flag,保留状态栏显示 + window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); + + // 分版本适配 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + // 6.0+ 直接设置布局延伸+移除深色文字标志 + window.getDecorView().setSystemUiVisibility( + View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN // 布局延伸到状态栏 + ); + } else { + // 5.0-5.1 兼容配置 + window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + } + + // 强制设置状态栏为全透明 + window.setStatusBarColor(getResources().getColor(android.R.color.transparent)); + } + + // 3. 设置状态栏文字为白色(false代表非深色) + AppUtils.setStatusBarTextColor(this, false); + + // ========== 原有业务逻辑(完全保留) ========== + binding = ActivitySplashScreenBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + + // 初始化进度条 + binding.progressBar.setProgress(0); + binding.tvProgress.setText("0%"); + + // 开始倒计时和进度更新 + startCountDown(); + } + + private void startCountDown() { + countDownTimer = AdManager.showWelcomeAd(this, SPLASH_TIME_OUT, new Function1() { + @Override + public Unit invoke(Long aLong) { + int progressPercentage = (int) ((100 * aLong) / SPLASH_TIME_OUT); + int Percentage = 100 - progressPercentage; + binding.progressBar.setProgress(Percentage); + binding.tvProgress.setText(Percentage + "%"); + return null; + } + + }, new Function0() { + @Override + public Unit invoke() { + Intent intent = new Intent(SplashScreenActivity.this, HomeMainActivity.class); + startActivity(intent); + finish(); + return null; + } + }); + countDownTimer.start(); +// // 核心修改2:缩短进度更新间隔 +// countDownTimer = new CountDownTimer(time, 30) { +// @Override +// public void onFinish() { +// // 确保显示100% +// updateProgress(100); +// // 核心修改3:缩短跳转延迟 +// binding.getRoot().postDelayed(() -> enterMain(), 100); +// } + +// @Override +// public void onTick(long millisUntilFinished) { +// // 计算当前进度百分比 +// long elapsedTime = time - millisUntilFinished; +// int progress = (int) (elapsedTime * 100 / time); +// +// // 更新进度 +// updateProgress(progress); +// } +// }; +// +// countDownTimer.start(); + } + +// private void updateProgress(int progress) { +// // 确保进度在0-100范围内 +// int safeProgress = Math.max(0, Math.min(100, progress)); +// +// // 优化:添加平滑动画,让进度条加载更流畅 +// ValueAnimator progressAnimator = ValueAnimator.ofInt(binding.progressBar.getProgress(), safeProgress); +// progressAnimator.setDuration(20); // 超短动画,无卡顿感 +// progressAnimator.addUpdateListener(animation -> { +// binding.progressBar.setProgress((int) animation.getAnimatedValue()); +// // 更新文字显示(仅数字+%) +// binding.tvProgress.setText(animation.getAnimatedValue() + "%"); +// }); +// progressAnimator.start(); +// } + + private void enterMain() { + Intent intent = new Intent(SplashScreenActivity.this, HomeMainActivity.class); + startActivity(intent); + // 添加过渡动画 + overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); + finish(); + } + + // ========== 新增:页面恢复时重置状态栏状态 ========== + @Override + protected void onResume() { + super.onResume(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + getWindow().getDecorView().setSystemUiVisibility( + View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + ); + // 重新确认状态栏文字为白色 + AppUtils.setStatusBarTextColor(this, false); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (countDownTimer != null) { + countDownTimer.cancel(); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/paint/sweet/drawing/sweetadapter/DrawingImagePagerAdapter.java b/app/src/main/java/com/paint/sweet/drawing/sweetadapter/DrawingImagePagerAdapter.java new file mode 100644 index 0000000..721a712 --- /dev/null +++ b/app/src/main/java/com/paint/sweet/drawing/sweetadapter/DrawingImagePagerAdapter.java @@ -0,0 +1,81 @@ +package com.paint.sweet.drawing.sweetadapter; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.paint.sweet.drawing.R; + +import java.util.List; + +// 泛型使用Pair替代Kotlin的Pair,这里用自定义的简单数据类封装图片资源和类型文字 +public class DrawingImagePagerAdapter extends RecyclerView.Adapter { + + // 自定义数据类,替代Kotlin的Pair + public static class ImageTypeBean { + private int imageRes; // 图片资源ID + private String typeText; // 图片类型文字 + + public ImageTypeBean(int imageRes, String typeText) { + this.imageRes = imageRes; + this.typeText = typeText; + } + + public int getImageRes() { + return imageRes; + } + + public String getTypeText() { + return typeText; + } + } + + // ViewHolder内部类 + public static class ViewHolder extends RecyclerView.ViewHolder { + ImageView ivImage; + TextView tvType; + + public ViewHolder(View itemView) { + super(itemView); + // 绑定控件 + ivImage = itemView.findViewById(R.id.iv_image); + tvType = itemView.findViewById(R.id.tv_image_type); + } + } + + private List imageList; // 数据源 + + // 构造方法,传入数据源 + public DrawingImagePagerAdapter(List imageList) { + this.imageList = imageList; + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + // 加载子项布局 + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.item_image_label, parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull ViewHolder holder, int position) { + // 获取当前位置的数据源 + ImageTypeBean bean = imageList.get(position); + // 设置图片和文字 + holder.ivImage.setImageResource(bean.getImageRes()); + holder.tvType.setText(bean.getTypeText()); + } + + @Override + public int getItemCount() { + // 返回数据源长度,空值保护避免空指针 + return imageList == null ? 0 : imageList.size(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/paint/sweet/drawing/sweetadapter/HomeItemAdapter.java b/app/src/main/java/com/paint/sweet/drawing/sweetadapter/HomeItemAdapter.java new file mode 100644 index 0000000..6d34fd7 --- /dev/null +++ b/app/src/main/java/com/paint/sweet/drawing/sweetadapter/HomeItemAdapter.java @@ -0,0 +1,80 @@ +package com.paint.sweet.drawing.sweetadapter; + +import android.content.Context; +import android.graphics.Bitmap; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; + +import androidx.annotation.NonNull; +import androidx.cardview.widget.CardView; +import androidx.recyclerview.widget.RecyclerView; + +import com.paint.sweet.drawing.R; +import com.paint.sweet.drawing.onClickListener; +import com.paint.sweet.drawing.sweetmanager.AppUtils; + +public class HomeItemAdapter extends RecyclerView.Adapter { + + + private Context mCon; + private String dir; + + private int count = 4; + private onClickListener listener; + public HomeItemAdapter(Context mCon, String dirStr) { + this.mCon = mCon; + dir = dirStr; + } + + public void setListener(onClickListener listener) { + this.listener = listener; + } + + @NonNull + @Override + public HomeVH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_home_item, parent, false); + return new HomeVH(view); + } + + @Override + public void onBindViewHolder(@NonNull HomeVH holder, int position) { + String filePath = dir + "/" + (position+1) + ".jpg"; + + Log.d("---------tt","---------filePath="+filePath); + Bitmap bitmap = AppUtils.loadImageFromAssets(mCon, filePath); + holder.previewIm.setImageBitmap(bitmap); + holder.cardView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if(listener!= null){ + listener.onClickItem(false,filePath); + } + + } + }); + + + } + + @Override + public int getItemCount() { + return count; + } + + public static class HomeVH extends RecyclerView.ViewHolder { + private ImageView previewIm; + private CardView cardView; + + public HomeVH(@NonNull View itemView) { + super(itemView); + previewIm = itemView.findViewById(R.id.imPreview); + cardView = itemView.findViewById(R.id.card); + } + + + } +} diff --git a/app/src/main/java/com/paint/sweet/drawing/sweetadapter/HomeMainAdapter.java b/app/src/main/java/com/paint/sweet/drawing/sweetadapter/HomeMainAdapter.java new file mode 100644 index 0000000..c872367 --- /dev/null +++ b/app/src/main/java/com/paint/sweet/drawing/sweetadapter/HomeMainAdapter.java @@ -0,0 +1,121 @@ +package com.paint.sweet.drawing.sweetadapter; + +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.paint.sweet.drawing.R; +import com.paint.sweet.drawing.onClickListener; +import com.paint.sweet.drawing.sweetmanager.AppConstants; + +import java.util.List; + +public class HomeMainAdapter extends RecyclerView.Adapter { + private static final String TAG = "HomeAdapter"; + private List nameList = AppConstants.getAllDir(); // 分类列表(Animals/Birds等) + private onClickListener listener; // 点击事件回调 + private Context mCon; + + // 优化:网格列数、间距常量(统一管理) + private static final int GRID_COLUMN_COUNT = 2; // 2列网格 + private static final int GRID_SPACING_DP = 8; // 网格间距8dp + + public void setListener(onClickListener listener) { + this.listener = listener; + } + + public HomeMainAdapter(Context mCon) { + this.mCon = mCon; + } + + @NonNull + @Override + public HomeVH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + // 加载Item布局(确保adapter_home.xml与控件ID匹配) + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_home_main, parent, false); + return new HomeVH(view); + } + + @Override + public void onBindViewHolder(@NonNull HomeVH holder, int position) { + String dir = nameList.get(position); + Log.d(TAG, "绑定分类:" + dir); + + // 提取分类名称 + String categoryName = dir.substring(dir.lastIndexOf("_") + 1); + holder.tvName.setText(categoryName); + + // ========== 核心修改:替换为2列网格布局(适配页面) ========== + // 1. 创建GridLayoutManager(2列) + GridLayoutManager gridLayoutManager = new GridLayoutManager(mCon, GRID_COLUMN_COUNT); + // 2. 设置Item间距装饰器(避免图片挤在一起) + holder.preRecycler.addItemDecoration(new RecyclerView.ItemDecoration() { + @Override + public void getItemOffsets(android.graphics.Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { + int spacing = dp2px(GRID_SPACING_DP); + outRect.left = spacing; + outRect.right = spacing; + outRect.top = spacing; + outRect.bottom = spacing; + } + }); + holder.preRecycler.setLayoutManager(gridLayoutManager); + + // 3. 初始化子适配器(适配网格布局) + HomeItemAdapter homeChildAdapter = new HomeItemAdapter(mCon, dir); + homeChildAdapter.setListener(listener); + holder.preRecycler.setAdapter(homeChildAdapter); + + // "查看全部"点击事件 + holder.seeAll.setOnClickListener(v -> { + if (listener != null) { + listener.onClickItem(true, dir); + } + }); + } + + @Override + public int getItemCount() { + // 空值保护:避免列表为空导致崩溃 + return nameList == null ? 0 : nameList.size(); + } + + // dp转px工具方法(适配不同设备) + private int dp2px(int dp) { + return (int) (dp * mCon.getResources().getDisplayMetrics().density + 0.5f); + } + + // ViewHolder(优化:增加控件空指针检查) + public static class HomeVH extends RecyclerView.ViewHolder { + private TextView tvName; // 分类名称 + private RecyclerView preRecycler; // 图片列表 + private TextView seeAll; // 查看全部 + + public HomeVH(@NonNull View itemView) { + super(itemView); + // 控件绑定(增加日志,方便排查ID错误) + tvName = itemView.findViewById(R.id.tv_name); + preRecycler = itemView.findViewById(R.id.pre_recycler); + + + if (tvName == null || preRecycler == null || seeAll == null) { + Log.e(TAG, "adapter_home.xml中存在未找到的控件ID,请检查布局文件"); + } + } + } + + // ========== 可选:刷新数据方法(适配分类列表更新) ========== + public void refreshData(List newNameList) { + if (newNameList != null) { + this.nameList = newNameList; + notifyDataSetChanged(); // 局部刷新可改用notifyItemRangeChanged + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/paint/sweet/drawing/sweetadapter/ImagePreviewListAdapter.java b/app/src/main/java/com/paint/sweet/drawing/sweetadapter/ImagePreviewListAdapter.java new file mode 100644 index 0000000..2b4db82 --- /dev/null +++ b/app/src/main/java/com/paint/sweet/drawing/sweetadapter/ImagePreviewListAdapter.java @@ -0,0 +1,189 @@ +package com.paint.sweet.drawing.sweetadapter; + +import static android.content.ContentValues.TAG; + +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.cardview.widget.CardView; +import androidx.recyclerview.widget.RecyclerView; + +import com.paint.sweet.drawing.PaintingApp; +import com.paint.sweet.drawing.R; +import com.paint.sweet.drawing.sweetactivity.PhotoSelectActivity; +import com.paint.sweet.drawing.sweetmanager.AppUtils; + +import java.util.ArrayList; +import java.util.List; + +public class ImagePreviewListAdapter extends RecyclerView.Adapter { + + private Context mCon; + private List data; // 实际的数据源 + private String categoryName; // 新增:分类名称(用于图片上的文字显示) + private boolean isSearchPage = false; // 新增:标记是否为搜索页面(默认false) + + // 新增:搜索页面专用构造方法(无阴影) + public ImagePreviewListAdapter(Context mCon, List bitmapList, boolean isSearchPage) { + this.mCon = mCon; + this.data = bitmapList != null ? bitmapList : new ArrayList<>(); + this.categoryName = ""; + this.isSearchPage = isSearchPage; // 标记为搜索页面 + } + + // 保留:接收分类名称的构造方法(主页面用,带阴影) + public ImagePreviewListAdapter(Context mCon, List bitmapList, String categoryName) { + this.mCon = mCon; + this.data = bitmapList != null ? bitmapList : new ArrayList<>(); + this.categoryName = categoryName != null ? categoryName : ""; + this.isSearchPage = false; // 主页面默认带阴影 + } + + // 保留:原有构造方法,兼容旧调用 + public ImagePreviewListAdapter(Context mCon, List bitmapList) { + this(mCon, bitmapList, ""); + } + + @NonNull + @Override + public HomeVH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_preview_image_list, parent, false); + return new HomeVH(view); + } + + @Override + public void onBindViewHolder(@NonNull HomeVH holder, int position) { + if (position < 0 || position >= data.size()) { + Log.w(TAG, "无效的position:" + position); + return; + } + + String name = data.get(position); + Log.d(TAG, "加载图片:" + name); + + // ========== 核心修改1:搜索页面移除所有阴影相关样式 ========== + if (isSearchPage) { + // 1. 隐藏阴影层 + holder.shadowLayout.setVisibility(View.GONE); + // 2. 隐藏分类文字(搜索页面无需显示) + holder.tvCategoryName.setVisibility(View.GONE); + // 3. 移除CardView的阴影 + holder.cardView.setCardElevation(0); + holder.cardView.setUseCompatPadding(false); + holder.cardView.setPreventCornerOverlap(false); + } else { + // 主页面保留原有阴影逻辑 + // 显示分类名称(图片上的文字) + if (!categoryName.isEmpty()) { + holder.tvCategoryName.setText(categoryName); + holder.tvCategoryName.setVisibility(View.VISIBLE); + } else { + holder.tvCategoryName.setVisibility(View.GONE); + } + // 恢复CardView阴影(确保主页面阴影正常) + holder.cardView.setCardElevation(dp2px(4)); // 主页面默认阴影高度4dp + } + + Bitmap bitmap = null; + try { + bitmap = AppUtils.loadImageFromAssets(mCon, name); + } catch (Exception e) { + Log.e(TAG, "加载图片失败:" + name, e); + } + + if (bitmap != null) { + holder.previewIm.setImageBitmap(bitmap); + // 改为FIT_CENTER:完整显示图片,按比例适配控件(不裁剪、不拉伸) + holder.previewIm.setScaleType(ImageView.ScaleType.FIT_CENTER); + // 开启调整视图边界:让ImageView根据图片比例自动调整高度 + holder.previewIm.setAdjustViewBounds(true); + // 移除固定背景色(可选,根据UI需求保留/删除) + holder.previewIm.setBackgroundColor(mCon.getResources().getColor(R.color.white)); + + // ========== 核心修改2:仅主页面执行阴影层布局逻辑 ========== + if (!isSearchPage) { + holder.previewIm.post(() -> { + int imageHeight = holder.previewIm.getHeight(); + int shadowHeight = (int) (imageHeight * 0.3); // 阴影高度=图片30% + + // 1. 设置阴影层高度 + ViewGroup.LayoutParams params = holder.shadowLayout.getLayoutParams(); + params.height = shadowHeight; + holder.shadowLayout.setLayoutParams(params); + + // 2. 强制设置阴影层对齐图片底部(关键:实现下部分显示) + if (holder.shadowLayout.getLayoutParams() instanceof RelativeLayout.LayoutParams) { + RelativeLayout.LayoutParams shadowParams = (RelativeLayout.LayoutParams) holder.shadowLayout.getLayoutParams(); + shadowParams.addRule(RelativeLayout.ALIGN_BOTTOM, R.id.imPreview); // 对齐图片底部 + shadowParams.addRule(RelativeLayout.ALIGN_LEFT, R.id.imPreview); // 对齐图片左侧 + shadowParams.addRule(RelativeLayout.ALIGN_RIGHT, R.id.imPreview); // 对齐图片右侧 + holder.shadowLayout.setLayoutParams(shadowParams); + } + + // 确保阴影层可见 + holder.shadowLayout.setVisibility(View.VISIBLE); + }); + } + } else { + holder.previewIm.setImageDrawable(null); + holder.previewIm.setBackgroundColor(mCon.getResources().getColor(R.color.white)); + // 图片加载失败时隐藏阴影层 + holder.shadowLayout.setVisibility(View.GONE); + } + + // 点击跳转逻辑(保留原有功能) + holder.cardView.setOnClickListener(v -> { + Intent intent = new Intent(mCon, PhotoSelectActivity.class); + intent.putExtra(PaintingApp.Key_Camera, name); + mCon.startActivity(intent); + }); + } + + @Override + public int getItemCount() { + return data.size(); + } + + // 新增:dp转px工具方法 + private int dp2px(int dp) { + return (int) (dp * mCon.getResources().getDisplayMetrics().density + 0.5f); + } + + // ViewHolder包含阴影层和分类文字控件 + public static class HomeVH extends RecyclerView.ViewHolder { + private ImageView previewIm; + private CardView cardView; + private TextView tvCategoryName; // 分类名称文字 + private LinearLayout shadowLayout; // 阴影层布局 + + public HomeVH(@NonNull View itemView) { + super(itemView); + previewIm = itemView.findViewById(R.id.imPreview); + cardView = itemView.findViewById(R.id.card_view); + tvCategoryName = itemView.findViewById(R.id.tv_category_name); // 绑定文字控件 + shadowLayout = itemView.findViewById(R.id.shadow_layout); // 绑定阴影层布局 + } + } + + // 修正updateData方法(操作正确的数据源data,且增加非空判断) + public void updateData(List newList) { + // 防止传入null列表 + List safeList = newList != null ? newList : new ArrayList<>(); + // 清空原有数据(操作正确的data变量) + this.data.clear(); + // 添加新数据 + this.data.addAll(safeList); + // 通知列表刷新 + notifyDataSetChanged(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/paint/sweet/drawing/sweetfragment/DrawingImagePreviewFragment.java b/app/src/main/java/com/paint/sweet/drawing/sweetfragment/DrawingImagePreviewFragment.java new file mode 100644 index 0000000..b7c0404 --- /dev/null +++ b/app/src/main/java/com/paint/sweet/drawing/sweetfragment/DrawingImagePreviewFragment.java @@ -0,0 +1,207 @@ +package com.paint.sweet.drawing.sweetfragment; + +import android.graphics.Rect; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.paint.sweet.drawing.databinding.FragmentPreviewContentBinding; +import com.paint.sweet.drawing.sweetadapter.ImagePreviewListAdapter; +import com.paint.sweet.drawing.sweetmanager.AppUtils; + +import java.util.List; + +/** + * 每个Tab对应的图片预览Fragment + * 核心功能:2列网格展示图片、对称间距、搜索过滤、和顶部图标对齐 + */ +public class DrawingImagePreviewFragment extends Fragment { + // 参数Key:资产目录路径、分类名称 + private static final String ARG_DIR_PATH = "dir_path"; + private static final String ARG_CATEGORY_NAME = "category_name"; + + // ViewBinding + private FragmentPreviewContentBinding binding; + // 数据相关 + private String dirPath; // 资产目录路径 + private String categoryName; // 分类名称(用于图片底部文字显示) + private List originalContentList; // 原始图片列表 + private List filteredContentList; // 搜索过滤后的列表 + private ImagePreviewListAdapter adapter; // 图片适配器 + + // 静态创建方法(推荐:避免直接new,统一参数传递) + public static DrawingImagePreviewFragment newInstance(String dirPath, String categoryName) { + DrawingImagePreviewFragment fragment = new DrawingImagePreviewFragment(); + Bundle args = new Bundle(); + args.putString(ARG_DIR_PATH, dirPath); + args.putString(ARG_CATEGORY_NAME, categoryName); + fragment.setArguments(args); + return fragment; + } + + // 兼容旧调用:无分类名称时传空字符串 + public static DrawingImagePreviewFragment newInstance(String dirPath) { + return newInstance(dirPath, ""); + } + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + // 解析参数 + if (getArguments() != null) { + dirPath = getArguments().getString(ARG_DIR_PATH); + categoryName = getArguments().getString(ARG_CATEGORY_NAME); + } + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + // 初始化ViewBinding + binding = FragmentPreviewContentBinding.inflate(inflater, container, false); + // 初始化RecyclerView(直接执行,无延迟) + initRecyclerView(); + return binding.getRoot(); + } + + /** + * 初始化RecyclerView:设置布局、适配器、间距 + */ + private void initRecyclerView() { + // 空值校验:避免空指针 + if (dirPath == null || requireContext() == null) { + return; + } + + // 1. 加载资产目录下的图片列表 + List contentList = AppUtils.fileExistsInAssets(requireContext(), dirPath); + // 2. 初始化适配器(传递上下文、图片列表、分类名称) + adapter = new ImagePreviewListAdapter(requireContext(), contentList, categoryName); + + // 3. 设置2列网格布局 + GridLayoutManager gridLayoutManager = new GridLayoutManager(requireContext(), 2); + binding.preRecycler.setLayoutManager(gridLayoutManager); + binding.preRecycler.setAdapter(adapter); + + // 4. 页面四周边距:15dp(和顶部伸缩图标左间距统一,保证对齐) + int pagePadding = dp2px(15); + binding.preRecycler.setPadding(pagePadding, pagePadding, pagePadding, pagePadding); + binding.preRecycler.setClipToPadding(false); // 允许内容延伸到padding区域 + + // 5. 计算图片Item宽度 + int screenWidth = requireContext().getResources().getDisplayMetrics().widthPixels; + int usableWidth = screenWidth - pagePadding * 2; // 可用宽度=屏幕宽度-左右页边距 + int itemSpacing = dp2px(12); // 图片间统一间距:12dp + int itemWidth = (usableWidth - itemSpacing) / 2; // 2列均分宽度(扣除间距) + + // 6. 设置Item间距(核心:对称分配,保证左右/上下间距一致) + binding.preRecycler.addItemDecoration(new RecyclerView.ItemDecoration() { + @Override + public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { + // 设置Item宽度(固定宽度,保证两列一致) + ViewGroup.LayoutParams params = view.getLayoutParams(); + params.width = itemWidth; + params.height = ViewGroup.LayoutParams.WRAP_CONTENT; // 高度自适应图片 + view.setLayoutParams(params); + + // 获取Item位置:判断左/右列 + int position = parent.getChildAdapterPosition(view); + int column = position % 2; // 0=左列,1=右列 + int halfSpacing = itemSpacing / 2; // 间距的一半 + + // 水平间距:对称分配(左列右半距、右列左半距) + if (column == 0) { + outRect.left = 0; + outRect.right = halfSpacing; + } else { + outRect.left = halfSpacing; + outRect.right = 0; + } + + // 垂直间距:上下各半距(和水平间距一致) + outRect.top = halfSpacing; + outRect.bottom = halfSpacing; + } + }); + + // 7. 初始化搜索相关列表 + originalContentList = contentList; + filteredContentList = new java.util.ArrayList<>(contentList); + } + + /** + * 检查是否有匹配搜索关键词的内容 + * @param keyword 搜索关键词 + * @return true=有匹配,false=无匹配 + */ + public boolean hasMatchContent(String keyword) { + if (TextUtils.isEmpty(keyword) || originalContentList == null) { + return originalContentList != null && !originalContentList.isEmpty(); + } + // 忽略大小写匹配文件名 + String lowerKeyword = keyword.toLowerCase(); + for (String fileName : originalContentList) { + String pureFileName = fileName.substring(fileName.lastIndexOf("/") + 1).toLowerCase(); + if (pureFileName.contains(lowerKeyword)) { + return true; + } + } + return false; + } + + /** + * 更新搜索关键词,刷新列表 + * @param keyword 搜索关键词 + */ + public void updateSearchKeyword(String keyword) { + if (originalContentList == null || filteredContentList == null || adapter == null) { + return; + } + // 清空过滤列表 + filteredContentList.clear(); + if (TextUtils.isEmpty(keyword)) { + // 无关键词:恢复原始列表 + filteredContentList.addAll(originalContentList); + } else { + // 有关键词:过滤匹配的图片 + String lowerKeyword = keyword.toLowerCase(); + for (String fileName : originalContentList) { + String pureFileName = fileName.substring(fileName.lastIndexOf("/") + 1).toLowerCase(); + if (pureFileName.contains(lowerKeyword)) { + filteredContentList.add(fileName); + } + } + } + // 刷新适配器 + adapter.notifyDataSetChanged(); + } + + /** + * dp转px工具方法 + * @param dp 待转换的dp值 + * @return 转换后的px值 + */ + private int dp2px(int dp) { + return (int) (dp * requireContext().getResources().getDisplayMetrics().density + 0.5f); + } + + /** + * 销毁View时清空数据,避免内存泄漏 + */ + @Override + public void onDestroyView() { + super.onDestroyView(); + originalContentList = null; + filteredContentList = null; + adapter = null; + binding = null; // 清空ViewBinding,释放资源 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/paint/sweet/drawing/sweetfragment/HomeMainFragment.java b/app/src/main/java/com/paint/sweet/drawing/sweetfragment/HomeMainFragment.java new file mode 100644 index 0000000..e814c83 --- /dev/null +++ b/app/src/main/java/com/paint/sweet/drawing/sweetfragment/HomeMainFragment.java @@ -0,0 +1,240 @@ +package com.paint.sweet.drawing.sweetfragment; + +import android.content.Intent; +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.drawerlayout.widget.DrawerLayout; +import androidx.fragment.app.Fragment; +import androidx.viewpager2.adapter.FragmentStateAdapter; +import androidx.viewpager2.widget.ViewPager2; + +import com.google.android.material.navigation.NavigationView; +import com.paint.sweet.drawing.R; +import com.paint.sweet.drawing.databinding.FragmentHomeMainBinding; +import com.paint.sweet.drawing.sweetactivity.DrawingSearchActivity; +import com.paint.sweet.drawing.sweetmanager.AppConstants; + +import java.util.List; + +public class HomeMainFragment extends Fragment { + private FragmentHomeMainBinding binding; + private List allDirs; + private DrawerLayout drawerLayout; + private NavigationView navView; + private ImageView menuToggleIv; + private int currentSelectedMenuId = -1; + + public HomeMainFragment() {} + + public static HomeMainFragment newInstance() { + return new HomeMainFragment(); + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + allDirs = AppConstants.getAllDir(); + } + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + binding = FragmentHomeMainBinding.inflate(inflater, container, false); + + initViews(); + initMenuToggleIcon(); + addStatusBarPlaceholder(); + restoreBackground(); + initDrawerAndNav(); + setSearchIcon(); + setupSearchBoxAsJumpButton(); + initViewPager(); + selectFirstMenuItem(); + + return binding.getRoot(); + } + + private void initViews() { + menuToggleIv = binding.ivMenuToggle; + } + + private void initMenuToggleIcon() { + menuToggleIv.setOnClickListener(v -> { + if (drawerLayout.isDrawerOpen(navView)) { + drawerLayout.closeDrawer(navView); + } else { + drawerLayout.openDrawer(navView); + } + }); + } + + private void addStatusBarPlaceholder() { + int statusBarHeight = getStatusBarHeight(); + ViewGroup parent = (ViewGroup) binding.etSearch.getParent(); + parent.setPadding(parent.getPaddingLeft(), + statusBarHeight + parent.getPaddingTop(), + parent.getPaddingRight(), + parent.getPaddingBottom()); + } + + private int getStatusBarHeight() { + int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); + return resourceId > 0 ? getResources().getDimensionPixelSize(resourceId) : 0; + } + + private void restoreBackground() { + binding.drawerLayout.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.bg)); + View mainContent = binding.drawerLayout.getChildAt(0); + if (mainContent != null) { + mainContent.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.bg)); + } + } + + private void initDrawerAndNav() { + drawerLayout = binding.drawerLayout; + navView = binding.navView; + navView.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.bg)); + navView.getMenu().clear(); + + // 动态添加Menu Item(适配窄导航栏+文字居中) + for (int i = 0; i < allDirs.size(); i++) { + String dir = allDirs.get(i); + String title = dir.substring(dir.lastIndexOf("_") + 1); + int itemId = dir.hashCode(); + + // 加载自定义Item布局(依赖布局文件的居中配置,移除代码内的padding和textSize) + View itemView = LayoutInflater.from(requireContext()) + .inflate(R.layout.item_nav_menu, navView, false); + TextView tvTitle = itemView.findViewById(R.id.tv_menu_title); + tvTitle.setText(title); + // 移除代码内的padding和textSize设置,完全依赖布局文件 + // 核心:布局文件已设置android:gravity="center",无需额外调整 + + // 强制设置布局可点击,并绑定点击事件(修复点击文字无响应的核心逻辑) + itemView.setClickable(true); + // 【关键修复】给自定义布局设置点击事件,手动触发Menu Item的选中逻辑 + itemView.setOnClickListener(v -> { + navView.getMenu().performIdentifierAction(itemId, 0); + }); + + // 添加到Menu并绑定布局 + navView.getMenu().add(0, itemId, i, "") + .setActionView(itemView); + } + + // 菜单点击事件 + navView.setNavigationItemSelectedListener(item -> { + if (currentSelectedMenuId != -1) { + View prevView = navView.getMenu().findItem(currentSelectedMenuId).getActionView(); + if (prevView != null) prevView.setSelected(false); + } + View currentView = item.getActionView(); + if (currentView != null) currentView.setSelected(true); + currentSelectedMenuId = item.getItemId(); + + TextView tvTitle = currentView.findViewById(R.id.tv_menu_title); + String title = tvTitle.getText().toString(); + for (int i = 0; i < allDirs.size(); i++) { + String dir = allDirs.get(i); + String tabTitle = dir.substring(dir.lastIndexOf("_") + 1); + if (tabTitle.equals(title)) { + binding.viewPager.setCurrentItem(i, false); + drawerLayout.closeDrawer(navView); + return true; + } + } + return false; + }); + } + + private void selectFirstMenuItem() { + if (navView.getMenu().size() > 0) { + currentSelectedMenuId = navView.getMenu().getItem(0).getItemId(); + View firstView = navView.getMenu().getItem(0).getActionView(); + if (firstView != null) firstView.setSelected(true); + } + } + + private void setSearchIcon() { + EditText etSearch = binding.etSearch; + etSearch.setBackground(ContextCompat.getDrawable(requireContext(), R.drawable.bg_search_input)); + etSearch.setTextColor(ContextCompat.getColor(requireContext(), R.color.white)); + etSearch.setHintTextColor(ContextCompat.getColor(requireContext(), R.color.gray_number)); + etSearch.setTextSize(16); + etSearch.setPadding(dp2px(16), dp2px(12), dp2px(16), dp2px(12)); + + Drawable searchIcon = ContextCompat.getDrawable(requireContext(), R.mipmap.search2); + if (searchIcon != null) { + int iconSize = dp2px(18); + searchIcon.setBounds(0, 0, iconSize, iconSize); + searchIcon.setTint(ContextCompat.getColor(requireContext(), R.color.gray_number)); + etSearch.setCompoundDrawables(searchIcon, null, null, null); + etSearch.setCompoundDrawablePadding(dp2px(10)); + } + } + + private void setupSearchBoxAsJumpButton() { + EditText etSearch = binding.etSearch; + etSearch.setFocusable(false); + etSearch.setFocusableInTouchMode(false); + etSearch.setClickable(true); + etSearch.setOnClickListener(v -> { + Intent intent = new Intent(requireContext(), DrawingSearchActivity.class); + startActivity(intent); + }); + } + + private int dp2px(float dp) { + final float scale = getResources().getDisplayMetrics().density; + return (int) (dp * scale + 0.5f); + } + + private void initViewPager() { + ViewPager2 viewPager = binding.viewPager; + viewPager.setAdapter(new FragmentStateAdapter(this) { + @Override + public int getItemCount() { + return allDirs.size(); + } + + @NonNull + @Override + public Fragment createFragment(int position) { + String dir = allDirs.get(position); + String categoryName = dir.substring(dir.lastIndexOf("_") + 1); + return DrawingImagePreviewFragment.newInstance(allDirs.get(position), categoryName); + } + }); + + // ViewPager切换时,同步选中项样式 + viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { + @Override + public void onPageSelected(int position) { + super.onPageSelected(position); + if (navView.getMenu().size() > position) { + if (currentSelectedMenuId != -1) { + View prevView = navView.getMenu().findItem(currentSelectedMenuId).getActionView(); + if (prevView != null) prevView.setSelected(false); + } + currentSelectedMenuId = navView.getMenu().getItem(position).getItemId(); + View currentView = navView.getMenu().getItem(position).getActionView(); + if (currentView != null) currentView.setSelected(true); + } + } + }); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + binding = null; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/paint/sweet/drawing/sweetfragment/SettingCenterFragment.java b/app/src/main/java/com/paint/sweet/drawing/sweetfragment/SettingCenterFragment.java new file mode 100644 index 0000000..4a93057 --- /dev/null +++ b/app/src/main/java/com/paint/sweet/drawing/sweetfragment/SettingCenterFragment.java @@ -0,0 +1,61 @@ +package com.paint.sweet.drawing.sweetfragment; + +import android.content.pm.PackageInfo; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.fragment.app.Fragment; + +import com.paint.sweet.drawing.R; +import com.paint.sweet.drawing.databinding.FragmentSettingCenterBinding; +import com.paint.sweet.drawing.sweetmanager.AppUtils; + +public class SettingCenterFragment extends Fragment { + private static final String ARG_PARAM1 = "param1"; + private static final String ARG_PARAM2 = "param2"; + + + private String mParam1; + private String mParam2; + private FragmentSettingCenterBinding fragmentSettingBinding; + + public SettingCenterFragment() { + + } + public static SettingCenterFragment newInstance() { + SettingCenterFragment fragment = new SettingCenterFragment(); + Bundle args = new Bundle(); + + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { + mParam1 = getArguments().getString(ARG_PARAM1); + mParam2 = getArguments().getString(ARG_PARAM2); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + fragmentSettingBinding = FragmentSettingCenterBinding.inflate(getLayoutInflater()); + onInit(); + return fragmentSettingBinding.getRoot(); + } + + private void onInit(){ + String version = "1.0"; + PackageInfo info = AppUtils.getInfo(requireContext()); + if(info!=null){ + version = info.versionName; + } + String format = String.format(getString(R.string.version_code), version); + fragmentSettingBinding.textAppVersion.setText(format); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/paint/sweet/drawing/sweetmanager/AppConstants.java b/app/src/main/java/com/paint/sweet/drawing/sweetmanager/AppConstants.java new file mode 100644 index 0000000..1778f69 --- /dev/null +++ b/app/src/main/java/com/paint/sweet/drawing/sweetmanager/AppConstants.java @@ -0,0 +1,48 @@ +package com.paint.sweet.drawing.sweetmanager; + +import java.util.ArrayList; +import java.util.List; + +public class AppConstants { + + public static String Class_Animals = "png_Animals"; + public static String Class_birds = "png_Birds"; + public static String Class_butterfly = "png_Butterfly"; + public static String Class_cafe = "png_Cafe"; + public static String Class_cartoons = "png_Cartoons"; + public static String Class_christmas = "png_Christmas"; + public static String Class_festivals = "png_Festivals"; + public static String Class_flowers = "png_Flowers"; + public static String Class_fruits = "png_Fruits"; + public static String Class_general = "png_General"; + + public static String Class_mehndi = "png_Mehndi"; + public static String Class_nature = "png_Nature"; + public static String Class_properties = "png_Properties"; + public static String Class_rangoli = "png_Rangoli"; + public static String Class_sports = "png_Sports"; + public static String Class_vehicles = "png_Vehicles"; + + public static List getAllDir() { + ArrayList list = new ArrayList<>(); + list.add(Class_Animals); + list.add(Class_birds); + list.add(Class_butterfly); + list.add(Class_cafe); + list.add(Class_cartoons); + list.add(Class_christmas); + list.add(Class_festivals); + list.add(Class_flowers); + list.add(Class_fruits); + list.add(Class_general); + list.add(Class_mehndi); + list.add(Class_nature); + list.add(Class_properties); + list.add(Class_rangoli); + list.add(Class_sports); + list.add(Class_vehicles); + return list; + + + } +} diff --git a/app/src/main/java/com/paint/sweet/drawing/sweetmanager/AppUtils.java b/app/src/main/java/com/paint/sweet/drawing/sweetmanager/AppUtils.java new file mode 100644 index 0000000..3e32986 --- /dev/null +++ b/app/src/main/java/com/paint/sweet/drawing/sweetmanager/AppUtils.java @@ -0,0 +1,133 @@ +package com.paint.sweet.drawing.sweetmanager; + +import android.app.Activity; +import android.content.Context; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.content.res.AssetManager; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Point; +import android.util.DisplayMetrics; +import android.util.Range; +import android.view.MotionEvent; +import android.view.View; +import android.view.WindowManager; + +import androidx.camera.core.Camera; +import androidx.core.app.ActivityCompat; + +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; + +public class AppUtils { + + public static int getRange(Camera camera) { + Range exposureCompensationRange = camera.getCameraInfo().getExposureState().getExposureCompensationRange(); + Integer upper = exposureCompensationRange.getUpper(); + Integer lower = exposureCompensationRange.getLower(); + return upper; + } + + public static void setStatusBarTextColor(Activity activity, boolean dark) { + View decor = activity.getWindow().getDecorView(); + if (dark) { + decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + } else { + decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); + } + } + + public static Point getScreen(Context context) { + DisplayMetrics displayMetrics = new DisplayMetrics(); + WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); + windowManager.getDefaultDisplay().getMetrics(displayMetrics); + int width = displayMetrics.widthPixels; + int height = displayMetrics.heightPixels; + Point point = new Point(); + point.x = width; + point.y = height; + return point; + } + public static boolean checkPermission(Context context,String[] permissions) { + boolean result = true; + for (String per : permissions) { + if (ActivityCompat.checkSelfPermission(context, per) != PackageManager.PERMISSION_GRANTED) { + result = false; + } + } + return result; + + } + public static Bitmap loadImageFromAssets(Context context, String fileName) { + Bitmap bitmap = null; + AssetManager assetManager = context.getAssets(); + try (InputStream is = assetManager.open(fileName)) { + bitmap = BitmapFactory.decodeStream(is); + } catch (IOException e) { + return bitmap; + } + + return bitmap; + + } + + public static List fileExistsInAssets(Context context, String dir) { + + List pathList = new ArrayList(); + try { + AssetManager assetManager = context.getAssets(); + String[] files = assetManager.list(dir); + + if (files != null) { + for (String name : files) { + pathList.add(dir + "/" + name); + } + return pathList; + } + } catch (IOException e) { + + return pathList; + } + return pathList; + } + + + public static List getAnimalsName(Context context, String dir) { + List list = new ArrayList<>(); + for (int i = 0; i < 40; i++) { + + Bitmap bitmap = loadImageFromAssets(context, dir + "/" + (i + 1) + ".jpg"); + if (bitmap == null) { + break; + } else { + list.add(bitmap); + } + + } + return list; + } + + public static PackageInfo getInfo(Context context) { + PackageInfo packageInfo; + try { + packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); + } catch (PackageManager.NameNotFoundException exception) { + + return null; + } + return packageInfo; + } + + + public static float getDistance(MotionEvent event) { + float x = event.getX(0) - event.getX(1); + float y = event.getY(0) - event.getY(1); + return (float) Math.sqrt(x * x + y * y); + } + +} diff --git a/app/src/main/java/com/paint/sweet/drawing/sweetmanager/MultiTouchManager.java b/app/src/main/java/com/paint/sweet/drawing/sweetmanager/MultiTouchManager.java new file mode 100644 index 0000000..0f6413a --- /dev/null +++ b/app/src/main/java/com/paint/sweet/drawing/sweetmanager/MultiTouchManager.java @@ -0,0 +1,78 @@ +package com.paint.sweet.drawing.sweetmanager; + +import android.graphics.Matrix; +import android.graphics.PointF; +import android.util.Log; +import android.view.MotionEvent; +import android.view.View; +import android.widget.ImageView; + +/* loaded from: classes.dex */ +public class MultiTouchManager implements View.OnTouchListener { + private static final int DRAG = 1; + private static final int NONE = 0; + private static final int ZOOM = 2; + private float k; + ImageView view; + float[] lastEvent = null; + float d = 1.0f; + float newRot = 0.0f; + private Matrix matrix = new Matrix(); + private Matrix savedMatrix = new Matrix(); + private PointF start = new PointF(); + private PointF mid = new PointF(); + float oldDist = 1.0f; + private int mode = 0; + + public MultiTouchManager(ImageView imageview, float ScaleW, float ScaleH, float x, float y) { + this.view = imageview; + Log.e("Pos..........", String.valueOf(x) + "..............." + String.valueOf(y)); + this.matrix.postScale(ScaleW, ScaleH, this.mid.x, this.mid.y); + this.matrix.postTranslate(x, y); + this.view.setImageMatrix(this.matrix); + } + + private float a(MotionEvent paramMotionEvent) { + float x = paramMotionEvent.getX(0) - paramMotionEvent.getX(1); + float y = paramMotionEvent.getY(0) - paramMotionEvent.getY(1); + return (float) Math.sqrt((x * x) + (y * y)); + } + + private void a(PointF paramPointF, MotionEvent paramMotionEvent) { + paramPointF.set((paramMotionEvent.getX(0) + paramMotionEvent.getX(1)) / 2.0f, (paramMotionEvent.getY(0) + paramMotionEvent.getY(1)) / 2.0f); + } + + private float b(MotionEvent paramMotionEvent) { + return (float) Math.toDegrees(Math.atan2(paramMotionEvent.getY(0) - paramMotionEvent.getY(1), paramMotionEvent.getX(0) - paramMotionEvent.getX(1))); + } + + /* JADX WARN: Code restructure failed: missing block: B:11:0x0016, code lost: + if (r7 != 6) goto L11; + */ + @Override // android.view.View.OnTouchListener + /* + Code decompiled incorrectly, please refer to instructions dump. + To view partially-correct code enable 'Show inconsistent code' option in preferences + */ + public boolean onTouch(View r7, MotionEvent r8) { + /* + Method dump skipped, instructions count: 240 + To view this dump change 'Code comments level' option to 'DEBUG' + */ + throw new UnsupportedOperationException("Method not decompiled: com.appmania.tracephoto.drawonpaper.apputils.MultiTouch.onTouch(android.view.View, android.view.MotionEvent):boolean"); + } + + private float rotation(MotionEvent event) { + return (float) Math.toDegrees(Math.atan2(event.getY(0) - event.getY(1), event.getX(0) - event.getX(1))); + } + + private float spacing(MotionEvent event) { + float x = event.getX(0) - event.getX(1); + float y = event.getY(0) - event.getY(1); + return (float) Math.sqrt((x * x) + (y * y)); + } + + private void midPoint(PointF point, MotionEvent event) { + point.set((event.getX(0) + event.getX(1)) / 2.0f, (event.getY(0) + event.getY(1)) / 2.0f); + } +} diff --git a/app/src/main/java/com/paint/sweet/drawing/sweetview/BottomTabScrollView.java b/app/src/main/java/com/paint/sweet/drawing/sweetview/BottomTabScrollView.java new file mode 100644 index 0000000..8be8d42 --- /dev/null +++ b/app/src/main/java/com/paint/sweet/drawing/sweetview/BottomTabScrollView.java @@ -0,0 +1,141 @@ +package com.paint.sweet.drawing.sweetview; + +import android.content.Context; +import android.util.AttributeSet; +import android.util.TypedValue; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewTreeObserver; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.TextView; + +import com.paint.sweet.drawing.R; + +public class + + +BottomTabScrollView extends FrameLayout { + private ImageView ivIcon; + private TextView tvText; + private View ivDot; // 小黑点控件 + private boolean isSelected = false; + private static final long ANIM_DURATION = 300; + private int tabHeight = 60; // 兜底高度 + + // 颜色资源 + private int unselectedColor; + private int selectedColor; + + public BottomTabScrollView(Context context) { + this(context, null); + } + + public BottomTabScrollView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public BottomTabScrollView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + // 加载颜色资源 + unselectedColor = getResources().getColor(R.color.tab_unselected); + selectedColor = getResources().getColor(R.color.tab_selected); + + // 加载布局 + LayoutInflater.from(context).inflate(R.layout.item_bottom_tab_scroll, this, true); + ivIcon = findViewById(R.id.iv_tab_icon); + tvText = findViewById(R.id.tv_tab_text); + ivDot = findViewById(R.id.iv_tab_dot); // 绑定小黑点 + + // 核心修改1:设置文字默认字号 + tvText.setTextSize(14); + + // 监听View高度 + getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { + @Override + public void onGlobalLayout() { + if (getHeight() > 0) { + tabHeight = getHeight(); + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) { + getViewTreeObserver().removeOnGlobalLayoutListener(this); + } else { + getViewTreeObserver().removeGlobalOnLayoutListener(this); + } + } + } + }); + } + + // 设置Tab数据(图标+文字) + public void setDrawTabData(int iconRes, String text) { + ivIcon.setImageResource(iconRes); + tvText.setText(text); + // 初始化为未选中颜色 + ivIcon.setColorFilter(unselectedColor); + tvText.setTextColor(unselectedColor); + ivDot.setVisibility(View.GONE); // 初始隐藏小黑点 + + // 核心修改2:再次确认文字字号 + tvText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14); + } + + // 切换选中状态(同步颜色+小黑点) + public void setTabSelected(boolean selected) { + if (isSelected == selected) return; + isSelected = selected; + + if (selected) { + // 选中:图标上移隐藏+文字下移显示,同时切换为选中颜色+显示小黑点 + ivIcon.setColorFilter(selectedColor); // 图标选中颜色 + ivIcon.animate() + .translationY(-tabHeight) + .alpha(0f) + .setDuration(ANIM_DURATION) + .start(); + + tvText.setTextColor(selectedColor); // 文字选中颜色 + // 核心修改3:选中时字号再大2个sp + tvText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16); + tvText.setVisibility(View.VISIBLE); + tvText.animate() + .translationY(0) + .alpha(1f) + .setDuration(ANIM_DURATION) + .start(); + + // 显示小黑点(带动画) + ivDot.setVisibility(View.VISIBLE); + ivDot.setAlpha(0f); + ivDot.animate() + .alpha(1f) + .setDuration(ANIM_DURATION) + .start(); + + } else { + // 未选中:文字上移隐藏+图标下移显示,切换为未选中颜色+隐藏小黑点 + tvText.setTextColor(unselectedColor); // 文字未选中颜色 + // 核心修改4:未选中时还原字号 + tvText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14); + tvText.animate() + .translationY(-tabHeight) + .alpha(0f) + .setDuration(ANIM_DURATION) + .withEndAction(() -> tvText.setVisibility(View.INVISIBLE)) + .start(); + + // 隐藏小黑点 + ivDot.animate() + .alpha(0f) + .setDuration(ANIM_DURATION) + .withEndAction(() -> ivDot.setVisibility(View.GONE)) + .start(); + + ivIcon.setColorFilter(unselectedColor); // 图标未选中颜色 + ivIcon.animate() + .translationY(0) + .alpha(1f) + .setDuration(ANIM_DURATION) + .start(); + } + } +} \ No newline at end of file diff --git a/app/src/main/logo1-playstore.png b/app/src/main/logo1-playstore.png new file mode 100644 index 0000000..e08abc8 Binary files /dev/null and b/app/src/main/logo1-playstore.png differ diff --git a/app/src/main/logo10-playstore.png b/app/src/main/logo10-playstore.png new file mode 100644 index 0000000..08e3f80 Binary files /dev/null and b/app/src/main/logo10-playstore.png differ diff --git a/app/src/main/logo3-playstore.png b/app/src/main/logo3-playstore.png new file mode 100644 index 0000000..4d7f9ed Binary files /dev/null and b/app/src/main/logo3-playstore.png differ diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_brown_transparent_box.xml b/app/src/main/res/drawable/bg_brown_transparent_box.xml new file mode 100644 index 0000000..7bb0326 --- /dev/null +++ b/app/src/main/res/drawable/bg_brown_transparent_box.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_keyword_tag.xml b/app/src/main/res/drawable/bg_keyword_tag.xml new file mode 100644 index 0000000..1aa891d --- /dev/null +++ b/app/src/main/res/drawable/bg_keyword_tag.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_search_input.xml b/app/src/main/res/drawable/bg_search_input.xml new file mode 100644 index 0000000..83a4341 --- /dev/null +++ b/app/src/main/res/drawable/bg_search_input.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/drawing3.png b/app/src/main/res/drawable/drawing3.png new file mode 100644 index 0000000..1e087d2 Binary files /dev/null and b/app/src/main/res/drawable/drawing3.png differ diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/logo10_background.xml b/app/src/main/res/drawable/logo10_background.xml new file mode 100644 index 0000000..ca3826a --- /dev/null +++ b/app/src/main/res/drawable/logo10_background.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/logo1_background.xml b/app/src/main/res/drawable/logo1_background.xml new file mode 100644 index 0000000..ca3826a --- /dev/null +++ b/app/src/main/res/drawable/logo1_background.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/logo3_background.xml b/app/src/main/res/drawable/logo3_background.xml new file mode 100644 index 0000000..ca3826a --- /dev/null +++ b/app/src/main/res/drawable/logo3_background.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/progress_bar_horizontal.xml b/app/src/main/res/drawable/progress_bar_horizontal.xml new file mode 100644 index 0000000..21a9192 --- /dev/null +++ b/app/src/main/res/drawable/progress_bar_horizontal.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/search.png b/app/src/main/res/drawable/search.png new file mode 100644 index 0000000..c7cfb80 Binary files /dev/null and b/app/src/main/res/drawable/search.png differ diff --git a/app/src/main/res/drawable/seekbar_progress_style.xml b/app/src/main/res/drawable/seekbar_progress_style.xml new file mode 100644 index 0000000..a6e501f --- /dev/null +++ b/app/src/main/res/drawable/seekbar_progress_style.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/seekbar_thumb_style.xml b/app/src/main/res/drawable/seekbar_thumb_style.xml new file mode 100644 index 0000000..216b1ce --- /dev/null +++ b/app/src/main/res/drawable/seekbar_thumb_style.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_flash_button.xml b/app/src/main/res/drawable/selector_flash_button.xml new file mode 100644 index 0000000..4704d0a --- /dev/null +++ b/app/src/main/res/drawable/selector_flash_button.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_lock_button.xml b/app/src/main/res/drawable/selector_lock_button.xml new file mode 100644 index 0000000..cb5b8ee --- /dev/null +++ b/app/src/main/res/drawable/selector_lock_button.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_nav_bg.xml b/app/src/main/res/drawable/selector_nav_bg.xml new file mode 100644 index 0000000..257f958 --- /dev/null +++ b/app/src/main/res/drawable/selector_nav_bg.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_nav_text.xml b/app/src/main/res/drawable/selector_nav_text.xml new file mode 100644 index 0000000..0723b53 --- /dev/null +++ b/app/src/main/res/drawable/selector_nav_text.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_photo_button.xml b/app/src/main/res/drawable/selector_photo_button.xml new file mode 100644 index 0000000..8d46e20 --- /dev/null +++ b/app/src/main/res/drawable/selector_photo_button.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable/selector_seek_button.xml b/app/src/main/res/drawable/selector_seek_button.xml new file mode 100644 index 0000000..2333c18 --- /dev/null +++ b/app/src/main/res/drawable/selector_seek_button.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/set_cicrl_bg.xml b/app/src/main/res/drawable/set_cicrl_bg.xml new file mode 100644 index 0000000..62b8854 --- /dev/null +++ b/app/src/main/res/drawable/set_cicrl_bg.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/setting2.png b/app/src/main/res/drawable/setting2.png new file mode 100644 index 0000000..0028ac4 Binary files /dev/null and b/app/src/main/res/drawable/setting2.png differ diff --git a/app/src/main/res/drawable/shadow_gradient_main_photo.xml b/app/src/main/res/drawable/shadow_gradient_main_photo.xml new file mode 100644 index 0000000..bf72fe5 --- /dev/null +++ b/app/src/main/res/drawable/shadow_gradient_main_photo.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_black_dot.xml b/app/src/main/res/drawable/shape_black_dot.xml new file mode 100644 index 0000000..a8d94dc --- /dev/null +++ b/app/src/main/res/drawable/shape_black_dot.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/tool_bar_shape_photo_select.xml b/app/src/main/res/drawable/tool_bar_shape_photo_select.xml new file mode 100644 index 0000000..2ef2164 --- /dev/null +++ b/app/src/main/res/drawable/tool_bar_shape_photo_select.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_draw_main.xml b/app/src/main/res/layout/activity_draw_main.xml new file mode 100644 index 0000000..dbb8d9c --- /dev/null +++ b/app/src/main/res/layout/activity_draw_main.xml @@ -0,0 +1,22 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_drawing_search.xml b/app/src/main/res/layout/activity_drawing_search.xml new file mode 100644 index 0000000..1d87df0 --- /dev/null +++ b/app/src/main/res/layout/activity_drawing_search.xml @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_photo_select.xml b/app/src/main/res/layout/activity_photo_select.xml new file mode 100644 index 0000000..d0acb42 --- /dev/null +++ b/app/src/main/res/layout/activity_photo_select.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_splash_screen.xml b/app/src/main/res/layout/activity_splash_screen.xml new file mode 100644 index 0000000..f62de00 --- /dev/null +++ b/app/src/main/res/layout/activity_splash_screen.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/adapter_home_item.xml b/app/src/main/res/layout/adapter_home_item.xml new file mode 100644 index 0000000..1d541d3 --- /dev/null +++ b/app/src/main/res/layout/adapter_home_item.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/adapter_home_main.xml b/app/src/main/res/layout/adapter_home_main.xml new file mode 100644 index 0000000..7e90ed7 --- /dev/null +++ b/app/src/main/res/layout/adapter_home_main.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/adapter_preview_image_list.xml b/app/src/main/res/layout/adapter_preview_image_list.xml new file mode 100644 index 0000000..c604060 --- /dev/null +++ b/app/src/main/res/layout/adapter_preview_image_list.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home_main.xml b/app/src/main/res/layout/fragment_home_main.xml new file mode 100644 index 0000000..b794cc7 --- /dev/null +++ b/app/src/main/res/layout/fragment_home_main.xml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_preview_content.xml b/app/src/main/res/layout/fragment_preview_content.xml new file mode 100644 index 0000000..c99c135 --- /dev/null +++ b/app/src/main/res/layout/fragment_preview_content.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_setting_center.xml b/app/src/main/res/layout/fragment_setting_center.xml new file mode 100644 index 0000000..0a48bb3 --- /dev/null +++ b/app/src/main/res/layout/fragment_setting_center.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_bottom_tab_scroll.xml b/app/src/main/res/layout/item_bottom_tab_scroll.xml new file mode 100644 index 0000000..c87852c --- /dev/null +++ b/app/src/main/res/layout/item_bottom_tab_scroll.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_image_label.xml b/app/src/main/res/layout/item_image_label.xml new file mode 100644 index 0000000..25b1b8b --- /dev/null +++ b/app/src/main/res/layout/item_image_label.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_keyword_suggest.xml b/app/src/main/res/layout/item_keyword_suggest.xml new file mode 100644 index 0000000..da34eaf --- /dev/null +++ b/app/src/main/res/layout/item_keyword_suggest.xml @@ -0,0 +1,15 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_nav_menu.xml b/app/src/main/res/layout/item_nav_menu.xml new file mode 100644 index 0000000..6195128 --- /dev/null +++ b/app/src/main/res/layout/item_nav_menu.xml @@ -0,0 +1,12 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_bottom_tab_nav.xml b/app/src/main/res/layout/layout_bottom_tab_nav.xml new file mode 100644 index 0000000..e28aebe --- /dev/null +++ b/app/src/main/res/layout/layout_bottom_tab_nav.xml @@ -0,0 +1,22 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/nav_menu.xml b/app/src/main/res/menu/nav_menu.xml new file mode 100644 index 0000000..590019b --- /dev/null +++ b/app/src/main/res/menu/nav_menu.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/logo1.xml b/app/src/main/res/mipmap-anydpi-v26/logo1.xml new file mode 100644 index 0000000..d95334f --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/logo1.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/logo10.xml b/app/src/main/res/mipmap-anydpi-v26/logo10.xml new file mode 100644 index 0000000..54046da --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/logo10.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/logo10_round.xml b/app/src/main/res/mipmap-anydpi-v26/logo10_round.xml new file mode 100644 index 0000000..54046da --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/logo10_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/logo1_round.xml b/app/src/main/res/mipmap-anydpi-v26/logo1_round.xml new file mode 100644 index 0000000..d95334f --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/logo1_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/logo3.xml b/app/src/main/res/mipmap-anydpi-v26/logo3.xml new file mode 100644 index 0000000..9855370 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/logo3.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/logo3_round.xml b/app/src/main/res/mipmap-anydpi-v26/logo3_round.xml new file mode 100644 index 0000000..9855370 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/logo3_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/arrow.png b/app/src/main/res/mipmap-hdpi/arrow.png new file mode 100644 index 0000000..f60304e Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/arrow.png differ diff --git a/app/src/main/res/mipmap-hdpi/clear.png b/app/src/main/res/mipmap-hdpi/clear.png new file mode 100644 index 0000000..f7b640b Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/clear.png differ diff --git a/app/src/main/res/mipmap-hdpi/flash3.png b/app/src/main/res/mipmap-hdpi/flash3.png new file mode 100644 index 0000000..eccbf46 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/flash3.png differ diff --git a/app/src/main/res/mipmap-hdpi/flash4.png b/app/src/main/res/mipmap-hdpi/flash4.png new file mode 100644 index 0000000..d7a1d33 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/flash4.png differ diff --git a/app/src/main/res/mipmap-hdpi/flash_off.png b/app/src/main/res/mipmap-hdpi/flash_off.png new file mode 100644 index 0000000..0011d75 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/flash_off.png differ diff --git a/app/src/main/res/mipmap-hdpi/flash_off2.png b/app/src/main/res/mipmap-hdpi/flash_off2.png new file mode 100644 index 0000000..f2ec9f7 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/flash_off2.png differ diff --git a/app/src/main/res/mipmap-hdpi/flash_on.png b/app/src/main/res/mipmap-hdpi/flash_on.png new file mode 100644 index 0000000..9fd7352 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/flash_on.png differ diff --git a/app/src/main/res/mipmap-hdpi/flash_on2.png b/app/src/main/res/mipmap-hdpi/flash_on2.png new file mode 100644 index 0000000..4377f8a Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/flash_on2.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000..c209e78 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000..b2dfe3d Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-hdpi/icon_photo.png b/app/src/main/res/mipmap-hdpi/icon_photo.png new file mode 100644 index 0000000..5c17b36 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icon_photo.png differ diff --git a/app/src/main/res/mipmap-hdpi/icon_photo1.png b/app/src/main/res/mipmap-hdpi/icon_photo1.png new file mode 100644 index 0000000..4189a93 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icon_photo1.png differ diff --git a/app/src/main/res/mipmap-hdpi/icon_photo3.png b/app/src/main/res/mipmap-hdpi/icon_photo3.png new file mode 100644 index 0000000..54f1cd9 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icon_photo3.png differ diff --git a/app/src/main/res/mipmap-hdpi/lock_close.png b/app/src/main/res/mipmap-hdpi/lock_close.png new file mode 100644 index 0000000..de2ffb9 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/lock_close.png differ diff --git a/app/src/main/res/mipmap-hdpi/lock_open.png b/app/src/main/res/mipmap-hdpi/lock_open.png new file mode 100644 index 0000000..aafb3a0 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/lock_open.png differ diff --git a/app/src/main/res/mipmap-hdpi/logo.webp b/app/src/main/res/mipmap-hdpi/logo.webp new file mode 100644 index 0000000..5627745 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/logo.webp differ diff --git a/app/src/main/res/mipmap-hdpi/logo1.webp b/app/src/main/res/mipmap-hdpi/logo1.webp new file mode 100644 index 0000000..93659ed Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/logo1.webp differ diff --git a/app/src/main/res/mipmap-hdpi/logo10.webp b/app/src/main/res/mipmap-hdpi/logo10.webp new file mode 100644 index 0000000..7e635b9 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/logo10.webp differ diff --git a/app/src/main/res/mipmap-hdpi/logo10_foreground.webp b/app/src/main/res/mipmap-hdpi/logo10_foreground.webp new file mode 100644 index 0000000..9592cb9 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/logo10_foreground.webp differ diff --git a/app/src/main/res/mipmap-hdpi/logo10_round.webp b/app/src/main/res/mipmap-hdpi/logo10_round.webp new file mode 100644 index 0000000..4d43745 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/logo10_round.webp differ diff --git a/app/src/main/res/mipmap-hdpi/logo1_round.webp b/app/src/main/res/mipmap-hdpi/logo1_round.webp new file mode 100644 index 0000000..fce3129 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/logo1_round.webp differ diff --git a/app/src/main/res/mipmap-hdpi/logo3.webp b/app/src/main/res/mipmap-hdpi/logo3.webp new file mode 100644 index 0000000..3fe9229 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/logo3.webp differ diff --git a/app/src/main/res/mipmap-hdpi/logo3_foreground.webp b/app/src/main/res/mipmap-hdpi/logo3_foreground.webp new file mode 100644 index 0000000..f57035f Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/logo3_foreground.webp differ diff --git a/app/src/main/res/mipmap-hdpi/logo3_round.webp b/app/src/main/res/mipmap-hdpi/logo3_round.webp new file mode 100644 index 0000000..1b574fa Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/logo3_round.webp differ diff --git a/app/src/main/res/mipmap-hdpi/media_photo.png b/app/src/main/res/mipmap-hdpi/media_photo.png new file mode 100644 index 0000000..03c9308 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/media_photo.png differ diff --git a/app/src/main/res/mipmap-hdpi/photo3.png b/app/src/main/res/mipmap-hdpi/photo3.png new file mode 100644 index 0000000..d4a9f4c Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/photo3.png differ diff --git a/app/src/main/res/mipmap-hdpi/photo4.png b/app/src/main/res/mipmap-hdpi/photo4.png new file mode 100644 index 0000000..41f18f6 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/photo4.png differ diff --git a/app/src/main/res/mipmap-hdpi/search.png b/app/src/main/res/mipmap-hdpi/search.png new file mode 100644 index 0000000..c7cfb80 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/search.png differ diff --git a/app/src/main/res/mipmap-hdpi/search2.png b/app/src/main/res/mipmap-hdpi/search2.png new file mode 100644 index 0000000..5e00512 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/search2.png differ diff --git a/app/src/main/res/mipmap-hdpi/seek.png b/app/src/main/res/mipmap-hdpi/seek.png new file mode 100644 index 0000000..7a5301c Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/seek.png differ diff --git a/app/src/main/res/mipmap-hdpi/seek2.png b/app/src/main/res/mipmap-hdpi/seek2.png new file mode 100644 index 0000000..54b78b8 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/seek2.png differ diff --git a/app/src/main/res/mipmap-hdpi/seek3.png b/app/src/main/res/mipmap-hdpi/seek3.png new file mode 100644 index 0000000..62362c4 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/seek3.png differ diff --git a/app/src/main/res/mipmap-hdpi/seek4.png b/app/src/main/res/mipmap-hdpi/seek4.png new file mode 100644 index 0000000..b4f970b Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/seek4.png differ diff --git a/app/src/main/res/mipmap-hdpi/shensuo.png b/app/src/main/res/mipmap-hdpi/shensuo.png new file mode 100644 index 0000000..ac2bc27 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/shensuo.png differ diff --git a/app/src/main/res/mipmap-hdpi/suofang1.png b/app/src/main/res/mipmap-hdpi/suofang1.png new file mode 100644 index 0000000..27718ed Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/suofang1.png differ diff --git a/app/src/main/res/mipmap-hdpi/suofang2.png b/app/src/main/res/mipmap-hdpi/suofang2.png new file mode 100644 index 0000000..439404b Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/suofang2.png differ diff --git a/app/src/main/res/mipmap-hdpi/suofang3.png b/app/src/main/res/mipmap-hdpi/suofang3.png new file mode 100644 index 0000000..4c24017 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/suofang3.png differ diff --git a/app/src/main/res/mipmap-hdpi/suofang4.png b/app/src/main/res/mipmap-hdpi/suofang4.png new file mode 100644 index 0000000..1f335d0 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/suofang4.png differ diff --git a/app/src/main/res/mipmap-hdpi/suofang5.png b/app/src/main/res/mipmap-hdpi/suofang5.png new file mode 100644 index 0000000..96d3b20 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/suofang5.png differ diff --git a/app/src/main/res/mipmap-hdpi/suofang6.png b/app/src/main/res/mipmap-hdpi/suofang6.png new file mode 100644 index 0000000..f3900cb Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/suofang6.png differ diff --git a/app/src/main/res/mipmap-hdpi/suofang7.png b/app/src/main/res/mipmap-hdpi/suofang7.png new file mode 100644 index 0000000..c6d6858 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/suofang7.png differ diff --git a/app/src/main/res/mipmap-hdpi/suofang8.png b/app/src/main/res/mipmap-hdpi/suofang8.png new file mode 100644 index 0000000..fc8a16a Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/suofang8.png differ diff --git a/app/src/main/res/mipmap-hdpi/suofang9.png b/app/src/main/res/mipmap-hdpi/suofang9.png new file mode 100644 index 0000000..d03d837 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/suofang9.png differ diff --git a/app/src/main/res/mipmap-hdpi/version2.png b/app/src/main/res/mipmap-hdpi/version2.png new file mode 100644 index 0000000..801f4cf Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/version2.png differ diff --git a/app/src/main/res/mipmap-hdpi/version5.png b/app/src/main/res/mipmap-hdpi/version5.png new file mode 100644 index 0000000..f20149d Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/version5.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000..4f0f1d6 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000..62b611d Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-mdpi/logo.webp b/app/src/main/res/mipmap-mdpi/logo.webp new file mode 100644 index 0000000..7ba6041 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/logo.webp differ diff --git a/app/src/main/res/mipmap-mdpi/logo1.webp b/app/src/main/res/mipmap-mdpi/logo1.webp new file mode 100644 index 0000000..a00d307 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/logo1.webp differ diff --git a/app/src/main/res/mipmap-mdpi/logo10.webp b/app/src/main/res/mipmap-mdpi/logo10.webp new file mode 100644 index 0000000..e3a3573 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/logo10.webp differ diff --git a/app/src/main/res/mipmap-mdpi/logo10_foreground.webp b/app/src/main/res/mipmap-mdpi/logo10_foreground.webp new file mode 100644 index 0000000..6c87231 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/logo10_foreground.webp differ diff --git a/app/src/main/res/mipmap-mdpi/logo10_round.webp b/app/src/main/res/mipmap-mdpi/logo10_round.webp new file mode 100644 index 0000000..8d517a2 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/logo10_round.webp differ diff --git a/app/src/main/res/mipmap-mdpi/logo1_round.webp b/app/src/main/res/mipmap-mdpi/logo1_round.webp new file mode 100644 index 0000000..be4018c Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/logo1_round.webp differ diff --git a/app/src/main/res/mipmap-mdpi/logo3.webp b/app/src/main/res/mipmap-mdpi/logo3.webp new file mode 100644 index 0000000..b749493 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/logo3.webp differ diff --git a/app/src/main/res/mipmap-mdpi/logo3_foreground.webp b/app/src/main/res/mipmap-mdpi/logo3_foreground.webp new file mode 100644 index 0000000..bae82cb Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/logo3_foreground.webp differ diff --git a/app/src/main/res/mipmap-mdpi/logo3_round.webp b/app/src/main/res/mipmap-mdpi/logo3_round.webp new file mode 100644 index 0000000..c3af2da Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/logo3_round.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000..948a307 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..1b9a695 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/logo.webp b/app/src/main/res/mipmap-xhdpi/logo.webp new file mode 100644 index 0000000..2b105a6 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/logo.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/logo1.webp b/app/src/main/res/mipmap-xhdpi/logo1.webp new file mode 100644 index 0000000..3420508 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/logo1.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/logo10.webp b/app/src/main/res/mipmap-xhdpi/logo10.webp new file mode 100644 index 0000000..4937674 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/logo10.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/logo10_foreground.webp b/app/src/main/res/mipmap-xhdpi/logo10_foreground.webp new file mode 100644 index 0000000..edfda6f Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/logo10_foreground.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/logo10_round.webp b/app/src/main/res/mipmap-xhdpi/logo10_round.webp new file mode 100644 index 0000000..03ad27a Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/logo10_round.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/logo1_round.webp b/app/src/main/res/mipmap-xhdpi/logo1_round.webp new file mode 100644 index 0000000..81b89e6 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/logo1_round.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/logo3.webp b/app/src/main/res/mipmap-xhdpi/logo3.webp new file mode 100644 index 0000000..124e01b Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/logo3.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/logo3_foreground.webp b/app/src/main/res/mipmap-xhdpi/logo3_foreground.webp new file mode 100644 index 0000000..bd77dc6 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/logo3_foreground.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/logo3_round.webp b/app/src/main/res/mipmap-xhdpi/logo3_round.webp new file mode 100644 index 0000000..4e0213a Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/logo3_round.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000..28d4b77 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..9287f50 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/logo.webp b/app/src/main/res/mipmap-xxhdpi/logo.webp new file mode 100644 index 0000000..9e775fa Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/logo.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/logo1.webp b/app/src/main/res/mipmap-xxhdpi/logo1.webp new file mode 100644 index 0000000..c503e8a Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/logo1.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/logo10.webp b/app/src/main/res/mipmap-xxhdpi/logo10.webp new file mode 100644 index 0000000..ca87c8a Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/logo10.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/logo10_foreground.webp b/app/src/main/res/mipmap-xxhdpi/logo10_foreground.webp new file mode 100644 index 0000000..f9b41e3 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/logo10_foreground.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/logo10_round.webp b/app/src/main/res/mipmap-xxhdpi/logo10_round.webp new file mode 100644 index 0000000..1920427 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/logo10_round.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/logo1_round.webp b/app/src/main/res/mipmap-xxhdpi/logo1_round.webp new file mode 100644 index 0000000..5f39d6d Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/logo1_round.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/logo3.webp b/app/src/main/res/mipmap-xxhdpi/logo3.webp new file mode 100644 index 0000000..dedaf31 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/logo3.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/logo3_foreground.webp b/app/src/main/res/mipmap-xxhdpi/logo3_foreground.webp new file mode 100644 index 0000000..fec0a90 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/logo3_foreground.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/logo3_round.webp b/app/src/main/res/mipmap-xxhdpi/logo3_round.webp new file mode 100644 index 0000000..d50276b Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/logo3_round.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/arrow_lef.png b/app/src/main/res/mipmap-xxxhdpi/arrow_lef.png new file mode 100644 index 0000000..99593a4 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/arrow_lef.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/arrow_left_white.png b/app/src/main/res/mipmap-xxxhdpi/arrow_left_white.png new file mode 100644 index 0000000..01d12db Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/arrow_left_white.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000..aa7d642 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..9126ae3 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_about.png b/app/src/main/res/mipmap-xxxhdpi/icon_about.png new file mode 100644 index 0000000..80c1d52 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_about.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_lock.png b/app/src/main/res/mipmap-xxxhdpi/icon_lock.png new file mode 100644 index 0000000..9135721 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_lock.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_seek.png b/app/src/main/res/mipmap-xxxhdpi/icon_seek.png new file mode 100644 index 0000000..2c1d524 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_seek.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_set_off1.png b/app/src/main/res/mipmap-xxxhdpi/icon_set_off1.png new file mode 100644 index 0000000..511571d Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_set_off1.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_set_on.png b/app/src/main/res/mipmap-xxxhdpi/icon_set_on.png new file mode 100644 index 0000000..2491f94 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_set_on.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_trace_draw_off1.png b/app/src/main/res/mipmap-xxxhdpi/icon_trace_draw_off1.png new file mode 100644 index 0000000..fc22345 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_trace_draw_off1.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_trace_draw_on.png b/app/src/main/res/mipmap-xxxhdpi/icon_trace_draw_on.png new file mode 100644 index 0000000..ab8c320 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_trace_draw_on.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/logo.webp b/app/src/main/res/mipmap-xxxhdpi/logo.webp new file mode 100644 index 0000000..0c5eeae Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/logo.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/logo1.webp b/app/src/main/res/mipmap-xxxhdpi/logo1.webp new file mode 100644 index 0000000..ba12ee8 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/logo1.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/logo10.webp b/app/src/main/res/mipmap-xxxhdpi/logo10.webp new file mode 100644 index 0000000..95dcf46 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/logo10.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/logo10_foreground.webp b/app/src/main/res/mipmap-xxxhdpi/logo10_foreground.webp new file mode 100644 index 0000000..5d08626 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/logo10_foreground.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/logo10_round.webp b/app/src/main/res/mipmap-xxxhdpi/logo10_round.webp new file mode 100644 index 0000000..0fc39ac Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/logo10_round.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/logo1_round.webp b/app/src/main/res/mipmap-xxxhdpi/logo1_round.webp new file mode 100644 index 0000000..11c34d6 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/logo1_round.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/logo3.webp b/app/src/main/res/mipmap-xxxhdpi/logo3.webp new file mode 100644 index 0000000..c39e015 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/logo3.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/logo3_foreground.webp b/app/src/main/res/mipmap-xxxhdpi/logo3_foreground.webp new file mode 100644 index 0000000..61afb9e Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/logo3_foreground.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/logo3_round.webp b/app/src/main/res/mipmap-xxxhdpi/logo3_round.webp new file mode 100644 index 0000000..4069346 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/logo3_round.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/right.png b/app/src/main/res/mipmap-xxxhdpi/right.png new file mode 100644 index 0000000..880a44d Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/right.png differ diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml new file mode 100644 index 0000000..71efee4 --- /dev/null +++ b/app/src/main/res/values-night/themes.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..fb4515f --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,24 @@ + + + #FF000000 + #FFFFFFFF + #EDEEF7 + #1A237E + #CC9E9E9E + #343332 + #CCCCCC + #CCFFC0CB + #FF6200EE + #757575 + + #CCCCCC + + #FF000000 + #CCCCCC + #CCFFC0CB + #333333 + #CC9E9E9E + #616161 + #80FFFFFF + #CCFFFFFF + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..a9ac876 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,19 @@ + + Sweet Drawing + See All + Trace&Draw + More Settings + Sketch Categories + Settings + Privacy Information + Version + V%s + Please grant the relevant permissions and try again. + https://play.google.com/store/apps/details?id=com.paint.sweet.drawing + Search content + Popular Searches + Go + History Searches + Clear + No search history + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..8b76734 --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,10 @@ + + + + +