commit 3d47b728f77468f90adbb8ca436f1ed74bd7895f
Author: ocean <503259349@qq.com>
Date: Wed Dec 24 15:40:36 2025 +0800
first commit
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..eaf91e2
--- /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..d58d49b
--- /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..8b3f102
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/dbnavigator.xml b/.idea/dbnavigator.xml
new file mode 100644
index 0000000..0a53a4a
--- /dev/null
+++ b/.idea/dbnavigator.xml
@@ -0,0 +1,440 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
new file mode 100644
index 0000000..8b208ea
--- /dev/null
+++ b/.idea/deploymentTargetSelector.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/deviceManager.xml b/.idea/deviceManager.xml
new file mode 100644
index 0000000..81c3e56
--- /dev/null
+++ b/.idea/deviceManager.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
new file mode 100644
index 0000000..22d9498
--- /dev/null
+++ b/.idea/gradle.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml
new file mode 100644
index 0000000..2a5f53f
--- /dev/null
+++ b/.idea/kotlinc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/migrations.xml b/.idea/migrations.xml
new file mode 100644
index 0000000..48052b2
--- /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..5bd6771
--- /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/artisanichelper.jks b/app/artisanichelper.jks
new file mode 100644
index 0000000..d566ffd
Binary files /dev/null and b/app/artisanichelper.jks differ
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
new file mode 100644
index 0000000..d4a5cf3
--- /dev/null
+++ b/app/build.gradle.kts
@@ -0,0 +1,108 @@
+
+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.artisanic.helper.test"
+ compileSdk = 36
+
+ defaultConfig {
+ applicationId = "com.artisanic.helper.test"
+ minSdk = 24
+ targetSdk = 36
+ versionCode = 2
+ versionName = "1.1"
+ setProperty("archivesBaseName", "ArtisanicHelper_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.cardview:cardview:1.0.0")
+ implementation("androidx.appcompat:appcompat:1.7.1")
+ implementation("com.google.android.material:material:1.13.0")
+ implementation("androidx.constraintlayout:constraintlayout:2.1.4")
+ implementation("androidx.activity:activity:1.12.1")
+ 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(files("libs/UpLoadLibrary_12_03_15_13-release.aar"))
+ implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2")
+ implementation("com.google.android.gms:play-services-ads-identifier:18.0.1")
+ implementation("com.google.android.gms:play-services-location:21.0.1")
+ implementation("com.google.android.gms:play-services-appset:16.0.1")
+ // Import the Firebase BoM
+ implementation(platform("com.google.firebase:firebase-bom:34.6.0"))
+ implementation("com.google.firebase:firebase-crashlytics-ndk")
+ implementation("com.google.firebase:firebase-analytics")
+ // okhttp
+ implementation ("com.squareup.okhttp3:okhttp:4.12.0")
+ implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")
+
+ // TradPlus
+ implementation("com.tradplusad:tradplus:15.1.10.1")
+//noinspection GradleCompatible
+ implementation("androidx.legacy:legacy-support-v4:1.0.0")
+ implementation("androidx.appcompat:appcompat:1.3.0-alpha02")
+// Ironsource
+ implementation("com.ironsource.sdk:mediationsdk:9.0.0")
+ implementation("com.tradplusad:tradplus-ironsource:10.15.1.10.1")
+// Pangle
+ implementation("com.tradplusad:tradplus-pangle:19.15.1.10.1")
+ implementation("com.pangle.global:pag-sdk:7.7.0.2")
+// UnityAds
+ implementation("com.tradplusad:tradplus-unity:5.15.1.10.1")
+ implementation("com.unity3d.ads:unity-ads:4.16.3")
+//optional dependency for better targeting
+ implementation("androidx.browser:browser:1.8.0")
+ implementation("com.squareup.picasso:picasso:2.8")
+ implementation("androidx.viewpager:viewpager:1.0.0")
+ implementation("androidx.recyclerview:recyclerview:1.2.1")
+// Mintegral
+ implementation("com.tradplusad:tradplus-mintegralx_overseas:18.15.1.10.1")
+ implementation("androidx.recyclerview:recyclerview:1.1.0")
+ implementation("com.mbridge.msdk.oversea:mbridge_android_sdk:16.10.11")
+// Liftoff
+ implementation("com.tradplusad:tradplus-vunglex:7.15.1.10.1")
+ implementation("com.vungle:vungle-ads:7.6.0")
+// Cross Promotion
+ implementation("com.tradplusad:tradplus-crosspromotion:27.15.1.10.1")
+// TP Exchange
+// 请注意保持与主包版本同步更新
+ implementation("com.google.code.gson:gson:2.8.6")
+ implementation("com.tradplusad:tp_exchange:40.15.1.10.1")
+}
\ No newline at end of file
diff --git a/app/google-services.json b/app/google-services.json
new file mode 100644
index 0000000..1c78df5
--- /dev/null
+++ b/app/google-services.json
@@ -0,0 +1,29 @@
+{
+ "project_info": {
+ "project_number": "886302196710",
+ "project_id": "artisanichelper",
+ "storage_bucket": "artisanichelper.firebasestorage.app"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:886302196710:android:d038fb8c4b50f3d1bb8c27",
+ "android_client_info": {
+ "package_name": "com.artisanic.helper.test"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyCOOwEtQKiHPWa9kt1JeTezLi9CMDLnHWM"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
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..d7cc8a0
--- /dev/null
+++ b/app/proguard-rules.pro
@@ -0,0 +1,25 @@
+# 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
+
+-keep public class com.tradplus.** { *; }
+-keep class com.tradplus.ads.** { *; }
+-keep class com.google.gson.** { *; }
\ No newline at end of file
diff --git a/app/src/androidTest/java/com/artisanic/helper/test/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/artisanic/helper/test/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..2db372a
--- /dev/null
+++ b/app/src/androidTest/java/com/artisanic/helper/test/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.artisanic.helper.test;
+
+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.draw.painting.test", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/app/src/androidTest/java/com/draw/painting/test/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/draw/painting/test/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..6d6b1ff
--- /dev/null
+++ b/app/src/androidTest/java/com/draw/painting/test/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.draw.painting.test;
+
+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.draw.painting.test", 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..57a3ae7
--- /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/artisanic/helper/ArtApp.java b/app/src/main/java/com/artisanic/helper/ArtApp.java
new file mode 100644
index 0000000..2c05425
--- /dev/null
+++ b/app/src/main/java/com/artisanic/helper/ArtApp.java
@@ -0,0 +1,25 @@
+package com.artisanic.helper;
+
+import android.app.Application;
+
+import com.tradplus.ads.open.TradPlusSdk;
+import com.up.uploadlibrary.UpLoadManager;
+
+public class ArtApp extends Application {
+
+ public static String Key_ViewDir = "pre_dir";
+
+ public static String Key_Camera = "camera_data";
+ public static final String Key_ImagePath = "image_path";
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ UpLoadManager.INSTANCE.init(this, "ocean", (s, s2) -> null);
+ TradPlusSdk.initSdk(this, "F0A4DC4BA752540ED2ECA9B0F8A74C11");
+ }
+
+
+
+
+}
diff --git a/app/src/main/java/com/artisanic/helper/ad/AdInstLoad.kt b/app/src/main/java/com/artisanic/helper/ad/AdInstLoad.kt
new file mode 100644
index 0000000..3798169
--- /dev/null
+++ b/app/src/main/java/com/artisanic/helper/ad/AdInstLoad.kt
@@ -0,0 +1,81 @@
+package com.artisanic.helper.ad
+
+import android.app.Activity
+import android.util.Log
+import com.tradplus.ads.base.bean.TPAdError
+import com.tradplus.ads.base.bean.TPAdInfo
+import com.tradplus.ads.open.interstitial.InterstitialAdListener
+import com.tradplus.ads.open.interstitial.TPInterstitial
+
+class AdInstLoad {
+ private var mPlace: String
+ private var adLoadListener: LoadListener? = null
+ private var activity: Activity? = null
+
+ constructor(activity: Activity, place: String, listener: LoadListener?) {
+ this.mPlace = place
+ this.adLoadListener = listener
+ this.activity = activity
+ init()
+ }
+
+ constructor(place: String, listener: LoadListener?) {
+ this.mPlace = place
+ this.adLoadListener = listener
+ init()
+ }
+
+ private fun init() {
+ val tpInterstitial = TPInterstitial(activity, mPlace)
+ tpInterstitial.setAdListener(object : InterstitialAdListener {
+ //广告加载完成 首个广告源加载成功时回调 一次加载流程只会回调一次
+ override fun onAdLoaded(tpAdInfo: TPAdInfo?) {
+ if (tpAdInfo != null) {
+ Log.d("ocean", "$mPlace 广告load成功,tpAdInfo有值")
+ InstAdCacheManager.Companion.instance.setAdCache(mPlace, tpInterstitial)
+ adLoadListener?.loaded(tpAdInfo)
+ } else {
+ adLoadListener?.loadFailed("tpAdInfo没有值")
+ Log.d("ocean", "$mPlace tpAdInfo没有值")
+ }
+ }
+
+ // 广告被点击
+ override fun onAdClicked(tpAdInfo: TPAdInfo?) {
+ Log.d("ocean", "$mPlace tradplus onAdClicked")
+ }
+
+ // 广告成功展示在页面上
+ override fun onAdImpression(tpAdInfo: TPAdInfo?) {
+ Log.d("ocean", "$mPlace tradplus onAdImpression")
+ }
+
+ // 广告加载失败
+ override fun onAdFailed(error: TPAdError?) {
+ adLoadListener?.loadFailed("code->${error?.errorCode}message->${error?.errorMsg}")
+ Log.d("ocean", "$mPlace load ad onError->code->${error?.errorCode}message->${error?.errorMsg}")
+ }
+
+ // 广告被关闭
+ override fun onAdClosed(tpAdInfo: TPAdInfo?) {
+ Log.d("ocean", "$mPlace tradplus onAdClosed")
+ }
+
+ // 视频播放开始(部分广告源支持)
+ override fun onAdVideoStart(tpAdInfo: TPAdInfo?) {
+ Log.d("ocean", "$mPlace tradplus onAdVideoStart")
+ }
+
+ //视频播放结束(部分广告源支持)
+ override fun onAdVideoEnd(tpAdInfo: TPAdInfo?) {
+ Log.d("ocean", "$mPlace tradplus onAdVideoEnd")
+ }
+
+ //视频播放失败(部分广告源支持)
+ override fun onAdVideoError(tpAdInfo: TPAdInfo?, error: TPAdError?) {
+ Log.d("ocean", "$mPlace onAdVideoError code->${error?.errorCode}message->${error?.errorMsg}")
+ }
+ })
+ tpInterstitial.loadAd()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/artisanic/helper/ad/AdInstShower.kt b/app/src/main/java/com/artisanic/helper/ad/AdInstShower.kt
new file mode 100644
index 0000000..02b9127
--- /dev/null
+++ b/app/src/main/java/com/artisanic/helper/ad/AdInstShower.kt
@@ -0,0 +1,69 @@
+package com.artisanic.helper.ad
+
+import android.app.Activity
+import android.util.Log
+import com.tradplus.ads.base.bean.TPAdError
+import com.tradplus.ads.base.bean.TPAdInfo
+import com.tradplus.ads.open.interstitial.InterstitialAdListener
+
+class AdInstShower {
+ private var mPlace: String
+ private var showListener: ShowListener? = null
+ private var activity: Activity? = null
+
+ constructor(activity: Activity, place: String, showListener: ShowListener?) {
+ this.mPlace = place
+ this.showListener = showListener
+ this.activity = activity
+ init()
+ }
+
+ constructor(place: String, showListener: ShowListener?) {
+ this.mPlace = place
+ this.showListener = showListener
+ init()
+ }
+
+ private fun init() {
+ val interstitialAd = InstAdCacheManager.Companion.instance.getAdCache(mPlace)
+ interstitialAd?.setAdListener(object : InterstitialAdListener {
+ //广告加载完成 首个广告源加载成功时回调 一次加载流程只会回调一次
+ override fun onAdLoaded(tpAdInfo: TPAdInfo?) {}
+
+ // 广告被点击
+ override fun onAdClicked(tpAdInfo: TPAdInfo?) {
+ showListener?.onAdClicked()
+ Log.d("ocean", "AdInstShower 广告点击回调")
+ }
+
+ // 广告成功展示在页面上
+ override fun onAdImpression(tpAdInfo: TPAdInfo?) {
+ showListener?.onAdShown(tpAdInfo)
+ Log.d("ocean", "AdInstShower 广告展示回调")
+ }
+
+ // 广告加载失败
+ override fun onAdFailed(error: TPAdError?) {}
+
+ // 广告被关闭
+ override fun onAdClosed(tpAdInfo: TPAdInfo?) {
+ showListener?.onAdClosed()
+ Log.d("ocean", "AdInstShower 广告关闭回调")
+ }
+
+ // 视频播放开始(部分广告源支持)
+ override fun onAdVideoStart(tpAdInfo: TPAdInfo?) {}
+
+ //视频播放结束(部分广告源支持)
+ override fun onAdVideoEnd(tpAdInfo: TPAdInfo?) {}
+
+ //视频播放失败(部分广告源支持)
+ override fun onAdVideoError(tpAdInfo: TPAdInfo?, error: TPAdError?) {
+ Log.d("ocean", "AdInstShower 视频广告播放失败回调->${error}")
+ showListener?.onAdShowFailed(AdShowFailed(error?.errorMsg.toString()))
+ }
+ })
+ interstitialAd?.showAd(activity!!, mPlace)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/artisanic/helper/ad/AdShowFailed.kt b/app/src/main/java/com/artisanic/helper/ad/AdShowFailed.kt
new file mode 100644
index 0000000..93896e9
--- /dev/null
+++ b/app/src/main/java/com/artisanic/helper/ad/AdShowFailed.kt
@@ -0,0 +1,5 @@
+package com.artisanic.helper.ad
+
+data class AdShowFailed(
+ val msg: String = "",
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/artisanic/helper/ad/AdsInsUtil.kt b/app/src/main/java/com/artisanic/helper/ad/AdsInsUtil.kt
new file mode 100644
index 0000000..924446c
--- /dev/null
+++ b/app/src/main/java/com/artisanic/helper/ad/AdsInsUtil.kt
@@ -0,0 +1,28 @@
+package com.artisanic.helper.ad
+
+import android.app.Activity
+
+object AdsInsUtil {
+
+ object Placement {
+ const val TOP_ON_AD_ONE = "801896DDD45E3B3004043EF828133512"
+ const val TOP_ON_AD_TOW = "03078FC50CF9C092439E85B445529012"
+ const val TOP_ON_AD_THREE = "B6B27D8BF5E2C3099548D1EDA0B18F12"
+ }
+
+ fun loadAd(
+ act: Activity,
+ adID: String,
+ loadListener: LoadListener?
+ ): AdInstLoad {
+ return AdInstLoad(act, adID, loadListener)
+ }
+
+ fun showAd(
+ act: Activity,
+ adID: String,
+ listener: ShowListener?
+ ): AdInstShower {
+ return AdInstShower(act, adID, listener)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/artisanic/helper/ad/InstAdCacheManager.kt b/app/src/main/java/com/artisanic/helper/ad/InstAdCacheManager.kt
new file mode 100644
index 0000000..a24a1d3
--- /dev/null
+++ b/app/src/main/java/com/artisanic/helper/ad/InstAdCacheManager.kt
@@ -0,0 +1,35 @@
+package com.artisanic.helper.ad
+
+import com.tradplus.ads.open.interstitial.TPInterstitial
+
+class InstAdCacheManager {
+ private val mAdCacheDict: MutableMap = mutableMapOf()
+
+ companion object {
+ val instance: InstAdCacheManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
+ InstAdCacheManager()
+ }
+ }
+
+ fun setAdCache(place: String, adCache: TPInterstitial) {
+ mAdCacheDict[place] = adCache
+ }
+
+ fun getAdCache(place: String): TPInterstitial? {
+ return mAdCacheDict[place]
+ }
+
+ fun getLoadedInstCount(): Int {
+ var count = 0
+ try {
+ mAdCacheDict.forEach { (key, value) ->
+ if (value.isReady) {
+ count += 1
+ }
+ }
+ } catch (_: Exception) {
+
+ }
+ return count
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/artisanic/helper/ad/LoadListener.kt b/app/src/main/java/com/artisanic/helper/ad/LoadListener.kt
new file mode 100644
index 0000000..ace428c
--- /dev/null
+++ b/app/src/main/java/com/artisanic/helper/ad/LoadListener.kt
@@ -0,0 +1,8 @@
+package com.artisanic.helper.ad
+
+import com.tradplus.ads.base.bean.TPAdInfo
+
+interface LoadListener {
+ fun loadFailed(error: String) {}
+ fun loaded(ad: TPAdInfo) {}
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/artisanic/helper/ad/ShowListener.kt b/app/src/main/java/com/artisanic/helper/ad/ShowListener.kt
new file mode 100644
index 0000000..6ffc3c8
--- /dev/null
+++ b/app/src/main/java/com/artisanic/helper/ad/ShowListener.kt
@@ -0,0 +1,10 @@
+package com.artisanic.helper.ad
+
+import com.tradplus.ads.base.bean.TPAdInfo
+
+interface ShowListener {
+ fun onAdShown(ad: TPAdInfo?) {}
+ fun onAdShowFailed(error: AdShowFailed?) {}
+ fun onAdClosed() {}
+ fun onAdClicked() {}
+}
diff --git a/app/src/main/java/com/artisanic/helper/artadapter/ListAdapter.java b/app/src/main/java/com/artisanic/helper/artadapter/ListAdapter.java
new file mode 100644
index 0000000..249afe4
--- /dev/null
+++ b/app/src/main/java/com/artisanic/helper/artadapter/ListAdapter.java
@@ -0,0 +1,70 @@
+package com.artisanic.helper.artadapter;
+
+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 androidx.annotation.NonNull;
+import androidx.cardview.widget.CardView;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.artisanic.helper.ArtApp;
+import com.artisanic.helper.artmanager.ArtUtils;
+import com.artisanic.helper.artui.ArtCameraActivity;
+import com.artisanic.helper.test.R;
+
+import java.util.List;
+
+public class ListAdapter extends RecyclerView.Adapter {
+
+ private Context mCon;
+ private List data;
+
+ public ListAdapter(Context mCon, List bitmapList) {
+ this.mCon = mCon;
+ data = bitmapList;
+ }
+
+ @NonNull
+ @Override
+ public HomeVH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_list, parent, false);
+ return new HomeVH(view);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull HomeVH holder, int position) {
+ String imagePath = data.get(position);
+ Log.d("---------tt","---------name="+imagePath);
+ Bitmap bitmap = ArtUtils.loadImageFromAssets(mCon, imagePath);
+ holder.previewIm.setImageBitmap(bitmap);
+
+ // 适配你的 CameraActivity:仅传递 Key_Camera 参数(与你原有逻辑一致)
+ holder.cardView.setOnClickListener(v -> {
+ Intent intent = new Intent(mCon, ArtCameraActivity.class);
+ intent.putExtra(ArtApp.Key_Camera, imagePath); // 传递完整图片路径
+ mCon.startActivity(intent);
+ });
+ }
+
+ @Override
+ public int getItemCount() {
+ return data.size();
+ }
+
+ 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_view);
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/artisanic/helper/artadapter/MainAdapter.java b/app/src/main/java/com/artisanic/helper/artadapter/MainAdapter.java
new file mode 100644
index 0000000..abde690
--- /dev/null
+++ b/app/src/main/java/com/artisanic/helper/artadapter/MainAdapter.java
@@ -0,0 +1,102 @@
+package com.artisanic.helper.artadapter;
+
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.RectF;
+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.artisanic.helper.ArtApp;
+import com.artisanic.helper.artmanager.ArtKeys;
+import com.artisanic.helper.artmanager.ArtUtils;
+import com.artisanic.helper.artui.ListActivity;
+import com.artisanic.helper.test.R;
+
+import java.util.List;
+import java.util.Random;
+
+public class MainAdapter extends RecyclerView.Adapter {
+
+ private List nameList = ArtKeys.getAllDir();
+ private Context mCon;
+ private static final int CORNER_RADIUS = 32;
+
+ public MainAdapter(Context mCon) {
+ this.mCon = mCon;
+ }
+
+ @NonNull
+ @Override
+ public HomeVH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View view = LayoutInflater.from(parent.getContext())
+ .inflate(R.layout.adapter_main, parent, false);
+ return new HomeVH(view);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull HomeVH holder, int position) {
+ String dir = nameList.get(position);
+ String dirSimpleName = dir.substring(dir.lastIndexOf("_") + 1);
+ holder.tvName.setText(dirSimpleName);
+ List imagePaths = ArtUtils.fileExistsInAssets(mCon, dir);
+ if (!imagePaths.isEmpty()) {
+ Random random = new Random();
+ String randomImagePath = imagePaths.get(random.nextInt(imagePaths.size()));
+ Bitmap bitmap = ArtUtils.loadImageFromAssets(mCon, randomImagePath);
+ if (bitmap != null) {
+ holder.ivCategory.setImageBitmap(getRoundedCornerBitmap(bitmap, CORNER_RADIUS));
+ } else {
+ holder.ivCategory.setImageResource(R.mipmap.ic_launcher);
+ }
+
+ holder.ivCategory.setOnClickListener(v -> {
+ Intent intent = new Intent(mCon, ListActivity.class);
+ intent.putExtra(ArtApp.Key_ViewDir, dir);
+ mCon.startActivity(intent);
+ });
+ } else {
+ holder.ivCategory.setImageResource(R.mipmap.ic_launcher);
+ }
+ }
+ private Bitmap getRoundedCornerBitmap(Bitmap bitmap, int cornerRadius) {
+ Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
+ Canvas canvas = new Canvas(output);
+ final Paint paint = new Paint();
+ final RectF rectF = new RectF(0, 0, bitmap.getWidth(), bitmap.getHeight());
+
+ paint.setAntiAlias(true);
+ canvas.drawRoundRect(rectF, cornerRadius, cornerRadius, paint);
+
+ paint.setXfermode(new android.graphics.PorterDuffXfermode(android.graphics.PorterDuff.Mode.SRC_IN));
+ canvas.drawBitmap(bitmap, 0, 0, paint);
+ if (bitmap != output) {
+ bitmap.recycle();
+ }
+ return output;
+ }
+
+ @Override
+ public int getItemCount() {
+ return nameList.size();
+ }
+
+ public static class HomeVH extends RecyclerView.ViewHolder {
+ private TextView tvName;
+ private ImageView ivCategory;
+
+ public HomeVH(@NonNull View itemView) {
+ super(itemView);
+ tvName = itemView.findViewById(R.id.tv_name);
+ ivCategory = itemView.findViewById(R.id.iv_category);
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/artisanic/helper/artadapter/SearchAdapter.java b/app/src/main/java/com/artisanic/helper/artadapter/SearchAdapter.java
new file mode 100644
index 0000000..013b36f
--- /dev/null
+++ b/app/src/main/java/com/artisanic/helper/artadapter/SearchAdapter.java
@@ -0,0 +1,70 @@
+package com.artisanic.helper.artadapter;
+
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+import com.artisanic.helper.artui.ArtCameraActivity;
+import com.artisanic.helper.ArtApp; // 确保导入该类
+import com.artisanic.helper.test.databinding.ItemSearchImageBinding;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+
+public class SearchAdapter extends RecyclerView.Adapter {
+
+ private final Context mContext;
+ private List mImagePathList;
+
+ public SearchAdapter(Context context, List imagePathList) {
+ this.mContext = context;
+ this.mImagePathList = imagePathList;
+ }
+
+ public void updateData(List newList) {
+ this.mImagePathList = newList;
+ notifyDataSetChanged();
+ }
+
+ @NonNull
+ @Override
+ public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ ItemSearchImageBinding binding = ItemSearchImageBinding.inflate(
+ LayoutInflater.from(mContext), parent, false);
+ return new ImageViewHolder(binding);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull ImageViewHolder holder, int position) {
+ String imagePath = mImagePathList.get(position);
+ try (InputStream is = mContext.getAssets().open(imagePath)) {
+ Bitmap bitmap = BitmapFactory.decodeStream(is);
+ holder.binding.ivImage.setImageBitmap(bitmap);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ holder.binding.ivImage.setOnClickListener(v -> {
+ Intent intent = new Intent(mContext, ArtCameraActivity.class);
+ intent.putExtra(ArtApp.Key_Camera, imagePath);
+ mContext.startActivity(intent);
+ });
+ }
+
+ @Override
+ public int getItemCount() {
+ return mImagePathList == null ? 0 : mImagePathList.size();
+ }
+
+ static class ImageViewHolder extends RecyclerView.ViewHolder {
+ private final ItemSearchImageBinding binding;
+
+ public ImageViewHolder(ItemSearchImageBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/artisanic/helper/artmanager/ArtKeys.java b/app/src/main/java/com/artisanic/helper/artmanager/ArtKeys.java
new file mode 100644
index 0000000..a1e4bf4
--- /dev/null
+++ b/app/src/main/java/com/artisanic/helper/artmanager/ArtKeys.java
@@ -0,0 +1,48 @@
+package com.artisanic.helper.artmanager;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ArtKeys {
+
+ 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/artisanic/helper/artmanager/ArtUtils.java b/app/src/main/java/com/artisanic/helper/artmanager/ArtUtils.java
new file mode 100644
index 0000000..b85f211
--- /dev/null
+++ b/app/src/main/java/com/artisanic/helper/artmanager/ArtUtils.java
@@ -0,0 +1,118 @@
+package com.artisanic.helper.artmanager;
+
+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 ArtUtils {
+
+ 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 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/artisanic/helper/artui/ArtCameraActivity.java b/app/src/main/java/com/artisanic/helper/artui/ArtCameraActivity.java
new file mode 100644
index 0000000..1e79084
--- /dev/null
+++ b/app/src/main/java/com/artisanic/helper/artui/ArtCameraActivity.java
@@ -0,0 +1,387 @@
+package com.artisanic.helper.artui;
+
+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.artisanic.helper.ArtApp;
+import com.artisanic.helper.ad.AdsInsUtil;
+import com.artisanic.helper.ad.LoadListener;
+import com.artisanic.helper.ad.ShowListener;
+import com.artisanic.helper.artmanager.ArtUtils;
+import com.artisanic.helper.test.R;
+import com.google.common.util.concurrent.ListenableFuture;
+import com.tradplus.ads.base.bean.TPAdInfo;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Objects;
+
+public class ArtCameraActivity 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;
+ private ImageView imPhoto;
+
+ private String curBitmapPath;
+ private boolean hasPermission = false;
+ private ActivityResultLauncher intentActivityResultLauncher;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setTransparentStatusBarAndFullScreenContent();
+ setContentView(R.layout.activity_art_camera);
+
+ AdsInsUtil.INSTANCE.showAd(this, AdsInsUtil.Placement.TOP_ON_AD_THREE, new ShowListener() {
+ @Override
+ public void onAdShown(@org.jetbrains.annotations.Nullable TPAdInfo ad) {
+ loadAd();
+ }
+
+ @Override
+ public void onAdClosed() {
+ loadAd();
+ }
+ });
+
+ 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);
+ curBitmapPath = getIntent().getStringExtra(ArtApp.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){
+ Toast.makeText(ArtCameraActivity.this, getString(R.string.Upload_failed), Toast.LENGTH_SHORT).show();
+ Log.d("-----tt","---imsgeUri----111---null");
+ return;
+ }
+ double uriFileSize=getUriFileSize(ArtCameraActivity.this,imageUri);
+ if(uriFileSize>=4){
+ Toast.makeText(ArtCameraActivity.this,getString(R.string.file) , Toast.LENGTH_SHORT).show();
+ Log.d("-----tt","---imageUri-222--uriFileSize="+uriFileSize);
+ return;
+ }
+ imageView.setImageURI(imageUri);
+ }
+ });
+ init();
+ initClick();
+ }
+ 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;
+ }
+
+ 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 = ArtUtils.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);
+ }
+
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ 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 = ArtUtils.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 = ArtUtils.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.setImageMatrix(endMatrix);
+ return true;
+ }
+
+ @Override
+ public void onClick(View v) {
+ if (v.equals(imBack)) {
+ finish();
+ } else {
+ if (!hasPermission) {
+ showNoPermission();
+ return;
+ }
+ if (v.equals(flashIm)) {
+ boolean selected = flashIm.isSelected();
+ if (camera == null) {
+ return;
+ }
+ try {
+ flashIm.setSelected(!selected);
+ camera.getCameraControl().enableTorch(!selected);
+ } catch (Exception e) {
+ e.printStackTrace();
+ flashIm.setSelected(selected);
+ }
+ } else if (v.equals(imPhoto)) {
+ Intent intent = new Intent(Intent.ACTION_PICK);
+ intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");
+ intentActivityResultLauncher.launch(intent);
+ } else if (v.equals(imZoom)) {
+ boolean isSeekBarVisible = seekBar.getVisibility() == View.VISIBLE;
+ if (isSeekBarVisible) {
+ seekBar.setVisibility(View.GONE);
+ imZoom.setSelected(false);
+ } else {
+ seekBar.setVisibility(View.VISIBLE);
+ imZoom.setSelected(true);
+ }
+ }
+ }
+ }
+
+ private void initClick() {
+ imBack.setOnClickListener(this);
+ flashIm.setOnClickListener(this);
+ imPhoto.setOnClickListener(this);
+ imZoom.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 = null;
+ camera = cameraProvider.bindToLifecycle(this, cameraSelector, preview, imageCapture);
+ range = ArtUtils.getRange(camera);
+ preview.setSurfaceProvider(previewView.getSurfaceProvider());
+
+ if (curBitmapPath != null) {
+ Bitmap bitmap = ArtUtils.loadImageFromAssets(this, curBitmapPath);
+ imageView.setImageBitmap(bitmap);
+ int width = bitmap.getWidth();
+ int height = bitmap.getHeight();
+ onInitIm(width, height);
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ camera = null;
+ }
+ }, 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);
+ camera = null;
+ }
+ }
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ camera = null;
+ }
+
+ private boolean checkPermission() {
+ boolean result = true;
+ for (String per : permissions) {
+ if (ActivityCompat.checkSelfPermission(this, per) != PackageManager.PERMISSION_GRANTED) {
+ result = false;
+ }
+ }
+ return result;
+ }
+
+ private void showNoPermission() {
+ Toast.makeText(this, getString(R.string.permission_fail), Toast.LENGTH_SHORT).show();
+ }
+
+ private void loadAd(){
+ AdsInsUtil.INSTANCE.loadAd(this, AdsInsUtil.Placement.TOP_ON_AD_THREE, new LoadListener() {
+ @Override
+ public void loadFailed(@NotNull String error) {
+
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/artisanic/helper/artui/BaseActivity.kt b/app/src/main/java/com/artisanic/helper/artui/BaseActivity.kt
new file mode 100644
index 0000000..b6b064f
--- /dev/null
+++ b/app/src/main/java/com/artisanic/helper/artui/BaseActivity.kt
@@ -0,0 +1,36 @@
+package com.artisanic.helper.artui
+
+import android.os.Bundle
+import androidx.activity.OnBackPressedCallback
+import androidx.appcompat.app.AppCompatActivity
+
+open class BaseActivity: AppCompatActivity() {
+ protected var backPressedCallback: OnBackPressedCallback? = null
+ /** 子类是否需要拦截返回 */
+ protected open fun shouldInterceptBackPress(): Boolean = false
+
+ /** 子类定义拦截后的操作(例如弹窗) */
+ protected open fun onInterceptBackPressed() {}
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setupBackPressedCallback()//初始化back事件
+ }
+ private fun setupBackPressedCallback() {
+ backPressedCallback = object : OnBackPressedCallback(true) {
+ override fun handleOnBackPressed() {
+ if (shouldInterceptBackPress()) {
+ // 由子类处理拦截动作
+ onInterceptBackPressed()
+ } else {
+ // 不拦截:关闭自己
+ isEnabled = false
+ onBackPressedDispatcher.onBackPressed()
+ }
+ }
+ }
+
+ onBackPressedDispatcher.addCallback(this, backPressedCallback!!)
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/artisanic/helper/artui/ListActivity.java b/app/src/main/java/com/artisanic/helper/artui/ListActivity.java
new file mode 100644
index 0000000..3e8379c
--- /dev/null
+++ b/app/src/main/java/com/artisanic/helper/artui/ListActivity.java
@@ -0,0 +1,83 @@
+package com.artisanic.helper.artui;
+
+import android.os.Bundle;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.GridLayoutManager;
+
+import com.artisanic.helper.ArtApp;
+import com.artisanic.helper.ad.AdsInsUtil;
+import com.artisanic.helper.ad.LoadListener;
+import com.artisanic.helper.ad.ShowListener;
+import com.artisanic.helper.artadapter.ListAdapter;
+import com.artisanic.helper.artmanager.ArtUtils;
+import com.artisanic.helper.test.databinding.ActivityListBinding;
+import com.tradplus.ads.base.bean.TPAdInfo;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public class ListActivity extends BaseActivity {
+
+ private ActivityListBinding preViewBinding;
+ private String dirStr;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ preViewBinding = ActivityListBinding.inflate(getLayoutInflater());
+ setContentView(preViewBinding.getRoot());
+ ArtUtils.setStatusBarTextColor(this,true);
+ dirStr = getIntent().getStringExtra(ArtApp.Key_ViewDir);
+ preViewBinding.categoryName.setText(dirStr.substring(dirStr.lastIndexOf("_")+1));
+ onInitList();
+ onInitClick();
+ }
+
+ private void onInitList() {
+ List list = ArtUtils.fileExistsInAssets(this, dirStr);
+ ListAdapter preViewAdapter = new ListAdapter(this, list);
+ preViewBinding.recyclerview.setAdapter(preViewAdapter);
+ preViewBinding.recyclerview.setLayoutManager(new GridLayoutManager(this, 2));
+ }
+
+ private void onInitClick() {
+ preViewBinding.back.setOnClickListener(v ->onInterceptBackPressed());
+ }
+
+
+ @Override
+ protected boolean shouldInterceptBackPress() {
+ return true;
+ }
+
+ @Override
+ protected void onInterceptBackPressed() {
+ AdsInsUtil.INSTANCE.showAd(this, AdsInsUtil.Placement.TOP_ON_AD_TOW, new ShowListener() {
+ @Override
+ public void onAdShown(@Nullable TPAdInfo ad) {
+ loadAd();
+ }
+
+ @Override
+ public void onAdClosed() {
+ loadAd();
+ }
+ });
+ if (getBackPressedCallback() != null) {
+ getBackPressedCallback().setEnabled(false);
+ }
+ getOnBackPressedDispatcher().onBackPressed();
+ }
+
+ private void loadAd(){
+ AdsInsUtil.INSTANCE.loadAd(this, AdsInsUtil.Placement.TOP_ON_AD_TOW, new LoadListener() {
+ @Override
+ public void loadFailed(@NotNull String error) {
+
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/artisanic/helper/artui/MainActivity.java b/app/src/main/java/com/artisanic/helper/artui/MainActivity.java
new file mode 100644
index 0000000..9b236ba
--- /dev/null
+++ b/app/src/main/java/com/artisanic/helper/artui/MainActivity.java
@@ -0,0 +1,194 @@
+package com.artisanic.helper.artui;
+
+import android.Manifest;
+import android.content.Intent;
+import android.os.Build;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.activity.EdgeToEdge;
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.ContextCompat;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowInsetsCompat;
+import androidx.fragment.app.Fragment;
+import androidx.viewpager2.adapter.FragmentStateAdapter;
+import androidx.viewpager2.widget.ViewPager2;
+
+import com.artisanic.helper.ad.AdsInsUtil;
+import com.artisanic.helper.ad.LoadListener;
+import com.artisanic.helper.artmanager.ArtUtils;
+import com.artisanic.helper.test.R;
+import com.artisanic.helper.test.databinding.MainLayoutBinding;
+import com.google.android.material.tabs.TabLayout;
+import com.tradplus.ads.base.bean.TPAdInfo;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+public class MainActivity extends AppCompatActivity {
+
+ private MainLayoutBinding binding;
+ private List listFragment = new ArrayList<>();
+ private String[] permissions;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ EdgeToEdge.enable(this);
+ binding = MainLayoutBinding.inflate(getLayoutInflater());
+ setContentView(binding.getRoot());
+
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
+ Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
+ return insets;
+ });
+
+ binding.imSearch.setOnClickListener(v -> {
+ Intent intent = new Intent(MainActivity.this, SearchActivity.class);
+ startActivity(intent);
+ });
+
+ listFragment.add(MainFragment.newInstance());
+ listFragment.add(SettingFragment.newInstance());
+ onTabInit();
+ binding.viewPager2.setAdapter(new FragmentStateAdapter(this) {
+ @NonNull
+ @Override
+ public Fragment createFragment(int position) {
+ return listFragment.get(position);
+ }
+
+ @Override
+ public int getItemCount() {
+ return listFragment.size();
+ }
+ });
+ bingTabVp();
+ updateSearchBtnVisibility(0);
+ onInitPermission();
+ }
+
+ private void updateSearchBtnVisibility(int position) {
+ if (position == 0) {
+ binding.imSearch.setVisibility(View.VISIBLE);
+ } else {
+ binding.imSearch.setVisibility(View.GONE);
+ }
+ }
+
+ private void onInitPermission() {
+ 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 (!ArtUtils.checkPermission(this, permissions)) {
+ ActivityCompat.requestPermissions(this, permissions, 0);
+ }
+ }
+
+ private void bingTabVp() {
+ binding.tab.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
+ @Override
+ public void onTabSelected(TabLayout.Tab tab) {
+ ImageView icon = Objects.requireNonNull(tab.getCustomView()).findViewById(R.id.im_icon);
+ icon.setSelected(true);
+ binding.viewPager2.setCurrentItem(tab.getPosition());
+ updateSearchBtnVisibility(tab.getPosition());
+ }
+
+ @Override
+ public void onTabUnselected(TabLayout.Tab tab) {
+ ImageView icon = Objects.requireNonNull(tab.getCustomView()).findViewById(R.id.im_icon);
+ icon.setSelected(false);
+ }
+
+ @Override
+ public void onTabReselected(TabLayout.Tab tab) {
+
+ }
+ });
+ binding.viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
+ @Override
+ public void onPageSelected(int position) {
+ super.onPageSelected(position);
+ Objects.requireNonNull(binding.tab.getTabAt(position)).select();
+ updateSearchBtnVisibility(position);
+ }
+ });
+ }
+
+ private void onTabInit() {
+ for (int i = 0; i < listFragment.size(); i++) {
+ TabLayout.Tab tab = binding.tab.newTab();
+ View inflate = LayoutInflater.from(this).inflate(R.layout.item_tab_custom_view, null, false);
+ ImageView icon = inflate.findViewById(R.id.im_icon);
+ TextView textView = inflate.findViewById(R.id.textView);
+ if (i == 0) {
+ textView.setText(getString(R.string.tab_draw));
+ icon.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.tab_home));
+ } else {
+ textView.setText(getString(R.string.tab_set));
+ icon.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.tab_setting));
+ }
+ tab.setCustomView(inflate);
+ binding.tab.addTab(tab);
+ }
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ if (requestCode == 0) {
+ if (ArtUtils.checkPermission(this, permissions)) {
+ Toast.makeText(this, getString(R.string.Permission), Toast.LENGTH_SHORT).show();
+ } else {
+ Toast.makeText(this, getString(R.string.permission_fail), Toast.LENGTH_SHORT).show();
+ }
+ }
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ loadAd();
+ }
+
+ private void loadAd() {
+ AdsInsUtil.INSTANCE.loadAd(this, AdsInsUtil.Placement.TOP_ON_AD_THREE, new LoadListener() {
+ @Override
+ public void loaded(@NotNull TPAdInfo ad) {
+
+ }
+
+ @Override
+ public void loadFailed(@NotNull String error) {
+
+ }
+ });
+ AdsInsUtil.INSTANCE.loadAd(this, AdsInsUtil.Placement.TOP_ON_AD_TOW, new LoadListener() {
+ @Override
+ public void loaded(@NotNull TPAdInfo ad) {
+
+ }
+
+ @Override
+ public void loadFailed(@NotNull String error) {
+
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/artisanic/helper/artui/MainFragment.java b/app/src/main/java/com/artisanic/helper/artui/MainFragment.java
new file mode 100644
index 0000000..725ccf0
--- /dev/null
+++ b/app/src/main/java/com/artisanic/helper/artui/MainFragment.java
@@ -0,0 +1,40 @@
+package com.artisanic.helper.artui;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.fragment.app.Fragment;
+import androidx.recyclerview.widget.GridLayoutManager;
+
+import com.artisanic.helper.artadapter.MainAdapter;
+import com.artisanic.helper.test.databinding.FragmentMainBinding;
+
+public class MainFragment extends Fragment {
+ private FragmentMainBinding fragmentHomeBinding;
+
+ public MainFragment() {}
+
+ public static MainFragment newInstance() {
+ MainFragment fragment = new MainFragment();
+ Bundle args = new Bundle();
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ fragmentHomeBinding = FragmentMainBinding.inflate(getLayoutInflater());
+ onInitRecycler();
+ return fragmentHomeBinding.getRoot();
+ }
+
+ private void onInitRecycler() {
+ MainAdapter homeAdapter = new MainAdapter(requireContext());
+ fragmentHomeBinding.recyclerview.setAdapter(homeAdapter);
+ GridLayoutManager gridLayoutManager = new GridLayoutManager(requireContext(), 2);
+ fragmentHomeBinding.recyclerview.setLayoutManager(gridLayoutManager);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/artisanic/helper/artui/SearchActivity.java b/app/src/main/java/com/artisanic/helper/artui/SearchActivity.java
new file mode 100644
index 0000000..1e0e1ac
--- /dev/null
+++ b/app/src/main/java/com/artisanic/helper/artui/SearchActivity.java
@@ -0,0 +1,119 @@
+package com.artisanic.helper.artui;
+
+import android.os.Bundle;
+import android.view.View;
+import android.view.inputmethod.EditorInfo;
+import android.widget.Toast;
+
+import androidx.activity.EdgeToEdge;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowInsetsCompat;
+import androidx.recyclerview.widget.GridLayoutManager;
+import com.artisanic.helper.artadapter.SearchAdapter;
+import com.artisanic.helper.test.R;
+import com.artisanic.helper.test.databinding.SearchLayoutBinding;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+public class SearchActivity extends AppCompatActivity {
+
+ private SearchLayoutBinding binding;
+ private SearchAdapter mAdapter;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ binding = SearchLayoutBinding.inflate(getLayoutInflater());
+ setContentView(binding.getRoot());
+ EdgeToEdge.enable(this);
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.search), (v, insets) -> {
+ Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
+ return insets;
+ });
+ initRecyclerView();
+ bindEvents();
+ }
+
+ private void initRecyclerView() {
+ GridLayoutManager layoutManager = new GridLayoutManager(this, 2);
+ binding.rvSearchResult.setLayoutManager(layoutManager);
+ mAdapter = new SearchAdapter(this, new ArrayList<>());
+ binding.rvSearchResult.setAdapter(mAdapter);
+ }
+ private void bindEvents() {
+ binding.imageviewBack.setOnClickListener(v -> finish());
+ binding.btnSearch.setOnClickListener(v -> performSearch());
+ binding.etSearch.setOnEditorActionListener((v, actionId, event) -> {
+ if (actionId == EditorInfo.IME_ACTION_SEARCH) {
+ performSearch();
+ return true;
+ }
+ return false;
+ });
+ }
+ private void performSearch() {
+ // 1. 获取输入的分类名称
+ String category = binding.etSearch.getText().toString().trim();
+ if (category.isEmpty()) {
+ Toast.makeText(this, getString(R.string.please_input_keyword), Toast.LENGTH_SHORT).show();
+ return;
+ }
+
+ binding.searchPb.setVisibility(View.VISIBLE);
+ binding.emptyLayout.setVisibility(View.GONE);
+ binding.rvSearchResult.setVisibility(View.GONE);
+ new Thread(() -> {
+ List imagePathList = getAssetsImageList(category);
+ runOnUiThread(() -> {
+ binding.searchPb.setVisibility(View.GONE);
+ if (imagePathList.isEmpty()) {
+ binding.emptyLayout.setVisibility(View.VISIBLE);
+ Toast.makeText(this, getString(R.string.no_search_result), Toast.LENGTH_SHORT).show();
+ } else {
+ binding.rvSearchResult.setVisibility(View.VISIBLE);
+ mAdapter.updateData(imagePathList);
+ }
+ });
+ }).start();
+ }
+ private List getAssetsImageList(String inputCategory) {
+ List imageList = new ArrayList<>();
+ try {
+ String[] allAssetDirs = getAssets().list("");
+ if (allAssetDirs == null || allAssetDirs.length == 0) {
+ return imageList;
+ }
+ String targetDir = null;
+ String lowerInput = inputCategory.toLowerCase();
+ for (String dir : allAssetDirs) {
+ String dirSuffix = dir.replaceFirst("^png_", "").toLowerCase();
+ if (dirSuffix.equals(lowerInput)) {
+ targetDir = dir;
+ break;
+ }
+ }
+
+ if (targetDir == null) {
+ return imageList;
+ }
+
+ String[] files = getAssets().list(targetDir);
+ if (files != null && files.length > 0) {
+ for (String fileName : files) {
+ String lowerFileName = fileName.toLowerCase();
+ if (lowerFileName.endsWith(".png") || lowerFileName.endsWith(".jpg")
+ || lowerFileName.endsWith(".jpeg") || lowerFileName.endsWith(".webp")) {
+ imageList.add(targetDir + "/" + fileName);
+ }
+ }
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ runOnUiThread(() -> Toast.makeText(this, getString(R.string.Assets), Toast.LENGTH_SHORT).show());
+ }
+ return imageList;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/artisanic/helper/artui/SettingFragment.java b/app/src/main/java/com/artisanic/helper/artui/SettingFragment.java
new file mode 100644
index 0000000..3c38949
--- /dev/null
+++ b/app/src/main/java/com/artisanic/helper/artui/SettingFragment.java
@@ -0,0 +1,61 @@
+package com.artisanic.helper.artui;
+
+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.artisanic.helper.artmanager.ArtUtils;
+import com.artisanic.helper.test.R;
+import com.artisanic.helper.test.databinding.FragmentSettingBinding;
+
+public class SettingFragment extends Fragment {
+ private static final String ARG_PARAM1 = "param1";
+ private static final String ARG_PARAM2 = "param2";
+
+
+ private String mParam1;
+ private String mParam2;
+ private FragmentSettingBinding fragmentSettingBinding;
+
+ public SettingFragment() {
+
+ }
+ public static SettingFragment newInstance() {
+ SettingFragment fragment = new SettingFragment();
+ 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 = FragmentSettingBinding.inflate(getLayoutInflater());
+ onInit();
+ return fragmentSettingBinding.getRoot();
+ }
+
+ private void onInit(){
+ String version = "1.0";
+ PackageInfo info = ArtUtils.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/artisanic/helper/artui/SplashActivity.kt b/app/src/main/java/com/artisanic/helper/artui/SplashActivity.kt
new file mode 100644
index 0000000..dca9431
--- /dev/null
+++ b/app/src/main/java/com/artisanic/helper/artui/SplashActivity.kt
@@ -0,0 +1,171 @@
+package com.artisanic.helper.artui
+
+import android.annotation.SuppressLint
+import android.content.Intent
+import android.os.Bundle
+import android.os.CountDownTimer
+import android.widget.Toast
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowCompat
+import androidx.core.view.WindowInsetsCompat
+import com.artisanic.helper.ad.AdShowFailed
+import com.artisanic.helper.ad.AdsInsUtil
+import com.artisanic.helper.ad.LoadListener
+import com.artisanic.helper.ad.ShowListener
+import com.artisanic.helper.test.R
+import com.artisanic.helper.test.databinding.ActivityFirstBinding
+import com.tradplus.ads.base.bean.TPAdInfo
+
+class SplashActivity : BaseActivity() {
+
+ private var countDownTimer: CountDownTimer? = null
+ private lateinit var vb: ActivityFirstBinding
+
+ private val tickInterval = 100L
+ private val totalTime = 15_000L
+
+ /**
+ * 总 tick 次数 15次
+ */
+ private val totalTicks = totalTime / tickInterval
+
+ /**
+ * 每 tick 增加的进度 0.6666~
+ */
+ private val normalStep = 100f / totalTicks
+ private val fastStep = normalStep * 4 // 加速倍率
+ private var currentStep = normalStep
+
+ // 进度控制
+ private var progress = 0f
+
+ // 广告状态
+ private var adAvailable = false
+ private var hasNavigated = false
+
+ @SuppressLint("MissingInflatedId")
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ vb = ActivityFirstBinding.inflate(layoutInflater)
+ setContentView(vb.root)
+
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
+ val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
+ insets
+ }
+ val windowInsetsController = WindowCompat.getInsetsController(window, window.decorView)
+ windowInsetsController.isAppearanceLightStatusBars = true//状态栏文字颜色
+
+ // 1. 进来就 load 广告
+ loadSplashAd()
+
+ // 2. 启动进度条(只启动一次)
+ startProgressTimer()
+ }
+
+ private fun startProgressTimer() {
+ countDownTimer?.cancel()
+
+ countDownTimer = object : CountDownTimer(totalTime, tickInterval) {
+
+ override fun onTick(millisUntilFinished: Long) {
+ progress += currentStep
+ if (progress >= 100f) {
+ progress = 100f
+ vb.progressBar.progress = 100
+ cancel()
+ onProgressFinished()
+ } else {
+ vb.progressBar.progress = progress.toInt()
+ }
+ }
+
+ override fun onFinish() {
+ // 不使用
+ }
+ }.start()
+ }
+
+
+ // 进度走完后的统一出口
+ private fun onProgressFinished() {
+ if (hasNavigated) return
+
+ if (adAvailable) {
+ showSplashAd()
+ } else {
+ navigateToNext()
+ }
+ }
+
+ private fun loadSplashAd() {
+ AdsInsUtil.loadAd(
+ act = this,
+ adID = AdsInsUtil.Placement.TOP_ON_AD_ONE,
+ loadListener = object : LoadListener {
+
+ override fun loaded(ad: TPAdInfo) {
+ adAvailable = true
+ accelerateProgress()
+ }
+
+ override fun loadFailed(error: String) {
+ adAvailable = false
+ accelerateProgress()
+ }
+ }
+ )
+ }
+
+ // 广告 load 完 → 加速
+ private fun accelerateProgress() {
+ currentStep = fastStep
+ }
+
+ private fun showSplashAd() {
+ AdsInsUtil.showAd(
+ act = this,
+ adID = AdsInsUtil.Placement.TOP_ON_AD_ONE,
+ listener = object : ShowListener {
+
+ override fun onAdShown(ad: TPAdInfo?) {}
+
+ override fun onAdShowFailed(error: AdShowFailed?) {
+ navigateToNext()
+ }
+
+ override fun onAdClosed() {
+ navigateToNext()
+ }
+ }
+ )
+ }
+
+ private fun navigateToNext() {
+ if (hasNavigated) return
+ hasNavigated = true
+ navigateToMainActivity()
+ }
+
+ override fun shouldInterceptBackPress(): Boolean = true
+ override fun onInterceptBackPressed() {}
+
+ @SuppressLint("QueryPermissionsNeeded")
+ private fun navigateToMainActivity() {
+ try {
+ startActivity(Intent(this, MainActivity::class.java))
+ finish()
+ } catch (e: Exception) {
+ Toast.makeText(this, "跳转失败", Toast.LENGTH_SHORT).show()
+ e.printStackTrace()
+ finish()
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ countDownTimer?.cancel()
+ countDownTimer = null
+ }
+}
diff --git a/app/src/main/logo-playstore.png b/app/src/main/logo-playstore.png
new file mode 100644
index 0000000..141462e
Binary files /dev/null and b/app/src/main/logo-playstore.png differ
diff --git a/app/src/main/logo_art-playstore.png b/app/src/main/logo_art-playstore.png
new file mode 100644
index 0000000..2195d72
Binary files /dev/null and b/app/src/main/logo_art-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/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/image_black_back.xml b/app/src/main/res/drawable/image_black_back.xml
new file mode 100644
index 0000000..e3e6cc4
--- /dev/null
+++ b/app/src/main/res/drawable/image_black_back.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/image_search_black.xml b/app/src/main/res/drawable/image_search_black.xml
new file mode 100644
index 0000000..55778e8
--- /dev/null
+++ b/app/src/main/res/drawable/image_search_black.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/image_search_white.xml b/app/src/main/res/drawable/image_search_white.xml
new file mode 100644
index 0000000..55778e8
--- /dev/null
+++ b/app/src/main/res/drawable/image_search_white.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/img_empty_result.xml b/app/src/main/res/drawable/img_empty_result.xml
new file mode 100644
index 0000000..ce1b51e
--- /dev/null
+++ b/app/src/main/res/drawable/img_empty_result.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/logo_art.webp b/app/src/main/res/drawable/logo_art.webp
new file mode 100644
index 0000000..fbed66e
Binary files /dev/null and b/app/src/main/res/drawable/logo_art.webp differ
diff --git a/app/src/main/res/drawable/oval.xml b/app/src/main/res/drawable/oval.xml
new file mode 100644
index 0000000..24a8750
--- /dev/null
+++ b/app/src/main/res/drawable/oval.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/rect_stoke_16.xml b/app/src/main/res/drawable/rect_stoke_16.xml
new file mode 100644
index 0000000..73bf2ad
--- /dev/null
+++ b/app/src/main/res/drawable/rect_stoke_16.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/seek_art.xml b/app/src/main/res/drawable/seek_art.xml
new file mode 100644
index 0000000..4574c79
--- /dev/null
+++ b/app/src/main/res/drawable/seek_art.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/seekbar_progress.xml b/app/src/main/res/drawable/seekbar_progress.xml
new file mode 100644
index 0000000..249436e
--- /dev/null
+++ b/app/src/main/res/drawable/seekbar_progress.xml
@@ -0,0 +1,17 @@
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/seekbar_thumb.xml b/app/src/main/res/drawable/seekbar_thumb.xml
new file mode 100644
index 0000000..a1a4d0d
--- /dev/null
+++ b/app/src/main/res/drawable/seekbar_thumb.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_flash.xml b/app/src/main/res/drawable/selector_flash.xml
new file mode 100644
index 0000000..7463f0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_flash.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..f004720
--- /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/tab_home.xml b/app/src/main/res/drawable/tab_home.xml
new file mode 100644
index 0000000..0c693a5
--- /dev/null
+++ b/app/src/main/res/drawable/tab_home.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/tab_setting.xml b/app/src/main/res/drawable/tab_setting.xml
new file mode 100644
index 0000000..9211a81
--- /dev/null
+++ b/app/src/main/res/drawable/tab_setting.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/tool_bar_shape.xml b/app/src/main/res/drawable/tool_bar_shape.xml
new file mode 100644
index 0000000..55e7516
--- /dev/null
+++ b/app/src/main/res/drawable/tool_bar_shape.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_art_camera.xml b/app/src/main/res/layout/activity_art_camera.xml
new file mode 100644
index 0000000..9000341
--- /dev/null
+++ b/app/src/main/res/layout/activity_art_camera.xml
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_first.xml b/app/src/main/res/layout/activity_first.xml
new file mode 100644
index 0000000..90a0fb5
--- /dev/null
+++ b/app/src/main/res/layout/activity_first.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_list.xml b/app/src/main/res/layout/activity_list.xml
new file mode 100644
index 0000000..3d066ea
--- /dev/null
+++ b/app/src/main/res/layout/activity_list.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/adapter_list.xml b/app/src/main/res/layout/adapter_list.xml
new file mode 100644
index 0000000..1a9ca41
--- /dev/null
+++ b/app/src/main/res/layout/adapter_list.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/adapter_main.xml b/app/src/main/res/layout/adapter_main.xml
new file mode 100644
index 0000000..5f91753
--- /dev/null
+++ b/app/src/main/res/layout/adapter_main.xml
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/adapter_main_child.xml b/app/src/main/res/layout/adapter_main_child.xml
new file mode 100644
index 0000000..ca16432
--- /dev/null
+++ b/app/src/main/res/layout/adapter_main_child.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml
new file mode 100644
index 0000000..439e971
--- /dev/null
+++ b/app/src/main/res/layout/fragment_main.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_setting.xml b/app/src/main/res/layout/fragment_setting.xml
new file mode 100644
index 0000000..b606663
--- /dev/null
+++ b/app/src/main/res/layout/fragment_setting.xml
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_search_image.xml b/app/src/main/res/layout/item_search_image.xml
new file mode 100644
index 0000000..bef668a
--- /dev/null
+++ b/app/src/main/res/layout/item_search_image.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_tab_custom_view.xml b/app/src/main/res/layout/item_tab_custom_view.xml
new file mode 100644
index 0000000..610543a
--- /dev/null
+++ b/app/src/main/res/layout/item_tab_custom_view.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/main_layout.xml b/app/src/main/res/layout/main_layout.xml
new file mode 100644
index 0000000..4d50e86
--- /dev/null
+++ b/app/src/main/res/layout/main_layout.xml
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/search_layout.xml b/app/src/main/res/layout/search_layout.xml
new file mode 100644
index 0000000..5f46679
--- /dev/null
+++ b/app/src/main/res/layout/search_layout.xml
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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/logo_art.xml b/app/src/main/res/mipmap-anydpi-v26/logo_art.xml
new file mode 100644
index 0000000..4a58dd4
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/logo_art.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/logo_art_round.xml b/app/src/main/res/mipmap-anydpi-v26/logo_art_round.xml
new file mode 100644
index 0000000..4a58dd4
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/logo_art_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-hdpi/draw_off.png b/app/src/main/res/mipmap-hdpi/draw_off.png
new file mode 100644
index 0000000..d8bd8c9
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/draw_off.png differ
diff --git a/app/src/main/res/mipmap-hdpi/draw_on.png b/app/src/main/res/mipmap-hdpi/draw_on.png
new file mode 100644
index 0000000..b74b02b
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/draw_on.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..a36062c
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_on.png b/app/src/main/res/mipmap-hdpi/flash_on.png
new file mode 100644
index 0000000..e7fcda3
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/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/icon_photo.png b/app/src/main/res/mipmap-hdpi/icon_photo.png
new file mode 100644
index 0000000..bb1fce1
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/logo_art.webp b/app/src/main/res/mipmap-hdpi/logo_art.webp
new file mode 100644
index 0000000..226a776
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/logo_art.webp differ
diff --git a/app/src/main/res/mipmap-hdpi/logo_art_foreground.webp b/app/src/main/res/mipmap-hdpi/logo_art_foreground.webp
new file mode 100644
index 0000000..4061dac
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/logo_art_foreground.webp differ
diff --git a/app/src/main/res/mipmap-hdpi/logo_art_round.webp b/app/src/main/res/mipmap-hdpi/logo_art_round.webp
new file mode 100644
index 0000000..2d76fc8
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/logo_art_round.webp differ
diff --git a/app/src/main/res/mipmap-hdpi/seek_off.png b/app/src/main/res/mipmap-hdpi/seek_off.png
new file mode 100644
index 0000000..dc8c00f
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/seek_off.png differ
diff --git a/app/src/main/res/mipmap-hdpi/seek_on.png b/app/src/main/res/mipmap-hdpi/seek_on.png
new file mode 100644
index 0000000..d18af5e
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/seek_on.png differ
diff --git a/app/src/main/res/mipmap-hdpi/set_off.png b/app/src/main/res/mipmap-hdpi/set_off.png
new file mode 100644
index 0000000..777ffdb
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/set_off.png differ
diff --git a/app/src/main/res/mipmap-hdpi/set_on.png b/app/src/main/res/mipmap-hdpi/set_on.png
new file mode 100644
index 0000000..b413d4a
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/set_on.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/logo_art.webp b/app/src/main/res/mipmap-mdpi/logo_art.webp
new file mode 100644
index 0000000..8655dff
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/logo_art.webp differ
diff --git a/app/src/main/res/mipmap-mdpi/logo_art_foreground.webp b/app/src/main/res/mipmap-mdpi/logo_art_foreground.webp
new file mode 100644
index 0000000..9ff7a3c
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/logo_art_foreground.webp differ
diff --git a/app/src/main/res/mipmap-mdpi/logo_art_round.webp b/app/src/main/res/mipmap-mdpi/logo_art_round.webp
new file mode 100644
index 0000000..d218f73
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/logo_art_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..e69de29
diff --git a/app/src/main/res/mipmap-xhdpi/logo_art.webp b/app/src/main/res/mipmap-xhdpi/logo_art.webp
new file mode 100644
index 0000000..67e7d40
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/logo_art.webp differ
diff --git a/app/src/main/res/mipmap-xhdpi/logo_art_foreground.webp b/app/src/main/res/mipmap-xhdpi/logo_art_foreground.webp
new file mode 100644
index 0000000..582db94
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/logo_art_foreground.webp differ
diff --git a/app/src/main/res/mipmap-xhdpi/logo_art_round.webp b/app/src/main/res/mipmap-xhdpi/logo_art_round.webp
new file mode 100644
index 0000000..ce01bbe
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/logo_art_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..e69de29
diff --git a/app/src/main/res/mipmap-xxhdpi/logo_art.webp b/app/src/main/res/mipmap-xxhdpi/logo_art.webp
new file mode 100644
index 0000000..8e8c6ee
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/logo_art.webp differ
diff --git a/app/src/main/res/mipmap-xxhdpi/logo_art_foreground.webp b/app/src/main/res/mipmap-xxhdpi/logo_art_foreground.webp
new file mode 100644
index 0000000..46f4896
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/logo_art_foreground.webp differ
diff --git a/app/src/main/res/mipmap-xxhdpi/logo_art_round.webp b/app/src/main/res/mipmap-xxhdpi/logo_art_round.webp
new file mode 100644
index 0000000..753c3ce
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/logo_art_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..e69de29
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/logo_art.webp b/app/src/main/res/mipmap-xxxhdpi/logo_art.webp
new file mode 100644
index 0000000..fbed66e
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/logo_art.webp differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/logo_art_foreground.webp b/app/src/main/res/mipmap-xxxhdpi/logo_art_foreground.webp
new file mode 100644
index 0000000..0f02dcb
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/logo_art_foreground.webp differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/logo_art_round.webp b/app/src/main/res/mipmap-xxxhdpi/logo_art_round.webp
new file mode 100644
index 0000000..b2257c6
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/logo_art_round.webp 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/attrs.xml b/app/src/main/res/values/attrs.xml
new file mode 100644
index 0000000..6d070c2
--- /dev/null
+++ b/app/src/main/res/values/attrs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ 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..ead2942
--- /dev/null
+++ b/app/src/main/res/values/colors.xml
@@ -0,0 +1,18 @@
+
+
+ #FF000000
+ #FFFFFFFF
+ #EDEEF7
+ #87CEEB
+ #3A3938
+ #343332
+ #E2E2FC
+ #7F49DD
+ #E0E0E0
+ #80777777
+ #999999
+ #FFFFFF
+ #999999
+ #FEA7F5
+ #33FFFFFF
+
\ No newline at end of file
diff --git a/app/src/main/res/values/logo_art_background.xml b/app/src/main/res/values/logo_art_background.xml
new file mode 100644
index 0000000..e934d03
--- /dev/null
+++ b/app/src/main/res/values/logo_art_background.xml
@@ -0,0 +1,4 @@
+
+
+ #FCFCFC
+
\ No newline at end of file
diff --git a/app/src/main/res/values/logo_background.xml b/app/src/main/res/values/logo_background.xml
new file mode 100644
index 0000000..6ab9a11
--- /dev/null
+++ b/app/src/main/res/values/logo_background.xml
@@ -0,0 +1,4 @@
+
+
+ #FCFCFC
+
\ 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..14cf950
--- /dev/null
+++ b/app/src/main/res/values/strings.xml
@@ -0,0 +1,16 @@
+
+ ArtisanicHelper
+ Please enter a keyword
+ No search results
+ Trace&Draw
+ More Settings
+ Permission request successful
+ Sketch Categories
+ Settings
+ Version
+ V%s
+ Please grant the relevant permissions and try again.
+ Upload failed
+ The file should not exceed 4MB.
+ Failed to load Assets
+
\ 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 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/backup_rules.xml b/app/src/main/res/xml/backup_rules.xml
new file mode 100644
index 0000000..fa0f996
--- /dev/null
+++ b/app/src/main/res/xml/backup_rules.xml
@@ -0,0 +1,13 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/data_extraction_rules.xml b/app/src/main/res/xml/data_extraction_rules.xml
new file mode 100644
index 0000000..9ee9997
--- /dev/null
+++ b/app/src/main/res/xml/data_extraction_rules.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/net.xml b/app/src/main/res/xml/net.xml
new file mode 100644
index 0000000..69cc842
--- /dev/null
+++ b/app/src/main/res/xml/net.xml
@@ -0,0 +1,6 @@
+
+
+
+ mobile-server.lux-ad.com
+
+
diff --git a/app/src/test/java/com/artisanic/helper/test/ExampleUnitTest.java b/app/src/test/java/com/artisanic/helper/test/ExampleUnitTest.java
new file mode 100644
index 0000000..a4cc693
--- /dev/null
+++ b/app/src/test/java/com/artisanic/helper/test/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.artisanic.helper.test;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/app/src/test/java/com/draw/painting/test/ExampleUnitTest.java b/app/src/test/java/com/draw/painting/test/ExampleUnitTest.java
new file mode 100644
index 0000000..94d3279
--- /dev/null
+++ b/app/src/test/java/com/draw/painting/test/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.draw.painting.test;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
new file mode 100644
index 0000000..43c4ef3
--- /dev/null
+++ b/build.gradle.kts
@@ -0,0 +1,7 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+plugins {
+ id("com.android.application") version "8.9.1" apply false
+ id("org.jetbrains.kotlin.android") version "2.2.21" apply false
+ id("com.google.gms.google-services") version "4.4.4" apply false
+ id("com.google.firebase.crashlytics") version "3.0.6" apply false
+}
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000..3e927b1
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,21 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app's APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
+# Enables namespacing of each library's R class so that its R class includes only the
+# resources declared in the library itself and none from the library's dependencies,
+# thereby reducing the size of the R class for that library
+android.nonTransitiveRClass=true
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..e708b1c
Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..17ae699
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Mon Dec 15 10:39:56 CST 2025
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
new file mode 100644
index 0000000..4f906e0
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,185 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=`expr $i + 1`
+ done
+ case $i in
+ 0) set -- ;;
+ 1) set -- "$args0" ;;
+ 2) set -- "$args0" "$args1" ;;
+ 3) set -- "$args0" "$args1" "$args2" ;;
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 0000000..ac1b06f
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,89 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/keystore.properties b/keystore.properties
new file mode 100644
index 0000000..301d84d
--- /dev/null
+++ b/keystore.properties
@@ -0,0 +1,6 @@
+app_name=ArtisanicHelper
+package_name=com.artisanic.helper
+keystoreFile=app/artisanichelper.jks
+key_alias=artkey0
+key_store_password=artisanichelper
+key_password=artisanichelper
\ No newline at end of file
diff --git a/settings.gradle.kts b/settings.gradle.kts
new file mode 100644
index 0000000..d25776d
--- /dev/null
+++ b/settings.gradle.kts
@@ -0,0 +1,33 @@
+pluginManagement {
+ repositories {
+ google()
+ mavenCentral()
+ gradlePluginPortal()
+ }
+}
+dependencyResolutionManagement {
+ repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
+ repositories {
+ google()
+ mavenCentral()
+ flatDir {
+ dirs("libs")
+ }
+ maven("https://jitpack.io")
+ // TradPlus
+ mavenCentral()
+ // Ironsource
+ maven("https://android-sdk.is.com/")
+ // Pangle
+ maven("https://artifact.bytedance.com/repository/pangle")
+ // Mintegral
+ //Launch GP market application, Android X Version
+ //If you fail to pull the code using gradle, add the maven warehouse configuration to the project root build.gradle file
+ maven("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea")
+
+ }
+}
+
+rootProject.name = "ArtisanicHelper"
+include(":app")
+
\ No newline at end of file