From 151c7ceea8ddc97d9dd7658f8b61e03078ff28c9 Mon Sep 17 00:00:00 2001 From: litingting Date: Thu, 4 Jul 2024 10:11:47 +0800 Subject: [PATCH] init --- .gitignore | 15 + app/.gitignore | 1 + app/ArtWallpaper.jks | Bin 0 -> 2556 bytes app/build.gradle.kts | 93 + app/google-services.json | 29 + app/proguard-rules.pro | 34 + .../img/wallpaper/ExampleInstrumentedTest.kt | 24 + app/src/main/AndroidManifest.xml | 75 + app/src/main/assets/test_new.json | 2251 +++++++++++++++++ .../cute/girl/hd/pink/img/wallpaper/MyApp.kt | 126 + .../img/wallpaper/adapter/CategoryAdapter.kt | 98 + .../adapter/CategoryDetailAdapter.kt | 108 + .../wallpaper/adapter/CategoryPagerAdapter.kt | 107 + .../img/wallpaper/adapter/ImageGridAdapter.kt | 114 + .../wallpaper/adapter/ImagePagerAdapter.kt | 106 + .../pink/img/wallpaper/entity/CategoryData.kt | 5 + .../wallpaper/entity/CategoryPreviewBean.kt | 7 + .../girl/hd/pink/img/wallpaper/entity/Data.kt | 22 + .../hd/pink/img/wallpaper/entity/GCategory.kt | 19 + .../img/wallpaper/entity/GCategoryDetail.kt | 23 + .../hd/pink/img/wallpaper/entity/GImage.kt | 45 + .../img/wallpaper/entity/IntentConstants.kt | 12 + .../pink/img/wallpaper/entity/PreviewBean.kt | 7 + .../pink/img/wallpaper/mymax/MaxCallBack.java | 8 + .../hd/pink/img/wallpaper/mymax/MaxUtils.java | 92 + .../img/wallpaper/page/CategoryAbility.kt | 216 ++ .../pink/img/wallpaper/page/CategoryPage.kt | 136 + .../wallpaper/page/CategoryPreviewAbility.kt | 346 +++ .../hd/pink/img/wallpaper/page/FeaturePage.kt | 102 + .../hd/pink/img/wallpaper/page/MainAbility.kt | 111 + .../hd/pink/img/wallpaper/page/PopularPage.kt | 188 ++ .../pink/img/wallpaper/page/PreviewAbility.kt | 404 +++ .../pink/img/wallpaper/page/PrivacyAbility.kt | 68 + .../hd/pink/img/wallpaper/page/RecentPage.kt | 193 ++ .../pink/img/wallpaper/page/StartAbility.kt | 94 + .../hd/pink/img/wallpaper/utils/DeviceUtil.kt | 28 + .../pink/img/wallpaper/utils/DownloadUtil.kt | 49 + .../hd/pink/img/wallpaper/utils/FileUtil.kt | 219 ++ .../hd/pink/img/wallpaper/utils/GlobalExt.kt | 27 + .../hd/pink/img/wallpaper/utils/MediaUtil.kt | 205 ++ .../img/wallpaper/utils/PermissionUtil.kt | 104 + .../pink/img/wallpaper/utils/ResourceUtil.kt | 50 + .../pink/img/wallpaper/utils/des/Base64.java | 297 +++ .../hd/pink/img/wallpaper/utils/des/DES.java | 122 + .../pink/img/wallpaper/utils/des/DesUtil.java | 18 + .../wallpaper/view/CustomItemDecoration.kt | 96 + .../hd/pink/img/wallpaper/view/SetAsDialog.kt | 58 + .../img/wallpaper/view/SquareFrameLayout.kt | 19 + .../main/res/drawable/d_card_dialog_24dp.xml | 6 + .../res/drawable/d_card_theme_pink_32dp.xml | 6 + app/src/main/res/drawable/ic_back.xml | 12 + app/src/main/res/drawable/ic_close.xml | 20 + app/src/main/res/drawable/ic_download.xml | 9 + .../res/drawable/ic_launcher_background.xml | 74 + .../res/drawable/ic_launcher_foreground.xml | 30 + app/src/main/res/drawable/ic_menu.xml | 12 + app/src/main/res/drawable/ic_placeholder.xml | 12 + app/src/main/res/drawable/ic_wallpaper.xml | 9 + app/src/main/res/font/fredoka.ttf | Bin 0 -> 42452 bytes app/src/main/res/layout/ability_category.xml | 83 + app/src/main/res/layout/ability_main.xml | 143 ++ app/src/main/res/layout/ability_preview.xml | 116 + app/src/main/res/layout/ability_privacy.xml | 39 + app/src/main/res/layout/ability_start.xml | 33 + app/src/main/res/layout/dialog_set.xml | 111 + app/src/main/res/layout/item_category.xml | 56 + app/src/main/res/layout/item_image.xml | 25 + app/src/main/res/layout/item_preview.xml | 25 + app/src/main/res/layout/page_category.xml | 6 + app/src/main/res/layout/page_recent.xml | 46 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + app/src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 4508 bytes .../mipmap-hdpi/ic_launcher_foreground.webp | Bin 0 -> 11220 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 6070 bytes app/src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 2834 bytes .../mipmap-mdpi/ic_launcher_foreground.webp | Bin 0 -> 6968 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 3870 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 6186 bytes .../mipmap-xhdpi/ic_launcher_foreground.webp | Bin 0 -> 15648 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 8676 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 9980 bytes .../mipmap-xxhdpi/ic_launcher_foreground.webp | Bin 0 -> 25830 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 13890 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 13998 bytes .../ic_launcher_foreground.webp | Bin 0 -> 38412 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 19448 bytes app/src/main/res/mipmap-xxxhdpi/logo.png | Bin 0 -> 22354 bytes app/src/main/res/values/colors.xml | 9 + app/src/main/res/values/strings.xml | 17 + app/src/main/res/values/styles.xml | 12 + app/src/main/res/values/themes.xml | 16 + app/src/main/res/xml/backup_rules.xml | 13 + .../main/res/xml/data_extraction_rules.xml | 19 + .../main/res/xml/network_security_config.xml | 19 + .../hd/pink/img/wallpaper/ExampleUnitTest.kt | 17 + app/testArtWallpaper.jks | Bin 0 -> 2580 bytes build.gradle.kts | 12 + gradle.properties | 24 + gradle/libs.versions.toml | 22 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 185 ++ gradlew.bat | 89 + keyinfo/info | 5 + settings.gradle.kts | 30 + 106 files changed, 7949 insertions(+) create mode 100644 .gitignore create mode 100644 app/.gitignore create mode 100644 app/ArtWallpaper.jks create mode 100644 app/build.gradle.kts create mode 100644 app/google-services.json create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/com/cute/girl/hd/pink/img/wallpaper/ExampleInstrumentedTest.kt create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/assets/test_new.json create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/MyApp.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/adapter/CategoryAdapter.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/adapter/CategoryDetailAdapter.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/adapter/CategoryPagerAdapter.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/adapter/ImageGridAdapter.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/adapter/ImagePagerAdapter.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/CategoryData.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/CategoryPreviewBean.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/Data.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/GCategory.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/GCategoryDetail.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/GImage.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/IntentConstants.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/PreviewBean.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/mymax/MaxCallBack.java create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/mymax/MaxUtils.java create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryAbility.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryPage.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryPreviewAbility.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/FeaturePage.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/MainAbility.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/PopularPage.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/PreviewAbility.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/PrivacyAbility.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/RecentPage.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/StartAbility.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/DeviceUtil.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/DownloadUtil.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/FileUtil.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/GlobalExt.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/MediaUtil.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/PermissionUtil.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/ResourceUtil.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/des/Base64.java create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/des/DES.java create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/des/DesUtil.java create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/view/CustomItemDecoration.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/view/SetAsDialog.kt create mode 100644 app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/view/SquareFrameLayout.kt create mode 100644 app/src/main/res/drawable/d_card_dialog_24dp.xml create mode 100644 app/src/main/res/drawable/d_card_theme_pink_32dp.xml create mode 100644 app/src/main/res/drawable/ic_back.xml create mode 100644 app/src/main/res/drawable/ic_close.xml create mode 100644 app/src/main/res/drawable/ic_download.xml create mode 100644 app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 app/src/main/res/drawable/ic_menu.xml create mode 100644 app/src/main/res/drawable/ic_placeholder.xml create mode 100644 app/src/main/res/drawable/ic_wallpaper.xml create mode 100644 app/src/main/res/font/fredoka.ttf create mode 100644 app/src/main/res/layout/ability_category.xml create mode 100644 app/src/main/res/layout/ability_main.xml create mode 100644 app/src/main/res/layout/ability_preview.xml create mode 100644 app/src/main/res/layout/ability_privacy.xml create mode 100644 app/src/main/res/layout/ability_start.xml create mode 100644 app/src/main/res/layout/dialog_set.xml create mode 100644 app/src/main/res/layout/item_category.xml create mode 100644 app/src/main/res/layout/item_image.xml create mode 100644 app/src/main/res/layout/item_preview.xml create mode 100644 app/src/main/res/layout/page_category.xml create mode 100644 app/src/main/res/layout/page_recent.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/logo.png create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml create mode 100644 app/src/main/res/values/themes.xml create mode 100644 app/src/main/res/xml/backup_rules.xml create mode 100644 app/src/main/res/xml/data_extraction_rules.xml create mode 100644 app/src/main/res/xml/network_security_config.xml create mode 100644 app/src/test/java/com/cute/girl/hd/pink/img/wallpaper/ExampleUnitTest.kt create mode 100644 app/testArtWallpaper.jks create mode 100644 build.gradle.kts create mode 100644 gradle.properties create mode 100644 gradle/libs.versions.toml create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 keyinfo/info create mode 100644 settings.gradle.kts 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/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/ArtWallpaper.jks b/app/ArtWallpaper.jks new file mode 100644 index 0000000000000000000000000000000000000000..5470b5f1b95b974c9cc66e1e48ba916a71aa574d GIT binary patch literal 2556 zcma);c{Cg78pe}IqA96_SXyICDMd&^tBqZ2pV(^bwKNSajhzrQq;{&MhH6V}Q%dc% z(?~6&HFm9?D#kvwm7;3gbMNV#``5kaJKy)5_xFC!_uu=R56ggk1pzs*3|KA{CL3)K zy$c6&0<#&gM_>l*!7)z2G9YjMs|Be7GazNhxcGP%K)L?o;ywukWiudJ$50LH`ojT% zV{NgQ{wcY!a$wZ6obl^_Eyg>VNYt!Zc!@aL#Q$|41d>L8fZ|wg=!t*72!cTXSP>}9 zIobe7<^Tg_!3b4q?P_A7LhcJG^SiSxYSUl_xG$)?t{0Q5FC4os`KdTfT%wW1OU^juxqe{Fp7*6(Rhz@3eJTYo1w65SsH%Ns=%_hJ}%pD8FzApb|;bd<8 zTlVtu4+UcuW?80KvJj6(>-R5#A3Ag@#4g+APp$4&0A!L{H9kXjB7ArsBaOz1;#XOa z-LpnhocZ{`K9pdA;1kMyx$(~vJs4*+=4N?<*KUMDDWBuY;$vOr(#rEFZkqrRTE+YL zY3hXo(HW(Z&=4x$2dSi2Ks>eU!Ywfl8gEx6PZ|>gY9)&@{^XP}*mKPi>>=#+KW2kW zpv>aMskx zi1&ET`!X~&0&SmI%!S$~(y|>x48$BoQeO(XU>;3uoQO5&3K;jZG_^0Pewx>*uPY}z z_HZIchF+NS@XEPx*}KU>ENR|}AeQmaxDD@8E__URuP@|Rcps2nv;LfGwsvP9S&EUV z5w2Hav2kRjk)MGOKTSF7{?Jvy*c+DJ@Ud*$X2Y;`cX-1_ddP_jw-12v5(WeTN?Ub$ zrtX~t>tt^ccP8MH?50lpjS1WW-}YQ|cRmuV_Vq@!*I;;IRC_4OGrYs7emr`J!mTv` zC>Jso)*hC`=*(N!u#3wgWisO8nq}7{bx-4`!uFXoRi^_9wZ(=;L13&_ecaX|a-9u4 za{AN5EeAMdagF_P?|bINvIs1XSCDgLBS!g6QwAmPuy3Px8^4l6^yJn{(6RAQBKK4) zE7r9tA(Ve#0nH!AeS#!eOQ+$NmFcuOh0~;f2BQG9)W~vcl*37#q4C;b zz45qDMf9sPO@=Ph9m;|TR^jv~?poo%nQN{>9MUacV+C@%jqRq{9OF;bZIO|eS=zD0 z9{#3eY?$Ts$;ZnWp1iaUk0nppQ$qOmiHd-ywo{aIPo0L+TOp!irgM@76Blt4x%0BI z_$~*@wanG=^Xr)*FL%vcolT--%Zl(Cp8HkpPqaYV^b=__j?-c*dPhqLRaM5XqEy!o zfBNc*!*qk$W(+0VOm9up8BN$&2y7jF3uRHQNZo}tk5B59qa8hZStJ6}`=!7^ zXZ$51le;w7lblK{u5#oIG|@~Q<-YYwdASX8kZU)cj4e)(n|u4U#wgQzOuC$1%MZs? z?U>j~@+9Rie{0=VPn>(!<;x+NPaa8l9>EyfW!hxD-paVwa*{a#(mbM^h9`os=sWiW zukV_6Wf=rDsdo$U$?e1siSdqe zK~fxQ^^*r?of=mp3*O9;gw=1NEuQW=cz1tN@M{h#8k(+)%MRPvb9;YJ zgkd+B!GiEPS0Up6}yF<_k~t~>(v^f z4;segZ-^Lg!dlVv9sJ->tB0+C$ay>c;C`tG*9wVK%} z;~8_j(Bi-^v_n6+j^W{u1m4`(tJwF4WBtLj-&$z%+d`-}G577m%Z2IKvyVRa@#pO4 zH@grM>U-tq;YDOBO+XwlmeIu&~A$;435wZ?X8T8;_>Zk zDg54LUI5M1T*ZH@-?diC2N#r&YQQ)x5`$04muCzbp`_XvhEdx4zgei{7N(5ldd(S? z!Vx~pcyZUC^_imi8{gfVBoxV1)nd-Y;8y_zWay;w2s8+YI`31U!iLRVQ^e&iFO`_u zj{M@i)66j@fGRZVwK=NHf*3*E>tM2eo>VgG_q|65G(Fa|vj(4V+ z@pWQ`=nAt$MX0#o`rw&?%NxyQ5V5?XQnzO$lcPj>kc2;%y~i}vPL`KWHUQ?uiAHds z<4oiWqOP6Vin~wg&gg@oVL$6Ir_d7SnA!DcmB_S_FK41oXwF~31AVkhm3t@Y3z}F< zFM$r=Qhn6xZ%bg=cRWf;UV%SpPWHJ}$P{pbrN1~eX+lY+laYE6R`z=9-6d^=tkXQ{ zmQQ}o_YR&{$VM9>dq0NvK|}k){PON0<34Vb<1*=T!0n^bYgx0=!~UWXw}jsxejibc zl|majCHcigYVE#Ftl=Mxn5@xuGNPN^tl#kYL@-ilpB=7L|DKup{Z?YUerDGQ z$^ZOhp{rF=uftHA&KD3DAC`#4Vc|c1L?9pp02bG>CrrM6`IbL;kf5-$M)`2X%ie_Y pXT7boAF9b_(6A4T;)~qA{h;SCt3RI4DEJpkir literal 0 HcmV?d00001 diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 0000000..f9a0de3 --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,93 @@ +import java.util.Date +import java.text.SimpleDateFormat + +plugins { + alias(libs.plugins.androidApplication) + alias(libs.plugins.jetbrainsKotlinAndroid) + id("com.google.gms.google-services") + id("com.google.firebase.crashlytics") + id("applovin-quality-service") +} +applovin{ + apiKey = "y87o4e7vb5bbqzuGVTFyOIfZiyBG0Nf0Ksq8S3m2MJOHf_A5BcWGJnKuQqoxwxVvtdQdiTC4O3MPzFwy8rJ9Cc" +} +val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date()) +android { + namespace = "com.cute.girl.hd.pink.img.wallpaper" + compileSdk = 34 + + defaultConfig { + //com.wallart.art.wallpapers.hd + applicationId = "com.wallart.art.wallpapers.hd" + minSdk = 23 + targetSdk = 34 + versionCode = 2 + versionName = "1.0.1" + setProperty("archivesBaseName", "Art Wallpaper_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 + buildConfig = true + } +} + +dependencies { + + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.appcompat) + implementation(libs.material) + testImplementation(libs.junit) + androidTestImplementation(libs.androidx.junit) + androidTestImplementation(libs.androidx.espresso.core) + //tabLayout + implementation("io.github.h07000223:flycoTabLayout:3.0.0") + //下拉刷新上拉加载 +// implementation("io.github.scwang90:refresh-layout-kernel:2.0.5") //核心必须依赖 +// implementation("io.github.scwang90:refresh-header-classics:2.0.5") //经典刷新头 + //okhttp + implementation("com.squareup.okhttp3:okhttp:4.9.2") + implementation("commons-codec:commons-codec:1.11") + + implementation("com.github.bumptech.glide:glide:4.15.1") + annotationProcessor("com.github.bumptech.glide:compiler:4.11.0") + +// implementation("com.squareup.retrofit2:retrofit:2.9.0") +// implementation("com.squareup.retrofit2:converter-gson:2.9.0") + + implementation("com.squareup.okhttp3:logging-interceptor:4.7.2") + implementation("pub.devrel:easypermissions:3.0.0") + implementation("com.liulishuo.filedownloader:library:1.7.7") + + implementation ("com.google.code.gson:gson:2.10.1") + + + + + implementation("com.applovin:applovin-sdk:+") + implementation("com.applovin.mediation:vungle-adapter:+") + implementation("com.applovin.mediation:bytedance-adapter:+") + implementation("com.applovin.mediation:mintegral-adapter:+") + + implementation(platform("com.google.firebase:firebase-bom:32.3.1")) + implementation("com.google.firebase:firebase-analytics-ktx") + implementation ("com.google.firebase:firebase-crashlytics-ktx") +} \ No newline at end of file diff --git a/app/google-services.json b/app/google-services.json new file mode 100644 index 0000000..9f426ef --- /dev/null +++ b/app/google-services.json @@ -0,0 +1,29 @@ +{ + "project_info": { + "project_number": "32220085177", + "project_id": "art-wallpaper---wallpape-acddd", + "storage_bucket": "art-wallpaper---wallpape-acddd.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:32220085177:android:30846e4694936a9d6f1468", + "android_client_info": { + "package_name": "com.wallart.art.wallpapers.hd" + } + }, + "oauth_client": [], + "api_key": [ + { + "current_key": "AIzaSyCjN36LqkvcimX5OEsnMyYYmWElQRM_-js" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..f73aaf7 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,34 @@ +# 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 class com.cute.girl.hd.pink.img.wallpaper.entity.CategoryData { *; } + -keep class com.cute.girl.hd.pink.img.wallpaper.entity.Data { *; } + + -dontwarn org.bouncycastle.jsse.BCSSLParameters + -dontwarn org.bouncycastle.jsse.BCSSLSocket + -dontwarn org.bouncycastle.jsse.provider.BouncyCastleJsseProvider + -dontwarn org.conscrypt.Conscrypt$Version + -dontwarn org.conscrypt.Conscrypt + -dontwarn org.conscrypt.ConscryptHostnameVerifier + -dontwarn org.openjsse.javax.net.ssl.SSLParameters + -dontwarn org.openjsse.javax.net.ssl.SSLSocket + -dontwarn org.openjsse.net.ssl.OpenJSSE \ No newline at end of file diff --git a/app/src/androidTest/java/com/cute/girl/hd/pink/img/wallpaper/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/cute/girl/hd/pink/img/wallpaper/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..d9f8f7d --- /dev/null +++ b/app/src/androidTest/java/com/cute/girl/hd/pink/img/wallpaper/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.cute.girl.hd.pink.img.wallpaper + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.cute.girl.hd.pink.img.wallpaper", appContext.packageName) + } +} \ 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..a7af385 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/assets/test_new.json b/app/src/main/assets/test_new.json new file mode 100644 index 0000000..b86455f --- /dev/null +++ b/app/src/main/assets/test_new.json @@ -0,0 +1,2251 @@ +[ + { + "name": "feature", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0778d29d9df3135981fa983db6447d4c.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d799900c0ed4448a858fabe9a97adb74.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/272d39eb140f03699f83bbda9349c459.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4ac3e89c29f60f667f5e660afdf52b56.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1020c6c57366c85cd8b4b54e93f86b97.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1c262081e6674c7de6a054a101003010.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1bbcf0d4423449788cbc823441a3639a.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0bf796c657ed4d6f71a87506f78d5810.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2424f1aa727ae9998ae1896fea634fde.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6bd0da2bb67ec66df6561b99da4fe673.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ae4f3823580d67ab9d463e05210632c5.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4f15ec61b970ad24aa43ac8d99dbfc0f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/867581cd8ec5402839879c70a86d5166.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/58150630175fc68e38afe28ebf58688c.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/148499404d85516a86eeb5c2c30fafbd.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c29589dcf6ba78637c76d85e1e1db531.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8358b0d4f247220a75f9131ca89df811.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/985eda6fe511752a4ec54f66e8e26dd0.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ec66c00d9a660921829c0d4fd3e917d3.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/599361f146a794b01489fcefa1cbb16f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/989ccbceb5d165cc4b44ced23af4d5fb.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3bddefab997f67cfec336f798eb925fe.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b168d2f6250ef71dbf83d18d02df1f92.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1e7e5b04a7eda5b49eaa0a2dd5fcf2c7.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e668bf697bd9da5e701254835b4b8a03.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0309bd16868cd842263f21ff87637d8c.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d6826260e5e7a32f2db53404e409db44.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/77685bf7b59906eb1890967a7d78c0bf.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b655bc8400774e2dc940b5a8291e2ca5.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d99334875d0273aad4beab313723af81.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5542893618e601a7db59c526a067c6ff.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7814197400d16b8e9ca06a6875ceaec8.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d3829f608614d5e9d137db8ee5297f3c.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/debff43be7b79def16d495317b9b162f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/fe49725650ad74103700769b9fc07a8f.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d225f44145583267ae3d1a8e901a6e68.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b5bbb4b172e7ae28a052f4224af6274d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/650bd8e37f13c1eaa8a1d1ca243ffa01.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d59cc6ba4993bcf62c3869127a3c2941.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/85be37b1adb78db46d6966b85cd5189e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3b508cc58811b2724545896cbfcd66ac.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a96d12131ce5b9d173c5aea321c8b673.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5f26ebb7007c731156c4403ea27669a8.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e1218d89013e8d9abf06eac0499ff773.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0c24b7c474b8e1a7faec82c8b371652f.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/43adb1e59c4f757682af55d4f0eb7408.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2e02d2a00372e65792c82b7e35a0a86e.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ae39c963c68945c5e069c6f82a27370f.jpeg" + } + ] + }, + { + "name": "recent", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e3e9cfd7ecb0f9291a40577ccd5a6041.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/35b096446e9a5d5f48ceb0200a8f998a.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3302cc89be481f9e8be2b774d343bf70.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6731cfb0425ed903dd67f628b5f5ced3.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/55d37297cc7df4da112af4c0cbee8f2e.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c74de3ce566ef40635140c5691c30ee0.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3d9089bab7ae0ab40de9bbc277a08102.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/01951bbd70547362a3a2d2a579f1fca1.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d86f07746d129601913d2bf09599f6e8.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/29c711336f36473a3cacd4d9661f953a.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c189c2a257a0591c3ff5060c235c7342.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2d414e582fa323d82be316c3c5265458.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/34b31bde41c0dd74259b980c5574ae7d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f0ad74fb14620bfd31b92844a776838e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/918df6433d6270c8fbb76a15b76de80c.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/504a42911500aacde17bb218207b3531.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/24281fc765fce9da4c3d9d86e1e9ccf3.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6af1ac41c0bda2023d5b8268b7e1295b.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4bbb47d8bff5055f0e37eeba14c8d54d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5cccc2952253bbc0f2db3ebfeba29e86.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/11011f8b92d505d3f837afe073439ca1.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/be9d97e50fa5c89937e387da6649e3b7.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/cee1c646c05356637b33824c062af74f.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2ae06375abbba1052b00f9a2fb88e91a.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8b226912c3d378bab354b54d936d1750.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f0b2ca838271879067167fb1e1008253.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/cd179543db4aec47c8f7f77535dcb65d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7cf87093c5f2ec0a387101b2bd232548.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7e73c464a7b8e9f2cffbb4d0eab7b853.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/89ef11e052582cf67c8e6c176dccc0af.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/be89338c4809aaf5dcf3cc468432998e.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/fe3b2513bcfb731520bc4dcd979e5193.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3324c4475f6a4f1f64f069645548e452.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/372858e338cfdd52fe4a163031801de4.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f16d889afe61d0ca3f2d0ac01c5567c6.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/366370cfb9d839055295c07b80ccd3bc.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/67311a260e3c5e11a55cb79f02309b3d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/35c14f8ae14b38fa7cae5a1aa488cc0b.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/972225d59df46a33b68af9e58f40c909.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9cd75c731b123ce5f9ae92302e0d87c6.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/bf0ea47cb17bef915b374b1c40c41f73.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6a9c235c9ba3b42943506fc45ad5c340.jpeg" + } + ] + }, + { + "name": "popular", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/cb1e57d9a8a8b74bd9da3a59d048b5f5.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/450cfe73f9504835f27f7e86dff24d7f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/81ae1e4670fb3719e5149a3cdf31c6ed.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/51beb1bca04103db52e4cde6ca12db42.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/78f2465fbc4b4b16e56e277b637f624f.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f2957601d332beb1c0818e558954677e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/dbdf62f151e267ba7802a97963880aa2.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7901ff103a96ad19ddb27f3ed9954d16.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/289e1219ab8467f96c5c347c30292256.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/eb969501fdbf447733185cf031756673.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ae68d5364057f54c4b23053ae905ef8f.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c71e0bd1bbef6f57aba91d4021d2dfe1.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8340b18893dc7e581c7711b7f021696e.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9610d175c7297c23b2674bdc2ba9f028.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ea63e7a22d6d2496808afc0a17fa3cd1.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/edabc252391faab49916d2395f505e31.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/42d801957f9d055d3f4f60999f481468.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3fdcdfbb606f595acb4cba594c9823b6.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b2f935524830f3794ed9eb61f159a077.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/21f1ae5d466213bc80cd0252f3c7500e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0fa1ddf9b0d7f9dbce03c2b49c89a031.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/82b9f33f8ddb023c2c73c2e09bd3baa4.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7f5d11d128e59c04e4d1131a318ec896.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0826bdb695449da604e3d25ded709279.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a009573cdab9a4850445d5d698bb22da.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/10e8fc4ca6804fe916703c206261c1a1.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0cd6f33c960555cb30762fff3a1a6f4d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/fa1741c49fb23d1e637c535e42cd3362.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a80f6d5a542033cd6a24f2d38eb3c49e.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3e2fbd850eaa5474dc781acbc4c87703.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2ea3d1518f8638dfbff7b964d9892016.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/177321414002c6c067cd405796f96c62.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7223d7220b8f4efd273ad003a11f6208.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a4ffaeb15e4d4b3a177c3a834ed76d45.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1e28cc9646b74982c4cec3bce7acc42a.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7f0918eb3f9952a596e2adf5d5a651a9.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/bdc268b8397278fa0628fe61f132df64.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7a57a628d003214321a7409d960d2851.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8e12c5e967878d797e5c725e814976b5.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ccd577df5c7eeadb88e58b8cf47389d6.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4982759d3ea2405e951424a91297b040.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a39cf4fdb28e0043e6105ef0dbc559ca.jpeg" + } + ] + }, + { + "name": "anime", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/78a53756b869919dea40478e803165fe.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4dedaccf8e3cdec4bab521ba2714735d.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4dd0d2e4064d4af51bb6e549acf0e501.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/602390b4d293d0cdad5da081c13022fc.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/df23c4c23b0925dede1db7e356283018.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b3965a3626d46538f4a0b11daae6a3e1.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9bf9b79cebaa4b52c37fee1f955ac402.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1c2ed514290a4cfda6bc4e98d5b8a5f7.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7b45001ef70ee19976d32cf8700a69f0.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2b4f7512223f83bdb017c9a5d970cce9.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0ef461ff981673439ac38b940bd0f074.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/07ad3e82b58c6d36d88c9c99b37679f5.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b36fe9cc5d414cac38151c0b0c65bf20.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2ee74b808098313b403e34c2a6eb491c.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/69b5e49a24c369469489504a9d9681a1.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e68fbb1af288ce35966b7c0f4bdd04eb.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b85c20a2c96eea953ed23f726a98c0c4.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b560d9e78414ac96252a8e04e20566a9.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e736ce9da0035a817b842133021eb4b8.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9d90a6d43d192e5635feff690427a150.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/db40bb1805b2254b5fbe68fe1823188f.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6828f927c1d96becfdde853947bd5d90.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a1c69f392b70126f542e141975d314a3.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c4894eb33963529eae0438d8a44acbc9.jpeg" + } + ] + }, + { + "name": "unicorn", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f394722f00db0df931ea62d8e0f1f273.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/66e51fb0c777083a33c87169ff431c27.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ff25d42e887bfbfa61a5eff4b36d9d06.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3720df372357721e3186d0f025958030.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/dc416b31766e700005b3b0df4450d6a1.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0c95535f5c0fada4c4593c5f1a0be14f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/79411da09cb235ede0b2ab924e6e2d06.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b5ef56ab8d5990c2a930d317ee96ee36.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1422cb5eb8b0bb96a97c96e63343f3bd.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/18c3f3530da6e190ff5e846ac69b9b64.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3302cc89be481f9e8be2b774d343bf70.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6731cfb0425ed903dd67f628b5f5ced3.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3d9089bab7ae0ab40de9bbc277a08102.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/01951bbd70547362a3a2d2a579f1fca1.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/918df6433d6270c8fbb76a15b76de80c.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/504a42911500aacde17bb218207b3531.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f16d889afe61d0ca3f2d0ac01c5567c6.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/366370cfb9d839055295c07b80ccd3bc.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5ee5a0fa74677e71bd0725fbe45cb366.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4bb474acc1ec0e4aff17aa4af4b6d4bb.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0ec424dc828fd2853048f18928e0a7c2.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/251834a8101d69114ab0784723f8e1cd.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9e60ffa21331c941eb650abf0c37a5ba.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3aec495a951c17fde82b3f5c4e01f2d0.jpeg" + } + ] + }, + { + "name": "kitty", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0b52fe7cc5b2cf2d11cda94cf6dd77a9.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/77b08753cd065bd8e60873b1c119538d.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6f597bb789e69b5099a9b162402d01ed.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/56a10bb51d1cfba6130267eaae6cb04a.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/272d39eb140f03699f83bbda9349c459.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4ac3e89c29f60f667f5e660afdf52b56.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ae4f3823580d67ab9d463e05210632c5.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4f15ec61b970ad24aa43ac8d99dbfc0f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/867581cd8ec5402839879c70a86d5166.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/58150630175fc68e38afe28ebf58688c.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ec66c00d9a660921829c0d4fd3e917d3.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/599361f146a794b01489fcefa1cbb16f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e668bf697bd9da5e701254835b4b8a03.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0309bd16868cd842263f21ff87637d8c.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/beaca60353062f6c1e9a36957544bdba.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a7eb342b2a9d0346a496c6d9cb120c01.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4d895490519264d13e299f4fd28919a9.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6afc0f5710de7fda93ab55648409980d.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2609dde32e4f0051a6f66f4b12826b4d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/478cd1c814900b9dd701b4bca1e54947.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/cc1035518da3dc3729539e67d9468438.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/67618a0e1eea172dac6c703e35855855.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c84cadf74e82489d4393ea2a87fca733.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0019ce6a88fee8f46f49bb41be2b6441.jpeg" + } + ] + }, + { + "name": "puppies", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d86f07746d129601913d2bf09599f6e8.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/29c711336f36473a3cacd4d9661f953a.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c720292e6ea423293bb091bc480c6ad9.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ff93949342ba0e426c817bbc5fce12ad.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/98014a9710bece6882888ddceb23dc32.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7bba897872dc9faed84a1acb3327d5fa.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/62fb7f25795e2d724d555148cb30a451.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/72740366db66e229b6c40c191f817432.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9b98a18fc98e5fa3a1487db0434bb7d6.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3106a24bcae3c124d665fd44fba845f5.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/dd240b9fd1605c52c8863199fd70e831.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7f3ce5f13125e69448ad53980ddd4fdb.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0d1effad93377d18abe6fc22a138c69b.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/fa5dbf215afefd0ae9f596fce08f38fa.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b7fd0e5add46a012d9a6046206cd9e16.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7de53bb7a75291e06fcef8d9ac1ddc56.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e3659d15d752e31538a9734ddd20fe29.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/faa543a594e77ba804280b43d4570e50.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2765e0596a7812d27f3a458a0a8ed7a2.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8454af8507862961ddbec63df4fc77fd.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/fe6eccc7de59c72cc10b84e8d8b51122.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/94c2adf3f30aa2cc60cb6ae3cd8893fd.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3191053cec0c972447e04a290b36da35.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/adc5c0404bf29146ab3fad4d94716695.jpeg" + } + ] + }, + { + "name": "flowers", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2a05f339aa023822a6b07c843910241d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c7a1784fb016359f7a62a882333cc83b.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/88ef144fa47bcfa667f5cf8b393f15ef.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/80fbbe4db60cee5a851552309d2a27ab.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/474eb2d318fe9bfa401853fb453e2f67.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/de801fce754539f923b3780b499a4b7b.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a4d6778694fd960e4313f40ac5cbecab.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f19573e9f1e0be8280bbce83da13d933.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0d5331f838ca904c1cbb519c776905a7.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/99bee1bc7a1bc9d44696904142209414.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0240d8aaa69a5c630de599d5d4429bde.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d382d58c793cf7d3ca832066a3827d38.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c77b66a3c34a2c0105cca3053873c1a8.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b648ee0784da5e81ec5a59c9af08de16.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/121f1331fca3bd3a6e6135490c89938e.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8b42e5db9694f6f33e1c760710250998.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3ecfbfc0a45a8c031f6545bd0d280e06.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5a154380a7c6b21d9da29332e81f5d89.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0cebbb0341983039f6d670a26b18e25e.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/df515f3f6d988bb65d4c7e7cb28aefcc.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4bbb47d8bff5055f0e37eeba14c8d54d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5cccc2952253bbc0f2db3ebfeba29e86.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/cee1c646c05356637b33824c062af74f.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2ae06375abbba1052b00f9a2fb88e91a.jpeg" + } + ] + }, + { + "name": "eiffel tower", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d7ea774c7936847034e7d47c6a4c3621.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b6cde087dab857fdb24b0f0abd2385fa.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b05d98248da1854f0d001bd31cebd50b.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/64f877e613f049e7df32c7b9414f2986.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1c5fdc499db061366c8656ef36f4e3be.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/575e8ac5ae86f5a71babe3f0d2e39c75.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/942ba18550e178e99b2b5fe9c948d922.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c71782bae143242c0074e74c878133d0.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ef357333eed8615bf5284267f74bf2fe.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/06c69621517662ff720a79b17b1dabf0.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/49916fd9085dda6a71b00fd3a457c0f5.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f44233ad373660d4ad249729756e09c8.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0778d29d9df3135981fa983db6447d4c.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d799900c0ed4448a858fabe9a97adb74.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2424f1aa727ae9998ae1896fea634fde.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6bd0da2bb67ec66df6561b99da4fe673.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b655bc8400774e2dc940b5a8291e2ca5.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d99334875d0273aad4beab313723af81.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/83754be173a128765774ab3a7fd8c06a.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2aae7ca7704008b14bec39265bfb52bf.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3f10efadf6c5a9d36d9939f57b5d1ec6.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/63e1919d03e3d76b73721d03c104d84f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/33b3eca75cb6fa3e5fd59d500a9b5e98.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9e5de7535d8e8cc5f6c8d4eae55126a0.jpeg" + } + ] + }, + { + "name": "dreamy", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/078a2934e9bd4e91691040427e42c1cf.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b66b86b24e7d5998b3ea5a6536929fa6.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b863a36001829c01eb171176397497f0.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c051996948ac224e19503e3d465742a7.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/57755c4ea1bb81e508da774cedfb24e9.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/bcdd01e3664006072f8ddcdc85e3b5b0.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d4cca417535f5bb86b74e7c8750b5f2a.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e841a09e1457a0e4b238ffee72f398dd.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2906bd996dbcfba67ad9f896a6711446.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c6bf40fde3ebbe5c41f7ce0738a468c8.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/811fa5797c92e0de20dc2132c291afbe.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4505f7034a3c5f78f21d80167f841907.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4d0f72c74b8beeebea65063c65d13af6.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2f36ef1fcbd0d5e5efb7a3be5f2fac2b.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/95ef79cf7f81d6939ac82dcbf931864c.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5cb63c0e9ca2cb2f1e992a8a245128aa.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/caf42023af67eee943621b568b9162ac.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ff723d610b9d1b5523434576d2ce9101.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c86ba2f342308fe2a38b1d4b7ed4eb1a.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/46f3be40c9b3889e7224e8cb56319250.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4f45c624dd0901130541594a848163be.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f4ebd02e92d77f3dbf24166defbdd138.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/42c6a6c39534182eef8f116e71d195c0.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4b7da710445e2fd3b2f0a7324c2bde86.jpeg" + } + ] + }, + { + "name": "animals", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/10a20226dda3cf01850566e1cfe2e57b.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ad04501013a619c9b579dc2d9e593bf2.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c4d6e38cc92cde5aea884c9903225ea0.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/203ae96d3b0763a7b0eb7e6d79cd5dc6.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6860012997011bb06dec0a49116de185.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/36f7575ba012f8cb6bed9d1b9722e641.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c37d2250a6b9c8c2a5aeb6fded4e7674.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a6ec47edb79b4fac2e29a36995e43c91.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e3e9cfd7ecb0f9291a40577ccd5a6041.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/35b096446e9a5d5f48ceb0200a8f998a.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c189c2a257a0591c3ff5060c235c7342.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2d414e582fa323d82be316c3c5265458.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b168d2f6250ef71dbf83d18d02df1f92.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1e7e5b04a7eda5b49eaa0a2dd5fcf2c7.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d6826260e5e7a32f2db53404e409db44.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/77685bf7b59906eb1890967a7d78c0bf.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5e48ade076bf1b4666be781a3f60a364.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/51d60a01780b82e442d7455da61ab4bd.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ec08144b3a106eb6ecdd916767be8846.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/443479fa063df85622caefed1f272af2.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/859c9b58b3ed1c0c2992cc8cb06eac68.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b2dc1214b7b4e83bcc41a97469957831.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/578f979da129c8982239fc1c055d7be5.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/aaf9d9ef5f9f8399f43af626aef4eeb3.jpeg" + } + ] + }, + { + "name": "nature", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0a0068552c7716f4e62b52389be2e7aa.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/aeaf0a95791d5064adf22a0dffc59692.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/bfaa2acb7046d6937dcfb46242c5a202.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/89791fbf31f2da53a81fb1c39e33da87.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ba3a3d8e2a3fe678059d336209e27701.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/71963582a1f4ee889921cc7200c26e5e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/095d0022318d6bcf03f27cf0ab25f22a.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a2ef86f9dc2917e54557ad506ef1367f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d033305ce11a4c25d9e1d0522f2d0a93.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5d119c5c88b9e44955e83f3d3a0928b3.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/15132506d53f73a734acb50beb849545.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8db8e4798e05c61a0417ba4e327ecf00.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/080a1110ddb3fa6a5f6f4bcc9aeffe49.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/cf726d392b71b1f8cddf643211f7af61.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a5f34b87339fd4ab81acbe341ef8c0d0.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/188f4a1bfb8c25d8751092d6718f12ad.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/aa21124ef9606a1b0e0e42ef753e4d50.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e55d82f968397ae6dcd18d6a7a30dd9a.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f699e3ede507b1a95c837e599c32b22f.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/fe8ef87ce0f9151dd2c0fe481ec4e5c2.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1ecd1bed38f70bed2add2a2eb317773d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8d3d8f4e415ce64cd89047c0428bfd3c.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2e42b89b829991d004e5e060599484ce.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/76e3bb52aee44228dd554a7334c6d192.jpeg" + } + ] + }, + { + "name": "cute", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6a53bf315f64477d85ceb46298475b8d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7a5e9212400d93fd5f5d6c1848b3d76e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/faca01a3f8f50e688c415ce07618afc1.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/60964777dd2e91bd861003491672df01.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/55d37297cc7df4da112af4c0cbee8f2e.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c74de3ce566ef40635140c5691c30ee0.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/34b31bde41c0dd74259b980c5574ae7d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f0ad74fb14620bfd31b92844a776838e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/bf0ea47cb17bef915b374b1c40c41f73.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6a9c235c9ba3b42943506fc45ad5c340.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b75d67fc3ad3d42e15d0b4649d8d441a.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/62d6ffc99089529d2b1c467ca03666d6.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/cb1bb4486e126723a2c843c905aa3b42.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/035c6e43e25cad1cb4279aff04bee5a7.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/693f3467d3bf6de2da34b0c22fedf2ad.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/724df23f2bb16727e55244d81561edb0.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4c0df0ba0870937fe64587fc0b8ac063.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a6b3bd73747b3fb5b178e6912c3be861.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9c9ae9ac1d94a4f5a61bf18f3d684530.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/97b0432b9b9f09c559744bfdb911a17d.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/67598f5f32668b6ef71a99ee0f050aa0.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7c3f81d287bc3c1395719402dea36d8e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d40e843f1fa10744440f0eaec29e7229.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d05352377021cc5e405fe88821480370.jpeg" + } + ] + }, + { + "name": "cute", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/24281fc765fce9da4c3d9d86e1e9ccf3.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6af1ac41c0bda2023d5b8268b7e1295b.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8b226912c3d378bab354b54d936d1750.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f0b2ca838271879067167fb1e1008253.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c5f5f6bb19c8f2544b16257faa89b5ce.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e4b5929651e8c3e6e93b4ce1ced7038c.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/da8a06281bc51b91973f27f70e44fe07.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/24e865884c6a4c6de18da2ba437604ef.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/820dbda148cb9fa49bfad17ac2d97c83.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1014b0d7339fa900038831b0e7eeba2d.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d0099cf6e53cb3856a7853892d633b84.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/cd34b1d80f68ea8d551a46b00b859643.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b2906c0930d922b0dfbd2f0016f4a1ea.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0232278e0c136a9742c41ca66ce54bbe.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4e7a1b1ed3bcf5953a7d69b6c8b4d1b4.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8b47b25e43ff2d010c9a030351387558.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/cc012cb9ac44034c9435a6ee391712d3.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/98546f85441661c87ff8b0d21293f73c.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/88e64d9c2ee5f11771b65623d2947065.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1b10a1b75057cda81f26654161d5ae1c.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8cad4b00392cc69f8436083ac4687551.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/758a4af001554c71cf4d63e70c8878a7.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d5d39cc3011fc72b50bb6222c17974f3.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f131c7e334156fb1135ad92027de754d.jpeg" + } + ] + }, + { + "name": "beautiful", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a2e09a56793fbf9e8104833a199cf332.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0045a8e120149c1088dcc90669b4e08c.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/cd179543db4aec47c8f7f77535dcb65d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7cf87093c5f2ec0a387101b2bd232548.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5f26ebb7007c731156c4403ea27669a8.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e1218d89013e8d9abf06eac0499ff773.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/67aa353cca55c1f24e58ef45e3a5c6e5.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d2519f822e57c6aff440cd4332af7f4f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0694fbdefd7db30ee4333ce44ab2a714.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e9bdabc1b3ba7a403e171546082493a7.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/09cefec8744f0519b4aa53a03ee96eb2.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/39069a1ba9f5f562ad9be1e90a3523e0.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/426c845a56fccf9bdf3c44d00a59752c.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/684de08213628b07807220c38178738f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/cac87875aabdf876822ab2516cb5de59.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6db71ec61388d168ad2783e99db6b609.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/480f2e01bf1a96e8b90a9113d13b62b7.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5eabc418e04a5a30a0fbe499e1efcac8.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5e045e28cd394835269b56db2ab6e802.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e74092825564916b21361112850f480c.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f4b9b08157677c6810af55fd5cf83da1.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ab2b4d493687e922ebe45f59762f02e4.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/deda1a7c162a65ec39fdc40c61948ca1.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b93df15ac5a817fe8f6e8a0554bf0fa8.jpeg" + } + ] + }, + { + "name": "love", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/93d96dd6956db5e77d25d83b9f46624c.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7929459c12e04cfdc0613518a620b44b.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/51037b9c0935a2c86396465a1de1f52c.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/179aad0c6e8aa2ae39968fb7f5032b8b.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ed0d1f8a494b2c06d794950020b2a749.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4b6ee5717edd896ec043cf3334ecb34d.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a8b304c4b10d1eb6e801bffb5523a172.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5e05b76527a6419da4c49e7a7c5384c0.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b0cb65c664af3ff0da7128a04e225f50.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/45ee864553aba2ec2afbd716d3e52c31.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1310f244a991fdb069160761f8de158a.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ede74b0bb28389cb84ab07d73769eb1f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4b8d810f46ae48d41365785e23ec4323.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9a9b8f5d923e89cfb62a7a0ffec3f960.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/13cd7ff65ba2bcaac5d6f22366c58202.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/776f1fbcb7d725ab06a97f150031b7f7.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3d3b1ecdbfb3d16e1436e8bd534a4c2f.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7f51dc4f7d3c5afd2f79dde65d05d06e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/057a57e2faf946c072036415e87388d1.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4e374a92eeab672b4c9f3fc1c5ea656f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e217fb318f662b3ae2ad809d4c7fd4ea.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/37b6f39d7af382b776d3ce5e6538b2ac.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/912f9ee70a291ee29f8b41ff37a89a47.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ce81187ea521f83f620504211691d73f.jpeg" + } + ] + }, + { + "name": "quotes", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ffdee201ab115879fd038a7f529d7d2c.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3deec3b8eaeff16459a684cef5224b9b.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/087bcabb11186877ed51153251452811.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b5e16400a1374c454205bc7ca4608755.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ed717aa6c0e717092e06aab549ddc46e.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d660026484e39cc9ef8da58eebd9fcd0.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b938904303b0d74b1a89b36f9100e443.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f859acceb653463a5d9f078eda7677fa.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/08338ff92c3404ae6359b5e841dd84e1.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7cc7dbfa76593d16ebaff1d0c1995d9e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/877798c6dba982df8abe9e0c24d85554.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d9e0886ab6d82cc9edaba2f3bf29b45c.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5a169595dfe60147918f274b5948f8ed.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/051543e0172b6a65a5a97ac4f745864c.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6064a6c9c3d4995dc8540bad7ca388e7.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/45249e3ba3cea2622081a776e8401be5.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1359974cb4104bfae720e689606e41c7.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5104e818b965bbd76c857576ded2995e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c24b5eeb7ed4b024a2344bf97b64ec74.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3c5edd88e066ebe850ad70c7f693b4ba.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/aaac63a5fc32c88cf009a3957efccadf.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/47bd8da3f04ee58223a9b5cf1340ecf5.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/bcdaf95a07aaa42e25a6255c9315c163.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/26ea478a38e8f2928dbc5c2f93613b78.jpeg" + } + ] + }, + { + "name": "kawaii", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/de00f68d508f814beb905cd2fcb105b6.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/59eecae04d88aafdfc27dbdbed3f7206.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b7add655c7ad129e7450d854a0341650.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e6586942bcbcf272455f955dab228758.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/78fc2b822fc1a02e3583d7063eed2f42.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/51031999d7d436985551cd19524cce39.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0648300ae38fcf09b0c3300a5e449b68.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c0d0a8288565b29075544088820b9196.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e69aace3e80d2d71cf76be55a84ebf43.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a17b655882dc9019556634041e3e54da.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8838852f7f5c55ea50bf8c40395e7f1b.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/08ae5cc9a44ab440a176c337f31db1b3.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0dbf4bef14fcea43de65e98db86b1762.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5d6c2c5ac1f65e58a62563c2798ba285.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c8ea3a5375cc689bf4b090278fcced39.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a2c978ae492d3cc9e13c6d129b6b13b2.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a17e0fd585efa8294dbcb79e65e3e461.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/348636ce36c77a6d43dca03f96c5b4c2.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/04ad0f6fbad1a9f3a10ee9f0869c4f3e.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4b60fdedab1f57d3138e37fa83487750.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ce89d0109e3478b933f4703da1bde5ea.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3e7139fb80bcc35494089b7f758ea196.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/cc50f8a9fabda92ec8a7c35d296df81b.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/aa33283ac8c8fbbee4a1108093a89cd8.jpeg" + } + ] + }, + { + "name": "butterflies", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/14bec2138e0dbbb8269fcd823373ec81.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2be531772db23680710b0ae0f6bbd6b1.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8dd1d28b5f19d212233e4f75d65cdca6.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/87d643a67dc0871e3e1ad8acb2b3f724.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6144a94883258aed87fb9081bbde0a85.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1015aaf11c417698c54b0dbdd2507533.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/369cd1449d89059d62604705e2dc19d8.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9a85fb68e67b7ab16005a28d4c45424e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/159dd4cf025079e2b74b2aba1f314c44.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/492151fa770793fe78525ec147302d2f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/989ccbceb5d165cc4b44ced23af4d5fb.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3bddefab997f67cfec336f798eb925fe.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5a3ed58b628e39741823c75510447418.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5eaee4c2cfb09a49bae3118fc322f74a.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/47a0c3f8480c6a26097e4a14b85c79b9.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/11097c38b1eb9bbfab9efad792ac199a.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4501359f8f47768f7c2367a46bddc234.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a2c77e8179234381002c83ae14bdbd48.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/08a1c3f034284f1a493a6f187bb85c0c.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f56209ad01c3d8c4d8d570c78b2d321f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/080f21125226515b4183aaad249bab0c.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e3f9b89e0a25a4a2495d5ad929c9a8a4.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c246da9b3a6fce305f59857ba29b6ca9.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/30a65880137fcd20402d8f44fee72a04.jpeg" + } + ] + }, + { + "name": "ice-cream", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1bbcf0d4423449788cbc823441a3639a.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0bf796c657ed4d6f71a87506f78d5810.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8358b0d4f247220a75f9131ca89df811.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/985eda6fe511752a4ec54f66e8e26dd0.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e60779bcac97c31e5f130e4607e30b1a.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c8227946e82f8c43f9107f29d4326472.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/72306be102fb449d09c2f00190f333fd.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/14a353980ccf8e144edd511bdfb9799a.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e6ce9107ee6b132fda1e001f8b2e0e8f.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/25ec4e031b8f3bfbcdcd81827e71f825.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4b0e7d38bb0836de4740dc922939d2ec.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6c69e1301b8393af85d61975349c4e20.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c5b5aa7d87bc73fcdee4da3d278bed94.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e3bb6d6572b6ff014c96a80a90892ce5.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d3e93e7cf84e728ab4dcf86fc01ab361.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/db897544aa8015654df9a0cd9b009778.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a23f6c91d445fc7a32a4a6fd1cf12a75.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a952d9915b1b949d90476bb006d6c0a2.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0b1104aef0f0dd0521e5da2f7993d5f7.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/44ba5f78bd0b3e990940502309abadf5.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e13b63c99f9a6e82b7c0980cc94da4fa.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f32eae2014ba84d2b15b0d41379bba9b.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/90841637e3f0cce0538e4426c68a6943.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7d40d8b4e91953b74f9c266ff9fc68cd.jpeg" + } + ] + }, + { + "name": "birds", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d027d5c75d46118a8ff86257f87a7818.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/eb8cff06bba7da5f3bdc7171815f30b0.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8d4d9ae904e7a71209b10016bfec4bd1.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/828ff8fc1ed118e468421e5ed95a2a35.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/be89338c4809aaf5dcf3cc468432998e.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/fe3b2513bcfb731520bc4dcd979e5193.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5542893618e601a7db59c526a067c6ff.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7814197400d16b8e9ca06a6875ceaec8.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d3829f608614d5e9d137db8ee5297f3c.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/debff43be7b79def16d495317b9b162f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d59cc6ba4993bcf62c3869127a3c2941.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/85be37b1adb78db46d6966b85cd5189e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0c24b7c474b8e1a7faec82c8b371652f.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/43adb1e59c4f757682af55d4f0eb7408.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2e02d2a00372e65792c82b7e35a0a86e.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ae39c963c68945c5e069c6f82a27370f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/894b85fa369566d7e2adb08262ed5ff1.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ca49e82a5023d37b4688ccf83efe4498.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/706208a5352e89a17885d147d6af3c09.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/edc67a8b37dd34ce6718b1df35825ffb.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/044937e0563345d553840b90d0e61be4.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/71628f9256f7f1ab27872acf6477f697.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/328abe84ad5f964b94ff0d7b128786d2.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d8a80f5ddadeac8e549369a33c79597d.jpeg" + } + ] + }, + { + "name": "candy", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d0522722bb51d48e79670f07e4ec94ed.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e249865fcb0a40a9e64fbb125b467643.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7df5fa01d881b56217af64f6087659d4.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/022ab40bf75c2776f1a572aa0ac5df1d.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c1c89540c0984a8ba945491cd5c6b7c5.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4269ba8af3a09f1eb7508a8c683ee95e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/faae25973297f58826e3dbbd6dedad01.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3a850e4d137838c44ecf7bf8076c26aa.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8d6ed2580036c383d616cf91d49e0de4.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/841e3504782891d665afe31f7bfbe978.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/db2cce3d9886840acc73fe04a4866616.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/14276e9295ce0546bdeb49e4eb3306a2.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3aaeeb8ba9ae4185ff0d26964a5db981.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c69415f2ec008bb7fbe539e30dfcb9de.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/78b0c5abef0124866da1737390c67d48.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/380fb2476aa8b349823b6e0322eddd23.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/95278ef7f3d338ea46c30b1888978d9e.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/042e0a31ada56ebda3f5442e8eb34ef9.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a6cabf09b53438313c6b0946d2f89482.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/369d8e92d8e657a35dd155de50596d4b.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ad431bd7fd80af02e5df091d2e120637.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0312324215018a0c977a0f112c943e11.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1377058581145493d9197e7c1a748b92.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6b859cbfb8e5a0e2707a968529c578b9.jpeg" + } + ] + }, + { + "name": "illustration", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/741a4f4e3c11a30f5f250eabb255f3d5.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0bd89baff334793eac9ea18c651d43b5.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/81702ed7640a6daeab89fd4b0c98c2d6.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/03b4dbbbdb7aebfe12bdc83b24c7aca1.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/92917715228fe766a637a656292bfbc4.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2a33be25f5b8814ed2c8851a689af012.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e9157866f994b85102cd97bc54612259.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/15c3470351ef15d4b70ac27163436fec.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/17daa8c07a3f781442edd568402deb82.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/cb7e6acc06046411f4e38d9b55e0caf5.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d3e3fa690356c5001bafb8c8305ffff2.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/db0ca82d6c484a62c108e8adb59be9f7.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8a2e145771139c9e991db7c956c38841.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/17698bc166342dae3d26689fae4a1bc4.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6e7aa9b6e4095bfb4648f01e2139e9c3.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/bfcc8cee57bd706e4bbb617f4364b5a5.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/fc8df50b6f78190fe5e7c35ea6eeb1ea.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4dfafb09122ae33d4265a94e0dd1828b.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c39330313f2d91d61925f2d6c6c11bbb.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/fd6534f02987b5013d02af06248a59cf.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9ebcd0acaaee434fa2c0e74ffd215b6a.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b7ac0f961b92d435edbe7c889dc1a42e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7f418c2d149b613ba571389ef6f3451d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1d5ef3ee8ba83245c8217a30b83c094a.jpeg" + } + ] + }, + { + "name": "colorful", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/668845fe70cd30c376a78f566e4b89c6.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2af2a4d4e9ab05a8ed888fb4a704ee07.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4d6d2a80e17b46f459aea4ea31471688.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/454f45d1b513cbae0c4e7351e8057d09.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7d01634d7be19062a291c2eaa66f0a37.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/82a495cba8b841b470d60b0d8857c3b7.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/06ed05b4e42fe36a3ecf26c3425139b0.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/efb448e490c879c51b375a0f9abb920e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/cf6f68211e4bc3a1c1115cb32a0bd6a6.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f0e1f8bf73ecaef233849432e3082c89.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/148499404d85516a86eeb5c2c30fafbd.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c29589dcf6ba78637c76d85e1e1db531.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/fe49725650ad74103700769b9fc07a8f.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d225f44145583267ae3d1a8e901a6e68.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3edba426a028daaa7ae362c1055632ac.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/44b748e4dae8df99c456db5aa4604045.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6b7550a3ff14a128e9a02ada2b572b40.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/07a96f1f7ebb02460216deafae5bcf88.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/19124bb0d51f3f5ea5cb2431d0919560.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/60cf1643be379cc8ccc80c56efce5c57.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d8c484f95fc7351a6543b39817a18b53.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b11b5feaf6323a144ac13712f190263e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/502f49c26a43a476417831fcdaf650ba.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a7d15918016792d6890ff7166cc9a90e.jpeg" + } + ] + }, + { + "name": "pattern", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8b570d932db8d172bb9c1aca58972d4d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9e75b52e8e3fee0ad35f4145935c2cb2.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1f124d5bf89f413c949793f4b591a9e1.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/349336135eba300962ae430776ae6d4c.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/06ebb4a1f5827ae8273e369e2a82459f.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/56bcea9c32c4530147b08a1c1cfd9d54.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0c1c1c6e7f2eae50a86d07a36d5fa456.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9d87dd39a721b4c8174be3679d0281bd.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5864be060552a76cfa1f04895c6c2c44.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/366b452a51da9516d27582ed9b5803d6.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/11011f8b92d505d3f837afe073439ca1.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/be9d97e50fa5c89937e387da6649e3b7.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/67311a260e3c5e11a55cb79f02309b3d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/35c14f8ae14b38fa7cae5a1aa488cc0b.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/35627b141d46bd0fbb70487d7dc5dc29.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b7fe31e18aa622380b3fee4fa40fc43d.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/99de9d5fde1d8fc483f63f06df86aee5.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/15b39d3aae2b66b7c704e58b89c883af.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/880abdcadb53b481895d12edc442db52.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b1b5314cf76b80346abb27aac02a4dc7.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1a5b7adf5708439b8af308a695099bb9.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/751b6a2c6c7f062f063bea6c2be0a16b.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2fe8b8c170d118590d0f829dabd5fc19.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/fb202786278612845f98c13bf0392023.jpeg" + } + ] + }, + { + "name": "floral", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4ae5e4942ebe89d59e9cdc92b2805ccb.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2831602ba02537da94d995723ccf7267.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/972225d59df46a33b68af9e58f40c909.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9cd75c731b123ce5f9ae92302e0d87c6.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/70eed4bbdd63ea47beb432b9a5580f87.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/85816e5c08c19d9716853fd321d62033.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0bdf89c9dda92361b5d8593cc6c7efdd.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d8df828b0499ab638241f42c50b4ddb6.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ffd4604630a16fc82d6885ddf73aa678.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b519b193e3cbb2b7d844a2af3e8d0119.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3ab2c34127f56d39bfac35a2bb3e37b2.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5a39160d0276c27416e1d55fe16f8d71.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/41b710ad68114f57b9d786081d36c74b.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/492e2ca90e94c9f08081d7a7819a8796.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/29ea32d16853c15fc3584fa9ec55f4a6.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/588c792796e4e9cfb038beac7b1a2205.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9a654f2ed1f968b350899e815595ffa7.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0af12a60416b57a0edda36b3a15e2e33.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2031dedf742e62423f72ee33685e1e7e.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/dad9d1660061c20a2f9331857373dc59.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a2097b54e4ee60f5ab4aefcc71a4fb06.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/15c5c9e62c0c2f5edffcba51c8d9453a.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/35b9e04f3967dc7fda571bad1e916d52.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/011f7c8a9d6a2b688a76b739245ecdd3.jpeg" + } + ] + }, + { + "name": "cakes", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/96e101029fa82cad3fba032e4d907874.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b18657ce8505fca699060de13b37ce03.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/26cec2e801132dd006e2eeb616e49488.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/af9edb791dc4e7e696c038a0b728ddb1.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3b508cc58811b2724545896cbfcd66ac.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a96d12131ce5b9d173c5aea321c8b673.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f8fc8c470a4d38611af80dda3b67af80.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a6126323a125eead9a7b87c6bf20a3e5.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4f690139a370c9372f4b59ae1317ed21.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3058121881c0bbe88ed9151907e08236.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d73a4cfb457dfa090a1e55457e6a02ea.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/22cb42c726a887bfd28b2d9a56ea72bb.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8a0c1d6dcc22729a3bad6dcbe88ca3de.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/44dcbec510b2b32f3bef48535aa4f35e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/bb404658207cba9b636245076d955009.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/256fe82058bfff15544c3b1e29daaabf.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ed6b488d0f6630515b90b336fbfc93a6.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2d489bb38c9e4254a2e577d9e51d0a02.jpeg" + } + ] + }, + { + "name": "abstract", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4bff588558b80ede14e99fdeeef127ad.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/043429d95275d9ac3b571751507632d1.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8c156a284f762e466be8c7a3469a1461.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/99eb62cdb5f7db79ede4e1aa2c12979f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/69903fe737df33067cc642d5a4f75fb3.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4ce21cbbb02bf8d98e37688c2a588e8e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7e73c464a7b8e9f2cffbb4d0eab7b853.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/89ef11e052582cf67c8e6c176dccc0af.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3c91baa017029ea7654388f9ca4fb132.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/42fc7091a4fb931f35d534f380230c25.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c5625601fbb5280e66edaf93601249b6.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d3c37c0c08b43967de7624692c61b2ba.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/274b0875b37f08fa52f1136fc63ce83d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/656831af2ce91d41df5dc4f331a4250f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/90435a57cd452e49ce063493c7994a57.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1dd3091afe56a8416a22e58d20898b59.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/243dcc839750c1472bfe3f12f7aa46a3.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f0f829b2f4456e03b823e2d74ef4a046.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e26ef60fd0b02bc93b722b657f9f3239.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a1a345e131831953e639758aaf8d6554.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/59318f224e30d7374e3d17b7d2bd860a.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/73e5e71634d275c080d598fe9e7b5108.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/008f8b051b01448f9953a6eec12dcc92.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4039008218129f463115f00b552568cd.jpeg" + } + ] + }, + { + "name": "amoled", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/13362a433eeb77a8fddc8c5a75291d57.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c7e353bebb4b98ecd4cd3d5311fcc84d.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3096f65b83a3a37f386c7da992856c75.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/333ab55bb6638bb28b2162eec57041f5.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f9d722b01b2933ed1753e727bb62ad9e.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0818bafa796b124c5c3539dc6991ce37.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/48e38483bba126b8310a88aacd7ef9e4.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/081636c9da2c2d4cc3c728988a990b34.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f934f0167eb4273df69238bf304f33d9.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/32cdefa9ed352a6c798761c4d74cae8e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7a94c6ddfdd2fcf1a818497e8a50670b.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f2a0a9de6f52cc20879785fc57c18305.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1e4dfbffc7865715d0fb9301605321ca.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7a9b83f8f8898506e5ee4ceab7711c9a.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4523c7f2f1609341dd2134a0c78c92c1.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/60d51242fb2d1382cd5ab761c190b115.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/11260788c3aa47f5581e00e6d5e59b54.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/803bb4c662d1f7199e4ec1d2fb6c67a6.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5f565659c3931f06e1b455147e62d786.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/76ac62587a180390bfc30e52ec356dad.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0733351cc13e3d1ca5881a8baf75825f.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b7c3d3de4707b972c2325c73e17fd9ff.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/35d70b9e34ca62853a545cd250020c38.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1a99a940a6ee0025f28a2d5f7cdb1055.jpeg" + } + ] + }, + { + "name": "vintage", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a4e335102bf1bd6e2b9a305afff7c9b0.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0d7fe05abaa5a041d26b3c0541533f88.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6ff06037f4d076b12755165b6a7d6193.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ef9f0d6e4b10a03dac177cbb523a604f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9d128c185ec7dad48edaa7c4cf7fb454.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4aec8547c98af34ebc57d67b493ac0d2.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5e94b6540e298b449f353ed3b87d8a3e.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/db1e866c16710fbc440508d4bcea17de.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/627cb249b3d7242137cce2d784b8910e.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/33ee8a5d07512b9b69b43f1dcd7cc399.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c3a53d3835e57f7d53ac9c6d6e7f5a20.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d167bab1cc3576e191cbb3d21e232545.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4c552903b0b3f24b99972ba3b5d0467f.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ffea8aee4ddcacb5c2c12b0714de0064.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7bd3651534505865768a41186fd43edb.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/47c2398a9bb3db21d576d175d630d7fe.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/aeae50ccc5706f393474377ec2b42ae9.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1b9c9b757cbdeb393123e1b75266cffe.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/82eb738f141e96d0e3e1884a70be1ca8.png", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ccc963d3b9f3300e2e56416315d32ab6.png" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/61f819aae816fa17d62d42d37682253d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/cc5d59a4a497ca7f11250323bb769238.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b5ab2d84b63b8c764948baccd1e0015b.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/feba604471df0dc5848111a2545a076b.jpeg" + } + ] + }, + { + "name": "cool", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/de36a2eae65bb24a433f22d2de2adf2f.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0d183f9e2cc4ad2626d58bf60ef423e6.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a20e94ca11bb25ebc503cceec6d0c5e7.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/88ecb69e2550ebf777a88abf01de1f2e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ddcf276287ac75721da30e8c24461c3c.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2ea3abfc5c9baa37f378ab1fdfab799f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/88f924da6824864c1156dd97bacf7c35.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ee5004db5978f9d7059dd3681cf99a56.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5391baec5bd947645769fdbcef1128ec.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/51d7ff7c4da20514db539948a4a6b504.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/baacd8f8dff00ec758cace5162849cda.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f639c30d0f8b49877f28b2856a12a6dd.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/216eb2ad5c7318059d059b6b284c6256.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/87b276d277f0a0801a7a73115b8f8339.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3769a8d85bf2a44b3e33a151fba6e7cd.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9d6172a42751e8e7ed4aa93d1d2b9ec3.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9cd4fe339962adbd585d58720d4de887.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a66eefb8551a921992f2bd0ed913019a.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c89a66f600f4d5e071307c3c3f22a3c4.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6d231ce5bfdbb27c3a9c8500c508dd42.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/46b2930bb250e6d7303ab228bd81bcf2.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/94516cde7ff28a78c5a62d4bf90b9384.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1f1a981b7ed89583b4cb33e71a871f7d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/57a7b96592ac4680e64c710ab2d217a6.jpeg" + } + ] + }, + { + "name": "variety", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3a5965c4291dba859c4b7f0b196f99c2.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/fe57f912ce3eedf20716b20335b92a7a.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7093c9ea05fbb9bb4fd8be87a8af041b.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2445c1787df6f1a51d19e26a3570e436.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/908c7860823095f08247c4158ba011aa.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e218f76794541caffa8027b733bf3676.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/fa731cf59f18302d6bdb189a26031119.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5274fcd6fc0ef50beeeaf0fb4e8e78ea.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/895b89bc421d1514df6dcbda0da4f4a6.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c80f7ba5ab767c7459ffa7a0c388aee8.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8b90aaaac8051a9320ea2b8fd07fe9cf.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/bba3c29c5ab6be1194cb507f0a94b5ab.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c279e2829627f782e339e009ca5b84a0.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a79227e004068089ca5045956aa2088d.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c195c51c3b96f33ac051f70d326e6f0c.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7c777e7505e8acb396b99d58a99c0983.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c3839e6ff72616b892bc5bcc10147978.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/cdcf780e77064eda1639bf7eb2112474.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e010bdec2284a4f87ba6c877bb5d6895.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/52edba408b78347b8d69643c757e3ba2.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/640d8efb9ce80054ac4f845f7475e502.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/75f60f1d9d20cd0ed1c3e0ba3e6dc99a.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/87e895e7a19b8199772d84b132b76ea3.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2f02ba03cefac28c9c789269e96aa7ea.jpeg" + } + ] + }, + { + "name": "funny", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1bd4c32c2eb2045a19c4cf7afb8201d4.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b2e70fdc63bcefd5846f136da3975f9c.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a6e1d83a81c9fb4b6d097e1043a6a4f5.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/be7eb4106be52e5b730e4bff290bae5e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b9750ff29195ca1dd4ef7ceb38d5b56b.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/73b3495c68855ea21391c277ef22e312.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/76cbdf98de9f34378403e6f17618f263.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/61a5f6c9f67c1f8d3bf4d9caffbed733.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/84f04ce55831a3eb890fb46025358ab1.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/aa8e48bd3c60698d0182478a1ea3047a.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1311486df5ef8bdacbf46ef0640d1f39.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3114deb49156e265456d5de847f29888.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/bb29f1548a8d91b3c8a2e082b7811b2b.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0e19eb84464f916efb6a2923aa59b670.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/00a4b802065bf46110b1f00b75d80c80.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0ac0ce978c0fdcea940ada487b2f1471.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8fbde61dfc1f2e4774692c3e61bb7a7c.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/53f171e7ee0e7034a9dc64f86d61ae8d.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9162aa7142cfaa0c071290a0bbd33332.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ca19cc252008b9b05c520622e518d180.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7ee58abfa954b1f994be248ff395748f.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/688d4d91e6e549cce42ebad2531554c5.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/906c48ba4f4c1cc38e6d09b1d62c5db4.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6a3f2a2e0d292e1032b448b7b2e70f80.jpeg" + } + ] + }, + { + "name": "food", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3a49c824f553e1b8f2ce743cb89e1b6c.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d04ee07feb44c02fcf92a7c3094370fb.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e179a42603816c94881758eb6cc90a0e.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/729bb3e1426112a67bc0d2dae72a93db.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/60ff000d48098f62835d1358952bf6e9.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/700c76c6e567389530c6fa0cf774da9a.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4fd7d9fcf1ab0b6411a49846692818fd.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0f26e2098bf875385374c2c55fd14d4f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5249da171aa91da5baae3721bfc822d1.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/69ae743f1d5a74e02fb7eb3ee9e8d057.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a1534580d5711ec78e7a683cc35b4e1f.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ec3e8179ff5302a0e0d375ecbcc8b7ea.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/74f39c37bf335669fcdd29ac89415d47.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/29362f69099ba10814b62117ff258b7d.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8cee4aab3b689ed2d443c94e9122ea92.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3e7c4dc9209bd160631e86a7a1a87286.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ce6ce9abe8f5b8c7618de82134d693c9.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5045c152e13740dd89eafd6ec274c27a.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/38ea2efbeb2c443a93e0131744153296.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d3e08c528e6161ad4d154298c873d1d4.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/67dbb27ea7084211565bc7b3b63bcf34.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/09d937e5c4ff029f12a2cf7dc6eb434e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ebdf88d758aba67587da3376314deb6d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/41e74000704cac41ee522c7a80ea0775.jpeg" + } + ] + }, + { + "name": "fashion", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f90e441b77b209c856bb2441ba11bac4.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d9fb7a20ef94b3c8379eeabd2f085211.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f0dd50d0798e263d823aba83273bba98.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5d75ca250acd762ca2d89eb1ed6cb487.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e56ed858a1161f4b9874b902e29eae37.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e0119cea3b136e70f4ccdd681ea0e223.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4972ade2f6db7be9bf95f7348cf03da4.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/cb81b09ab2e4bdf3750e4058c7b0af27.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b9f6670d29d24ba4762ebc372370f335.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/17fe24b464ddc35fea4ef9c025e6a69e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2cdfce4e3e9fe240526a6ad730f5d071.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e6221778a9c25540ef8f3382ee12807b.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a9d3c14f1e5740cc94e77b552e62df34.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/036cdc5d2cf39de637ebf9d44ef5bfd5.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b77e1f397318a4fd87ad6a4a3c6e4597.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f138506cebe6eb23bde3ecb370490b9c.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a85152d6da2f97f19e8af2681ceafb8e.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d3dd0ee3efd4f5eda92bf9e16552cfd2.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/aba4d5d2d042a1a4ce13186191259064.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a898aa764cb00904fcf931457f311c74.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/012d6514e4fbe9c4f8adb09c1c8217cf.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/20da7c9ff6bac4a0507730ab085d0276.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1e543ee1d00a131313c643d7829ae409.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/61d6607f1ef469f0e16f2e669c99f1c0.jpeg" + } + ] + }, + { + "name": "sad", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c59007c4e8b3befb96dbecb3ec326cc1.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3670282caa3a1b93913827c103476de4.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e7f63cd08f8423e5a5a3c61792b07edc.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/bdebd3e30c241102b934bb234ff4d92f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/42b952b7430e53357e45e6cb2979ac13.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d6490b20fc2cfb9ade732bb102d3cb51.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/fa62119a8e04bcebd9421f17b90aa59b.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0611515911379560822c9e6d9e787a64.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e405f89382e18a796bab87e814443eee.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4998f833da2e6a0293011b8f805f020e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/36abff7c2a2e9f4ed262dcee0da8c09b.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/592ca47d7613a9b1400c97a92eb703f2.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e92c7a3b497c7d8ce19d6199d31d9759.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/cd1f86273839039caa5e6f9f707a02fd.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b0458b2d5c5653ff80c91d54ae57b2e3.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0d3ad7ebeaf33889f3f6d8280c8a9afb.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4ffb3bd29fa36658369099394e167097.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/faf97d8da37fbfc15b1992cbb008aac0.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/83f0e93536f1784c59707c0a6ba3ed1f.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6bfbf1691de50e9fc73391e3ec396310.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/36e2cb743fc120c4a75dee03698d801e.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1716f146e51f29199c0f770148cc00cc.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/04c475032316832603bd1f38a2363cdf.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ea8afeb57997af979381e37d5e9be0c1.jpeg" + } + ] + }, + { + "name": "music", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d5f3a2230952dab694ff0a80825e0a9d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ba895bdb432d5ae1315777e89f07b2de.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4e00c5c27d654d387eb0404cb8575d73.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/5f678a5d03d3014bd1969644a5156510.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8964cb7c75335a8a90f6041956bc94ed.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/98083dfbb3738a921edbc63196563f5a.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7da01d53569bb1f729bc855dd8d14404.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8b2788065e441b40a9ccc1e2e41d4492.jpeg" + } + ] + }, + { + "name": "fruit", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e0f64bd789ef513368865c9f42adfaab.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/25defad4df6676943fee66672cd9c469.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e1ae912e5e0030affd65c583c4321998.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ff08fd34f805d05f9776ddb4fa2a7ad8.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ae98d28e4ac9824cfe0d671040d194d7.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b98cb3d2ade3616c2532bf9459bfaf99.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b12bd41dd726de691b16443ba3f06d82.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0017adb2d38e5f159bd0350f877ea3a0.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6540e511e91f0093f05b610409601be4.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/eb955cf15c609e5bb57e8ed662348c3c.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/bc03252924ae3a4c1cc794df936cd77d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0631abdeb23092407d411c8e0834c196.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6378ec9bd2d1e70396d9a44db7008d54.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/fe881a47d03c1cb53c5874ba6c94285f.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4ab4f8a6bb0a56dcc76e0e53b48b911b.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/25eb55daab8bd1f5c1b14446fe5be06a.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2781497ed0195127a47cc5b8b34668c3.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c0532f5abab55cc1610255df734a2a78.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/85e26ed88c6d18dce4872769e80796f7.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e09e0f24a54316d3344e42780300d614.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4aaef12d9c74531eb2ec62ab56bc37eb.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2482e85608716f9853f663082c75dedb.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2d8aaaca5f4caf78161030a0ca4274ed.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/dd17f7ab449f794a80401f3155fe6fae.jpeg" + } + ] + }, + { + "name": "doll", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8adbcdd5abe61cc2210d8d5bdc7343e8.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/cf99a915f6e25f8a84edb0297ae5d5a7.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e2ed2dbcfab07dca994c5cf3217e7f8c.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ddb711992c372d50034b82a6f0f067d2.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/fffa33301cb2db2b3ab7eccc676daeed.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9e11895bab250df96dcb5e7fa474958b.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/09b0f2f877b920d9c1501c9ef7c495b3.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f1072c137a3fc430e727e32669328682.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/24cab25985e1436c0670dbed297f81ac.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4decc3c640f58b7c32032c5ed0645efd.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/82b784b2233efc41d3bb8810e7e0e4ea.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c92e3bf720cba63a6a79a35284e36503.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7b528247d7100c4cb519449649061ce2.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f6301e84a178fbb9c14cd845ae792f80.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4f8040373d107d763be6b12e919238ba.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2fa9a6ccb3d4da84a33ea7b94a483383.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/fc5e2c714ad8aa63e481ca7f0cb37ab8.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0bbb81043954c46c29b18997cb639d91.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/297b9e0dc7de746b8672a98e82b1699e.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3f04dfa84f0540398ad67207049cfb86.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a4337c6bc9797cb0faa5a1730ff74b99.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/58a3b4f474808498b686513246f4e3f1.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/80113c33ebc64ecba64ef7cca29c2f42.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/38c41e972460a95a86dc04c91623b41e.jpeg" + } + ] + }, + { + "name": "teddy", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/03b962f4e3ff5cc220544c6589a49482.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0cd0f61b1feaaca0be9d35baecfa9fb3.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/880e2d05ba1385f2de52f7a92719c557.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/de1ef1d5e10ff0d4039dacb557a21406.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/687a9886a5007d029012ac65afc54b6c.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f4d9a30b2f2b2a4cf0c831dff44fd3a8.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/01ce70893e7947731369ef22ff20a9ab.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9d824cc7622e39e0eb9b44ae9514c8db.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0a294e1fe43d84eb8b4b3663dc1c06f7.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e5a191f3207eb6276f01845a68a4f47c.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/498b2956356743dd61bcf43c5e2bdfe5.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/44f01787f33c354865ef2e0235a52bb7.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8739a1033149540124a0c9bf2dca71b2.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/dd3608457a2915a29de559f59927babc.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/30448f7b2fe2bcdf037fc3d1fc971751.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/998df3180fbf701806e8fcdff50880fc.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2db8de8bbe2acc13e0f7b7452a31833d.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/465ed2353065dbc9098bf64823262a1e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8ed6ea3550e3d3d7adca4328f506381b.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/93ecd796e16f464e869745f440f7839c.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/00512009f5e53b7ffac175a4b7b0618c.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4cce389659d496e6ab2fd1f466ce3e76.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/480c91421eda56398ed556d28272114a.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/24e0c9ac9ff4583da5e351d5cd1b0daf.jpeg" + } + ] + }, + { + "name": "winter", + "list": [ + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/028622eed6c6083a721b5c6af19053d1.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8497b431b92946723d7acbd1c9836bde.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1eec46be4f654c35ed397b2568bbf410.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1d07ac78611b1db85b8826c9967574d1.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d916afda03ba32585ffe6d7f897fd661.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d766b69fd8c55aaaec08b1ca02c2c17d.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9a6134a89dfac42a68926d4e3d9c70b2.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/48cd11897f62379515372db56a6a7762.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1da4fbbe758c19cb206595e393394c1c.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d30a0ccf42310927ad69b5a5c20cdf93.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/bdd777b683f7ea3a509266f857f97785.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ea5ec14e13fa770ae4b8168dd16fc0ea.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/992dceec08dde4d52738bd31845a49f4.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e4c6d7987095324dbc8c09eab7e5951a.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2716b330d331e70f2bd680346657d613.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b24128631722adf1254656b55e7ac00e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2add050d3ae6eb6554c32249b3827201.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/29578210653139b4c79e1b52588c36e1.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/07f63ca35a1b68cbfbc1e4c7515fb3ce.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ff4bb7c4731acbe4272428b962328b4e.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/81624255e2178f2dcd5c337ed49ce491.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7a747ec73145e5c3e55d8c3725db8640.jpeg" + }, + { + "sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/95cd62290787005d255eb4bdd832f4b0.jpeg", + "preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/312c2c3b0f4d9c1f15a0ba27b8554a39.jpeg" + } + ] + } +] \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/MyApp.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/MyApp.kt new file mode 100644 index 0000000..5530234 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/MyApp.kt @@ -0,0 +1,126 @@ +package com.cute.girl.hd.pink.img.wallpaper + +import android.app.Application +import android.content.Intent +import androidx.localbroadcastmanager.content.LocalBroadcastManager +import com.applovin.sdk.AppLovinMediationProvider +import com.applovin.sdk.AppLovinSdk +import com.applovin.sdk.AppLovinSdkInitializationConfiguration +import com.cute.girl.hd.pink.img.wallpaper.entity.CategoryData +import com.cute.girl.hd.pink.img.wallpaper.entity.Data +import com.liulishuo.filedownloader.FileDownloader +import org.json.JSONArray +import java.io.BufferedReader +import java.io.ByteArrayOutputStream +import java.io.File +import java.io.FileInputStream +import java.io.FileOutputStream +import java.io.InputStream +import java.io.InputStreamReader +import java.io.StringWriter +import java.nio.charset.StandardCharsets + +class MyApp : Application() { + companion object { + lateinit var app: MyApp + lateinit var myData: List + + const val MAX_SDK = "3cUMfTcsZKzlJevxK4IkNysgDAeQA4B5w332p3g8B9ZAgC54WQNZLVxuxnCx4sCHA5StLJnDTAFa68mFTi8rd8" + const val AD_INIT_ACTION = "on_success_action" + var initSDK = false + } + + override fun onCreate() { + super.onCreate() + app = this + initSDK() + FileDownloader.setup(this) + readJson() + } + + private fun readJson() { + val openFd = assets.open("test_new.json") + val pathDe = cacheDir.path + "/res.json" + if (File(pathDe).exists()) { + myData = fileToData(pathDe) + return + } + if (writeFile(openFd, pathDe)) { + myData = fileToData(pathDe) + } + + + } + + private fun fileToData(path: String): List { + val jsonStr = getJsonStr(path) + var data = mutableListOf() + val array = JSONArray(jsonStr) + for (i in 0 until array.length()) { + val any = array.getJSONObject(i) + val title = any.getString("name") + val jsonArray = any.getJSONArray("list") + var data1 = mutableListOf() + for (k in 0 until jsonArray.length()) { + val jsonObject = jsonArray.getJSONObject(k) + val source = jsonObject.getString("sourceUrl") + val preview = jsonObject.getString("preUrl") + data1.add(Data(preview, source)) + } + data.add(CategoryData(title, data1)) + } + + return data + } + + + fun writeFile(input: InputStream, filePath: String): Boolean { + + val byte = ByteArray(4096) + val output = ByteArrayOutputStream() + var l: Int + while (input.read(byte).also { l = it } != -1) { + output.write(byte, 0, l) + } + val fileDe = File(filePath) + if (!fileDe.exists()) { + fileDe.createNewFile() + } + val fileOutputStream = FileOutputStream(filePath) + + fileOutputStream.write(output.toByteArray()) + output.close() + fileOutputStream.close() + return true + + } + + fun getJsonStr(resPath: String): String { + val stringWriter = StringWriter() + val input = FileInputStream(resPath) + val charArray = CharArray(input.available()) + var l = 0; + val bufReader = BufferedReader(InputStreamReader(input, StandardCharsets.UTF_8)) + while (bufReader.read(charArray).also { + l = it + } != -1) { + stringWriter.write(charArray, 0, l) + } + return stringWriter.toString() + + } + + + private fun initSDK() { + val initConfig = + AppLovinSdkInitializationConfiguration.builder(MAX_SDK, this) + .setMediationProvider(AppLovinMediationProvider.MAX) + .build() + AppLovinSdk.getInstance(this).initialize(initConfig) { + initSDK = true + LocalBroadcastManager.getInstance(this).sendBroadcast(Intent(AD_INIT_ACTION)) + } + AppLovinSdk.getInstance(this).settings.setVerboseLogging(true) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/adapter/CategoryAdapter.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/adapter/CategoryAdapter.kt new file mode 100644 index 0000000..0e200f4 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/adapter/CategoryAdapter.kt @@ -0,0 +1,98 @@ +package com.cute.girl.hd.pink.img.wallpaper.adapter + +import android.content.Context +import android.graphics.drawable.Drawable +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.bumptech.glide.load.DataSource +import com.bumptech.glide.load.engine.GlideException +import com.bumptech.glide.request.target.Target +import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions +import com.bumptech.glide.request.RequestListener +import com.cute.girl.hd.pink.img.wallpaper.databinding.ItemCategoryBinding +import com.cute.girl.hd.pink.img.wallpaper.entity.CategoryData +import com.cute.girl.hd.pink.img.wallpaper.entity.GCategory +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.hide +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.show + +class CategoryAdapter(private val ctx: Context, private val list: List) : + RecyclerView.Adapter() { + + private var mListener: OnItemClickListener? = null + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH { + return VH(ItemCategoryBinding.inflate(LayoutInflater.from(ctx), parent, false)) + } + + override fun onBindViewHolder(holder: VH, position: Int) { + if (list.isEmpty()) { + return + } + if (position >= list.size) { + return + } + val bean = list[position] + holder.getRoot()?.let { + it.setOnClickListener { mListener?.onItemClick(bean) } + } + + holder.mItemBinding?.tvTitle?.text = bean.title + holder.mItemBinding?.ivPlaceholder?.show() + holder.mItemBinding?.ivWallpaper?.let { + Glide.with(ctx) + .load(bean.data[0].previewURl) + .transition(DrawableTransitionOptions.withCrossFade()) + .listener(object : RequestListener { + override fun onLoadFailed( + e: GlideException?, + model: Any?, + target: Target?, + isFirstResource: Boolean + ): Boolean { + holder.mItemBinding?.ivPlaceholder?.show() + return false + } + + override fun onResourceReady( + resource: Drawable?, + model: Any?, + target: Target?, + dataSource: DataSource?, + isFirstResource: Boolean + ): Boolean { + holder.mItemBinding?.ivPlaceholder?.hide() + return false + } + }) + .into(it) + } + } + + override fun getItemCount(): Int { + return list.size + } + + fun setOnItemClickListener(listener: OnItemClickListener) { + mListener = listener + } + + interface OnItemClickListener { + fun onItemClick(categoryData: CategoryData) + } + + class VH(itemView: View) : RecyclerView.ViewHolder(itemView) { + + var mItemBinding: ItemCategoryBinding? = null + + constructor(binding: ItemCategoryBinding) : this(binding.root) { + this.mItemBinding = binding + } + + fun getRoot(): View? { + return mItemBinding?.root + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/adapter/CategoryDetailAdapter.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/adapter/CategoryDetailAdapter.kt new file mode 100644 index 0000000..1f09ad4 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/adapter/CategoryDetailAdapter.kt @@ -0,0 +1,108 @@ +package com.cute.girl.hd.pink.img.wallpaper.adapter + +import android.content.Context +import android.graphics.drawable.Drawable +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.bumptech.glide.load.DataSource +import com.bumptech.glide.load.engine.GlideException +import com.bumptech.glide.request.target.Target +import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions +import com.bumptech.glide.request.RequestListener +import com.cute.girl.hd.pink.img.wallpaper.databinding.ItemImageBinding +import com.cute.girl.hd.pink.img.wallpaper.entity.Data +import com.cute.girl.hd.pink.img.wallpaper.entity.GCategoryDetail +import com.cute.girl.hd.pink.img.wallpaper.utils.DeviceUtil +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.dp2PxInt +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.hide +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.show + +class CategoryDetailAdapter(private val ctx: Context, private val list: List) : + RecyclerView.Adapter() { + + private var mListener: OnItemClickListener? = null + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH { + return VH(ItemImageBinding.inflate(LayoutInflater.from(ctx), parent, false)) + } + + override fun onBindViewHolder(holder: VH, position: Int) { + if (list.isEmpty()) { + return + } + if (position >= list.size) { + return + } + val bean = list[position] + holder.getRoot()?.let { + it.setOnClickListener { mListener?.onItemClick(bean) } + val params = it.layoutParams + val itemWidth = (DeviceUtil.getScreenWidth(ctx) - 8.dp2PxInt()) / 3f + params.width = itemWidth.toInt() + val itemHeight = + ((itemWidth * DeviceUtil.getScreenHeight(ctx) / DeviceUtil.getScreenWidth( + ctx + ) * 1f)).toInt() + params.height = itemHeight + it.layoutParams = params + } + + holder.mItemBinding?.ivPlaceholder?.show() + holder.mItemBinding?.ivWallpaper?.let { + Glide.with(ctx) + .load(bean.previewURl) + .transition(DrawableTransitionOptions.withCrossFade()) + .listener(object : RequestListener { + override fun onLoadFailed( + e: GlideException?, + model: Any?, + target: Target?, + isFirstResource: Boolean + ): Boolean { + holder.mItemBinding?.ivPlaceholder?.show() + return false + } + + override fun onResourceReady( + resource: Drawable?, + model: Any?, + target: Target?, + dataSource: DataSource?, + isFirstResource: Boolean + ): Boolean { + holder.mItemBinding?.ivPlaceholder?.hide() + return false + } + }) + .into(it) + } + } + + override fun getItemCount(): Int { + return list.size + } + + fun setOnItemClickListener(listener: OnItemClickListener) { + mListener = listener + } + + interface OnItemClickListener { + fun onItemClick(pos: Data) + } + + class VH(itemView: View) : RecyclerView.ViewHolder(itemView) { + + var mItemBinding: ItemImageBinding? = null + + constructor(binding: ItemImageBinding) : this(binding.root) { + this.mItemBinding = binding + } + + fun getRoot(): View? { + return mItemBinding?.root + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/adapter/CategoryPagerAdapter.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/adapter/CategoryPagerAdapter.kt new file mode 100644 index 0000000..6cf39b1 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/adapter/CategoryPagerAdapter.kt @@ -0,0 +1,107 @@ +package com.cute.girl.hd.pink.img.wallpaper.adapter + +import android.content.Context +import android.graphics.drawable.Drawable +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.bumptech.glide.load.DataSource +import com.bumptech.glide.load.engine.GlideException +import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions +import com.bumptech.glide.request.RequestListener +import com.bumptech.glide.request.target.Target +import com.cute.girl.hd.pink.img.wallpaper.databinding.ItemPreviewBinding +import com.cute.girl.hd.pink.img.wallpaper.entity.Data +import com.cute.girl.hd.pink.img.wallpaper.entity.GCategoryDetail +import com.cute.girl.hd.pink.img.wallpaper.utils.DownloadUtil +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.hide +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.show + +class CategoryPagerAdapter(private val ctx: Context, private val list: MutableList) : + RecyclerView.Adapter() { + + private var mListener: OnItemClickListener? = null + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH { + return VH(ItemPreviewBinding.inflate(LayoutInflater.from(ctx), parent, false)) + } + + override fun onBindViewHolder(holder: VH, position: Int) { + if (list.isEmpty()) { + return + } + if (position >= list.size) { + return + } + val bean = list[position] + holder.mItemBinding?.ivPlaceholder?.show() + + + val url = if (DownloadUtil.isExist(bean.sourceURl, bean.getTag())) { + DownloadUtil.getFilePath(bean.sourceURl, bean.getTag()) + } else { + bean.previewURl + } + +// val url =bean.previewURl + + holder.mItemBinding?.ivWallpaper?.let { + Glide.with(ctx) + .load(url) + .transition(DrawableTransitionOptions.withCrossFade()) + .listener(object : RequestListener { + override fun onLoadFailed( + e: GlideException?, + model: Any?, + target: Target?, + isFirstResource: Boolean + ): Boolean { + holder.mItemBinding?.ivPlaceholder?.show() + return false + } + + override fun onResourceReady( + resource: Drawable?, + model: Any?, + target: Target?, + dataSource: DataSource?, + isFirstResource: Boolean + ): Boolean { + holder.mItemBinding?.ivPlaceholder?.hide() + return false + } + }) + .into(it) + } + holder.getRoot()?.let { + it.setOnClickListener { mListener?.onItemClick(position) } + } + } + + override fun getItemCount(): Int { + return list.size + } + + fun setOnItemClickListener(listener: OnItemClickListener) { + mListener = listener + } + + interface OnItemClickListener { + fun onItemClick(pos: Int) + } + + class VH(itemView: View) : RecyclerView.ViewHolder(itemView) { + + var mItemBinding: ItemPreviewBinding? = null + + constructor(binding: ItemPreviewBinding) : this(binding.root) { + this.mItemBinding = binding + } + + fun getRoot(): View? { + return mItemBinding?.root + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/adapter/ImageGridAdapter.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/adapter/ImageGridAdapter.kt new file mode 100644 index 0000000..1dcaa5f --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/adapter/ImageGridAdapter.kt @@ -0,0 +1,114 @@ +package com.cute.girl.hd.pink.img.wallpaper.adapter + +import android.content.Context +import android.graphics.drawable.Drawable +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.bumptech.glide.load.DataSource +import com.bumptech.glide.load.engine.GlideException +import com.bumptech.glide.request.target.Target +import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions +import com.bumptech.glide.request.RequestListener +import com.cute.girl.hd.pink.img.wallpaper.databinding.ItemImageBinding +import com.cute.girl.hd.pink.img.wallpaper.entity.CategoryData +import com.cute.girl.hd.pink.img.wallpaper.entity.Data +import com.cute.girl.hd.pink.img.wallpaper.entity.GImage +import com.cute.girl.hd.pink.img.wallpaper.utils.DeviceUtil +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.dp2PxInt +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.hide +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.show + +class ImageGridAdapter(private val ctx: Context, private var list: List) : + RecyclerView.Adapter() { + + private var mListener: OnItemClickListener? = null + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH { + return VH(ItemImageBinding.inflate(LayoutInflater.from(ctx), parent, false)) + } + + fun refresh(data: List) { + list = data + notifyDataSetChanged() + } + + override fun onBindViewHolder(holder: VH, position: Int) { + if (list.isEmpty()) { + return + } + if (position >= list.size) { + return + } + val bean = list[position] + holder.getRoot()?.let { + it.setOnClickListener { mListener?.onItemClick(bean) } + val params = it.layoutParams + val itemWidth = (DeviceUtil.getScreenWidth(ctx) - 8.dp2PxInt()) / 3f + params.width = itemWidth.toInt() + val itemHeight = + ((itemWidth * DeviceUtil.getScreenHeight(ctx) / DeviceUtil.getScreenWidth( + ctx + ) * 1f)).toInt() + params.height = itemHeight + it.layoutParams = params + } + + holder.mItemBinding?.ivPlaceholder?.show() + holder.mItemBinding?.ivWallpaper?.let { + Glide.with(ctx) + .load(bean.previewURl) + .transition(DrawableTransitionOptions.withCrossFade()) + .listener(object : RequestListener { + override fun onLoadFailed( + e: GlideException?, + model: Any?, + target: Target?, + isFirstResource: Boolean + ): Boolean { + holder.mItemBinding?.ivPlaceholder?.show() + return false + } + + override fun onResourceReady( + resource: Drawable?, + model: Any?, + target: Target?, + dataSource: DataSource?, + isFirstResource: Boolean + ): Boolean { + holder.mItemBinding?.ivPlaceholder?.hide() + return false + } + }) + .into(it) + } + } + + override fun getItemCount(): Int { + return list.size + } + + fun setOnItemClickListener(listener: OnItemClickListener) { + mListener = listener + } + + interface OnItemClickListener { + fun onItemClick(posData: Data) + } + + class VH(itemView: View) : RecyclerView.ViewHolder(itemView) { + + var mItemBinding: ItemImageBinding? = null + + constructor(binding: ItemImageBinding) : this(binding.root) { + this.mItemBinding = binding + } + + fun getRoot(): View? { + return mItemBinding?.root + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/adapter/ImagePagerAdapter.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/adapter/ImagePagerAdapter.kt new file mode 100644 index 0000000..ddbe179 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/adapter/ImagePagerAdapter.kt @@ -0,0 +1,106 @@ +package com.cute.girl.hd.pink.img.wallpaper.adapter + +import android.content.Context +import android.graphics.drawable.Drawable +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.bumptech.glide.load.DataSource +import com.bumptech.glide.load.engine.GlideException +import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions +import com.bumptech.glide.request.RequestListener +import com.bumptech.glide.request.target.Target +import com.cute.girl.hd.pink.img.wallpaper.databinding.ItemPreviewBinding +import com.cute.girl.hd.pink.img.wallpaper.entity.Data +import com.cute.girl.hd.pink.img.wallpaper.entity.GImage +import com.cute.girl.hd.pink.img.wallpaper.utils.DownloadUtil +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.hide +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.show + +class ImagePagerAdapter(private val ctx: Context, private val list: MutableList) : + RecyclerView.Adapter() { + + private var mListener: OnItemClickListener? = null + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH { + return VH(ItemPreviewBinding.inflate(LayoutInflater.from(ctx), parent, false)) + } + + override fun onBindViewHolder(holder: VH, position: Int) { + if (list.isEmpty()) { + return + } + if (position >= list.size) { + return + } + val bean = list[position] + holder.mItemBinding?.ivPlaceholder?.show() + + + val url = if (DownloadUtil.isExist(bean.sourceURl, bean.getTag())) { + DownloadUtil.getFilePath(bean.sourceURl, bean.getTag()) + } else { + bean.previewURl + } + + + holder.mItemBinding?.ivWallpaper?.let { + Glide.with(ctx) + .load(url) + .transition(DrawableTransitionOptions.withCrossFade()) + .listener(object : RequestListener { + override fun onLoadFailed( + e: GlideException?, + model: Any?, + target: Target?, + isFirstResource: Boolean + ): Boolean { + holder.mItemBinding?.ivPlaceholder?.show() + return false + } + + override fun onResourceReady( + resource: Drawable?, + model: Any?, + target: Target?, + dataSource: DataSource?, + isFirstResource: Boolean + ): Boolean { + holder.mItemBinding?.ivPlaceholder?.hide() + return false + } + }) + .into(it) + } + holder.getRoot()?.let { + it.setOnClickListener { mListener?.onItemClick(position) } + } + } + + override fun getItemCount(): Int { + return list.size + } + + fun setOnItemClickListener(listener: OnItemClickListener) { + mListener = listener + } + + interface OnItemClickListener { + fun onItemClick(pos: Int) + } + + class VH(itemView: View) : RecyclerView.ViewHolder(itemView) { + + var mItemBinding: ItemPreviewBinding? = null + + constructor(binding: ItemPreviewBinding) : this(binding.root) { + this.mItemBinding = binding + } + + fun getRoot(): View? { + return mItemBinding?.root + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/CategoryData.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/CategoryData.kt new file mode 100644 index 0000000..8f1c0f9 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/CategoryData.kt @@ -0,0 +1,5 @@ +package com.cute.girl.hd.pink.img.wallpaper.entity + +import java.io.Serializable + +class CategoryData(var title:String,var data:List):Serializable \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/CategoryPreviewBean.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/CategoryPreviewBean.kt new file mode 100644 index 0000000..8d493e0 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/CategoryPreviewBean.kt @@ -0,0 +1,7 @@ +package com.cute.girl.hd.pink.img.wallpaper.entity + +import java.io.Serializable + +class CategoryPreviewBean : Serializable { + var list: MutableList = mutableListOf() +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/Data.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/Data.kt new file mode 100644 index 0000000..d8fc56c --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/Data.kt @@ -0,0 +1,22 @@ +package com.cute.girl.hd.pink.img.wallpaper.entity + +import android.util.Log +import java.io.Serializable + +class Data(var previewURl: String, var sourceURl: String) : Serializable { + + fun getTag(): String { + val lastIndex1 = sourceURl.lastIndexOf("/") + + val lastIndex2 = sourceURl.lastIndexOf(".") + + val substring = sourceURl.substring(lastIndex1, lastIndex2) + Log.d("-----------","----------$substring") + + return substring + + } + + + +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/GCategory.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/GCategory.kt new file mode 100644 index 0000000..27cdb77 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/GCategory.kt @@ -0,0 +1,19 @@ +package com.cute.girl.hd.pink.img.wallpaper.entity + +import com.cute.girl.hd.pink.img.wallpaper.utils.des.DES +import java.io.Serializable + +class GCategory( + val cid: String, + val category_name: String, + val category_image: String, + val order_no: String +) : Serializable { + fun getPreviewUrl(): String { + return "http://${DES.decrypt("J ¯ñ\u001C\u008C\u0084Ûü\u0005nÖS\u000F\u0098\u001DD ¾;>ÅEðÃIH\u0096ð{Rl·4Æß&ÿ¦Vú#\u001EÅ/\u0082`;")}$category_image" + } + + fun getTag(): String { + return "$cid" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/GCategoryDetail.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/GCategoryDetail.kt new file mode 100644 index 0000000..a8c8ad5 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/GCategoryDetail.kt @@ -0,0 +1,23 @@ +package com.cute.girl.hd.pink.img.wallpaper.entity + +import com.cute.girl.hd.pink.img.wallpaper.utils.des.DES +import java.io.Serializable + +class GCategoryDetail( + val cid: String, + val images: String, + val is_premium: String, + val cat_name: String +) : Serializable { + fun getPreviewUrl(): String { + return "http://${DES.decrypt("J ¯ñ\u001C\u008C\u0084Ûü\u0005nÖS\u000F\u0098\u001DD ¾;>ÅEðÃIH\u0096ð{Rlþ\u0002£\"uJE\u001EPÒÀÁËz`\u0018")}$images" + } + + fun getSUrl(): String { + return "http://${DES.decrypt("J ¯ñ\u001C\u008C\u0084Ûü\u0005nÖS\u000F\u0098\u001DD ¾;>ÅEðÃIH\u0096ð{Rl\u0089i²aÙc\u001CA")}$images" + } + + fun getTag(): String { + return "" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/GImage.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/GImage.kt new file mode 100644 index 0000000..0a8011e --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/GImage.kt @@ -0,0 +1,45 @@ +package com.cute.girl.hd.pink.img.wallpaper.entity + +import com.cute.girl.hd.pink.img.wallpaper.utils.des.DES +import java.io.Serializable + +/** + * + * "cid": "30", + * "category_name": "puppies", + * "category_image": "3873-2017-11-18.jpg", + * "order_no": "20", + * "id": "7322", + * "cat_id": "30", + * "color_id": "0", + * "image_date": null, + * "image": "681581_1691845871.jpeg", + * "is_popular": "0", + * "is_featured": "0", + * "is_premium": "0" + */ +class GImage( + val cid: String, + val category_name: String, + val category_image: String, + val order_no: String, + val id: String, + val cat_id: String, + val color_id: String, + val image: String, + val is_popular: String, + val is_featured: String, + val is_premium: String, +) : Serializable { + fun getPreviewUrl(): String { + return "http://${DES.decrypt("J ¯ñ\u001C\u008C\u0084Ûü\u0005nÖS\u000F\u0098\u001DD ¾;>ÅEðÃIH\u0096ð{Rlþ\u0002£\"uJE\u001EPÒÀÁËz`\u0018")}$image" + } + +// fun sourceURl: String { +// return "http://${DES.decrypt("J ¯ñ\u001C\u008C\u0084Ûü\u0005nÖS\u000F\u0098\u001DD ¾;>ÅEðÃIH\u0096ð{Rl\u0089i²aÙc\u001CA")}$image" +// } + + fun getTag(): String { + return "$id" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/IntentConstants.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/IntentConstants.kt new file mode 100644 index 0000000..b34e1e2 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/IntentConstants.kt @@ -0,0 +1,12 @@ +package com.cute.girl.hd.pink.img.wallpaper.entity + +object IntentConstants { + const val KEY_STRING = "key_string" + const val KEY_STRING2 = "key_string2" + const val KEY_BOOLEAN = "key_boolean" + const val KEY_LIST = "key_list" + const val KEY_POS = "key_pos" + const val KEY_FROM = "key_from" + const val KEY_BEAN = "key_bean" + +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/PreviewBean.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/PreviewBean.kt new file mode 100644 index 0000000..54eb00c --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/entity/PreviewBean.kt @@ -0,0 +1,7 @@ +package com.cute.girl.hd.pink.img.wallpaper.entity + +import java.io.Serializable + +class PreviewBean : Serializable { + var list: MutableList = mutableListOf() +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/mymax/MaxCallBack.java b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/mymax/MaxCallBack.java new file mode 100644 index 0000000..100616b --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/mymax/MaxCallBack.java @@ -0,0 +1,8 @@ +package com.cute.girl.hd.pink.img.wallpaper.mymax; + +import com.applovin.mediation.MaxAd; + +public interface MaxCallBack { + void onShowFail(MaxAd ad); + void onAdHidden( ); +} diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/mymax/MaxUtils.java b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/mymax/MaxUtils.java new file mode 100644 index 0000000..3076a8d --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/mymax/MaxUtils.java @@ -0,0 +1,92 @@ +package com.cute.girl.hd.pink.img.wallpaper.mymax; + +import android.util.Log; + +import androidx.annotation.NonNull; + +import com.applovin.mediation.MaxAd; +import com.applovin.mediation.MaxAdListener; +import com.applovin.mediation.MaxError; +import com.applovin.mediation.ads.MaxInterstitialAd; +import com.cute.girl.hd.pink.img.wallpaper.MyApp; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class MaxUtils { + + private static final String one_AD = "3580a29f73375939"; + private static final String two_Ad = "255b8d8daf7ef9d9"; + private static final String three_ad = "fe989ddbb91ecdf6"; + + private static ArrayList adArrayList; + + public static MaxInterstitialAd onCache(List list) { + Collections.shuffle(list); + for (MaxInterstitialAd ad : list) { + if (ad.isReady()) { + return ad; + } + } + return null; + } + public static List getAllAd() { + if(adArrayList == null){ + Log.d("-----","--------getAllAd"); + adArrayList = new ArrayList<>(); + MaxInterstitialAd AdT = new MaxInterstitialAd(two_Ad, MyApp.app); + MaxInterstitialAd AdOne = new MaxInterstitialAd(one_AD, MyApp.app); + MaxInterstitialAd AdThree = new MaxInterstitialAd(three_ad, MyApp.app); + AdOne.loadAd(); + AdT.loadAd(); + AdThree.loadAd(); + adArrayList.add(AdOne); + adArrayList.add(AdT); + adArrayList.add(AdThree); + } + for(MaxInterstitialAd ad:adArrayList){ + if(!ad.isReady()){ + Log.d("-----","--------loadAd="+ad.getAdUnitId()); + ad.loadAd(); + } + } + return adArrayList; + } + public static void setMAXCAllBack(MaxInterstitialAd ad, MaxCallBack maxCallBack) { + ad.setListener(new MaxAdListener() { + @Override + public void onAdLoaded(@NonNull MaxAd maxAd) { + + } + + @Override + public void onAdDisplayed(@NonNull MaxAd maxAd) { + } + + @Override + public void onAdHidden(@NonNull MaxAd maxAd) { + maxCallBack.onAdHidden(); + } + + @Override + public void onAdClicked(@NonNull MaxAd maxAd) { + + } + + @Override + public void onAdLoadFailed(@NonNull String s, @NonNull MaxError maxError) { + + } + + @Override + public void onAdDisplayFailed(@NonNull MaxAd maxAd, @NonNull MaxError maxError) { + maxCallBack.onShowFail(maxAd); + } + }); + + } + + + +} diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryAbility.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryAbility.kt new file mode 100644 index 0000000..2ee87c5 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryAbility.kt @@ -0,0 +1,216 @@ +package com.cute.girl.hd.pink.img.wallpaper.page + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import android.text.TextUtils +import androidx.appcompat.app.AppCompatActivity +import androidx.recyclerview.widget.GridLayoutManager +import com.cute.girl.hd.pink.img.wallpaper.adapter.CategoryDetailAdapter +import com.cute.girl.hd.pink.img.wallpaper.databinding.AbilityCategoryBinding +import com.cute.girl.hd.pink.img.wallpaper.entity.CategoryData +import com.cute.girl.hd.pink.img.wallpaper.entity.CategoryPreviewBean +import com.cute.girl.hd.pink.img.wallpaper.entity.Data +import com.cute.girl.hd.pink.img.wallpaper.entity.GCategoryDetail +import com.cute.girl.hd.pink.img.wallpaper.entity.IntentConstants +//import com.cute.girl.hd.pink.img.wallpaper.net.base.BaseListener +//import com.cute.girl.hd.pink.img.wallpaper.net.base.ServiceImage +//import com.cute.girl.hd.pink.img.wallpaper.net.response.ResponseCategoryDetail +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.hide +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.onMain +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.show +import com.cute.girl.hd.pink.img.wallpaper.view.CustomItemDecoration +import java.util.concurrent.atomic.AtomicBoolean + +class CategoryAbility : AppCompatActivity() { + private lateinit var binding: AbilityCategoryBinding + private var mList: MutableList = mutableListOf() + private var mAdapter: CategoryDetailAdapter? = null +// private var mService: ServiceImage? = null + private var isLoading = AtomicBoolean(false) + private var mPage = 1 + private lateinit var mCid :CategoryData + private var mCName = "" + + companion object { + fun start(context: Context, categoryData: CategoryData) { + val intent = Intent(context, CategoryAbility::class.java) + intent.putExtra(IntentConstants.KEY_STRING, categoryData) +// intent.putExtra(IntentConstants.KEY_STRING2, cName) + context.startActivity(intent) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = AbilityCategoryBinding.inflate(layoutInflater) + setContentView(binding.root) + setupViews() + binding.ivBack.setOnClickListener { + finish() + } + } + + private fun setupViews() { + if (intent.hasExtra(IntentConstants.KEY_STRING)) { + if (intent.getSerializableExtra(IntentConstants.KEY_STRING) != null) { + mCid = intent.getSerializableExtra(IntentConstants.KEY_STRING) as CategoryData + } + } +// if (intent.hasExtra(IntentConstants.KEY_STRING2)) { +// if (intent.getStringExtra(IntentConstants.KEY_STRING2) != null) { +// mCName = intent.getStringExtra(IntentConstants.KEY_STRING2)!! +// } +// } +// if (TextUtils.isEmpty(mCid)) { +// finish() +// return +// } + + binding.tvTitle.text = mCid.title + mAdapter = CategoryDetailAdapter(this, mCid.data) + mAdapter?.setOnItemClickListener(object : + CategoryDetailAdapter.OnItemClickListener { + override fun onItemClick(pos: Data) { + + toPreview(pos) + } + }) + binding.rv.layoutManager = GridLayoutManager(this, 3) + binding.rv.addItemDecoration( + CustomItemDecoration(1, 2) + ) + binding.rv.adapter = mAdapter!! + +// //下拉刷新 +// binding.refreshLayout.setOnRefreshListener { +// if (isLoading.get()) { +// return@setOnRefreshListener +// } +// refresh() +// } +// +// //上拉加载 +// binding.refreshLayout.setOnLoadMoreListener { +// if (isLoading.get()) { +// return@setOnLoadMoreListener +// } +//// loadMore() +// } + + refresh() + } + private fun refresh(){ + + } +// private fun refresh() { +// if (mService == null) { +// mService = ServiceImage() +// } +// if (isLoading.get()) { +// return +// } +// isLoading.set(true) +// mPage = 1 +// mService?.let { service -> +// val call = service.mApi.getImageByCId(mCid, 1) +// service.callEnqueue(call, object : BaseListener { +// override fun onResponse(t: ResponseCategoryDetail?) { +// if (t != null) { +// if (t.MaterialWallpaper != null && t.MaterialWallpaper.isNotEmpty()) { +// mList.clear() +// mList.addAll(t.MaterialWallpaper.toMutableList()) +// isLoading.set(false) +// onMain { +// mAdapter?.notifyDataSetChanged() +// updateView() +// } +// } else { +// onMain { +// updateView() +// } +// } +// } else { +// onMain { +// updateView() +// } +// } +// } +// +// override fun onFail(e: String?) { +// isLoading.set(false) +// onMain { +// mAdapter?.notifyDataSetChanged() +// updateView() +// } +// } +// }) +// } +// } + + private fun loadMore() { +// if (mService == null) { +// mService = ServiceImage() +// } +// if (isLoading.get()) { +// return +// } +// isLoading.set(true) +// val newPage = mPage + 1 +// mService?.let { service -> +// val call = service.mApi.getImageByCId(mCid, 1) +// service.callEnqueue(call, object : BaseListener { +// override fun onResponse(t: ResponseCategoryDetail?) { +// if (t != null) { +// if (t.MaterialWallpaper != null && t.MaterialWallpaper.isNotEmpty()) { +// mList.addAll(t.MaterialWallpaper.toMutableList()) +// isLoading.set(false) +// mPage = newPage +// onMain { +// mAdapter?.notifyDataSetChanged() +// updateView() +// } +// } else { +// onMain { +// updateView() +// } +// } +// } else { +// onMain { +// updateView() +// } +// } +// } +// +// override fun onFail(e: String?) { +// isLoading.set(false) +// onMain { +// mAdapter?.notifyDataSetChanged() +// updateView() +// } +// } +// }) +// } + } + + fun updateView() { +// binding.refreshLayout.finishRefresh() +// binding.refreshLayout.finishLoadMore() + if (mList.isNotEmpty()) { + binding.tvEmpty.hide() + } else { + binding.tvEmpty.show() + } + } + + + fun toPreview(pos: Data) { +// if (pos < 0 || pos >= mList.size) { +// return +// } + val listBean = CategoryPreviewBean() + listBean.list = mList + CategoryPreviewAbility.start(this, pos) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryPage.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryPage.kt new file mode 100644 index 0000000..f6ac69d --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryPage.kt @@ -0,0 +1,136 @@ +package com.cute.girl.hd.pink.img.wallpaper.page + +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.cute.girl.hd.pink.img.wallpaper.MyApp +import com.cute.girl.hd.pink.img.wallpaper.adapter.CategoryAdapter +import com.cute.girl.hd.pink.img.wallpaper.databinding.PageRecentBinding +import com.cute.girl.hd.pink.img.wallpaper.entity.CategoryData +import com.cute.girl.hd.pink.img.wallpaper.entity.GCategory +//import com.cute.girl.hd.pink.img.wallpaper.net.base.BaseListener +//import com.cute.girl.hd.pink.img.wallpaper.net.base.ServiceImage +//import com.cute.girl.hd.pink.img.wallpaper.net.response.ResponseCategory +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.hide +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.onMain +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.show +import com.cute.girl.hd.pink.img.wallpaper.view.CustomItemDecoration +import java.util.concurrent.atomic.AtomicBoolean + +class CategoryPage : Fragment() { + private lateinit var binding: PageRecentBinding + private var mList: MutableList = mutableListOf() + private var mAdapter: CategoryAdapter? = null +// private var mService: ServiceImage? = null + private var isLoading = AtomicBoolean(false) + + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = PageRecentBinding.inflate(layoutInflater) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + setupViews() + } + + private fun setupViews() { + + val subList = MyApp.myData.subList(3, MyApp.myData.size) + + mAdapter = CategoryAdapter(requireActivity(), subList) + mAdapter?.setOnItemClickListener(object : + CategoryAdapter.OnItemClickListener { + override fun onItemClick(pos: CategoryData) { + toDetail(pos) + } + }) + binding.rv.layoutManager = GridLayoutManager(requireContext(), 2) + binding.rv.addItemDecoration( + CustomItemDecoration(1, 2) + ) + binding.rv.adapter = mAdapter!! + + //下拉刷新 +// binding.refreshLayout.setOnRefreshListener { +// if (isLoading.get()) { +// return@setOnRefreshListener +// } +// refresh() +// } + + refresh() + } + + private fun refresh() { +// if (mService == null) { +// mService = ServiceImage() +// } +// if (isLoading.get()) { +// return +// } +// isLoading.set(true) +// mService?.let { service -> +// val call = service.mApi.getCategory() +// service.callEnqueue(call, object : BaseListener { +// override fun onResponse(t: ResponseCategory?) { +// if (t != null) { +// if (t.MaterialWallpaper != null && t.MaterialWallpaper.isNotEmpty()) { +// mList.clear() +// mList.addAll(t.MaterialWallpaper.toMutableList()) +// isLoading.set(false) +// onMain { +// mAdapter?.notifyDataSetChanged() +// updateView() +// } +// } else { +// onMain { +// updateView() +// } +// } +// } else { +// onMain { +// updateView() +// } +// } +// } +// +// override fun onFail(e: String?) { +// isLoading.set(false) +// onMain { +// mAdapter?.notifyDataSetChanged() +// updateView() +// } +// } +// }) +// } + } + + fun updateView() { +// binding.refreshLayout.finishRefresh() +// binding.refreshLayout.finishLoadMore() + if (mList.isNotEmpty()) { + binding.tvEmpty.hide() + } else { + binding.tvEmpty.show() + } + } + + + fun toDetail(pos: CategoryData) { +// if (pos < 0 || pos >= mList.size) { +// return +// } + if (activity != null) { + CategoryAbility.start(requireActivity(), pos) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryPreviewAbility.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryPreviewAbility.kt new file mode 100644 index 0000000..925d687 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryPreviewAbility.kt @@ -0,0 +1,346 @@ +package com.cute.girl.hd.pink.img.wallpaper.page + +import android.app.WallpaperManager +import android.content.Context +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.view.View +import android.view.WindowManager +import android.widget.Toast +import androidx.appcompat.app.AppCompatActivity +import androidx.lifecycle.lifecycleScope +import androidx.viewpager2.widget.ViewPager2 +import com.cute.girl.hd.pink.img.wallpaper.R +import com.cute.girl.hd.pink.img.wallpaper.adapter.CategoryPagerAdapter +import com.cute.girl.hd.pink.img.wallpaper.databinding.AbilityPreviewBinding +import com.cute.girl.hd.pink.img.wallpaper.entity.CategoryPreviewBean +import com.cute.girl.hd.pink.img.wallpaper.entity.Data +import com.cute.girl.hd.pink.img.wallpaper.entity.GCategoryDetail +import com.cute.girl.hd.pink.img.wallpaper.entity.IntentConstants +import com.cute.girl.hd.pink.img.wallpaper.utils.DownloadUtil +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.getString +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.hide +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.onMain +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.show +import com.cute.girl.hd.pink.img.wallpaper.utils.MediaUtil +import com.cute.girl.hd.pink.img.wallpaper.utils.PermissionUtil +import com.cute.girl.hd.pink.img.wallpaper.view.SetAsDialog +import com.liulishuo.filedownloader.BaseDownloadTask +import com.liulishuo.filedownloader.FileDownloadListener +import com.liulishuo.filedownloader.FileDownloader +import kotlinx.coroutines.launch +import pub.devrel.easypermissions.EasyPermissions +import java.io.File + +class CategoryPreviewAbility : AppCompatActivity(), EasyPermissions.PermissionCallbacks { + private lateinit var binding: AbilityPreviewBinding + private var mList: MutableList = mutableListOf() + private var mCurPos: Int = 0 + private var mImagePagerAdapter: CategoryPagerAdapter? = null + private var mSetAsDialog: SetAsDialog? = null + private var mAction = 0//0设置壁纸 1下载壁纸 + + companion object { + fun start(context: Context,bean: Data) { + val intent = Intent(context, CategoryPreviewAbility::class.java) + intent.putExtra(IntentConstants.KEY_LIST, bean) +// intent.putExtra(IntentConstants.KEY_POS, pos) + context.startActivity(intent) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = AbilityPreviewBinding.inflate(layoutInflater) + setContentView(binding.root) + setupViews() + } + + private fun setupViews() { + //隐藏状态栏和底部导航栏 + window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN) + window.decorView.systemUiVisibility = + View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN + + initData() + setUpView() + } + + private fun initData() { + var listBean: Data? = null + if (intent.hasExtra(IntentConstants.KEY_LIST)) { + listBean = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + intent.getSerializableExtra(IntentConstants.KEY_LIST, Data::class.java) + } else { + intent.getSerializableExtra(IntentConstants.KEY_LIST) as Data? + } + } + if (listBean == null) { + finish() + return + } + mList.clear() + mList.add(listBean) + + if (mList.size == 0) { + finish() + return + } + + mCurPos = intent.getIntExtra(IntentConstants.KEY_POS, 0) + + if (mCurPos < 0 || mCurPos >= mList.size) { + finish() + return + } + } + + private fun setUpView() { + mImagePagerAdapter = CategoryPagerAdapter(this, mList) + mImagePagerAdapter?.setOnItemClickListener(object : + CategoryPagerAdapter.OnItemClickListener { + override fun onItemClick(pos: Int) { + + } + }) + binding.viewPager.adapter = mImagePagerAdapter!! + binding.viewPager.setCurrentItem(mCurPos, false) + binding.viewPager.registerOnPageChangeCallback(object : + ViewPager2.OnPageChangeCallback() { + override fun onPageSelected(position: Int) { + mCurPos = position + } + + }) + + binding.ivBack.setOnClickListener { + onBackPressed() + } + + binding.tvSet.setOnClickListener { + mAction = 0 + if (isExist()) { + set4KWallpaper() + } else { + startDownload() + } + } + + binding.tvDownload.setOnClickListener { + doSave() + } + } + + + override fun onDestroy() { + super.onDestroy() + mSetAsDialog?.dismiss() + } + + private fun isExist(): Boolean { + return DownloadUtil.isExist( + mList[mCurPos].sourceURl, + mList[mCurPos].getTag() + ) + } + + private fun set4KWallpaper() { + val image = mList[mCurPos] + val path = + DownloadUtil.getFilePath( + image.sourceURl, + image.getTag() + ) + val file = File(path) + if (!file.exists()) { + return + } + val wallpaperManager = WallpaperManager.getInstance(this) + if (mSetAsDialog == null) { + mSetAsDialog = SetAsDialog(this) { + onClickHomeScreen = { + lifecycleScope.launch { + wallpaperManager.setStream( + file.inputStream(), + null, + true, + WallpaperManager.FLAG_SYSTEM + ) + onMain { + Toast.makeText( + this@CategoryPreviewAbility, + R.string.set_success.getString(), + Toast.LENGTH_SHORT + ).show() + } + } + } + + onClickLockScreen = { + lifecycleScope.launch { + wallpaperManager.setStream( + file.inputStream(), + null, + true, + WallpaperManager.FLAG_LOCK + ) + onMain { + Toast.makeText( + this@CategoryPreviewAbility, + R.string.set_success.getString(), + Toast.LENGTH_SHORT + ).show() + } + } + } + + onClickBoth = { + lifecycleScope.launch { + wallpaperManager.setStream(file.inputStream())//FLAG_SYSTEM | FLAG_LOCK) + onMain { + Toast.makeText( + this@CategoryPreviewAbility, + R.string.set_success.getString(), + Toast.LENGTH_SHORT + ).show() + } + } + } + } + } + mSetAsDialog?.show() + } + + private fun doSave() { + if (!PermissionUtil.hasStoragePermission(this)) { + PermissionUtil.requestStoragePermission(this) + return + } + clickSave() + } + + private fun clickSave() { + mAction = 1 + if (isExist()) { + saveWallpaper() + } else { + startDownload() + } + } + + private fun startDownload() { + if (isFinishing) { + return + } + binding.flDownload.show() + FileDownloader.getImpl().create(mList[mCurPos].sourceURl) + .setPath(DownloadUtil.getFilePath(mList[mCurPos].sourceURl, mList[mCurPos].getTag())) + .setCallbackProgressTimes(300) + .setMinIntervalUpdateSpeed(400) + .setListener(object : FileDownloadListener() { + override fun pending(task: BaseDownloadTask?, soFarBytes: Int, totalBytes: Int) { + + } + + override fun progress(task: BaseDownloadTask?, soFarBytes: Int, totalBytes: Int) { + if (!isFinishing) { + binding.pbb.show() + } + } + + override fun completed(task: BaseDownloadTask?) { + if (!isFinishing) { + binding.flDownload.hide() + mImagePagerAdapter?.notifyItemChanged(mCurPos) + if (mAction == 0) { + set4KWallpaper() + } else { + saveWallpaper() + } + } + } + + override fun paused(task: BaseDownloadTask?, soFarBytes: Int, totalBytes: Int) { + if (!isFinishing) { + binding.flDownload.hide() + Toast.makeText( + this@CategoryPreviewAbility, + R.string.download_failed, + Toast.LENGTH_SHORT + ).show() + } + } + + override fun error(task: BaseDownloadTask?, e: Throwable?) { + if (!isFinishing) { + binding.flDownload.hide() + Toast.makeText( + this@CategoryPreviewAbility, + R.string.download_failed, + Toast.LENGTH_SHORT + ).show() + } + } + + override fun warn(task: BaseDownloadTask?) { + if (!isFinishing) { + binding.flDownload.hide() + Toast.makeText( + this@CategoryPreviewAbility, + R.string.download_failed, + Toast.LENGTH_SHORT + ).show() + } + } + + }).start() + } + + private fun saveWallpaper() { + val image = mList[mCurPos] + val path = + DownloadUtil.getFilePath( + image.sourceURl, + image.getTag() + ) + val saved = MediaUtil.saveImageToSystemAlbum(path, this@CategoryPreviewAbility) + if (!isFinishing) { + if (saved) { + Toast.makeText( + this@CategoryPreviewAbility, + R.string.saved_to_album, + Toast.LENGTH_SHORT + ).show() + } else { + Toast.makeText( + this@CategoryPreviewAbility, + R.string.save_failed, + Toast.LENGTH_SHORT + ).show() + } + } + + } + + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) + } + + override fun onPermissionsGranted(requestCode: Int, perms: MutableList) { + if (requestCode == PermissionUtil.REQUEST_CODE_PERMISSION_STORAGE) { + doSave() + } + } + + override fun onPermissionsDenied(requestCode: Int, perms: MutableList) { + if (requestCode == PermissionUtil.REQUEST_CODE_PERMISSION_STORAGE) { + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/FeaturePage.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/FeaturePage.kt new file mode 100644 index 0000000..891b9a7 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/FeaturePage.kt @@ -0,0 +1,102 @@ +package com.cute.girl.hd.pink.img.wallpaper.page + +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.cute.girl.hd.pink.img.wallpaper.MyApp +import com.cute.girl.hd.pink.img.wallpaper.adapter.ImageGridAdapter +import com.cute.girl.hd.pink.img.wallpaper.databinding.PageRecentBinding +import com.cute.girl.hd.pink.img.wallpaper.entity.Data +import com.cute.girl.hd.pink.img.wallpaper.entity.GImage +import com.cute.girl.hd.pink.img.wallpaper.entity.PreviewBean +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.hide +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.show +import com.cute.girl.hd.pink.img.wallpaper.view.CustomItemDecoration +import java.util.concurrent.atomic.AtomicBoolean + +class FeaturePage : Fragment() { + private lateinit var binding: PageRecentBinding + private var mList: MutableList = mutableListOf() + private var mAdapter: ImageGridAdapter? = null +// private var mService: ServiceImage? = null + private var isLoading = AtomicBoolean(false) + private var mPage = 1 + + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = PageRecentBinding.inflate(layoutInflater) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + setupViews() + } + + private fun setupViews() { + + mAdapter = ImageGridAdapter(requireActivity(), MyApp.myData[0].data) + mAdapter?.setOnItemClickListener(object : + ImageGridAdapter.OnItemClickListener { + override fun onItemClick(pos: Data) { + + toPreview(pos) + } + }) + binding.rv.layoutManager = GridLayoutManager(requireActivity(), 3) + binding.rv.addItemDecoration( + CustomItemDecoration(1, 2) + ) + binding.rv.adapter = mAdapter!! + +// //下拉刷新 +// binding.refreshLayout.setOnRefreshListener { +// if (isLoading.get()) { +// return@setOnRefreshListener +// } +// refresh() +// } +// +// //上拉加载 +// binding.refreshLayout.setOnLoadMoreListener { +// if (isLoading.get()) { +// return@setOnLoadMoreListener +// } +// loadMore() +// } + + + } + + + + fun updateView() { +// binding.refreshLayout.finishRefresh() +// binding.refreshLayout.finishLoadMore() + if (mList.isNotEmpty()) { + binding.tvEmpty.hide() + } else { + binding.tvEmpty.show() + } + } + + + fun toPreview(pos: Data) { +// if (pos < 0 || pos >= mList.size) { +// return +// } + if (activity != null) { + val listBean = PreviewBean() + listBean.list = mList + PreviewAbility.start(requireActivity(), pos) + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/MainAbility.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/MainAbility.kt new file mode 100644 index 0000000..afdcf4e --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/MainAbility.kt @@ -0,0 +1,111 @@ +package com.cute.girl.hd.pink.img.wallpaper.page + +import android.content.Intent +import android.content.pm.PackageManager +import android.net.Uri +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.GravityCompat +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter +import com.cute.girl.hd.pink.img.wallpaper.R +import com.cute.girl.hd.pink.img.wallpaper.databinding.AbilityMainBinding + +class MainAbility : AppCompatActivity() { + private lateinit var binding: AbilityMainBinding + private var mFragments: ArrayList = ArrayList() + private val mTitles: MutableList = mutableListOf() + private var mAdapter: MyPagerAdapter? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = AbilityMainBinding.inflate(layoutInflater) + setContentView(binding.root) + setupViews() + } + + private fun setupViews() { + binding.tvVersion.text = "v${getAppVersionName()}" + mTitles.add("Recent") + mTitles.add("Popular") + mTitles.add("Feature") + mTitles.add("Category") + mFragments.add(RecentPage()) + mFragments.add(PopularPage()) + mFragments.add(FeaturePage()) + mFragments.add(CategoryPage()) + + mAdapter = MyPagerAdapter(supportFragmentManager) + binding.viewPager.adapter = mAdapter!! + + mAdapter?.notifyDataSetChanged()//必须在viewpager初始化之前先更新mAdapter,否则会报错 + binding.stlTab.setViewPager(binding.viewPager, mTitles.toTypedArray(), this, mFragments) + binding.viewPager.currentItem = 0 + binding.viewPager.offscreenPageLimit = 4 + + binding.ivMenu.setOnClickListener { + binding.drawer.openDrawer(GravityCompat.START) + } + + binding.rlShare.setOnClickListener { + try { + val intentShare = Intent() + intentShare.action = Intent.ACTION_SEND + intentShare.type = "text/plain" + intentShare.putExtra( + Intent.EXTRA_TEXT, + getString( + R.string.share_text, + "http://play.google.com/store/apps/details?id=${this.packageName}" + ) + ) + startActivity(intentShare) + } catch (ignore: Exception) { + } + } + + binding.rlRate.setOnClickListener { + try { + val intent = Intent( + Intent.ACTION_VIEW, + Uri.parse("http://play.google.com/store/apps/details?id=${this.packageName}") + ) + startActivity(intent) + } catch (e: Exception) { + e.printStackTrace() + } + } + + binding.rlPrivacy.setOnClickListener { + PrivacyAbility.start(this) + } + } + + private fun getAppVersionName(): String { + return try { + val pm: PackageManager = this.packageManager + val pi = pm.getPackageInfo(this.packageName, 0) + if (pi == null) "" else pi.versionName + } catch (e: PackageManager.NameNotFoundException) { + e.printStackTrace() + "" + } + } + + inner class MyPagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) { + override fun getCount(): Int { + return mFragments.size + } + + override fun getPageTitle(position: Int): CharSequence { + return mTitles[position] + } + + override fun getItem(position: Int): Fragment { + return mFragments.get(position) + } + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/PopularPage.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/PopularPage.kt new file mode 100644 index 0000000..d0ff30b --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/PopularPage.kt @@ -0,0 +1,188 @@ +package com.cute.girl.hd.pink.img.wallpaper.page + +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.cute.girl.hd.pink.img.wallpaper.MyApp +import com.cute.girl.hd.pink.img.wallpaper.adapter.ImageGridAdapter +import com.cute.girl.hd.pink.img.wallpaper.databinding.PageRecentBinding +import com.cute.girl.hd.pink.img.wallpaper.entity.Data +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.hide +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.show +import com.cute.girl.hd.pink.img.wallpaper.view.CustomItemDecoration +import java.util.concurrent.atomic.AtomicBoolean + +class PopularPage : Fragment() { + private lateinit var binding: PageRecentBinding + private lateinit var mList: List + private var mAdapter: ImageGridAdapter? = null +// private var mService: ServiceImage? = null + private var isLoading = AtomicBoolean(false) + private var mPage = 1 + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = PageRecentBinding.inflate(layoutInflater) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + mList = MyApp.myData[2].data + setupViews() + } + + + private fun setupViews() { + mAdapter = ImageGridAdapter(requireActivity(), mList) + mAdapter?.setOnItemClickListener(object : + ImageGridAdapter.OnItemClickListener { + override fun onItemClick(pos: Data) { + + toPreview(pos) + } + }) + binding.rv.layoutManager = GridLayoutManager(requireActivity(), 3) + binding.rv.addItemDecoration( + CustomItemDecoration(1, 2) + ) + binding.rv.adapter = mAdapter!! + +// //下拉刷新 +// binding.refreshLayout.setOnRefreshListener { +// if (isLoading.get()) { +// return@setOnRefreshListener +// } +// refresh() +// } +// +// //上拉加载 +// binding.refreshLayout.setOnLoadMoreListener { +// if (isLoading.get()) { +// return@setOnLoadMoreListener +// } +// loadMore() +// } + + refresh() + } + + private fun refresh() { +// if (mService == null) { +// mService = ServiceImage() +// } +// if (isLoading.get()) { +// return +// } +// isLoading.set(true) +// mPage = 1 +// mService?.let { service -> +// val call = service.mApi.getPopular(1) +// service.callEnqueue(call, object : BaseListener { +// override fun onResponse(t: ResponseImage?) { +// if (t != null) { +// if (t.MaterialWallpaper != null && t.MaterialWallpaper.isNotEmpty()) { +// mList.clear() +// mList.addAll(t.MaterialWallpaper.toMutableList()) +// isLoading.set(false) +// onMain { +// mAdapter?.notifyDataSetChanged() +// updateView() +// } +// } else { +// onMain { +// updateView() +// } +// } +// } else { +// onMain { +// updateView() +// } +// } +// } +// +// override fun onFail(e: String?) { +// isLoading.set(false) +// onMain { +// mAdapter?.notifyDataSetChanged() +// updateView() +// } +// } +// }) +// } + } + + private fun loadMore() { +// if (mService == null) { +// mService = ServiceImage() +// } +// if (isLoading.get()) { +// return +// } +// isLoading.set(true) +// val newPage = mPage + 1 +// mService?.let { service -> +// val call = service.mApi.getPopular(newPage) +// service.callEnqueue(call, object : BaseListener { +// override fun onResponse(t: ResponseImage?) { +// if (t != null) { +// if (t.MaterialWallpaper != null && t.MaterialWallpaper.isNotEmpty()) { +// mList.addAll(t.MaterialWallpaper.toMutableList()) +// isLoading.set(false) +// mPage = newPage +// onMain { +// mAdapter?.notifyDataSetChanged() +// updateView() +// } +// } else { +// onMain { +// updateView() +// } +// } +// } else { +// onMain { +// updateView() +// } +// } +// } +// +// override fun onFail(e: String?) { +// isLoading.set(false) +// onMain { +// mAdapter?.notifyDataSetChanged() +// updateView() +// } +// } +// }) +// } + } + + fun updateView() { +// binding.refreshLayout.finishRefresh() +// binding.refreshLayout.finishLoadMore() + if (mList.isNotEmpty()) { + binding.tvEmpty.hide() + } else { + binding.tvEmpty.show() + } + } + + + fun toPreview(pos: Data) { +// if (pos < 0 || pos >= mList.size) { +// return +// } + if (activity != null) { +// val listBean = PreviewBean() +// listBean.list = mList + PreviewAbility.start(requireActivity(), pos) + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/PreviewAbility.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/PreviewAbility.kt new file mode 100644 index 0000000..747cc19 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/PreviewAbility.kt @@ -0,0 +1,404 @@ +package com.cute.girl.hd.pink.img.wallpaper.page + +import android.app.WallpaperManager +import android.content.Context +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.util.Log +import android.view.View +import android.view.WindowManager +import android.widget.Toast +import androidx.annotation.RequiresApi +import androidx.appcompat.app.AppCompatActivity +import androidx.lifecycle.lifecycleScope +import androidx.viewpager2.widget.ViewPager2 +import com.applovin.mediation.MaxAd +import com.applovin.mediation.ads.MaxInterstitialAd +import com.cute.girl.hd.pink.img.wallpaper.R +import com.cute.girl.hd.pink.img.wallpaper.adapter.ImagePagerAdapter +import com.cute.girl.hd.pink.img.wallpaper.databinding.AbilityPreviewBinding +import com.cute.girl.hd.pink.img.wallpaper.entity.Data +import com.cute.girl.hd.pink.img.wallpaper.entity.GImage +import com.cute.girl.hd.pink.img.wallpaper.entity.IntentConstants +import com.cute.girl.hd.pink.img.wallpaper.utils.DownloadUtil +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.getString +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.hide +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.onMain +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.show +import com.cute.girl.hd.pink.img.wallpaper.utils.MediaUtil +import com.cute.girl.hd.pink.img.wallpaper.utils.PermissionUtil +import com.cute.girl.hd.pink.img.wallpaper.view.SetAsDialog +import com.cute.girl.hd.pink.img.wallpaper.entity.PreviewBean +import com.cute.girl.hd.pink.img.wallpaper.mymax.MaxCallBack +import com.cute.girl.hd.pink.img.wallpaper.mymax.MaxUtils +import com.liulishuo.filedownloader.BaseDownloadTask +import com.liulishuo.filedownloader.FileDownloadListener +import com.liulishuo.filedownloader.FileDownloader +import kotlinx.coroutines.launch +import pub.devrel.easypermissions.EasyPermissions +import java.io.File + +class PreviewAbility : AppCompatActivity(), EasyPermissions.PermissionCallbacks { + private lateinit var binding: AbilityPreviewBinding + private var mList: MutableList = mutableListOf() + private var mCurPos: Int = 0 + private var mImagePagerAdapter: ImagePagerAdapter? = null + private var mSetAsDialog: SetAsDialog? = null + private var mAction = 0//0设置壁纸 1下载壁纸 + + private lateinit var adList: List + + companion object { + fun start(context: Context, bean: Data) { + val intent = Intent(context, PreviewAbility::class.java) + intent.putExtra(IntentConstants.KEY_LIST, bean) +// intent.putExtra(IntentConstants.KEY_POS, pos) + context.startActivity(intent) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = AbilityPreviewBinding.inflate(layoutInflater) + setContentView(binding.root) + adList = MaxUtils.getAllAd() + setupViews() + } + + private fun showMyMAx(action: () -> Unit) { + val onCache = MaxUtils.onCache(adList) + if (onCache != null) { + MaxUtils.setMAXCAllBack(onCache, object : MaxCallBack { + override fun onShowFail(ad: MaxAd?) { + action.invoke() + } + + override fun onAdHidden() { + action.invoke() + adList = MaxUtils.getAllAd() + } + + }) + onCache.showAd(this) + } else { + action.invoke() + } + } + + private fun setupViews() { + //隐藏状态栏和底部导航栏 + window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN) + window.decorView.systemUiVisibility = + View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN + + initData() + setUpView() + } + + private fun initData() { + var listBean: Data? = null + if (intent.hasExtra(IntentConstants.KEY_LIST)) { + listBean = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + intent.getSerializableExtra(IntentConstants.KEY_LIST, Data::class.java) + } else { + intent.getSerializableExtra(IntentConstants.KEY_LIST) as Data? + } + } + if (listBean == null) { + finish() + return + } + mList.clear() + mList.add(listBean) + + if (mList.size == 0) { + finish() + return + } + + mCurPos = intent.getIntExtra(IntentConstants.KEY_POS, 0) + + if (mCurPos < 0 || mCurPos >= mList.size) { + finish() + return + } + } + + private fun setUpView() { + mImagePagerAdapter = ImagePagerAdapter(this, mList) + mImagePagerAdapter?.setOnItemClickListener(object : + ImagePagerAdapter.OnItemClickListener { + override fun onItemClick(pos: Int) { + + } + }) + binding.viewPager.adapter = mImagePagerAdapter!! + binding.viewPager.setCurrentItem(mCurPos, false) + binding.viewPager.registerOnPageChangeCallback(object : + ViewPager2.OnPageChangeCallback() { + override fun onPageSelected(position: Int) { + mCurPos = position + } + + }) + + binding.ivBack.setOnClickListener { + finish() + } + + binding.tvSet.setOnClickListener { + mAction = 0 + if (isExist()) { + set4KWallpaper() + } else { + startDownload() + } + } + + binding.tvDownload.setOnClickListener { + showMyMAx { + doSave() + } + + } + } + + + override fun onDestroy() { + super.onDestroy() + mSetAsDialog?.dismiss() + } + + private fun isExist(): Boolean { + return DownloadUtil.isExist( + mList[mCurPos].sourceURl, + mList[mCurPos].getTag() + ) + } + + + private fun set4KWallpaper() { + val image = mList[mCurPos] + val path = + DownloadUtil.getFilePath( + image.sourceURl, + image.getTag() + ) + val file = File(path) + if (!file.exists()) { + return + } + val wallpaperManager = WallpaperManager.getInstance(this) + if (mSetAsDialog == null) { + mSetAsDialog = SetAsDialog(this) { + onClickHomeScreen = { + + showMyMAx { + lifecycleScope.launch { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { + wallpaperManager.setStream(file.inputStream()) + } else { + wallpaperManager.setStream( + file.inputStream(), + null, + true, + WallpaperManager.FLAG_SYSTEM + ) + } + onMain { + Toast.makeText( + this@PreviewAbility, + R.string.set_success.getString(), + Toast.LENGTH_SHORT + ).show() + } + } + } + + } + + onClickLockScreen = { + + showMyMAx { + lifecycleScope.launch { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { + wallpaperManager.setStream(file.inputStream()) + } else { + wallpaperManager.setStream( + file.inputStream(), + null, + true, + WallpaperManager.FLAG_LOCK + ) + } + onMain { + Toast.makeText( + this@PreviewAbility, + R.string.set_success.getString(), + Toast.LENGTH_SHORT + ).show() + } + } + } + + } + + onClickBoth = { + showMyMAx { + lifecycleScope.launch { + wallpaperManager.setStream(file.inputStream())//FLAG_SYSTEM | FLAG_LOCK) + onMain { + Toast.makeText( + this@PreviewAbility, + R.string.set_success.getString(), + Toast.LENGTH_SHORT + ).show() + } + } + } + + } + } + } + mSetAsDialog?.show() + } + + private fun doSave() { + if (!PermissionUtil.hasStoragePermission(this)) { + PermissionUtil.requestStoragePermission(this) + return + } + clickSave() + } + + private fun clickSave() { + mAction = 1 + if (isExist()) { + saveWallpaper() + } else { + startDownload() + } + } + + private fun startDownload() { + if (isFinishing) { + return + } + val filePath = DownloadUtil.getFilePath(mList[mCurPos].sourceURl, mList[mCurPos].getTag()) + Log.d( + "-----------", + "---------startDownload-${mList[mCurPos].sourceURl} filePath=${filePath}" + ) + binding.flDownload.show() + FileDownloader.getImpl().create(mList[mCurPos].sourceURl) + .setPath(filePath) + .setCallbackProgressTimes(300) + .setMinIntervalUpdateSpeed(400) + .setListener(object : FileDownloadListener() { + override fun pending(task: BaseDownloadTask?, soFarBytes: Int, totalBytes: Int) { + + } + + override fun progress(task: BaseDownloadTask?, soFarBytes: Int, totalBytes: Int) { + if (!isFinishing) { + binding.pbb.show() + } + } + + override fun completed(task: BaseDownloadTask?) { + Log.d("-----------", "---------completed") + if (!isFinishing) { + binding.flDownload.hide() + mImagePagerAdapter?.notifyItemChanged(mCurPos) + if (mAction == 0) { + set4KWallpaper() + } else { + saveWallpaper() + } + } + } + + override fun paused(task: BaseDownloadTask?, soFarBytes: Int, totalBytes: Int) { + if (!isFinishing) { + binding.flDownload.hide() + Toast.makeText( + this@PreviewAbility, + R.string.download_failed, + Toast.LENGTH_SHORT + ).show() + } + } + + override fun error(task: BaseDownloadTask?, e: Throwable?) { + if (!isFinishing) { + binding.flDownload.hide() + Toast.makeText( + this@PreviewAbility, + R.string.download_failed, + Toast.LENGTH_SHORT + ).show() + } + } + + override fun warn(task: BaseDownloadTask?) { + if (!isFinishing) { + binding.flDownload.hide() + Toast.makeText( + this@PreviewAbility, + R.string.download_failed, + Toast.LENGTH_SHORT + ).show() + } + } + + }).start() + } + + private fun saveWallpaper() { + val image = mList[mCurPos] + val path = + DownloadUtil.getFilePath( + image.sourceURl, + image.getTag() + ) + val saved = MediaUtil.saveImageToSystemAlbum(path, this@PreviewAbility) + if (!isFinishing) { + if (saved) { + Toast.makeText( + this@PreviewAbility, + R.string.saved_to_album, + Toast.LENGTH_SHORT + ).show() + } else { + Toast.makeText( + this@PreviewAbility, + R.string.save_failed, + Toast.LENGTH_SHORT + ).show() + } + } + + } + + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) + } + + override fun onPermissionsGranted(requestCode: Int, perms: MutableList) { + if (requestCode == PermissionUtil.REQUEST_CODE_PERMISSION_STORAGE) { + doSave() + } + } + + override fun onPermissionsDenied(requestCode: Int, perms: MutableList) { + if (requestCode == PermissionUtil.REQUEST_CODE_PERMISSION_STORAGE) { + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/PrivacyAbility.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/PrivacyAbility.kt new file mode 100644 index 0000000..ab0a8fa --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/PrivacyAbility.kt @@ -0,0 +1,68 @@ +package com.cute.girl.hd.pink.img.wallpaper.page + +import android.annotation.SuppressLint +import android.content.Context +import android.content.Intent +import android.net.Uri +import android.os.Bundle +import android.view.View +import android.webkit.WebSettings +import android.webkit.WebView +import android.webkit.WebViewClient +import androidx.appcompat.app.AppCompatActivity +import com.cute.girl.hd.pink.img.wallpaper.R +import com.cute.girl.hd.pink.img.wallpaper.databinding.AbilityPrivacyBinding +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.getString + +class PrivacyAbility : AppCompatActivity() { + private lateinit var binding: AbilityPrivacyBinding + + companion object { + const val URL_PRIVACY: String = "https://artwallpaper.bitbucket.io/privacy.html" + + fun start(context: Context) { + context.startActivity(Intent(context, PrivacyAbility::class.java)) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = AbilityPrivacyBinding.inflate(layoutInflater) + setContentView(binding.root) + setupViews() + } + + @SuppressLint("SetJavaScriptEnabled") + private fun setupViews() { + binding.tvTitle.text = R.string.privacy_policy.getString() + + val webSettings: WebSettings = binding.webView.settings + webSettings.javaScriptEnabled = true // enable javascript + webSettings.javaScriptCanOpenWindowsAutomatically = true + binding.webView.webViewClient = object : WebViewClient() { + override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { + if (url.startsWith("http:") || url.startsWith("https:")) { + return false + } + val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url)) + startActivity(intent) + return true + } + + override fun onReceivedError( + view: WebView, + errorCode: Int, + description: String, + failingUrl: String + ) { + } + } + + binding.webView.loadUrl(URL_PRIVACY) + binding.ivBack.visibility = View.VISIBLE + + binding.ivBack.setOnClickListener { + onBackPressed() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/RecentPage.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/RecentPage.kt new file mode 100644 index 0000000..bd89685 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/RecentPage.kt @@ -0,0 +1,193 @@ +package com.cute.girl.hd.pink.img.wallpaper.page + +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.cute.girl.hd.pink.img.wallpaper.MyApp +import com.cute.girl.hd.pink.img.wallpaper.adapter.ImageGridAdapter +import com.cute.girl.hd.pink.img.wallpaper.databinding.PageRecentBinding +import com.cute.girl.hd.pink.img.wallpaper.entity.Data +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.hide +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.show +import com.cute.girl.hd.pink.img.wallpaper.view.CustomItemDecoration +import java.util.concurrent.atomic.AtomicBoolean + +class RecentPage : Fragment() { + private lateinit var binding: PageRecentBinding + private lateinit var mList: List + private var mAdapter: ImageGridAdapter? = null +// private var mService: ServiceImage? = null + private var isLoading = AtomicBoolean(false) + private var mPage = 1 + + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = PageRecentBinding.inflate(layoutInflater) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + mList = MyApp.myData[1].data + setupViews() + } + + private fun setupViews() { + mAdapter = ImageGridAdapter(requireActivity(), mList) + mAdapter?.setOnItemClickListener(object : + ImageGridAdapter.OnItemClickListener { + override fun onItemClick(pos: Data) { + + toPreview(pos) + } + }) + binding.rv.layoutManager = GridLayoutManager(requireActivity(), 3) + binding.rv.addItemDecoration( + CustomItemDecoration(1, 2) + ) + binding.rv.adapter = mAdapter!! + +// //下拉刷新 +// binding.refreshLayout.setOnRefreshListener { +// if (isLoading.get()) { +// return@setOnRefreshListener +// } +// refresh() +// } +// +// //上拉加载 +// binding.refreshLayout.setOnLoadMoreListener { +// if (isLoading.get()) { +// return@setOnLoadMoreListener +// } +// loadMore() +// } + +// refresh() + } + private fun refresh(){ + val shuffled = mList.shuffled() + mAdapter?.refresh(shuffled) + + } +// private fun refresh() { +// if (mService == null) { +// mService = ServiceImage() +// } +// if (isLoading.get()) { +// return +// } +// isLoading.set(true) +// mPage = 1 +// mService?.let { service -> +// val call = service.mApi.getRecent(1) +// service.callEnqueue(call, object : BaseListener { +// override fun onResponse(t: ResponseImage?) { +// if (t != null) { +// if (t.MaterialWallpaper != null && t.MaterialWallpaper.isNotEmpty()) { +// mList.clear() +// mList.addAll(t.MaterialWallpaper.toMutableList()) +// isLoading.set(false) +// onMain { +// mAdapter?.notifyDataSetChanged() +// updateView() +// } +// } else { +// onMain { +// updateView() +// } +// } +// } else { +// onMain { +// updateView() +// } +// } +// } +// +// override fun onFail(e: String?) { +// isLoading.set(false) +// onMain { +// mAdapter?.notifyDataSetChanged() +// updateView() +// } +// } +// }) +// } +// } + + private fun loadMore(){ + + } + +// private fun loadMore() { +// if (mService == null) { +// mService = ServiceImage() +// } +// if (isLoading.get()) { +// return +// } +// isLoading.set(true) +// val newPage = mPage + 1 +// mService?.let { service -> +// val call = service.mApi.getRecent(newPage) +// service.callEnqueue(call, object : BaseListener { +// override fun onResponse(t: ResponseImage?) { +// if (t != null) { +// if (t.MaterialWallpaper != null && t.MaterialWallpaper.isNotEmpty()) { +// mList.addAll(t.MaterialWallpaper.toMutableList()) +// isLoading.set(false) +// mPage = newPage +// onMain { +// mAdapter?.notifyDataSetChanged() +// updateView() +// } +// } else { +// onMain { +// updateView() +// } +// } +// } else { +// onMain { +// updateView() +// } +// } +// } +// +// override fun onFail(e: String?) { +// isLoading.set(false) +// onMain { +// mAdapter?.notifyDataSetChanged() +// updateView() +// } +// } +// }) +// } +// } + + fun updateView() { +// binding.refreshLayout.finishRefresh() +// binding.refreshLayout.finishLoadMore() + if (mList.isNotEmpty()) { + binding.tvEmpty.hide() + } else { + binding.tvEmpty.show() + } + } + + + fun toPreview(data: Data) { + if (activity != null) { +// val listBean = PreviewBean() +// listBean.list = mList + PreviewAbility.start(requireActivity(), data) + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/StartAbility.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/StartAbility.kt new file mode 100644 index 0000000..8b5a79e --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/StartAbility.kt @@ -0,0 +1,94 @@ +package com.cute.girl.hd.pink.img.wallpaper.page + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.os.Bundle +import android.os.CountDownTimer +import android.util.Log +import androidx.appcompat.app.AppCompatActivity +import androidx.localbroadcastmanager.content.LocalBroadcastManager +import com.applovin.mediation.MaxAd +import com.applovin.mediation.ads.MaxInterstitialAd +import com.cute.girl.hd.pink.img.wallpaper.MyApp +import com.cute.girl.hd.pink.img.wallpaper.databinding.AbilityStartBinding +import com.cute.girl.hd.pink.img.wallpaper.mymax.MaxCallBack +import com.cute.girl.hd.pink.img.wallpaper.mymax.MaxUtils + +class StartAbility : AppCompatActivity() { + private lateinit var binding: AbilityStartBinding + + private var time =10000L + private var needShow = true + + private lateinit var countDownTimer: CountDownTimer + private lateinit var lists:List + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = AbilityStartBinding.inflate(layoutInflater) + setContentView(binding.root) + + countDownTimer = object : CountDownTimer(time,100){ + override fun onTick(millisUntilFinished: Long) { + if (needShow) { + ShowAd {} + } + } + + override fun onFinish() { + if (needShow) { + ShowAd { + setupViews() + } + } + } + + } + startAd() + } + private fun startAd() { + if (!MyApp.initSDK) { + LocalBroadcastManager.getInstance(this).registerReceiver(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + loadAdGo() + Log.d("------------","------------1sucess") + } + }, IntentFilter(MyApp.AD_INIT_ACTION)) + } else { + loadAdGo() + Log.d("------------","------------2sucess") + } + } + + private fun loadAdGo() { + lists = MaxUtils.getAllAd() + countDownTimer.start() + } + + private fun setupViews() { + startActivity(Intent(this@StartAbility, MainAbility::class.java)) + finish() + } + + private fun ShowAd(action: () -> Unit) { + val checkCacheAd = MaxUtils.onCache(lists) + if (checkCacheAd == null) { + action.invoke() + } else { + needShow = false + MaxUtils.setMAXCAllBack(checkCacheAd, object : MaxCallBack { + override fun onShowFail(ad: MaxAd?) { + setupViews() + } + + override fun onAdHidden() { + setupViews() + } + }) + checkCacheAd.showAd() + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/DeviceUtil.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/DeviceUtil.kt new file mode 100644 index 0000000..e3f9867 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/DeviceUtil.kt @@ -0,0 +1,28 @@ +package com.cute.girl.hd.pink.img.wallpaper.utils + +import android.content.Context +import com.cute.girl.hd.pink.img.wallpaper.MyApp + + +object DeviceUtil { + + fun dp2Px(dp: Int): Int { + val scale: Float = MyApp.app.resources.displayMetrics.density + return (dp * scale + 0.5f).toInt() + } + + fun dp2Px(dp: Float): Float { + val scale: Float = MyApp.app.resources.displayMetrics.density + return dp * scale + 0.5f + } + + + fun getScreenHeight(context: Context): Int { + return context.resources.displayMetrics.heightPixels + } + + + fun getScreenWidth(context: Context): Int { + return context.resources.displayMetrics.widthPixels + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/DownloadUtil.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/DownloadUtil.kt new file mode 100644 index 0000000..1509844 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/DownloadUtil.kt @@ -0,0 +1,49 @@ +package com.cute.girl.hd.pink.img.wallpaper.utils + +import android.net.Uri +import android.text.TextUtils +import android.util.Log +import java.io.File + +object DownloadUtil { + + + /** + * https://3dparallax.online/3DParallax/assets/4D/186/img.jpg + * 获取下载文件的名称 + 后缀名 + * tag是用来区分当文件名称一样的情况 + */ + fun getFileName(url: String, tag: String?): String { + return if (TextUtils.isEmpty(tag)) { + url.substring(url.lastIndexOf("/") + 1) + } else { + tag + url.substring(url.lastIndexOf("/") + 1) + } + } + + /** + * 获取文件下载路径 + * path:/storage/emulated/0/Android/data/com.lux.sound.pranks.hilarious.effects/X4D/download/hairclipper_4.jpg + */ + fun getFilePath(url: String, tag: String?): String { + + val s = FileUtil.getDownloadDirectory() + File.separator + tag + Log.d("--------","----getFilePath--$s") + return s + } + + fun getFile(url: String, tag: String?): File { + return File(getFilePath(url, tag)) + } + + fun getFileUri(url: String, tag: String?): Uri { + return Uri.fromFile(File(getFilePath(url, tag))) + } + + /** + * @param url 文件网络地址http://dadaad.png + */ + fun isExist(url: String, tag: String?): Boolean { + return File(getFilePath(url, tag)).exists() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/FileUtil.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/FileUtil.kt new file mode 100644 index 0000000..3885a82 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/FileUtil.kt @@ -0,0 +1,219 @@ +package com.cute.girl.hd.pink.img.wallpaper.utils + +import android.content.ContentResolver +import android.content.ContentUris +import android.content.Context +import android.database.Cursor +import android.net.Uri +import android.os.Build +import android.os.Environment +import android.provider.DocumentsContract +import android.provider.MediaStore +import com.cute.girl.hd.pink.img.wallpaper.MyApp +import java.io.File +import java.io.IOException +import java.io.InputStream +import java.io.OutputStream + + +object FileUtil { + private const val DIR_FILE_NAME = "PrankSound" + private const val DIR_DOWNLOAD = "download" + private const val DIR_CREATE = "create" + + /** + * 文件下载路径 + */ + private fun getDefaultDirectory(): String { + var dirName = "" + if (MyApp.app.getExternalFilesDir(DIR_FILE_NAME) != null) {//外部存储可用 + if (Build.VERSION.SDK_INT >= 29) { + dirName = MyApp.app.getExternalFilesDir(DIR_FILE_NAME)!!.path + } else if (Build.VERSION.SDK_INT < 29) { + dirName = MyApp.app.getExternalFilesDir(DIR_FILE_NAME)!!.absolutePath + } + } else {//外部存储不可用 + dirName = MyApp.app.filesDir.absolutePath + } + return dirName + } + + /** + * /storage/emulated/0/Android/data/com.prank.sounds.funny.toy.fart.haircut/cache/download + */ + fun getDownloadDirectory(): String { + return getDefaultDirectory() + File.separator + DIR_DOWNLOAD + } + + /** + * /storage/emulated/0/Android/data/com.prank.sounds.funny.toy.fart.haircut/cache/tape + */ + fun getCreateDirectory(): String { + return getDefaultDirectory() + File.separator + DIR_CREATE + } + + /** + * @param path 文件绝对路径 + */ + fun isExists(path: String): Boolean { + return File(path).exists() + } + + /** + * 获取下载文件的名称 + 后缀名 + */ + fun getFileNameAndSuffix(path: String): String { + return path.substring(path.lastIndexOf("/") + 1) + } + + fun getFileName(path: String): String? { + val start = path.lastIndexOf("/") + val end = path.lastIndexOf(".") + return if (start != -1 && end != -1) { + path.substring(start + 1, end) + } else { + null + } + } + + /** + * 1.URI 为 content://com.android.providers.media.documents/document/image%3A235700 + * 因为在 Android 4.4 及以上的机型,使用了 DocumentUri 来代表获取到文件的 URI + * 要对于 DocumentUri 进行适配 + * 2.URI 为 content://media/extenral/images/media/17766 而我们需要得到对应的文件路径。 + * 参考:https://blog.csdn.net/rjc_lihui/article/details/127020909 + */ + fun getFilePathByUri(context: Context, uri: Uri): String? { + var path: String? = null + // 以 file:// 开头的 + if (ContentResolver.SCHEME_FILE == uri.scheme) { + path = uri.path + return path + } + // 以 content:// 开头的,比如 content://media/extenral/images/media/17766 + if (ContentResolver.SCHEME_CONTENT == uri.scheme && Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { + val cursor = context.contentResolver.query( + uri, + arrayOf(MediaStore.Images.Media.DATA), + null, + null, + null + ) + if (cursor != null) { + if (cursor.moveToFirst()) { + val columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA) + if (columnIndex > -1) { + path = cursor.getString(columnIndex) + } + } + cursor.close() + } + return path + } + // 4.4及之后的 是以 content:// 开头的,比如 content://com.android.providers.media.documents/document/image%3A235700 + if (ContentResolver.SCHEME_CONTENT == uri.scheme && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + if (DocumentsContract.isDocumentUri(context, uri)) { + if (isExternalStorageDocument(uri)) { + // ExternalStorageProvider + val docId = DocumentsContract.getDocumentId(uri) + val split = docId.split(":".toRegex()).dropLastWhile { it.isEmpty() } + .toTypedArray() + val type = split[0] + if ("primary".equals(type, ignoreCase = true)) { + path = Environment.getExternalStorageDirectory().toString() + "/" + split[1] + return path + } + } else if (isDownloadsDocument(uri)) { + // DownloadsProvider + val id = DocumentsContract.getDocumentId(uri) + val contentUri = ContentUris.withAppendedId( + Uri.parse("content://downloads/public_downloads"), + java.lang.Long.valueOf(id) + ) + path = getDataColumn(context, contentUri, null, null) + return path + } else if (isMediaDocument(uri)) { + // MediaProvider + val docId = DocumentsContract.getDocumentId(uri) + val split = docId.split(":".toRegex()).dropLastWhile { it.isEmpty() } + .toTypedArray() + val type = split[0] + var contentUri: Uri? = null + if ("image" == type) { + contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI + } else if ("video" == type) { + contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI + } else if ("audio" == type) { + contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI + } + val selection = "_id=?" + val selectionArgs = arrayOf(split[1]) + path = getDataColumn(context, contentUri, selection, selectionArgs) + return path + } + } + } + return null + } + + private fun getDataColumn( + context: Context, + uri: Uri?, + selection: String?, + selectionArgs: Array? + ): String? { + var cursor: Cursor? = null + val column = "_data" + val projection = arrayOf(column) + try { + cursor = + context.contentResolver.query(uri!!, projection, selection, selectionArgs, null) + if (cursor != null && cursor.moveToFirst()) { + val column_index = cursor.getColumnIndexOrThrow(column) + return cursor.getString(column_index) + } + } finally { + cursor?.close() + } + return null + } + + private fun isExternalStorageDocument(uri: Uri): Boolean { + return "com.android.externalstorage.documents" == uri.authority + } + + private fun isDownloadsDocument(uri: Uri): Boolean { + return "com.android.providers.downloads.documents" == uri.authority + } + + private fun isMediaDocument(uri: Uri): Boolean { + return "com.android.providers.media.documents" == uri.authority + } + + fun getFileName(contentResolver: ContentResolver, uri: Uri): String? { + val projection = arrayOf(MediaStore.MediaColumns.DISPLAY_NAME) + contentResolver.query(uri, projection, null, null, null)?.use { + if (it.moveToFirst()) { + return it.getString(0) + + } + } + return null + } + + fun getFileInputStream(fileUri: Uri): InputStream? = + try { + MyApp.app.contentResolver.openInputStream(fileUri) + } catch (e: IOException) { + e.printStackTrace() + null + } + + fun getFileOutStream(fileName: String): OutputStream? = + try { + MyApp.app.openFileOutput(fileName, Context.MODE_PRIVATE) + } catch (e: IOException) { + e.printStackTrace() + null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/GlobalExt.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/GlobalExt.kt new file mode 100644 index 0000000..856f189 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/GlobalExt.kt @@ -0,0 +1,27 @@ +package com.cute.girl.hd.pink.img.wallpaper.utils + +import android.graphics.drawable.Drawable +import android.os.Handler +import android.os.Looper +import android.view.View + +object GlobalExt { + fun onMain(operation: () -> Unit) = Handler(Looper.getMainLooper()).post(operation) + + fun Int.getString(): String = ResourceUtil.getString(this) + fun Int.getColor(): Int = ResourceUtil.getColor(this) + fun Int.getDrawable(): Drawable? = ResourceUtil.getDrawable(this) + + fun Int.dp2PxInt(): Int = ResourceUtil.dp2Px(this) + fun Int.dp2PxFloat(): Float = ResourceUtil.dp2Px(this).toFloat() + + fun View.show() { + this.visibility = View.VISIBLE + } + fun View.hide() { + this.visibility = View.GONE + } + fun View.invisible() { + this.visibility = View.INVISIBLE + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/MediaUtil.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/MediaUtil.kt new file mode 100644 index 0000000..d429974 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/MediaUtil.kt @@ -0,0 +1,205 @@ +package com.cute.girl.hd.pink.img.wallpaper.utils + +import android.content.ContentValues +import android.content.Context +import android.content.Intent +import android.net.Uri +import android.os.Build +import android.os.Environment +import android.provider.MediaStore +import java.io.File +import java.io.FileInputStream +import java.io.InputStream +import java.io.OutputStream + + +/** + * 从 Android 10 开始向共享存储中添加文件不需要任何权限。 + * Android 10+ 在没有"android.permission.MANAGE_EXTERNAL_STORAGE"权限的情况下只能使用 MediaStore API方式来存储图片和文件 + * 如果你的 App 只在共享存储中添加文件,你可以停止在 Android 10+ 上申请任何权限。 + * 在 Android 13 上废弃了 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 权限 + */ +object MediaUtil { + + private fun getSavePath(): String { + return if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { + // android 10 以下版本 + "${Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).absolutePath}${File.separator}PinkWallpaper" + } else { + "${Environment.DIRECTORY_PICTURES}${File.separator}PinkWallpaper" + } + } + + fun saveImageToSystemAlbum(imagePath: String, context: Context): Boolean { + return if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { + saveImage(imagePath, context) + } else { + saveImageQ(imagePath, context) + } + } + + fun saveVideoToSystemAlbum(imagePath: String, context: Context): Boolean { + return if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { + saveVideo(imagePath, context) + } else { + saveVideoQ(imagePath, context) + } + } + + /** + * 将图片保存到系统图库 + * + * @param imagePath + * @param context + */ + private fun saveImageQ(imagePath: String, context: Context): Boolean { + return try { + val contentResolver = context.contentResolver + val contentValues = + getImageContentValues(File(imagePath)) + val localUri = contentResolver.insert( + MediaStore.Images.Media.EXTERNAL_CONTENT_URI, + contentValues + ) + // 拷贝到指定uri,如果没有这步操作,android11不会在相册显示 + val out = context.contentResolver.openOutputStream(localUri!!) + copyFile(imagePath, out) + + contentValues.clear(); + contentValues.put(MediaStore.MediaColumns.IS_PENDING, 0); + contentValues.putNull(MediaStore.MediaColumns.DATE_EXPIRES); + contentResolver.update(localUri, contentValues, null, null); + true + } catch (e: Exception) { + e.printStackTrace() + false + } + } + + private fun saveImage(imagePath: String, context: Context): Boolean { + return try { + val path = getSavePath() + File.separator + File(imagePath).name + val newFile = File(path) + if (!newFile!!.parentFile.exists()) { + newFile!!.parentFile.mkdirs() + } + val out = newFile.outputStream() + copyFile(imagePath, out) + + val uri = Uri.fromFile(newFile) + context.sendBroadcast(Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri)) + out.close() + true + } catch (e: Exception) { + e.printStackTrace() + false + } + } + + + private fun getImageContentValues(paramFile: File): ContentValues { + val time = System.currentTimeMillis() + val localContentValues = ContentValues() + localContentValues.put(MediaStore.Images.Media.TITLE, paramFile.name) + localContentValues.put(MediaStore.Images.Media.DISPLAY_NAME, paramFile.name) + localContentValues.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg") + localContentValues.put(MediaStore.Images.Media.RELATIVE_PATH, getSavePath()) +// localContentValues.put(MediaStore.Images.Media.DATE_MODIFIED, time / 1000) +// localContentValues.put(MediaStore.Images.Media.DATE_ADDED, time / 1000) + return localContentValues + } + + + /** + * 将视频保存到系统图库 + * + * @param videoPath + * @param context + */ + private fun saveVideoQ(videoPath: String, context: Context): Boolean { + return try { + val contentResolver = context.contentResolver + val contentValues = + getVideoContentValues(File(videoPath)) + val localUri = contentResolver.insert( + MediaStore.Video.Media.EXTERNAL_CONTENT_URI, + contentValues + ) + // 拷贝到指定uri,如果没有这步操作,android11不会在相册显示 + val out = context.contentResolver.openOutputStream(localUri!!) + copyFile(videoPath, out) + context.sendBroadcast(Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, localUri)) + //将该文件扫描到相册 + //MediaScannerConnection.scanFile(context, new String[] { videoFile }, null, null); + true + } catch (e: java.lang.Exception) { + e.printStackTrace() + false + } + } + + private fun saveVideo(videoPath: String, context: Context): Boolean { + return try { + val path = getSavePath() + File.separator + File(videoPath).name + val newFile = File(path) + if (!newFile!!.parentFile.exists()) { + newFile!!.parentFile.mkdirs() + } + val out = newFile.outputStream() + copyFile(videoPath, out) + + val uri = Uri.fromFile(newFile) + context.sendBroadcast(Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri)) + out.close() + true + } catch (e: java.lang.Exception) { + e.printStackTrace() + false + } + } + + + private fun getVideoContentValues(paramFile: File): ContentValues { + val time = System.currentTimeMillis() + val localContentValues = ContentValues() + localContentValues.put(MediaStore.Images.Media.TITLE, paramFile.name) + localContentValues.put(MediaStore.Images.Media.DISPLAY_NAME, paramFile.name) + localContentValues.put(MediaStore.Images.Media.MIME_TYPE, "video/mp4") + localContentValues.put(MediaStore.Images.Media.RELATIVE_PATH, getSavePath()) +// localContentValues.put(MediaStore.Images.Media.DATE_MODIFIED, time / 1000) +// localContentValues.put(MediaStore.Images.Media.DATE_ADDED, time / 1000) + return localContentValues + } + + /** + * 拷贝文件 + * @param oldPath + * @param out + * @return + */ + private fun copyFile(oldPath: String, out: OutputStream?): Boolean { + try { + var bytesum = 0 + var byteread = 0 + val oldFile = File(oldPath) + if (oldFile.exists()) { + // 读入原文件 + val inStream: InputStream = FileInputStream(oldPath) + val buffer = ByteArray(1444) + while (inStream.read(buffer).also { byteread = it } != -1) { + bytesum += byteread //字节数 文件大小 + println(bytesum) + out!!.write(buffer, 0, byteread) + } + inStream.close() + out!!.close() + return true + } else { + } + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + return false + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/PermissionUtil.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/PermissionUtil.kt new file mode 100644 index 0000000..c44cc41 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/PermissionUtil.kt @@ -0,0 +1,104 @@ +package com.cute.girl.hd.pink.img.wallpaper.utils + +import android.Manifest +import android.app.Activity +import android.content.ActivityNotFoundException +import android.content.Context +import android.content.Intent +import android.net.Uri +import android.os.Build +import android.os.Environment +import android.os.PowerManager +import android.provider.Settings +import androidx.annotation.RequiresApi +import androidx.core.app.NotificationManagerCompat +import pub.devrel.easypermissions.EasyPermissions + + +object PermissionUtil { + const val REQUEST_CODE_PERMISSION_STORAGE = 12 + const val REQUEST_CODE_PERMISSION_NOTIFICATION = 14 + + fun hasStoragePermission(context: Context): Boolean { + return if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { + val perms = arrayOf( + Manifest.permission.READ_EXTERNAL_STORAGE, + Manifest.permission.WRITE_EXTERNAL_STORAGE + ) + EasyPermissions.hasPermissions(context, *perms) + } else { + true + } + } + + /** + * 30以上区分权限 + * @param ctx + */ + fun requestStoragePermission(ctx: Activity) { + val perms = arrayOf( + Manifest.permission.READ_EXTERNAL_STORAGE, + Manifest.permission.WRITE_EXTERNAL_STORAGE + ) + EasyPermissions.requestPermissions( + ctx, + "PinkWallpaper need permission", + REQUEST_CODE_PERMISSION_STORAGE, + *perms + ) + } + + /** + * android 30 以上管理全文件权限 + * 是否有权限 + * @param ctx + * @return + */ + @RequiresApi(api = Build.VERSION_CODES.R) + private fun hasFileMangePermission(ctx: Context): Boolean { + return Environment.isExternalStorageManager() + } + + fun hasAlertWindowPermission(context: Context): Boolean { + return Build.VERSION.SDK_INT < Build.VERSION_CODES.M + || Settings.canDrawOverlays(context) + } + + fun requestAlertWindowPermission(context: Context) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M + && !Settings.canDrawOverlays(context)) { + val intent = Intent( + Settings.ACTION_MANAGE_OVERLAY_PERMISSION, + Uri.parse("package:" + context.packageName) + ) + context.startActivity(intent) + } + } + + fun hasIgnoringBatteryOptimizations(context: Context): Boolean { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + var isIgnoring = false + val powerManager = context.getSystemService(Context.POWER_SERVICE) as PowerManager? + if (powerManager != null) { + isIgnoring = powerManager.isIgnoringBatteryOptimizations(context.packageName) + } + isIgnoring + } else { + true + } + } + + fun requestIgnoreBatteryOptimizations(context: Context) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + try { + val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS) + intent.setData(Uri.parse("package:" + context.packageName)) + context.startActivity(intent) + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/ResourceUtil.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/ResourceUtil.kt new file mode 100644 index 0000000..c4c89c4 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/ResourceUtil.kt @@ -0,0 +1,50 @@ +package com.cute.girl.hd.pink.img.wallpaper.utils + +import android.graphics.drawable.Drawable +import androidx.appcompat.content.res.AppCompatResources +import com.cute.girl.hd.pink.img.wallpaper.MyApp + +object ResourceUtil { + fun getString(resId: Int): String { + return MyApp.app.getString(resId) + } + + fun getString(resId: Int, vararg args: Any?): String { + return String.format(MyApp.app.getString(resId), args) + } + + fun getString(str: String, vararg args: Any?): String { + return String.format(str, args) + } + + fun getColor(colorId: Int): Int { + return MyApp.app.resources.getColor(colorId) + } + + fun getDrawable(drawableId: Int): Drawable? { + var drawable: Drawable? = null + try { + drawable = AppCompatResources.getDrawable(MyApp.app, drawableId) + } catch (e: Exception) { + } + return drawable + } + + fun getStringArray(arrayId: Int): Array { + return MyApp.app.resources.getStringArray(arrayId) + } + + fun dp2Px(dp: Int): Int { + val scale: Float = MyApp.app.resources.displayMetrics.density + return (dp * scale + 0.5f).toInt() + } + + fun dp2Px(dp: Float): Float { + val scale: Float = MyApp.app.resources.displayMetrics.density + return dp * scale + 0.5f + } + + fun dimens2Px(id: Int): Int { + return MyApp.app.resources.getDimensionPixelSize(id) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/des/Base64.java b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/des/Base64.java new file mode 100644 index 0000000..544a18c --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/des/Base64.java @@ -0,0 +1,297 @@ +package com.cute.girl.hd.pink.img.wallpaper.utils.des; + +import java.util.Arrays; + +/** + * Created on 2022/3/2 10:29 + * + * @author Gong Youqiang + */ +public class Base64 { + private static final char[] CA = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray(); + private static final int[] IA = new int[256]; + static { + Arrays.fill(IA, -1); + for (int i = 0, iS = CA.length; i < iS; i++) + IA[CA[i]] = i; + IA['='] = 0; + } + private static final byte[] encodingTable = { (byte) 'A', (byte) 'B', + (byte) 'C', (byte) 'D', (byte) 'E', (byte) 'F', (byte) 'G', + (byte) 'H', (byte) 'I', (byte) 'J', (byte) 'K', (byte) 'L', + (byte) 'M', (byte) 'N', (byte) 'O', (byte) 'P', (byte) 'Q', + (byte) 'R', (byte) 'S', (byte) 'T', (byte) 'U', (byte) 'V', + (byte) 'W', (byte) 'X', (byte) 'Y', (byte) 'Z', (byte) 'a', + (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f', + (byte) 'g', (byte) 'h', (byte) 'i', (byte) 'j', (byte) 'k', + (byte) 'l', (byte) 'm', (byte) 'n', (byte) 'o', (byte) 'p', + (byte) 'q', (byte) 'r', (byte) 's', (byte) 't', (byte) 'u', + (byte) 'v', (byte) 'w', (byte) 'x', (byte) 'y', (byte) 'z', + (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', + (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', + (byte) '+', (byte) '/' }; + private static final byte[] decodingTable; + static { + decodingTable = new byte[128]; + for (int i = 0; i < 128; i++) { + decodingTable[i] = (byte) -1; + } + for (int i = 'A'; i <= 'Z'; i++) { + decodingTable[i] = (byte) (i - 'A'); + } + for (int i = 'a'; i <= 'z'; i++) { + decodingTable[i] = (byte) (i - 'a' + 26); + } + for (int i = '0'; i <= '9'; i++) { + decodingTable[i] = (byte) (i - '0' + 52); + } + decodingTable['+'] = 62; + decodingTable['/'] = 63; + } + + public static byte[] encode(byte[] data) { + byte[] bytes; + int modulus = data.length % 3; + if (modulus == 0) { + bytes = new byte[(4 * data.length) / 3]; + } else { + bytes = new byte[4 * ((data.length / 3) + 1)]; + } + int dataLength = (data.length - modulus); + int a1; + int a2; + int a3; + for (int i = 0, j = 0; i < dataLength; i += 3, j += 4) { + a1 = data[i] & 0xff; + a2 = data[i + 1] & 0xff; + a3 = data[i + 2] & 0xff; + bytes[j] = encodingTable[(a1 >>> 2) & 0x3f]; + bytes[j + 1] = encodingTable[((a1 << 4) | (a2 >>> 4)) & 0x3f]; + bytes[j + 2] = encodingTable[((a2 << 2) | (a3 >>> 6)) & 0x3f]; + bytes[j + 3] = encodingTable[a3 & 0x3f]; + } + int b1; + int b2; + int b3; + int d1; + int d2; + switch (modulus) { + case 0: /* nothing left to do */ + break; + case 1: + d1 = data[data.length - 1] & 0xff; + b1 = (d1 >>> 2) & 0x3f; + b2 = (d1 << 4) & 0x3f; + bytes[bytes.length - 4] = encodingTable[b1]; + bytes[bytes.length - 3] = encodingTable[b2]; + bytes[bytes.length - 2] = (byte) '='; + bytes[bytes.length - 1] = (byte) '='; + break; + case 2: + d1 = data[data.length - 2] & 0xff; + d2 = data[data.length - 1] & 0xff; + b1 = (d1 >>> 2) & 0x3f; + b2 = ((d1 << 4) | (d2 >>> 4)) & 0x3f; + b3 = (d2 << 2) & 0x3f; + bytes[bytes.length - 4] = encodingTable[b1]; + bytes[bytes.length - 3] = encodingTable[b2]; + bytes[bytes.length - 2] = encodingTable[b3]; + bytes[bytes.length - 1] = (byte) '='; + break; + } + return bytes; + } + + public static byte[] decode(byte[] data) { + byte[] bytes; + byte b1; + byte b2; + byte b3; + byte b4; + data = discardNonBase64Bytes(data); + if (data[data.length - 2] == '=') { + bytes = new byte[(((data.length / 4) - 1) * 3) + 1]; + } else if (data[data.length - 1] == '=') { + bytes = new byte[(((data.length / 4) - 1) * 3) + 2]; + } else { + bytes = new byte[((data.length / 4) * 3)]; + } + for (int i = 0, j = 0; i < (data.length - 4); i += 4, j += 3) { + b1 = decodingTable[data[i]]; + b2 = decodingTable[data[i + 1]]; + b3 = decodingTable[data[i + 2]]; + b4 = decodingTable[data[i + 3]]; + bytes[j] = (byte) ((b1 << 2) | (b2 >> 4)); + bytes[j + 1] = (byte) ((b2 << 4) | (b3 >> 2)); + bytes[j + 2] = (byte) ((b3 << 6) | b4); + } + if (data[data.length - 2] == '=') { + b1 = decodingTable[data[data.length - 4]]; + b2 = decodingTable[data[data.length - 3]]; + bytes[bytes.length - 1] = (byte) ((b1 << 2) | (b2 >> 4)); + } else if (data[data.length - 1] == '=') { + b1 = decodingTable[data[data.length - 4]]; + b2 = decodingTable[data[data.length - 3]]; + b3 = decodingTable[data[data.length - 2]]; + bytes[bytes.length - 2] = (byte) ((b1 << 2) | (b2 >> 4)); + bytes[bytes.length - 1] = (byte) ((b2 << 4) | (b3 >> 2)); + } else { + b1 = decodingTable[data[data.length - 4]]; + b2 = decodingTable[data[data.length - 3]]; + b3 = decodingTable[data[data.length - 2]]; + b4 = decodingTable[data[data.length - 1]]; + bytes[bytes.length - 3] = (byte) ((b1 << 2) | (b2 >> 4)); + bytes[bytes.length - 2] = (byte) ((b2 << 4) | (b3 >> 2)); + bytes[bytes.length - 1] = (byte) ((b3 << 6) | b4); + } + return bytes; + } + + public static byte[] decode(String data) { + byte[] bytes; + byte b1; + byte b2; + byte b3; + byte b4; + data = discardNonBase64Chars(data); + if (data.charAt(data.length() - 2) == '=') { + bytes = new byte[(((data.length() / 4) - 1) * 3) + 1]; + } else if (data.charAt(data.length() - 1) == '=') { + bytes = new byte[(((data.length() / 4) - 1) * 3) + 2]; + } else { + bytes = new byte[((data.length() / 4) * 3)]; + } + for (int i = 0, j = 0; i < (data.length() - 4); i += 4, j += 3) { + b1 = decodingTable[data.charAt(i)]; + b2 = decodingTable[data.charAt(i + 1)]; + b3 = decodingTable[data.charAt(i + 2)]; + b4 = decodingTable[data.charAt(i + 3)]; + bytes[j] = (byte) ((b1 << 2) | (b2 >> 4)); + bytes[j + 1] = (byte) ((b2 << 4) | (b3 >> 2)); + bytes[j + 2] = (byte) ((b3 << 6) | b4); + } + if (data.charAt(data.length() - 2) == '=') { + b1 = decodingTable[data.charAt(data.length() - 4)]; + b2 = decodingTable[data.charAt(data.length() - 3)]; + bytes[bytes.length - 1] = (byte) ((b1 << 2) | (b2 >> 4)); + } else if (data.charAt(data.length() - 1) == '=') { + b1 = decodingTable[data.charAt(data.length() - 4)]; + b2 = decodingTable[data.charAt(data.length() - 3)]; + b3 = decodingTable[data.charAt(data.length() - 2)]; + bytes[bytes.length - 2] = (byte) ((b1 << 2) | (b2 >> 4)); + bytes[bytes.length - 1] = (byte) ((b2 << 4) | (b3 >> 2)); + } else { + b1 = decodingTable[data.charAt(data.length() - 4)]; + b2 = decodingTable[data.charAt(data.length() - 3)]; + b3 = decodingTable[data.charAt(data.length() - 2)]; + b4 = decodingTable[data.charAt(data.length() - 1)]; + bytes[bytes.length - 3] = (byte) ((b1 << 2) | (b2 >> 4)); + bytes[bytes.length - 2] = (byte) ((b2 << 4) | (b3 >> 2)); + bytes[bytes.length - 1] = (byte) ((b3 << 6) | b4); + } + return bytes; + } + + private static byte[] discardNonBase64Bytes(byte[] data) { + byte[] temp = new byte[data.length]; + int bytesCopied = 0; + for (int i = 0; i < data.length; i++) { + if (isValidBase64Byte(data[i])) { + temp[bytesCopied++] = data[i]; + } + } + byte[] newData = new byte[bytesCopied]; + System.arraycopy(temp, 0, newData, 0, bytesCopied); + return newData; + } + + private static String discardNonBase64Chars(String data) { + StringBuffer sb = new StringBuffer(); + int length = data.length(); + for (int i = 0; i < length; i++) { + if (isValidBase64Byte((byte) (data.charAt(i)))) { + sb.append(data.charAt(i)); + } + } + return sb.toString(); + } + + private static boolean isValidBase64Byte(byte b) { + if (b == '=') { + return true; + } else if ((b < 0) || (b >= 128)) { + return false; + } else if (decodingTable[b] == -1) { + return false; + } + return true; + } + + /** Encodes a raw byte array into a BASE64 String representation i accordance with RFC 2045. + * @param sArr The bytes to convert. If null or length 0 an empty array will be returned. + * @param lineSep Optional "\r\n" after 76 characters, unless end of file.
+ * No line separator will be in breach of RFC 2045 which specifies max 76 per line but will be a + * little faster. + * @return A BASE64 encoded array. Never null. + */ + public final static String encodeToString(byte[] sArr, boolean lineSep) + { + // Reuse char[] since we can't create a String incrementally anyway and StringBuffer/Builder would be slower. + return new String(encodeToChar(sArr, lineSep)); + } + + /** Encodes a raw byte array into a BASE64 char[] representation i accordance with RFC 2045. + * @param sArr The bytes to convert. If null or length 0 an empty array will be returned. + * @param lineSep Optional "\r\n" after 76 characters, unless end of file.
+ * No line separator will be in breach of RFC 2045 which specifies max 76 per line but will be a + * little faster. + * @return A BASE64 encoded array. Never null. + */ + public final static char[] encodeToChar(byte[] sArr, boolean lineSep) + { + // Check special case + int sLen = sArr != null ? sArr.length : 0; + if (sLen == 0) + return new char[0]; + + int eLen = (sLen / 3) * 3; // Length of even 24-bits. + int cCnt = ((sLen - 1) / 3 + 1) << 2; // Returned character count + int dLen = cCnt + (lineSep ? (cCnt - 1) / 76 << 1 : 0); // Length of returned array + char[] dArr = new char[dLen]; + + // Encode even 24-bits + for (int s = 0, d = 0, cc = 0; s < eLen;) { + // Copy next three bytes into lower 24 bits of int, paying attension to sign. + int i = (sArr[s++] & 0xff) << 16 | (sArr[s++] & 0xff) << 8 | (sArr[s++] & 0xff); + + // Encode the int into four chars + dArr[d++] = CA[(i >>> 18) & 0x3f]; + dArr[d++] = CA[(i >>> 12) & 0x3f]; + dArr[d++] = CA[(i >>> 6) & 0x3f]; + dArr[d++] = CA[i & 0x3f]; + + // Add optional line separator + if (lineSep && ++cc == 19 && d < dLen - 2) { + dArr[d++] = '\r'; + dArr[d++] = '\n'; + cc = 0; + } + } + + // Pad and encode last bits if source isn't even 24 bits. + int left = sLen - eLen; // 0 - 2. + if (left > 0) { + // Prepare the int + int i = ((sArr[eLen] & 0xff) << 10) | (left == 2 ? ((sArr[sLen - 1] & 0xff) << 2) : 0); + + // Set last four chars + dArr[dLen - 4] = CA[i >> 12]; + dArr[dLen - 3] = CA[(i >>> 6) & 0x3f]; + dArr[dLen - 2] = left == 2 ? CA[i & 0x3f] : '='; + dArr[dLen - 1] = '='; + } + return dArr; + } +} + + diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/des/DES.java b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/des/DES.java new file mode 100644 index 0000000..b2661f2 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/des/DES.java @@ -0,0 +1,122 @@ +package com.cute.girl.hd.pink.img.wallpaper.utils.des; + +import javax.crypto.Cipher; +import javax.crypto.SecretKey; +import javax.crypto.SecretKeyFactory; +import javax.crypto.spec.DESKeySpec; +import javax.crypto.spec.IvParameterSpec; + +/** + * Created on 2022/3/2 10:01 + * + * @author Gong Youqiang + */ +public class DES { + /** 加密KEY */ + private static final byte[] KEY = "7;9Ku7;:84VG*B78".getBytes(); + /** 算法 */ + private static final String ALGORITHM = "DES"; + /** IV */ + private static final byte[] IV = "sHjrydLq".getBytes(); + /** TRANSFORMATION */ + private static final String TRANSFORMATION = "DES/CBC/PKCS5Padding"; + + private static int code = 0; + + public DES() { + } + + /** + * 构造函数 + * @param code 加密方式:0-“ISO-8859-1”编码,1-base64编码,其它-默认编码(utf-8) + */ + public DES(int code) { + this.code = code; + } + + /** + * 将字符串进行DES加密 + * @param source 未加密源字符串 + * @return 加密后字符串 + */ + public static String encrypt(String source) { + byte[] retByte = null; + + // Create SecretKey object + DESKeySpec dks = null; + try { + dks = new DESKeySpec(KEY); + SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM); + SecretKey securekey = keyFactory.generateSecret(dks); + + // Create IvParameterSpec object with initialization vector + IvParameterSpec spec = new IvParameterSpec(IV); + + // Create Cipter object + Cipher cipher = Cipher.getInstance(TRANSFORMATION); + + // Initialize Cipher object + cipher.init(Cipher.ENCRYPT_MODE, securekey, spec); + + // Decrypting data + retByte = cipher.doFinal(source.getBytes()); + + String result = ""; + if (code == 0) { + result = new String(retByte, "ISO-8859-1"); + } else if (code == 1) { + result = Base64.encodeToString(retByte,false); + } else { + result = new String(retByte); + } + return result; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + + } + + /** + * 将DES加密的字符串解密 + * @param encrypted 加密过的字符串 + * @return 未加密源字符串 + */ + public static String decrypt(String encrypted) { + byte[] retByte = null; + + // Create SecretKey object + DESKeySpec dks = null; + try { + dks = new DESKeySpec(KEY); + SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM); + SecretKey securekey = keyFactory.generateSecret(dks); + + // Create IvParameterSpec object with initialization vector + IvParameterSpec spec = new IvParameterSpec(IV); + + // Create Cipter object + Cipher cipher = Cipher.getInstance(TRANSFORMATION); + + // Initialize Cipher object + cipher.init(Cipher.DECRYPT_MODE, securekey, spec); + + if (code == 0) { + retByte = encrypted.getBytes("ISO-8859-1"); + } else if (code == 1) { + retByte = Base64.decode(encrypted); + } else { + retByte = encrypted.getBytes(); + } + + // Decrypting data + retByte = cipher.doFinal(retByte); + return new String(retByte, "utf-8"); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + + } +} + diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/des/DesUtil.java b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/des/DesUtil.java new file mode 100644 index 0000000..ba4a3c6 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/utils/des/DesUtil.java @@ -0,0 +1,18 @@ +package com.cute.girl.hd.pink.img.wallpaper.utils.des; + + +import java.util.ArrayList; +import java.util.List; + +public class DesUtil { + public static void main(String[] args) { + List list = new ArrayList(); + for (String str : list) { + String ss = DES.encrypt(str); + System.out.println("<" + ss + ">"); + String aa = DES.decrypt(ss); + System.out.println(">" + aa + "<"); + System.out.println("---------------------"); + } + } +} diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/view/CustomItemDecoration.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/view/CustomItemDecoration.kt new file mode 100644 index 0000000..c938d24 --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/view/CustomItemDecoration.kt @@ -0,0 +1,96 @@ +package com.cute.girl.hd.pink.img.wallpaper.view + + +import android.graphics.Rect +import android.view.View +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import androidx.recyclerview.widget.StaggeredGridLayoutManager +import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.dp2PxInt +class CustomItemDecoration : RecyclerView.ItemDecoration { + + // item的水平、垂直方向的间距 + private var verticalSpacing = 0 + private var horizontalSpacing = 0 + + // recyclerview 左右分别额外的边距,可正可负,效果如|◼ ◼ ◼ ◼|、| ◼ ◼ ◼ ◼ | + //首尾margin是 spacing + extraSpacing + private var extraSpacing = 0 + + // item占满一行时,该item是否需要左右间距 + var needVerticalSpacingInSingleLine = true + var needHorizontalSpacingInSingleLine = true + + constructor(spacing: Int) { + initSpacing(spacing, spacing, 0) + } + + constructor(spacing: Int, extraSpacing: Int) { + initSpacing(spacing, spacing, extraSpacing) + } + + constructor(verticalSpacing: Int, horizontalSpacing: Int, extraSpacing: Int) { + initSpacing(verticalSpacing, horizontalSpacing, extraSpacing) + } + + private fun initSpacing(verticalSpacing: Int, horizontalSpacing: Int, extraSpacing: Int) { + this.horizontalSpacing = horizontalSpacing.dp2PxInt() + this.verticalSpacing = verticalSpacing.dp2PxInt() + this.extraSpacing = extraSpacing.dp2PxInt() + } + + override fun getItemOffsets( + outRect: Rect, + view: View, + parent: RecyclerView, + state: RecyclerView.State + ) { + val position = parent.getChildAdapterPosition(view) + var spanCount = 1 + var spanSize = 1 + var spanIndex = 0 + + parent.layoutManager?.run { + when (this) { + is StaggeredGridLayoutManager -> { + spanCount = this.spanCount + (view.layoutParams as StaggeredGridLayoutManager.LayoutParams)?.run { + if (isFullSpan) spanSize = spanCount + spanIndex = this.spanIndex + } + } + + is GridLayoutManager -> { + spanCount = this.spanCount + spanSize = this.spanSizeLookup.getSpanSize(position) + spanIndex = (view.layoutParams as GridLayoutManager.LayoutParams).spanIndex + } + + is LinearLayoutManager -> { + outRect.left = verticalSpacing + outRect.right = verticalSpacing + outRect.bottom = horizontalSpacing + return + } + + else -> {} + } + } + + if (spanSize == spanCount) { + outRect.left = + if (needVerticalSpacingInSingleLine) verticalSpacing + extraSpacing else 0 + outRect.right = + if (needVerticalSpacingInSingleLine) verticalSpacing + extraSpacing else 0 + outRect.bottom = if (needHorizontalSpacingInSingleLine) horizontalSpacing else 0 + } else { + val itemAllSpacing = (verticalSpacing * (spanCount + 1) + extraSpacing * 2) / spanCount + val left = verticalSpacing * (spanIndex + 1) - itemAllSpacing * spanIndex + extraSpacing + val right = itemAllSpacing - left + outRect.left = left + outRect.right = right + outRect.bottom = horizontalSpacing + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/view/SetAsDialog.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/view/SetAsDialog.kt new file mode 100644 index 0000000..884f25f --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/view/SetAsDialog.kt @@ -0,0 +1,58 @@ +package com.cute.girl.hd.pink.img.wallpaper.view + +import android.app.Dialog +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import com.cute.girl.hd.pink.img.wallpaper.R +import com.cute.girl.hd.pink.img.wallpaper.databinding.DialogSetBinding +import com.cute.girl.hd.pink.img.wallpaper.utils.DeviceUtil + +class SetAsDialog(private val ctx: Context, init: SetAsDialog.() -> Unit) : + Dialog(ctx, R.style.AppDialog) { + + private lateinit var binding: DialogSetBinding + var onClickHomeScreen: (() -> Unit)? = null + var onClickLockScreen: (() -> Unit)? = null + var onClickBoth: (() -> Unit)? = null + + init { + init() + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = DialogSetBinding.inflate(LayoutInflater.from(ctx)) + setContentView(binding.root) + initViews() + } + + private fun initViews() { + //设置宽度 + val p = window!!.attributes + p.width = (DeviceUtil.getScreenWidth(ctx) * 0.8).toInt() //设置dialog的宽度为当前手机屏幕的宽度*0.8 + window!!.attributes = p + + setCancelable(true) + setCanceledOnTouchOutside(true) + + binding.ivClose.setOnClickListener { + dismiss() + } + + binding.llHomeScreen.setOnClickListener { + dismiss() + onClickHomeScreen?.invoke() + } + + binding.llLockScreen.setOnClickListener { + dismiss() + onClickLockScreen?.invoke() + } + + binding.llBoth.setOnClickListener { + dismiss() + onClickBoth?.invoke() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/view/SquareFrameLayout.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/view/SquareFrameLayout.kt new file mode 100644 index 0000000..35dc09f --- /dev/null +++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/view/SquareFrameLayout.kt @@ -0,0 +1,19 @@ +package com.cute.girl.hd.pink.img.wallpaper.view + +import android.content.Context +import android.util.AttributeSet +import android.widget.FrameLayout + +class SquareFrameLayout : FrameLayout { + constructor(context: Context) : super(context) + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super( + context, + attrs, + defStyleAttr + ) + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, widthMeasureSpec) + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/d_card_dialog_24dp.xml b/app/src/main/res/drawable/d_card_dialog_24dp.xml new file mode 100644 index 0000000..7195552 --- /dev/null +++ b/app/src/main/res/drawable/d_card_dialog_24dp.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/d_card_theme_pink_32dp.xml b/app/src/main/res/drawable/d_card_theme_pink_32dp.xml new file mode 100644 index 0000000..68d36a2 --- /dev/null +++ b/app/src/main/res/drawable/d_card_theme_pink_32dp.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_back.xml b/app/src/main/res/drawable/ic_back.xml new file mode 100644 index 0000000..5d5d984 --- /dev/null +++ b/app/src/main/res/drawable/ic_back.xml @@ -0,0 +1,12 @@ + + + diff --git a/app/src/main/res/drawable/ic_close.xml b/app/src/main/res/drawable/ic_close.xml new file mode 100644 index 0000000..3730a54 --- /dev/null +++ b/app/src/main/res/drawable/ic_close.xml @@ -0,0 +1,20 @@ + + + + diff --git a/app/src/main/res/drawable/ic_download.xml b/app/src/main/res/drawable/ic_download.xml new file mode 100644 index 0000000..a6380c2 --- /dev/null +++ b/app/src/main/res/drawable/ic_download.xml @@ -0,0 +1,9 @@ + + + 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..ca3826a --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_menu.xml b/app/src/main/res/drawable/ic_menu.xml new file mode 100644 index 0000000..a538ab9 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu.xml @@ -0,0 +1,12 @@ + + + diff --git a/app/src/main/res/drawable/ic_placeholder.xml b/app/src/main/res/drawable/ic_placeholder.xml new file mode 100644 index 0000000..fa00362 --- /dev/null +++ b/app/src/main/res/drawable/ic_placeholder.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_wallpaper.xml b/app/src/main/res/drawable/ic_wallpaper.xml new file mode 100644 index 0000000..aec682e --- /dev/null +++ b/app/src/main/res/drawable/ic_wallpaper.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/font/fredoka.ttf b/app/src/main/res/font/fredoka.ttf new file mode 100644 index 0000000000000000000000000000000000000000..bcef8af186e3e32b1c302da4fdfd9ad98acb83c6 GIT binary patch literal 42452 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/ability_main.xml b/app/src/main/res/layout/ability_main.xml new file mode 100644 index 0000000..e48a2ae --- /dev/null +++ b/app/src/main/res/layout/ability_main.xml @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/ability_preview.xml b/app/src/main/res/layout/ability_preview.xml new file mode 100644 index 0000000..c21c96b --- /dev/null +++ b/app/src/main/res/layout/ability_preview.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/ability_privacy.xml b/app/src/main/res/layout/ability_privacy.xml new file mode 100644 index 0000000..e7fb115 --- /dev/null +++ b/app/src/main/res/layout/ability_privacy.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/ability_start.xml b/app/src/main/res/layout/ability_start.xml new file mode 100644 index 0000000..2bc21ab --- /dev/null +++ b/app/src/main/res/layout/ability_start.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_set.xml b/app/src/main/res/layout/dialog_set.xml new file mode 100644 index 0000000..87aa913 --- /dev/null +++ b/app/src/main/res/layout/dialog_set.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_category.xml b/app/src/main/res/layout/item_category.xml new file mode 100644 index 0000000..d44f42a --- /dev/null +++ b/app/src/main/res/layout/item_category.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_image.xml b/app/src/main/res/layout/item_image.xml new file mode 100644 index 0000000..76b3837 --- /dev/null +++ b/app/src/main/res/layout/item_image.xml @@ -0,0 +1,25 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_preview.xml b/app/src/main/res/layout/item_preview.xml new file mode 100644 index 0000000..adcf087 --- /dev/null +++ b/app/src/main/res/layout/item_preview.xml @@ -0,0 +1,25 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/page_category.xml b/app/src/main/res/layout/page_category.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/page_category.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/page_recent.xml b/app/src/main/res/layout/page_recent.xml new file mode 100644 index 0000000..0e41bfb --- /dev/null +++ b/app/src/main/res/layout/page_recent.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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..c4a603d --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..c4a603d --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file 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 0000000000000000000000000000000000000000..e019a0c01e2e0cd541a67438b1015ef0f2885198 GIT binary patch literal 4508 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..190558588849d0af399fe2195caf5319f893203d GIT binary patch literal 2834 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..35b17970bef4fe626e273210055486d576ed6550 GIT binary patch literal 6968 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 K*0!uwW+MO;2vxZN literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..5a9750903af9c760f093b127dc8e204f2d5f1252 GIT binary patch literal 3870 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..3b15eac8cea96f09bdbcc634256fd588cefbdb99 GIT binary patch literal 6186 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 IjJuZt0O^a_mjD0& literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..54871d3339937d931e5fe4fc4da677f61eac2597 GIT binary patch literal 15648 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 GP6Ytx>>9QJ literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..7d5cc3f6368b4ce248ef888d55e0e806050fb061 GIT binary patch literal 8676 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%0D0XbCF8p+ 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 GlmY-Nfsw!f literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..a80fdc9c866d5a709f1c2da34f33d9235029cc29 GIT binary patch literal 25830 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 BLG%Cs literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..07488c8cd896d5d600be13b13fdab59f7e072ca9 GIT binary patch literal 13890 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 QHrW9VzySup0EQ_I0Md;2{Qv*} literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..48d01bb0a518b2f3545fc11b1a915e9877e9b4b8 GIT binary patch literal 13998 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 P13^7#3?S2(sb_Xvl^Bsk literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/logo.png b/app/src/main/res/mipmap-xxxhdpi/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..17410488abed11c8f037c0ef07162e6777d5b843 GIT binary patch literal 22354 zcmeFZ`9GBJ`!{~g7z~j?_GB6gktIS|W|FOvB}#ThC3}&b8HLE6B-x{oErjeUSraAu zntk80&vu{ldcEKG_j5lU_xB(8KE6K~m$}aKypHoYj`KL4$8rfb(9>pR=4XZ=i1m_= z#x)3ngG)GsWB|Xmyni2nUrcT~rtT1Qh=cY6`!yO!f*>?>N#laCcgjlL{Q{BxgmEAD zE`Pr|laBm=Vh&T0{MJdSXLb=By@lMT+fQdX<6oU@rVDVyHD>%&=zg_u0Y9&BH*%Hj z3ybc6Et8yWOp9FXG{3;Sr=#wB^D8wcO2n=m+CBCB_VtqYR(0nf-)Lv&3Ndn zMXNqw(U5P(>H@xebtV1-BP4Uwj?!2ejKXW#W%!{W!P51~kfiDyDm+aMYHW>*3o7mx zri<_w+(AQ8H=-r!5eX-!-;>$Sdk_+2*oGWzcxIMIhDZ( z%g9ixq^bu5;?H}~As|S=r9&mi*O*`d6GB34kG@i$2Jge5+fP%D?OhDUaU!5lAqag5 zjaU>hgKYL-5XY6t5FCacr&^`|V~x6docAyUMMhIIt@P0k+8&2}po?p{O@4z#Tty0gk&A=e&O1&iyyd;fV z=cx?~UDmPHhTsiGh;TSoVd~mwXw%D^TF~Mk*?Mk}2tnP#(*0Sm67$oj8YIrL#Ik9R z4#Ek=R!rYM3ce19CbsFIMnd>?c{DdWA%sU-C8i$`L-&rI)m!bbkVm#Kw9P`rW<3{z zAQnE;OY8ZDR^ljA*ayI4_w88fAc_SL`Mf26Gj78$l_PBW2u_u>$1hjemF=~=45)1f< zx?f|JH(YAKaT#VnZKPaBhJsVteTaIh0E6~`LsMX?tndpA+W0@$Cp<7{`Ttyt8e`B$ z{=H^8E|0O9{?E1W5sXdtf3ELLV{Gi+5|-#WtoYj6fHb~*Cet)_QcUa2b0i_>3)mFy zIiKmb#!PK!k!`0+BLt8IB@U~H34aYFbQ=gmX*mbCNMNRee43z)-1jcq0VBwIE-w%a zgZ=1pp6=#-O*20XR5Fld zSuLP-T|5L4qGK-w&C$Mndm+$?E)_6Q-d~WmX`85zN#pz;*CsODAxdO6potKD&b%^{ z&ep~V`c9++ChU9TCX4|?W2c)2@fJl%Q+a8 z24mEH-n*C+FI(q8NHSQ5CAeOneoGmSn->D4Q?~+6Ww^o#wAC7M3rog0>vxcM6PVX% zFh892gvbR$Zvpybyblz(y4?{rf4&{kKXjb(*FZ`DFhrz50hl4H#hLhdZG=s3mo(Tn zVa(Z8AD)pG>Go<3u+b*>=<3VU6Y3za7Ik9?bn0(>K9BDs-}?87;V4v^GeL!R}s(}pdD@D;gqcW44R8bR6kMGb0;^oXEi<7Qd(D2 zxEI2&4XfpMIKJ_pst~iT5?7G6b%KL~N`a-pgZJ*Qlvvt8x z>5+lm?7Q=;xM#t&BriLwNL9~fF2quCorJ>J9!@FQ{P-tzKn_|u_YHI&)?M)!B_B5y zxIhx`U*F{vM`oj9sS0BxTmgCS>Kod56~CN(>=k^XikfP89&dJJO?Af4;IHb=3Q1j`Ij zu#6B>7FAgUpU^8a_gP_$%mm*Z z{Lx!y!3b|R=RjX@T!X1g*`kw4GCciDaEP!PTY(+bVSw0&BYkfCLs*jhU+UFg@ozt{ zye)3pt_DWIF&Yi2*xgp1ui=w*({wFbH=Dj=T6f3+j-zWcdsZ6S@Em$+wE(j5P^I6?>_` zA|l|8gp`XhX1tcsiB-T#*fWAJzGqkmE+n+t{nB=>1$Od03UZD;w!OHE=U$Xmh@BGI z0CYRypqpqDL_x4ho?f){q67~xi{1e6FqI)2X)ZJe4V_0vV*YV|qp>qaODy-D@;mZx zPYyoSIF&9is5BDX(6DEowgZfYq3oZQr2cWfK{>i zzDJa_tg$bI|7z?qwY1{QAIGPP0)K|<0>Dgz-*&&)Z81Yk)!P@Xj^n443)OwL00wT0 z6@g2SZ8oKJtR!>p8!?Wy;-t^Pqgpsz>-S-q!1v87BMEB4QRSpcOt1t)sh`)g?;|f- zb)&1OOR@C+r>^9$QfDL-WdO>SF+f3d*~ft@KwlX0!6(Fl1d0ZsgV5mf|NrCvTRgDa z{{@52(|pvK_!Du!-`sT>8WDhVeg)fhM zY+X$)qqJskcqw#XuDA9pWC!O;6^FNfc`m_FQ8aP{DAPW(&3v{C_#Asi zx|BGpL20#$OA~uUTKE)-&&OP=s!mV1eAY|B%D2MVvi_ukwDluuqBD$v6*vXL`J^gw zL!|(NBYJ`!7m1@2PEO&AcTKbZn#Q%?eXXjb*E6B~h<#%4rE+ZxS#;2s`dR`3937#U zfq?-`*HQU3apmjyCHwIhqrzv4o4yflI^rs1&p5*DEpe|!8}hc-w}YiMb}mBw6Y#Jm z3@d)&bB|@nUgd+MhE-)Z4sA=Y_!eVupL&??lx*}d-d<^O#UL_VY34LsxYAV*_~96V z&9#ul_G-6Ny|XF}n2!zQ(mTwJDuUgO50083vNuf)Ros7bNxEoEoW;Pqm4S`ZVL6kG zUoHV=-&)^T(6Fiwb1lRoAZ`49^(Gw$j6+=hGF!^Skj6!}K)?*knU+JAG~zT2YIk3W zrDA&@J+!8~=WJxGSm{9aUZ#A|AgJi+nd%9?iR)XFI zV40ob+(|vwf$!&H8{`jW%sbTW65 zDa#2vbL}w_k_JK#JNhu(ykWKi06%s6%fx0dPuK)L2?K@|6C!^Q-=+4OXKL*SQQFm4 zp~)JtX+2^RFk3+F7HxaEIZNHHa?HJHDsAIT2ZGg7)(uAZw=&rnK8($#JDZU(`ZF4^e``zGr&HWS<5cp7+4U~H zwV(}d*un-TephmqD{jxa0Rr2h(hy}v#uIRVvxr4G4jyLqQdmW9;14_|DC{bgC z-Q2xA_E;S4S(h2Ef2pXhFHa>sMcN-TQS!mP_>q42=%EdIAfwE$mP^}W4<#+hwS}3g!30em71j# z-iYsx2EhceRXhdXc zE>2*NROUGUok5Tt;P&|RfLMN*ECZlSSeu{nYv1UJP$;K&5Yqmf<y8PS>tG1Grz zq}@%>%1k#bkaHdK)4)|?aNNvqv~VgoS{%pcNBZ8%qH{j6m-lPqAq`x|f>})bSvU&z z6QEb<;>DAsDEZ(NJto6K4BYn!tn~GpBQQy}NCny^n7{eOgxFFBTy@!Ds$q}=LW7U? zu%q|)zLvfmso{XwyOWWv-}S=V?g_CRrTYni73uB_IFg6sl1`ca_j#{}OaHq6Muv&e zmgIF2ADlbJ*2}o8#`@vf1;myi;)vd{3^N-9jW;-Z$=yR!M<2X55aPsSxMDKAXT{FK zF${n?2YRof8bp*82ZLl;YH^5K3kW^t8#GUV|ah_-rY!6r|FkIntu zUvIUfZ~?-!r`t^C0lJar0NwM4ey#JYo#W19ldEyOjBMErv(dm=YY+<9ahVxzw6mQS z*NoM5Br6}U#8h)Q~Crrj;vhVy z-XenKGQvREW}0?~`Tic~Zfn2CsNi(AtZCCdXw$=V2VQ&cWH#Y-k`_vQt#I`0-P-JEM+6$KMF&LkFH^?5gvO;DB5!f=u`0=kp5feH3<9?` z2(5QU_+g}-P#OhhvCZiQPWS9QBO^vARj&;%BDN&qC$SyBdt_RhsT{Wkvais`C8cub zl^jq9KkDd5_iOzLYrLBKa4Fia?ERP-N5We!LrXKRA43e|!^qfBp{a4fO|LZUMnML>#zcdpF$^rCF)fm`dGc{4zMgzhjcbdrgtL-(aF6L-^79qbq!Q)l|_V@f6pP zw`lZ`(fy-SN?%OJQ8P=G8k)}@FIDa-gc9UQm#mh?^-~^RcMAB3)~M#Q8?AU?Wt+%c zYwt6tr0{m2ujp!r%Qx`+_WI!z^WK=fbK)t%1#PIdUJlGGd_`ihGn{=)U^=wtDV zv5q8xvFPznj9&w}GcQ{Un6Ow>9S2Cx&H5rWyu+RRRqM|EtHv&c)m3mfdv^kIz@KPx zduApgXoZGq=3jjWkWgq;wAAlzW%Bt`Q$@+UPE+LMp%=wtsN}VPVAQ-YFBN9=sHrc( zd>HGjft$nFkP|AKhV;i+oSu%M8KHtpFnwE7hFt)1CU)B$JiwHPI$9j5sg9{4lt6HHkBXs29GalvZ&1 z*WO&r#MLNfueOXx23_vaqc9CZDl)d~_A3&}c2(|Fh8I{$#LF#)7rzKoglE+8{Z^RA z;;!hA-K}nvP3?bRF%^USkmW&{Y;+p_HWLf@t0s-juAzPQf1K)BPm73 zP-OQr!uRDDuSlKRz|}m42;8rm8=_@>i+PZJY5t0BkJa7F?1OLUALCwFU@~G1*9awv zZ*f{(J9BBhTPp5Y*CE5azUFWmEhXA(+_a3sz`NePrLu#kRm)xTWXGMh&i$HbS;2`5 zC-rWTvM${9wXoY=G2pe)AXp=&^^ds;3A2m_fmHC;mUsS!YlmARx%{ZT>?3pz-R5oz z4$->i`7lx)%PyR7ssA1Q?8%T^V-)PQ!W$|0G`ugY9)DaAU^ zTbB)T!S3mW86S6*9rK>#KJa-dny;B)d|cuoqgORm7`}zUX~9si)F+UR66@63U1H5% zfqPCkeg*M(mhIDU6L#&Y;iJC~G;!)nz#x-9xST&|)xmjoeMI&8xqPBh0tkI}Rgo@IeKN(NtQ5qS^MWY;$*mrU{)c>Co2NaAMkP)c(|l z;aQwUanV^L#L5!DV zeX}8d;7j6(r^Zsk4;elC92kws<#f*_;C4|!*V1@w7+|q7*&AIyx)!NWz}ATk{oZ$- zJ}VgJ#U|_>;kC|NbCIp9<2`}3>`%%mZQo9d*P2{cMpt3b%2@3vf&v=i2$rW*J$c=- z@4%Xe&&f-zJTxwJ4``Xznzh_XWma@4(KF)v55Yw>Oqe|7%#;vEBp~1GY3q-xdk%~u zCWzLzLB@xE1Gynf+tW#Nw>K%y9MozqWT;@OG_hy&`y!*M2E#*bwkCCi{7a(j9Mc;$ zMyUwo+f6#tX)BIOVE@iJHC- zEqX;bY)BWvbva&?(|PJK8y3mO=;R_}jbK$@RVYJjaP;h_X6neotmXl=TOMEVZei<& zq^b{IAk}6)z5nD!7n2mR$13c$HD&L3+%bto1_6hY*j?08+J!5pF9Gw^Qp?7Bxd=Jo z`j!iUi;UB6k{EHX4Ga=V}RMt1F#dDkw0Lw~ps*(#KDuMoQxZE;4aA&Z+e z_xE!|{7LxDV_{GjS2;(+y-`up0&CXT<)M%cu7H~>4x_Tq?%>}AjCJPSHk>}Z(reK& zpV7^>mAqn4FzR5{d5(;|LKkl(hJ>Lw%_6A^+*a;2siWSTqaugQ^f!r$`MZ4gAl=Da zikhmbcq!v<5`&5{zD#iub{IV6+RXSbDs4c`4tA(FjAj(o?3`Xo5)A%$uooY1+Da<+! znP>!#MNHML+H}TM;EMDRK5{3fr!?Q?IX!u9d#z{Nb&GQPjZk!E&B4<5==*Vl=kkRP z2=|X1+*;sZp;zRWnNqW8z5kmPwZQ{>cnTeU#ep4S&+%S+5Vy^bU+S)Gqw8bOx`VGy z4xemVb*J;xjW9&dkpLY|XE;y9jjE=K0j!zC$hlh?3Wdp(wgXiR{6_y_Ss$Wj~|eh6TLyUXx`e4t8sw8FHJHf^!%PLon0@ zTGH|tU5*)}%bf{%Ja5pBB{Sk{w2U;dEcF=+ZYvl7!hd=JP^({`96oG;(D{np8Au9B zqs!pDHW=BulFEg-?s~+Q25w&-7v zfL=Alee*U4pkI?w4E~Tfdvl5Hk4OT?pk+@dHRyNcI%sYGoDWhlkLuO*LjdO5#bqef%%DLNwoiYgMw@cjXzdM+|7>fEdW`ielzJBK^jN&nJ zYsF3Wj3I&O!@u7lJe{znGAGeiuDE$~^3H>fiMVF#8wYYfHUvhk z1b-9zJ)Qr`D*LX)roHx{4x(A{8)>#TTHqQ?iqaXsWu9+vfCR_w0%rQ-kh;#FBH?3G z)>#t5+KHXzQ+CNkFu{S;F)asOe97=PU^=w1t01&tV6H2(>nz?Tubg~SLpXu z%heYI=5tTQE>fWf+OzZ^ciMLa*>VK|EKhU@5L_@42yWjj0b91~dM5C_R;WUd=a`f~ zmIMxW)L293qdm{0rpSuaw)pDBsnyFWBH zf#f53!G`1KD)LEZZw;o;;__Q@G7E-O?UBw>Y}W2tK(b!=MweQv86M(Wh|EL2@}Bh< zp*FKa!cB#nqEYxhqw(Yj0VPxvR z`I9az2Om2D^y%2fjB?6TfU~tD8Aq`=!&ho8_nLdImS+4UR#qJzmx_P&vqH{i^L5Ga z&b>IvSEI60m%Y|Z(vLtD;rU2jzv&_!|28Dy_*CEScwRE6i>t-&mO<}Enyowhl1$I` zLh<9T!HaNcITkPX;0nu&D|9o9gb$!W2;&k!{rb0@bLdCZu=oFiN1_u2Ug!Snv|4Z1 zKDoJ*cxv|BzHC?(;h(wo_ToY3dehG?Q=yyQ)#a-J!+ zZnnicPf{P&YBWyI39-JVJu~+Eca82nbJ3}ie|(Qnx`T>>kpK*q#TPwm_pOF4Y{ZJ0 z3`$|93f}$31;+$<%|bTa zt72@KVAxC)`dLwy{ zXZ=OO#j{UG%sHq-8VpC*?ylIFCl82F_=J(2{R`obdHp7GA;O>71h$@MNyylaFIRTc zkM2t&Vcnwq&EuyxmYz0Y1F~{OC{>Q+o;M!jxB3p~SmKQ@XNz93${$kk3D(4IjI_nk z+|O3{ZPEamoNvl#lWY6m#z{3um5z5%v6_93^ zp)>_xyu7rWtXLZF;!!f1WF`%|vhLZL`FeysDP?Cl3qc=t{rhlTnl<*#QT8DP?K zLUM1|iot(G7XYDVXgf4F7>Kge1q(3^$SSCu~xyPVgZm&wvYy%<0#Gdm`_@FT(J}??+=OpTd>WDWO{fi zWguu3@# zC`cx#(1hEX$Xnr?Q~ld0B#!PGF=A$y_+&00htQh+zfdP8ulh$?gcDT`cC1Q>D~{AZ=@wYgcWu47ZtdEiSXt~f78wxfe%HXhu{mBEfWg9=c4!911lDD*) zhe_w2K-8O%{|YQhbR1ZWZIK3inQ!_7hDMQS$>!mXQY=W6leGchLa{p-65cBhe0m0% zirL3@(6K|#ZdXWZ0S(1X(jAoFQxU7B4PU}l!AT8^OHDo_Fv%N6xX=eQ@?++=JpmPS zqMgdWc$v|D@H#Cz%(M-Y;;q9+%(uiQlDV)YU6z}S&`(T4$L~dW(@k2^l=Zd`8uTnK zWY+jMTO+KAC2ks>nXd7SPD*)EqOQE!*AmGyY~OE_U>M!Iz6A<<0}%uY?F`t*HsfoW z))WBHcYgBD%x|-c4)(UZoE;R&1IL1GYLnWd90(=&OZ<;hg83SqEH{i?08amUoN}oN zh<}WiOV&SLZ!zUl>P!^+k02&Xv0jDLDq%P@8ASXb^{q}cnifw1&$3$Y?+O|<_J#dM zbBGIgbUj0b`;@}}J-`9JVpNjoo=8lM4+-2`plb@*x|!*Df{7g#QWLZFRtxg_e7=fY zqp@+plJ)LOa$XBh;T`>=IAUI@Tb&q3`DszgxU_E5F%RuAChuQ}`8}JDTFT z{+fDwuzf-w(V74o{f*QqfM|Lbm`=nu{#Ec@;~pz%GjL?hdvg^edrm&dbL1Qu{Pt-6 zso*CoXXSX&V!j$peAWK_xN&U$DhqV`iF|OUAFlKtENKD?ZQ@Y&&&0F_7Am9D9|aLg zUd!A^N?a0#j@$4F_XZd0cHvZsJ}EzLRPOY%9MdJXSmdv~q3b7aB0S85(Q$B_<@nvI z=7#XXen+2_730S=J~o$1a8N78vzsH{xTT!JLziyXpbgYDajO%nph7i?Abj8HT7BQi zXf9g54>USTE3yfj{JA2n;z<+jw3)sn!bGAS%6+~ual!Vdh?)zO_%ERvqsOnXjn8ls z?|=I>Dzc$JE~XKVFYVUf_-z%5#a%NT!#)RC@t*$8UZl=<%Tn*z+*TnMeroqg%Kc%V zn)N8)KzQzNUAf0rGQx(=%#FNtO|x-Nbd76p|J*GMI~?ar4w2KY92elE7Ob0NEqQz; z?(;~w%AM?3(z#qmeQdFWjox6?ITJ>htq9l0+7z&({9qG(yZAk+kdo!B|I>(UsO$D; zj@|pmfktc$^$`<80!!WF7xf^tAsX%=eQm$s6=_>r!}pDdag!Nj=e369#b@ohazPnm z4gbJUo5gPv{+jb``{uKPAT7Z?QFuDScmXi~2R`V&oTTG?E@a-Dv*cqkq4yxXBV^L6=?GVI>?8fCkpe(!XrCb=Mo` z@`%6u1x-7n^7-E%td1I#Ef<%YR=?tWOFUfCCj`AVR+bAr-Eu+~(Te97mvhUy@^!EO zGO5DsCE>JjfSVSnPrpCppX|wSWZUNX$=cD(1Wsv zAh4({e9)iTf5VLzL-*gnq6T2kzxpvezoTI2663`F$BL{N*t0)!>Kl?oqZnxrDcglx1JZJHi=4bGFz_MEN{eH>J}?8{X&3zfd}_iLUd(K_XH_X{ zIRD8V{7}(pwb{wGI^gpm)dUCqV-FnT?ZOB;hX`Nto}At$Tk4KAlxOyC-EwS#3wi!y zX*w0EMtgYiQ1|2u3H9uySr&GifYCTEXg|wOb7Mrj>*cY!M@x1p|C;}=*J$QHYb;%I z%Sh=Ph-tcwEUk)HmcEX7JH~rQ5OiqTF;j~tG~UZ5V*FVFJiX3(JpiP+Om|HD#QP6; z^njyj)ZL$b=#Isp2VxAYy`~X_g3UR8{1YA*T~gT>SF(rYd||fbr`pa}lEuQ&fCHu0 z3u7QaXbiKUrt9rKa#0x&NyDJ8!5dF+5EmGKE7LWX#*8%_AeuYd|C8C`mu~V9{NDjx zvBO|G(SlmDTL$!F=vr0X`B+4iP5fRsp>^bzK=Ziu__(WmejYB~X>)u$b&hb;ZJ#PHMXZ{~DU=?!T zC?eBjAThE`UE%NvBj^E- zB^~30AcYsjrybVLh7or91sz~E3Y5SnZfog-XqUenlfu3){I`>p z;iBypr4SB@Q0^c8_>2XSqbe_YLxgf??xe<_>^VOM=tG7-IXdK@nTOv(Zc$W2OBgRr zMKk_4dq5eW|Jf>#=pRH#Ae13@>QG18uZA#!&A4a3;CWaqwz~K(>2&;LLHrQOzRvcd z-#^6*y@!+5W<|@f9c19j00K15f3!BdHac z`Ql3|9)H@*W4dn42bYb3hM$L3)~B9qFcN-MxzEFypS%`tV=m5`*rpzXB>v?1{eA5aAjb3MiE)Cl>dgp)R4}N2XSAh)4?v zL~xXazs~@Sh5w_zrI|keZ)Ri4H$rq4xJ}5?&~g;@kgCkjdiw+t+evz7>yi{Is>f#cNwx7?J1j8ZV#H7tG+77w=Ay+PSE!Ljg z=nfHeRaG<3~rFn_TdOPgt6Y1tsM_9No9j?Pp%c2a`;o;5;w z=&Qfr&BJ5B6xD3q_$6gAc31ahKl{ubd{j9Fn9BK=ox4R<`XqN*zUvw|FHFX@y3=dj ziA|{3B^oq4i>U8c^QE?j&i-qUDw-|5tjs^(3S;4=W!eD{4e24$6xp(Dd&Ak#a@fJq zo*gzC0p(Z(`ia5Oc&Bu+6g4~NTykhL0C)7z{~^_oDL;+7?~l}KfLF%a6<5PHw@-8x z(zDB;*bRzm)z-y<0UqUOxDjf$r=36MvhK7Jzad#?PnA9Y23X0EqM?rxuLu>U1gS|6?2o={9*J9Q8De+9sGg&sTcVUDm1xp3anWa`cSk) zbx}UrjRYe{^G#zp8x6IDezk|q(%IxF6c2VH# ztLLT5`X`Aqc_4zaMECEz)^13E1Lq`gM-w6TWArW3txqvAL>t;F}XjIcrH-&I$L_u+Sfa$Ss7uCl}4 zyBwT`zt0ya>KO;2R{loi+26XLAS9gogBwx8b6&0hx@M{=`!S!CX)@-~{r3q~vh1v5`LH4zm@wQCx8<2w34zPf_ z9yISecKQ@@P`5-2D|;-nD7A**I7BsoRyA9ioAMiprJ9>G%`zV9v^yIQ(?qanAV5DR zcrouCzYwli0+zjzXi6QvcWwLbzGnU$#aT0Ck?va5CF-|I(kBlFBe{1w?$l6)_kT|f zE#bZE1I>!G-RtTD79Cv$^*6TE;s#}fnVI=ub)+JpKqLR>guaq&Pqs#2AS06L5`i@xm*^E()E znrG#zN$riA{U-@I%6?lCtRdzkFO7``Oe$?Pe_~j|-i_}7`nyZu6w$K<4 zY-$#JnrGOY)tc3;^e6-ScO>@A0Hf4pa{+(mwSm zD|~dlM;gAp&?eBFS-88_5bL5Q+;W6TR)gV);5+7XK&19@q1N1gP00&)3{3}f1>e;a z+Y6@jO}#qIJK}-6^B`~L51yh-yz&L$W6pFR8Sm$f-;#C~4u4$kK4=0NuXLl`mOlTa z%Q>1GziF>d!IcEeZMf94y{WCr?=IoCs+&zJ@5y50smyVSVb(ul(kqw}^4oS}M z)?YLarT}H@j7o0KUg+=;43+)nGnl>wdO7GIt5cOXnigZmw|OZUw=N=rO%O^;0^^%$ zsxyi@?^PgBz1&nh#tBL>AEpR7&N9LE(z;aoJT$wT_oV)$R<1ekoDK)VPD!gOz694;=JfEqU~)#53YUN}|b+ z%y>?jUnzv;)rFU3?oa*pXkm8p!dFRb0+_Yy}AC_o2ZT23U;Q8 zc8yAOHk%aHHDD*uc_XHe5;qGeE6TT*vNWG$P5N9EL4S-Rw091hko#Y3yXNZC`5Ved zQt$BtzvVGW7GSMBQ0fWa{^N2H-!7ze4}QF;gECEPZHC(3R+pS;H*pE?l!&krs@+Mq zt&;pvcC{+IXa;(TJnR^5^XSpkQ_7Md6Ld~{J!kXVfbH%_UTQ@q{&Y1RIaGgc+w9mq z4?kAh9zI>rhoh?Y)rU;uNa}YA@6%tr;k{q=h@etBD%{DO!T3COyZ&Ms%jJdwZ@ahBYT5H)ku6};aT6P!I zkh%IZ&&;l<_s}}DPUEJ|N@gGbhB^PMg0zB4 zkF@`5;)pudYvt=6UDMJ2d22^r^0T3dSG9T=*l7)M4g*W8fQ#EpH<$^=Qp88cn~Gi8 zzBPYX6y4?;YdCq$hR+Z=q#D1`6IJYfQLvI$qTta7z!P0$++V4&KPy78KfTJCHAbeUHKi*0xO~JeQGe4xG}W!{~&B>e!HFgUQ8`fHi}}ehA`Tru|=lBN%iarqOhC&%ws+SR{~rRHd4~ zvNG07#lGQDT8YD|^`n9n2Y5ou(nric(O=jga*^;?b{a*OhY& z=jS+q>qj1%3AqE5>#AXWl}JkG!KTV}9aC}mYgb=ZKE>qs(Pe8-7ocxmijxb3_NZ@O zm*=8W4GtGX%fitkc8$Ho;i~TVp;Fny;rLPC%}~K+P&tk+;0jLm;qE)&kAg!Q=CjzZe~Ajm-`G>N0U1gCb8X@Hq^e6G-}$uFAP{u?4){~6 z1=_u?ES^6|uKFe1BZ#9(X3<^HKqRBOn!*?q@9-fS(oqtP z|5(F$v!CI+(yR?z6j)=V{56H8-ahtV7v$E4$+nho!rrJ~Q4 z2fK|-Q@^m%eeBSmzH}?!<2CpC{`x}z1hqKC@6GKMUz|VeB)}K@mkg5b=-vd@{)ys- zN4?vtn%B!&ip`~ybf7rGx(57|*9|LVN-IvA9cpWqUNVG2THfzau8-9edKEYn@4TS1 z?dJPlREO`~J{A2_>!^Q!|MLjo70>oBRYiM) zuyGIu_S*gFISvEUPor_W(&wX~Pokz4zQ>iZ0OHcHhnCG`-|?7Rh*6Be!Pl!3jgT9GQ56lWJ_NrM|52 zT^m<20kNg350wU;8P%!P_2xw_(`4nMpVBF}3$Y?k3uD&8Iy?F`_ZOWNuQYJRTrH2% zA-s3Tzzic0#&37=_5WEmN{k@NgG=ALXG?mLOn0n&ea-0X8IZ+jliKL&KKZGqa&Y#% ze+>x6=K}uh0g!Y%qRiBjmC|f(;?PwmZSq)g^{`5Xa~PmD%v2MhlRFlTIlnBC3Q1fqoO9;f+} zR+?*sYA*SekJk>;4b{hRFxmHb{bh|Kcx%Gj`?;--;g>mYEK$fFT!15%gx>K7742)` zP71vyYu1C^wWd{N0{;Wi;FidKV{>djZjp{}0(`wO)&i0l$*UIiR~lo*YNZo)wL~(m zj&~|*z$ZDG+}c6;$dZ_f6Mg9+2#YPS^q)%xjapq2b@=O*&U4MG(xkD5=CU6vPqPz4;&$$1?(Bv83l$5 zeGo_3Oh_K*r%sPrU-PuNpby8DZs#YP=QYQ}&)(V@@+-g4_k*l_T3{GSu#+Tqe2)zO zvY`q`Gdo!p@{s_3I{RepGv#jKKn!xdeC^}ftbhj2Lz7TeWhyoH=)(#pRo6q6zT0NW zq#rMhpKMGwd;0wmyL&`;WrHDlzuV(iMOv-T(JZSS?Mxx0GR=T*tUjttae3rpiI-aw zbIKnmzW>z&>VaK)eHf&>w*4lHo&+hRg8!C)E8UoVYI4S1?r*>b#e8V7j#>{4O$BK4 z9B3vgo}~B?WlvCgy*`Bm>aE-<#0E3ppYF%+$C+QNEd6+QrOo#^N5P4Ag)>7i4lf#g$Y2Y0G{hLu&pC zAb+QQc>KHI&|m+Sv4$V<{od_`(o=QI#W&{f6$`*1Uix3%#dVaR0n)@fRPxLL(qqid zHaS&vc&Mq*)@Zr^<8cm~;eYgST^s13OQ0huT+ULIQohwM4MPul6SK^dlG>71SZ^e4 zsNc`M+H84G=K9>?2$8L;hr-;l^C=t;eO33}UvjnP5^%NVoDsMJi^*PzI_HhXK%HcQVajYaEId&rFB*|f$4&ot) z&$6q$WMOrn>t~GpTW2XjQE9uwf+>2rz3ooz z5JX_~*IjcgZbs23gKn$~b5yuSq`E+W|J=htIB>

*?))Z_+K02X~N)EZ4Z{aEJN6 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..2a756f7 --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,9 @@ + + + #FF000000 + #FFFFFFFF + + #EBF6F5 + #ED99B2 + #D8D8D8 + \ 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..dc1aa11 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,17 @@ + + Art Wallpaper + Image loading failed, please pull down to refresh and reload. + Downloading HD Image... + Set Wallpaper + Wallpaper set successfully + Home Screen + Lock Screen + Both + Wallpaper download failed! + Privacy Policy + Share App + Share Girl Wallpaper with your friends! share the link %s + Rate Us + Saved to album + Save failed + \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..e3a34fc --- /dev/null +++ b/app/src/main/res/values/styles.xml @@ -0,0 +1,12 @@ + + + + \ 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..5856b76 --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,16 @@ + + + + \ 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/network_security_config.xml b/app/src/main/res/xml/network_security_config.xml new file mode 100644 index 0000000..81150f8 --- /dev/null +++ b/app/src/main/res/xml/network_security_config.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + 127.0.0.1 + + + + \ No newline at end of file diff --git a/app/src/test/java/com/cute/girl/hd/pink/img/wallpaper/ExampleUnitTest.kt b/app/src/test/java/com/cute/girl/hd/pink/img/wallpaper/ExampleUnitTest.kt new file mode 100644 index 0000000..312e1b7 --- /dev/null +++ b/app/src/test/java/com/cute/girl/hd/pink/img/wallpaper/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package com.cute.girl.hd.pink.img.wallpaper + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/app/testArtWallpaper.jks b/app/testArtWallpaper.jks new file mode 100644 index 0000000000000000000000000000000000000000..b3382d742c427b746b07ec65d88c71627b36af0d GIT binary patch literal 2580 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 K3p@XM!hZt*p^lOO literal 0 HcmV?d00001 diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..9129e93 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,12 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +plugins { + alias(libs.plugins.androidApplication) apply false + alias(libs.plugins.jetbrainsKotlinAndroid) apply false + id("com.google.gms.google-services") version "4.3.15" apply false + id ("com.google.firebase.crashlytics") version "2.9.2" apply false +} +buildscript{ + dependencies{ + classpath("com.applovin.quality:AppLovinQualityServiceGradlePlugin:+") + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..68c91ae --- /dev/null +++ b/gradle.properties @@ -0,0 +1,24 @@ +# 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. For more details, visit +# https://developer.android.com/r/tools/gradle-multi-project-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 +android.enableJetifier=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official +# 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/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..474156d --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,22 @@ +[versions] +agp = "8.1.3" +kotlin = "1.9.0" +coreKtx = "1.13.1" +junit = "4.13.2" +junitVersion = "1.1.5" +espressoCore = "3.5.1" +appcompat = "1.6.1" +material = "1.12.0" + +[libraries] +androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } +junit = { group = "junit", name = "junit", version.ref = "junit" } +androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } +androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" } +androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } +material = { group = "com.google.android.material", name = "material", version.ref = "material" } + +[plugins] +androidApplication = { id = "com.android.application", version.ref = "agp" } +jetbrainsKotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } + diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f GIT binary patch literal 59203 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

K7UpUK$>l@ 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 E2O(~oYXATM literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..daa506f --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Tue May 28 15:35:37 CST 2024 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-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..107acd3 --- /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/keyinfo/info b/keyinfo/info new file mode 100644 index 0000000..a158f6b --- /dev/null +++ b/keyinfo/info @@ -0,0 +1,5 @@ +应用名:Art Wallpaper +包名:com.wallart.art.wallpapers.hd +签名文件:ArtWallpaper.jks +别名:ArtWallpaperkey0 +密码:ArtWallpaper \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..dfdabf4 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,30 @@ +pluginManagement { + repositories { + google { + content { + includeGroupByRegex("com\\.android.*") + includeGroupByRegex("com\\.google.*") + includeGroupByRegex("androidx.*") + } + } + jcenter() + mavenCentral() + gradlePluginPortal() + maven{url = uri("https://artifacts.applovin.com/android")} + } +} +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + jcenter() + mavenCentral() + + maven ("https://artifact.bytedance.com/repository/pangle") + maven { url = uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") } + } +} + +rootProject.name = "ArtWallpaper" +include(":app") + \ No newline at end of file