commit 5fe03ad5a379f3e63c40789ffb647ff521ca0a93 Author: litingting Date: Thu Apr 17 11:40:57 2025 +0800 V1.0.0(1) 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/LiveWallpapers.jks b/app/LiveWallpapers.jks new file mode 100644 index 0000000..5f1185d Binary files /dev/null and b/app/LiveWallpapers.jks differ diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 0000000..0613e22 --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,79 @@ +import java.util.Date +import java.text.SimpleDateFormat +plugins { + id("com.android.application") + id("org.jetbrains.kotlin.android") + id("io.objectbox") +// id("com.google.gms.google-services") +// id("com.google.firebase.crashlytics") +} +val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date()) +android { + namespace = "com.hd.live.wallpapers" + compileSdk = 34 + + defaultConfig { + //com.hd.live.wallpapers + applicationId = "com.hd.live.wallpapers.wall" + minSdk = 23 + targetSdk = 34 + versionCode = 1 + versionName = "1.0.0" + setProperty( + "archivesBaseName", + "Live Wallpapers_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_17 + targetCompatibility = JavaVersion.VERSION_17 + } + kotlinOptions { + jvmTarget = "17" + } + buildFeatures { + viewBinding = true + } +} + +dependencies { + + implementation("androidx.appcompat:appcompat:1.7.0") + implementation("com.google.android.material:material:1.12.0") + implementation("androidx.constraintlayout:constraintlayout:2.2.0") + testImplementation("junit:junit:4.13.2") + androidTestImplementation("androidx.test.ext:junit:1.2.1") + androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1") + + implementation ("androidx.paging:paging-runtime:3.3.5") + implementation ("androidx.paging:paging-runtime-ktx:3.3.5") // 包含 Kotlin 扩展 + implementation ("androidx.lifecycle:lifecycle-livedata-ktx:2.6.0") // LiveData 相关 + implementation ("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.0") + + implementation ("com.google.code.gson:gson:2.10.1") + implementation("com.github.bumptech.glide:glide:4.16.0") + + implementation("com.squareup.retrofit2:retrofit:2.9.0") + implementation("io.reactivex.rxjava2:rxjava:2.2.21") + implementation("io.reactivex.rxjava2:rxandroid:2.1.1") + implementation("com.squareup.retrofit2:adapter-rxjava2:2.9.0") + implementation("com.squareup.okhttp3:logging-interceptor:4.11.0") + +// implementation ("com.google.android.exoplayer:exoplayer:2.19.1") + implementation("androidx.media3:media3-exoplayer:1.4.1") + implementation ("androidx.media3:media3-ui:1.4.1") + implementation ("androidx.media3:media3-exoplayer-dash:1.4.1") + + +} \ No newline at end of file diff --git a/app/objectbox-models/default.json b/app/objectbox-models/default.json new file mode 100644 index 0000000..52e052a --- /dev/null +++ b/app/objectbox-models/default.json @@ -0,0 +1,125 @@ +{ + "_note1": "KEEP THIS FILE! Check it into a version control system (VCS) like git.", + "_note2": "ObjectBox manages crucial IDs for your object model. See docs for details.", + "_note3": "If you have VCS merge conflicts, you must resolve them according to ObjectBox docs.", + "entities": [ + { + "id": "1:150505122699528186", + "lastPropertyId": "10:76475728747825161", + "name": "ResultData", + "properties": [ + { + "id": "1:2927637172002004906", + "name": "objectId", + "type": 6, + "flags": 1 + }, + { + "id": "2:1001748290350717302", + "name": "category", + "type": 9 + }, + { + "id": "3:4120630564091130628", + "name": "description", + "type": 9 + }, + { + "id": "4:279795966790436055", + "name": "downloads", + "type": 9 + }, + { + "id": "5:97414655938247912", + "name": "id", + "type": 5 + }, + { + "id": "6:729161467269206587", + "name": "image", + "type": 9 + }, + { + "id": "7:5042336858198490957", + "name": "pro", + "type": 5 + }, + { + "id": "8:6165031016937588605", + "name": "resolution", + "type": 9 + }, + { + "id": "9:1947268834796297839", + "name": "thumbnail", + "type": 9 + }, + { + "id": "10:76475728747825161", + "name": "wallpapertype", + "type": 5 + } + ], + "relations": [] + }, + { + "id": "3:6621332807843049779", + "lastPropertyId": "6:5780006894715348003", + "name": "FavoriteData", + "properties": [ + { + "id": "1:4538292384164106909", + "name": "objectId", + "type": 6, + "flags": 1 + }, + { + "id": "2:3798352414031850717", + "name": "description", + "type": 9 + }, + { + "id": "3:6482737152923675363", + "name": "id", + "type": 5 + }, + { + "id": "4:4529755790081860204", + "name": "image", + "type": 9 + }, + { + "id": "5:1205919504570971706", + "name": "wallpapertype", + "type": 5 + }, + { + "id": "6:5780006894715348003", + "name": "thumbnail", + "type": 9 + } + ], + "relations": [] + } + ], + "lastEntityId": "3:6621332807843049779", + "lastIndexId": "0:0", + "lastRelationId": "0:0", + "lastSequenceId": "0:0", + "modelVersion": 5, + "modelVersionParserMinimum": 5, + "retiredEntityUids": [ + 8834432815557132690 + ], + "retiredIndexUids": [], + "retiredPropertyUids": [ + 846923696920771332, + 2661563405594510728, + 3803068480811227076, + 2573175242602089587, + 4073665339586807072, + 6490742020031879416 + ], + "retiredRelationUids": [], + "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..d1c5549 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,129 @@ +# 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 + + +# 保持 Gson 和 TypeToken 不被混淆 +-keep class com.google.gson.** { *; } +-keep class com.google.gson.reflect.TypeToken { *; } + +# 保留与泛型相关的 TypeToken 使用,避免泛型信息丢失 +-keep class * extends com.google.gson.reflect.TypeToken { *; } + +# 保留自定义的类 MyClass 不被混淆 +-keep class com.hd.live.wallpapers.bean.ResultData { *; } + +# 保持 Gson 序列化相关的字段不被混淆 +-keepclassmembers class * { + @com.google.gson.annotations.SerializedName ; +} + +# 保持 Gson 构造方法不被混淆 +-keepclassmembers class com.google.gson.Gson { + public (...); +} + + + + +# 保留 Retrofit 的所有类 +-keep class retrofit2.** { *; } + +# 保留 RxJava2 的所有类 +-keep class io.reactivex.** { *; } + +# 保留 CallAdapter 和 Converter 相关类 +-keep class retrofit2.adapter.** { *; } +-keep class retrofit2.converter.** { *; } + +# 保留类型 Token、类型适配器等相关类 +-keepclassmembers class * { + @retrofit2.http.* ; +} + +# 保留 Retrofit 和 OkHttp 的类和构造方法 +-keep class retrofit2.** { *; } +-keep class okhttp3.** { *; } + +# 保留 Retrofit 接口和方法 +-keep class retrofit2.Retrofit { *; } +-keep class retrofit2.Call { *; } +-keep class retrofit2.http.** { *; } + +# 保留所有使用 Retrofit 注解的字段、方法和类 +-keepclassmembers class * { + @retrofit2.http.* ; +} + +# 保留 Converter 和 CallAdapter 相关类 +-keep class retrofit2.converter.** { *; } +-keep class retrofit2.adapter.** { *; } + +# 保留 `@GET`, `@POST` 等注解 +-keepclassmembers class * { + @retrofit2.http.GET ; + @retrofit2.http.POST ; + @retrofit2.http.PUT ; + @retrofit2.http.DELETE ; + @retrofit2.http.PATCH ; + @retrofit2.http.Headers ; + @retrofit2.http.Query ; + @retrofit2.http.Body ; + @retrofit2.http.Path ; +} + +# 保留 OkHttp 相关类 +-keep class okhttp3.Request { *; } +-keep class okhttp3.Response { *; } +-keep class okhttp3.OkHttpClient { *; } + +# 保留 OkHttp 相关的拦截器 +-keep class okhttp3.Interceptor { *; } +-keep class okhttp3.logging.HttpLoggingInterceptor { *; } + +# 保留 OkHttp 的构造方法 +-keepclassmembers class okhttp3.** { + public (...); +} + +# 保留 OkHttpClient 的链式构建方式 +-keepclassmembers class okhttp3.OkHttpClient { + public okhttp3.OkHttpClient$Builder newBuilder(...); +} + +# 保留 HttpLoggingInterceptor 相关类 +-keep class okhttp3.logging.HttpLoggingInterceptor { *; } + +# 保留 Call 和 Request 方法 +-keepclassmembers class okhttp3.Call { + public *; +} +-keepclassmembers class okhttp3.Request { + public *; +} +-keepclassmembers class okhttp3.Response { + public *; +} + + + + + diff --git a/app/src/androidTest/java/com/live/mylivewallpaper/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/live/mylivewallpaper/ExampleInstrumentedTest.java new file mode 100644 index 0000000..5628e9d --- /dev/null +++ b/app/src/androidTest/java/com/live/mylivewallpaper/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.hd.live.wallpapers; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("com.hd.live.wallpapers", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..4fbc64a --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/assets/Explore.json b/app/src/main/assets/Explore.json new file mode 100644 index 0000000..c0ea808 --- /dev/null +++ b/app/src/main/assets/Explore.json @@ -0,0 +1,4841 @@ +[ + + { + "category": "Abstract", + "description": "The Watcher ⚡", + "downloads": "15915", + "id": 180, + "image": "rcGDtH4i", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1649662069-animation 470001-0250.png", + "wallpapertype": 3 + }, + { + "category": "Movies", + "description": "Banana 🍌", + "downloads": "30165", + "id": 179, + "image": "7f3Bsx60", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1649661826-minions.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Soothing of sea ⛵", + "downloads": "30550", + "id": 178, + "image": "3fabqR4C", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1649485172-sunset boat.png", + "wallpapertype": 3 + }, + { + "category": "Material", + "description": "Glide with the cards 💜", + "downloads": "12076", + "id": 177, + "image": "JcHhSQiF", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1649485125-trianglewave.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Keep calm and play 🎧", + "downloads": "23149", + "id": 176, + "image": "Ve8GXgvF", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1649322136-cassette.png", + "wallpapertype": 3 + }, + { + "category": "Anime", + "description": "Awakening the dragon 🔥", + "downloads": "24039", + "id": 175, + "image": "sLUpavix", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1649322130-dragonball.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "The Eighty\u0027s 🕺", + "downloads": "10381", + "id": 174, + "image": "UHF3y6E7", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1649137233-dotshigh.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Raining triangles ⚡️", + "downloads": "16841", + "id": 231, + "image": "Wg13hPZz", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1655713095-triangs.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "A day in the desert 🌵", + "downloads": "8885", + "id": 230, + "image": "CATQUy6K", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1655713087-materialdesert.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Nature has it\u0027s own secrets 🍃", + "downloads": "27997", + "id": 229, + "image": "NfUDOu0K", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1655452812-fantasyland.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Catch with the lines 🤐", + "downloads": "7333", + "id": 228, + "image": "UNgGb3f6", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1655452805-justlines.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Squares are on a trip 😉", + "downloads": "10223", + "id": 173, + "image": "fi49c06E", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1649137222-squares.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Journey through the color valley 🌈", + "downloads": "26208", + "id": 172, + "image": "xNAUw4vm", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1648970974-plane.png", + "wallpapertype": 3 + }, + { + "category": "Material", + "description": "Rhythm of the circles 💜 ", + "downloads": "17511", + "id": 171, + "image": "582tpb6m", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1648711049-circlegrad.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "There\u0027s two sides for everything 😇", + "downloads": "12718", + "id": 170, + "image": "OqL53EQk", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1648711046-minimalsun.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Gamers paradise 🎮", + "downloads": "67120", + "id": 169, + "image": "ZNIgCsTj", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1648711035-pssyarray0.png", + "wallpapertype": 3 + }, + { + "category": "Material", + "description": "Excited cards 🧡", + "downloads": "11782", + "id": 168, + "image": "bN0WaRht", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1648711023-recarray.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Runaway lines 😉", + "downloads": "9402", + "id": 167, + "image": "GLZf5btI", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1648617302-squareill.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Where trekking ends ⛺", + "downloads": "18369", + "id": 166, + "image": "TslXeryf", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1648617295-vectorcamp.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Escaping the chores of life🧳", + "downloads": "72644", + "id": 165, + "image": "1b9Enzr8", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1648446795-van0001-0250.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Recording the life 📼", + "downloads": "38594", + "id": 204, + "image": "fwPayG3u", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1652165587-record1.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Incursion 😉", + "downloads": "12058", + "id": 203, + "image": "5mMz2Xae", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1652165583-frames.png", + "wallpapertype": 3 + }, + { + "category": "Cityscape", + "description": "Riding the town 🚙", + "downloads": "32298", + "id": 202, + "image": "t7c0Vnr9", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1652009046-town.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Break the rules 🤭", + "downloads": "39315", + "id": 201, + "image": "4k7pbWnN", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1652009042-inteldino.png", + "wallpapertype": 3 + }, + { + "category": "Material", + "description": "Mountain of cards ⛰️", + "downloads": "21303", + "id": 200, + "image": "1OUHBt0A", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1651642619-mount.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Juicy Pine 🍍", + "downloads": "16425", + "id": 199, + "image": "uVXhD8zU", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1651642615-pineapple.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Warm beginning 🌄", + "downloads": "54617", + "id": 198, + "image": "6M4yxFB2", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1651467020-birdsflying.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Ripples ⭕", + "downloads": "62834", + "id": 197, + "image": "xtrPQmnY", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1651467012-drops.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Wriggly cosmos 🖤", + "downloads": "13123", + "id": 41, + "image": "xNFSWdyz", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642490906-dark hole0001-0240.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Swing with the lamp 🛋️", + "downloads": "11339", + "id": 40, + "image": "I0GAalQN", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1642488646-hanging light.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Mood for a rain 🌧️", + "downloads": "30615", + "id": 39, + "image": "Zs3BCXJl", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642486515-rain.png", + "wallpapertype": 3 + }, + { + "category": "Typography", + "description": "Think Big 💡", + "downloads": "9340", + "id": 38, + "image": "eOcINzdF", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642486479-think big.png", + "wallpapertype": 3 + }, + { + "category": "Anime", + "description": "The Saiyan Prince 🔥", + "downloads": "21458", + "id": 37, + "image": "ayb6ospZ", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642486467-vegeta.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Christmas eve ☃️", + "downloads": "18453", + "id": 36, + "image": "qO5rKNj9", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642486448-snow fall.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Play with dino 🦕", + "downloads": "5122", + "id": 35, + "image": "xfMGgp1q", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642486428-0001-0125.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Spiral of light 💙", + "downloads": "11455", + "id": 34, + "image": "GeYfZgVw", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642486424-rolling tube0001-0500.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Guider of the sea 🌊", + "downloads": "10444", + "id": 33, + "image": "qMXGWpEH", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642486388-lighthouse0001-0100.png", + "wallpapertype": 3 + }, + + { + "category": "Typography", + "description": "Always be yourself ❤️", + "downloads": "6754", + "id": 32, + "image": "ewJ0fYQr", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642486351-bee.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Bridge through the mist 🌳", + "downloads": "6774", + "id": 645, + "image": "nFAQaw0h", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1723108025-forest waterfalls_2k.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Pinging for the enemies 🪖", + "downloads": "6701", + "id": 644, + "image": "FJLr4j6T", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1723108060-radar_2k.png", + "wallpapertype": 3 + }, + { + "category": "Movies", + "description": "Charting the unknown one map at a time 🧭", + "downloads": "18324", + "id": 509, + "image": "Q0igIXVA", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1700978539-compass.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Gentle breezes and the turning of blades 🍃", + "downloads": "8983", + "id": 508, + "image": "ysKJIc51", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1700978311-windmill valley.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Decked boat dancing on ripples 🛶", + "downloads": "13654", + "id": 504, + "image": "OrfjM83b", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1700211939-boatreflection2k.png", + "wallpapertype": 3 + }, + { + "category": "Typography", + "description": "Dream it do it 🦄", + "downloads": "12236", + "id": 503, + "image": "oGkTW15v", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1700212340-dream.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Eternal hues dance in the void\u0027s embrace 🎗️", + "downloads": "32127", + "id": 501, + "image": "AH5k0P6g", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1699344949-gradstroke_2k.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Every petal tells a story 🌸", + "downloads": "13810", + "id": 500, + "image": "rNv4fW6u", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1699344917-flowerbranch_2k.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Nostalgia meets sound 🎶", + "downloads": "15172", + "id": 498, + "image": "n9VhFq3s", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1698050834-twoshaderecordplayer2k.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Neon tunnel ⚡", + "downloads": "14192", + "id": 497, + "image": "kVy928fx", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1698050818-room2K.png", + "wallpapertype": 3 + }, + { + "category": "Movies", + "description": "Stay on target 💫🛸", + "downloads": "20936", + "id": 496, + "image": "CoeM1An7", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1697521561-starfighter starwars_2k.png", + "wallpapertype": 3 + }, + { + "category": "Dope", + "description": "Lost in luminescence 🟩", + "downloads": "16625", + "id": 495, + "image": "mC6WLnhq", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1697521556-cyberally_2k.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Colors in a mesmerizing dance 🎨", + "downloads": "17455", + "id": 483, + "image": "4DHhiegM", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1696497611-gradlines2k.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Life a flying plane with ever changing backdrop colors ✈️", + "downloads": "11865", + "id": 481, + "image": "P8S2Gopf", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1696496990-planeexpand2K.png", + "wallpapertype": 3 + }, + { + "category": "Superheroes", + "description": "This looks like a job for Superman 💪", + "downloads": "10963", + "id": 640, + "image": "EfkJFC2q", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1722262750-suoerman2k.png", + "wallpapertype": 3 + }, + { + "category": "Typography", + "description": "Gamer Zone ", + "downloads": "5937", + "id": 639, + "image": "jeavPVlk", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1722262736-gameover2k.png", + "wallpapertype": 3 + }, + { + "category": "Dope", + "description": "Neon Tunnel ⚡", + "downloads": "15158", + "id": 635, + "image": "hCUj7aN6", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1721293058-tunetunnel_2k0001-0300.png", + "wallpapertype": 3 + }, + { + "category": "Material", + "description": "Gradient Hue 🔴", + "downloads": "6912", + "id": 634, + "image": "5LFc76e2", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1721293053-gradient timerlinear_2k.png", + "wallpapertype": 3 + }, + { + "category": "Dope", + "description": "Analog warmth in a digital world 🎧", + "downloads": "8204", + "id": 623, + "image": "miEeOcTs", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1720429273-recordplayer2K.png", + "wallpapertype": 3 + }, + { + "category": "Retro", + "description": "Good old days 💻", + "downloads": "14702", + "id": 622, + "image": "N9KsFl3O", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1720429136-windowsxp2K.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Be calm as koi 🐟", + "downloads": "9404", + "id": 618, + "image": "BeIJvh3T", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1719476480-koi fish.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Edge lighting 🌈", + "downloads": "11309", + "id": 617, + "image": "3MqLDHgV", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1719476474-rgb frame.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Rise against the wind 🪁", + "downloads": "11620", + "id": 613, + "image": "Rw3mt7SW", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1718609085-kitevalley2K.png", + "wallpapertype": 3 + }, + { + "category": "Retro", + "description": "An inviting friend 🐈", + "downloads": "5581", + "id": 612, + "image": "3ToUh4n5", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1718609070-cattable2K.png", + "wallpapertype": 3 + }, + { + "category": "Geometry", + "description": "The Glitch", + "downloads": "5416", + "id": 608, + "image": "IQ432Vmq", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1717667347-cubes2kmain0001-0350.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Pencil Pen and Rubber", + "downloads": "13328", + "id": 607, + "image": "BIZVzLhf", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1717667297-computerportal2k.png", + "wallpapertype": 3 + }, + { + "category": "Movies", + "description": "Peanuts Snoopy ✈️", + "downloads": "21721", + "id": 479, + "image": "9X65KbOj", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1695799095-snoopy.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Sponge loops 🧽", + "downloads": "9122", + "id": 478, + "image": "vWLsGClJ", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1695799085-gradienttube_2k.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Desert nights where stars write their own stories 🌵", + "downloads": "17040", + "id": 476, + "image": "3T8jLvog", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1695198738-pyramid star gaze.png", + "wallpapertype": 3 + }, + { + "category": "Geometry", + "description": "Life\u0027s like a rolling ball on a track full of twists and turns ", + "downloads": "8669", + "id": 475, + "image": "D1NMe3so", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1695198716-rolling ball2K.png", + "wallpapertype": 3 + }, + { + "category": "Anime", + "description": "When in doubt nap it out - Snorlax\u0027s motto 💤", + "downloads": "23170", + "id": 473, + "image": "kDPZBVYW", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1694594155-snorlax.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Enter the neon-lit future where beats and bytes collide ⚡", + "downloads": "14665", + "id": 472, + "image": "7t3pUOLY", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1694590930-retrodot_2k.png", + "wallpapertype": 3 + }, + { + "category": "Gaming", + "description": "Mario time 💥", + "downloads": "18024", + "id": 470, + "image": "0hzyAtom", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1694076946-supermario2K.png", + "wallpapertype": 3 + }, + { + "category": "Space", + "description": "Imagination is the limit 🧑🏻‍🚀🎈", + "downloads": "28778", + "id": 469, + "image": "0DaVbFgs", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1694076934-flying astronaut.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Melodic Vibrating Wires 🎸", + "downloads": "11127", + "id": 467, + "image": "oVmTNSUe", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1693380422-guitar.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Wind\u0027s Caress 🌼", + "downloads": "6041", + "id": 466, + "image": "XAYWrv2H", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1693380406-flower.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Sunlit meadows 🌲", + "downloads": "18514", + "id": 464, + "image": "1bjIgeUr", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1692776611-vectorbirdscenery.png", + "wallpapertype": 3 + }, + { + "category": "Dope", + "description": "Quantum engine ⚡", + "downloads": "18174", + "id": 463, + "image": "LCYPha4j", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1692776605-cubeneon.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Magical Forest 🌙", + "downloads": "10444", + "id": 603, + "image": "3ZRN94cV", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1716827412-forestbrook2K.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Curved glass ✨", + "downloads": "14164", + "id": 602, + "image": "bnSzZRO0", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1716799592-rainbow_2k0001-0200.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "A feline farewell to daylight ☀️🐈", + "downloads": "12906", + "id": 598, + "image": "V7m6i1fw", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1715848167-cat_2k.png", + "wallpapertype": 3 + }, + { + "category": "Material", + "description": "Embracing the subtle artistry of shades 🟠🟡🟢🔵", + "downloads": "7843", + "id": 597, + "image": "GnYQwXOT", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1715848159-halfcircle_2k.png", + "wallpapertype": 3 + }, + { + "category": "Space", + "description": "Star gazing 💫", + "downloads": "13899", + "id": 593, + "image": "fN82DWoX", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1714984090-star gazing astronaut.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Through the window night whispers its secrets 🪟", + "downloads": "31153", + "id": 592, + "image": "x1sAjaXT", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1714984080-outside window view.png", + "wallpapertype": 3 + }, + { + "category": "Movies", + "description": "EVE 💓", + "downloads": "22127", + "id": 588, + "image": "IgLHh1Sk", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1714060538-eve_2K.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Propelling the colors 🌈", + "downloads": "10949", + "id": 587, + "image": "lhvpF8Rx", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1714060447-propeller_2K.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Never ending ☀️", + "downloads": "21092", + "id": 583, + "image": "rbA5MsC2", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1713257200-retro sun rally.png", + "wallpapertype": 3 + }, + { + "category": "Retro", + "description": "Switch of an era 🎶", + "downloads": "21591", + "id": 582, + "image": "YKog49vH", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1713257189-ipod_2k.png", + "wallpapertype": 3 + }, + { + "category": "Cityscape", + "description": "Soul of the street painted in rain drops", + "downloads": "12640", + "id": 578, + "image": "2qtG1ZMH", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1712388148-rainingsidewalk2k.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Circles shift into places", + "downloads": "7883", + "id": 577, + "image": "rekDpLvG", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1712388120-move2k.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Fourfold Path", + "downloads": "8218", + "id": 461, + "image": "VKy4mqPT", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1692167442-jlines2k.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Red Radiance ⭕", + "downloads": "19172", + "id": 460, + "image": "D0ZKbEIl", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1692167428-energyfield2k.png", + "wallpapertype": 3 + }, + { + "category": "Typography", + "description": "Apple \u0027s Hello 👋🏻", + "downloads": "19110", + "id": 458, + "image": "HumJo4BE", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1691565388-hello2k.png", + "wallpapertype": 3 + }, + { + "category": "Retro", + "description": "Evening in the garage 🔧", + "downloads": "32082", + "id": 457, + "image": "irEbHd9Y", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1691565326-street2k.png", + "wallpapertype": 3 + }, + { + "category": "Movies", + "description": "Hiding in the shadows 🦇 Waiting to strike ⚡", + "downloads": "23746", + "id": 455, + "image": "wfUACS1t", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1690956632-batcave_2k.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Lines of music 🎸", + "downloads": "10193", + "id": 454, + "image": "fayjwWkG", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1690956236-two shade record player_2k.png", + "wallpapertype": 3 + }, + { + "category": "Material", + "description": "Sliding cards 🎴", + "downloads": "11580", + "id": 452, + "image": "QncwPgzG", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1690361489-jumping_shade_2k.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Thunder ⚡", + "downloads": "31019", + "id": 451, + "image": "iBepAVKk", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1690361455-lightning2K.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "A captivating view that holds our gaze refusing to let go 🏞️", + "downloads": "10129", + "id": 449, + "image": "akJXn52S", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1689839410-cloudvalley2K.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Swirling into the hearts ➰", + "downloads": "20209", + "id": 448, + "image": "NWjAcdlJ", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1689838759-gradientloop2K.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Keep smiling until it\u0027s clear 📷", + "downloads": "13533", + "id": 446, + "image": "7iG4Usoh", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "camerafocus2k7676.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "The pop waves 🌊", + "downloads": "20111", + "id": 445, + "image": "WgRq68CP", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1689149442-waves.png", + "wallpapertype": 3 + }, + { + "category": "Anime", + "description": "Itachi Uchiha 🔥", + "downloads": "47419", + "id": 573, + "image": "EuWIeJiO", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1711352204-itachi_moon_2K.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Rise and grind 🍵", + "downloads": "17604", + "id": 572, + "image": "JOuItFm3", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1711352182-coffee_cup_2K.png", + "wallpapertype": 3 + }, + { + "category": "Retro", + "description": "Record Play Repeat 🎤", + "downloads": "14541", + "id": 568, + "image": "69vNVpUj", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1710404402-TeenageEngineering2K.png", + "wallpapertype": 3 + }, + { + "category": "Miscellaneous", + "description": "Pop out Pop in ⚽", + "downloads": "16221", + "id": 567, + "image": "TZUgQRtJ", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1710404359-cylinderballs2k.png", + "wallpapertype": 3 + }, + { + "category": "Movies", + "description": "Welcome to Arrakis ☀️", + "downloads": "17919", + "id": 563, + "image": "m31EhtRz", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1709535876-dune0001-0045.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Glimpse of parallel world 🌍", + "downloads": "18688", + "id": 562, + "image": "oVLnApSP", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1709535857-4 layer land.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Pulses to infinity ♾️", + "downloads": "17887", + "id": 558, + "image": "B2mpiW7j", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1708590245-lineexpand360.png", + "wallpapertype": 3 + }, + { + "category": "Material", + "description": "Melting into the backdrops🔵", + "downloads": "13878", + "id": 557, + "image": "L3dv7UKW", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1708590234-layerlava.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "They glow 🌙", + "downloads": "19554", + "id": 552, + "image": "CkdnroBR", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1707727905-firefilebottle.png", + "wallpapertype": 3 + }, + { + "category": "Geometry", + "description": "Harnessing the power ⚛️", + "downloads": "16133", + "id": 551, + "image": "DrNBnY6z", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1707727879-spherical2K.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Still a long way to go 🚶🏻‍♀️", + "downloads": "11983", + "id": 547, + "image": "JTL6lDty", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1706956207-long way_2k.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Atoms surfed the waves of fun ⚛️", + "downloads": "16729", + "id": 546, + "image": "JaRcbEiC", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1706956200-wavedots_2k.png", + "wallpapertype": 3 + }, + { + "category": "Space", + "description": "There\u0027s a way out 🌌", + "downloads": "40456", + "id": 443, + "image": "dgHwYSLM", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1688456077-bk2k.png", + "wallpapertype": 3 + }, + { + "category": "Geometry", + "description": "Rising blocks 🧱", + "downloads": "8798", + "id": 442, + "image": "rjLqdbJn", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1688456022-risingBlocks2K.png", + "wallpapertype": 3 + }, + { + "category": "Travel", + "description": "As the landscape unfolds outside the window 🚊", + "downloads": "14730", + "id": 440, + "image": "mqMsnKui", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1687675294-train doorwindow2k.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Fusion 🌀", + "downloads": "11282", + "id": 439, + "image": "KAVzISrB", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1687675278-test2k.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Era of gamers 🎮", + "downloads": "14820", + "id": 437, + "image": "bVjyp4hr", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1686986248-tv2k.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Flowing qubits 💡", + "downloads": "11363", + "id": 436, + "image": "72WQsAgc", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1686986110-dotlayer2k.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Sky shows the way ✨", + "downloads": "13406", + "id": 434, + "image": "Qirg9kAw", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1686295557-lighthouse2k.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "stripes 🔻", + "downloads": "18209", + "id": 433, + "image": "1FACemca", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1686295552-steplines2k.png", + "wallpapertype": 3 + }, + { + "category": "Gaming", + "description": "Childhood memories 🕹️", + "downloads": "19855", + "id": 431, + "image": "jDKXMEw2", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1685514859-gameboy_2k.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Catch the toast 🍞", + "downloads": "5430", + "id": 430, + "image": "U0FJ38hC", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1685514843-bread toaster_2k.png", + "wallpapertype": 3 + }, + { + "category": "Cityscape", + "description": "Beauty of late night snow ☃️", + "downloads": "27034", + "id": 428, + "image": "CA95YeWL", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1684743860-streetlight_2k.png", + "wallpapertype": 3 + }, + { + "category": "Material", + "description": "Popping pops 🎉", + "downloads": "9486", + "id": 427, + "image": "xoP63fkn", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1684743824-stringingcolour_2k.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "House\u0027s like a step 🪜", + "downloads": "6960", + "id": 542, + "image": "5Zv1adoC", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1705999571-merge houses.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Loops like domino ♦️", + "downloads": "17721", + "id": 541, + "image": "QMpWG2bY", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1705999547-morf lines.png", + "wallpapertype": 3 + }, + { + "category": "Space", + "description": "Spaceship on a joy ride 🚀", + "downloads": "12519", + "id": 537, + "image": "mMaCO5Dp", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1704961330-vector planet.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "A sunny beach day 🏖️", + "downloads": "9754", + "id": 536, + "image": "cnyDCeda", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1704961259-beach guard.png", + "wallpapertype": 3 + }, + { + "category": "Typography", + "description": "Happy New Year 🎆", + "downloads": "4631", + "id": 532, + "image": "PhMH24dz", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1704208922-happynewyear_2k.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Quack quack 🦆", + "downloads": "23614", + "id": 531, + "image": "blzMJ4Ip", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1704208911-duck_2k.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Cubes Glide on Breeze 🟨", + "downloads": "9265", + "id": 528, + "image": "PpxmrE8C", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1703667173-cube cylinder_2k.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Winter\u0027s Silent Whispers ☃️", + "downloads": "4833", + "id": 527, + "image": "MA8NXHL7", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1703667129-snow globe.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Retro vibes ⚡", + "downloads": "16840", + "id": 523, + "image": "LyfTNpZr", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1702654981-neon_lines_2k.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Seaside bliss framed in sunlight 🌊", + "downloads": "14632", + "id": 522, + "image": "xXNtEKmv", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1702654961-horizontal_landscape_2k.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Winter embrace with snowflakes as delicate as whispered dreams ❄️☃️", + "downloads": "10265", + "id": 513, + "image": "NMmZzpDI", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1701677478-colourful snowfall.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "A tapestry of seamless blending 🟥🟧🟨", + "downloads": "7989", + "id": 512, + "image": "bJs7kS5q", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1701677467-square expanition flip.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Planets doing its job 🌍", + "downloads": "16227", + "id": 425, + "image": "kifBrWvn", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1684046356-solar_system_orange_2k.png", + "wallpapertype": 3 + }, + { + "category": "Geometry", + "description": "Dancing with the flow 🙄", + "downloads": "26572", + "id": 424, + "image": "P1h65qJA", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1684046241-red_black_2k_vbr2.png", + "wallpapertype": 3 + }, + { + "category": "Space", + "description": "Vroooom 🚀", + "downloads": "26702", + "id": 422, + "image": "9mWULPBx", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1683189916-rocket.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Nearing the end of day ⛵", + "downloads": "15541", + "id": 421, + "image": "GqeN0UxH", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1683189872-boatshadow_2k.png", + "wallpapertype": 3 + }, + { + "category": "Dope", + "description": "Trapped in unknown 💢 ", + "downloads": "13065", + "id": 419, + "image": "Qrvs6PAb", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "lineneon.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Fading ghost 👻", + "downloads": "29733", + "id": 418, + "image": "yiYvJB7c", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1682493720-movingghost_2k.png", + "wallpapertype": 3 + }, + { + "category": "Cityscape", + "description": "A rainy night ☔", + "downloads": "68431", + "id": 416, + "image": "ZcCYk74p", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1681804057-rainingstreet.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Mirror reality 😎", + "downloads": "7271", + "id": 415, + "image": "rgALv9TE", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1681804030-flip.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Make a wish 💫", + "downloads": "31631", + "id": 413, + "image": "v48jd1uq", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1681201758-mountainskyview.png", + "wallpapertype": 3 + }, + { + "category": "Dope", + "description": "Frames of reality 🔮", + "downloads": "15110", + "id": 412, + "image": "XJK8uRe4", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1681201744-frame2k.png", + "wallpapertype": 3 + }, + { + "category": "Geometry", + "description": "Linking links 🔗", + "downloads": "8785", + "id": 410, + "image": "0ugr2XTF", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1680509340-rubber.png", + "wallpapertype": 3 + }, + { + "category": "Cityscape", + "description": "Cruising through the street 🚗", + "downloads": "19331", + "id": 409, + "image": "CegovyQJ", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1680509310-neoncity.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "I can wiggle wiggle 🌻🌵", + "downloads": "10645", + "id": 407, + "image": "4TERVbsO", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1679896707-cactus.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Silky waves 🌊", + "downloads": "16259", + "id": 406, + "image": "KG3R7iX4", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1679896671-waves.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Best part of the day - Evening 🌆", + "downloads": "9277", + "id": 403, + "image": "sMcSilt2", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1679204730-sunlightreflectionvbr1.png", + "wallpapertype": 3 + }, + { + "category": "Geometry", + "description": "Expanding bubbles 🎈", + "downloads": "7193", + "id": 402, + "image": "OgYCR5WZ", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1679204714-bubble.png", + "wallpapertype": 3 + }, + { + "category": "Anime", + "description": "You are already under my genjutsu 🥷🏻", + "downloads": "133342", + "id": 400, + "image": "I9rPTLMw", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1678429646-itachiuchiha.png", + "wallpapertype": 3 + }, + { + "category": "Typography", + "description": "Let it go 😉", + "downloads": "10826", + "id": 399, + "image": "okXRmlH7", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1678429628-letitgo.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Glitch ⚡", + "downloads": "9707", + "id": 397, + "image": "gvJl2drZ", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1677823065-synth.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Looping trios 😎", + "downloads": "6160", + "id": 396, + "image": "67SLDahN", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1677822985-twotripattern.png", + "wallpapertype": 3 + }, + { + "category": "Gaming", + "description": "Fallen hero 😃", + "downloads": "28919", + "id": 394, + "image": "D4dkOoLq", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1677218914-among us_2k.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Sailing the evening wind ⛵", + "downloads": "10105", + "id": 393, + "image": "oKUqdwa1", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1677218894-lighthouse boat.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Flying above the grass 🍃", + "downloads": "8682", + "id": 390, + "image": "HcKWT93r", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1676443822-hotairballoon.png", + "wallpapertype": 3 + }, + { + "category": "Dope", + "description": "Waves within waves 😁", + "downloads": "18588", + "id": 389, + "image": "R84zOhsM", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1676443809-circlestripes2K.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Gentleness of evening wind 🍃", + "downloads": "13770", + "id": 387, + "image": "o28DawGu", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1675674075-tricutreevalley.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "With me comes the tail ✈️", + "downloads": "33202", + "id": 386, + "image": "bMOCTl9N", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1675674061-planetail.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Yin and yang ☯", + "downloads": "7919", + "id": 384, + "image": "DYWXTiLx", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1674890254-yinyang2K.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Pulse of energy ⚡", + "downloads": "9623", + "id": 383, + "image": "Nh1ofe8P", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1674890229-wave2k.png", + "wallpapertype": 3 + }, + { + "category": "Space", + "description": "Am I on the right planet 🧑🏻‍🚀", + "downloads": "29524", + "id": 381, + "image": "iQW8dSPH", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1674109405-Astrounaut on planet_2k.png", + "wallpapertype": 3 + }, + { + "category": "Geometry", + "description": "Waves contained in a traingle 📐", + "downloads": "8373", + "id": 380, + "image": "kzDQR9JP", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1674109401-gradientframewave_2k.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Northern lights ☁", + "downloads": "20410", + "id": 378, + "image": "MDuYI51V", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1673154571-lines.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Neon drops 🌟", + "downloads": "19901", + "id": 377, + "image": "b1vrFOlV", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1673154563-raindrops.png", + "wallpapertype": 3 + }, + { + "category": "Geometry", + "description": "Breathing cubes 🟩", + "downloads": "17639", + "id": 375, + "image": "YGXbzLM1", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1672397960-cubesmerge.png", + "wallpapertype": 3 + }, + { + "category": "Dope", + "description": "Sprint through cyber tunnel ⚡", + "downloads": "14289", + "id": 374, + "image": "HsjFeWJv", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1672397952-tunnel2K.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Window of time 🪟", + "downloads": "17742", + "id": 372, + "image": "oPxUq89D", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1671781199-frame.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Christmas time ❄️", + "downloads": "26055", + "id": 371, + "image": "59PsapVJ", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1671781190-lightsetchristmas_2k .png", + "wallpapertype": 3 + }, + { + "category": "Movies", + "description": "The seeds of the sacred tree 🍃", + "downloads": "21113", + "id": 369, + "image": "q7WLCVaM", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1670919451-avatar0601-1200.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Boo boo 👻", + "downloads": "23431", + "id": 368, + "image": "2G49hE5K", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1670919440-pixelghost2k.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Line that divides dimension 🔮", + "downloads": "8405", + "id": 367, + "image": "OseuYg9c", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1670574738-flipbubbles2k.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Ripples 🌊", + "downloads": "12342", + "id": 366, + "image": "fy6ijzpL", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1670574723-speaker2k.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Energy orb ⚡", + "downloads": "25517", + "id": 352, + "image": "OloNzAQy", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1669881138-scifireactor.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Messing around with lines 🌈", + "downloads": "13971", + "id": 351, + "image": "ktlWo6YM", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1669881134-lineplay.png", + "wallpapertype": 3 + }, + { + "category": "Movies", + "description": "Glitch in the matrix 💾", + "downloads": "37534", + "id": 350, + "image": "p3u7Osyn", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1669615907-matrix.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Colourful memories of old school 📼", + "downloads": "32147", + "id": 349, + "image": "HVKo2fx5", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1669615899-cassetterainbow.png", + "wallpapertype": 3 + }, + { + "category": "Space", + "description": "In search for life 🚀", + "downloads": "15434", + "id": 347, + "image": "zRWeQaAj", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1669098076-exoplanet.png", + "wallpapertype": 3 + }, + { + "category": "Geometry", + "description": "Streaks through the cracks 🔦", + "downloads": "42678", + "id": 346, + "image": "2YdFqCme", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1669098067-bleedinglight.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Looking for the prey 🦅", + "downloads": "17104", + "id": 344, + "image": "ILohYjwu", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1668584410-treesabove.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Ocean planet 😁", + "downloads": "32764", + "id": 343, + "image": "ToXANS7D", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1668584406-planetinocean.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Wind and flowers 🌷", + "downloads": "9931", + "id": 341, + "image": "9HPnwGeM", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1668151041-flowerfield.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Light bars ⚡", + "downloads": "10833", + "id": 340, + "image": "AOLH63u2", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1668151038-spectrum.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Up up and away ✈", + "downloads": "17367", + "id": 339, + "image": "sxVPWklG", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1667900451-planewindow.png", + "wallpapertype": 3 + }, + { + "category": "Pixel", + "description": "Torii ⛩", + "downloads": "17351", + "id": 338, + "image": "VYeXZAd4", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1667900441-japanesearch.png", + "wallpapertype": 3 + }, + { + "category": "Material", + "description": "Pebble waves 🌌", + "downloads": "16096", + "id": 333, + "image": "f0tcegFG", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1667557680-chips.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Cornering stripes 🏁", + "downloads": "13463", + "id": 332, + "image": "jvMzuYBS", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1667557670-turninglines.png", + "wallpapertype": 3 + }, + { + "category": "Cityscape", + "description": "A day in city 🏙", + "downloads": "11885", + "id": 329, + "image": "uHbALW25", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1667146134-planeabove.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Pew pew 😁", + "downloads": "15250", + "id": 328, + "image": "bKT7ZB8v", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1667146129-pewgun.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Simple as a flower 🌼", + "downloads": "7734", + "id": 327, + "image": "luVyJaZX", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1666766421-flowerpot.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "The dead shall raise 💀", + "downloads": "26938", + "id": 326, + "image": "YBsEl3bd", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1666766418-walkingskeleton.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Eat drink and be scary 🎃", + "downloads": "21949", + "id": 324, + "image": "UXmzNlDI", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1666457699-cementry330.png", + "wallpapertype": 3 + }, + { + "category": "Dope", + "description": "Wormhole 🚀", + "downloads": "19846", + "id": 323, + "image": "g3SMjGI8", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1666357791-looper51.png", + "wallpapertype": 3 + }, + { + "category": "Anime", + "description": "Show me where is the enemy ", + "downloads": "44975", + "id": 322, + "image": "25QVbcyG", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1666073442-erenyeager.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "✖️⭕", + "downloads": "20094", + "id": 321, + "image": "kfISWXG6", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1666073451-glitchface.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Love for RGB ⌨️", + "downloads": "39426", + "id": 320, + "image": "5ZVq6Prd", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1665764837-keys50.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Travel through time ⏳", + "downloads": "23381", + "id": 319, + "image": "lzmt7owB", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1665764832-rgbfinal.png", + "wallpapertype": 3 + }, + { + "category": "Dope", + "description": "Are we in a simulation 🤔", + "downloads": "9950", + "id": 318, + "image": "FQNd2aKp", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1665474502-cybercity.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Splitting halves ⚛️", + "downloads": "3033", + "id": 317, + "image": "FxKsChSA", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1665474490-toggle3.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Countryside 🏕", + "downloads": "22600", + "id": 306, + "image": "Pl1uckY0", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1665245461-nightgrass1.png", + "wallpapertype": 3 + }, + { + "category": "Material", + "description": "Trying to expand 🤔", + "downloads": "8120", + "id": 305, + "image": "e8p9NE2q", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1665245449-criclebreathe.png", + "wallpapertype": 3 + }, + { + "category": "Anime", + "description": "Any technique is worthless before my eyes ⚔️", + "downloads": "113532", + "id": 303, + "image": "o8O5Zjg9", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1664871083-itachiuchiha2.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Stretch some candy 🍬", + "downloads": "16610", + "id": 302, + "image": "QqugVMzt", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1664871075-candy.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Air drops 🪂", + "downloads": "22613", + "id": 301, + "image": "Bdq0uYwg", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1664526005-forestairdrop.png", + "wallpapertype": 3 + }, + { + "category": "Geometry", + "description": "Bouncers ⭕", + "downloads": "8236", + "id": 300, + "image": "2PXEkfjJ", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1664525996-twoshadeball.png", + "wallpapertype": 3 + }, + { + "category": "Pixel", + "description": "Festival vibe 🎆", + "downloads": "12369", + "id": 299, + "image": "cDJIejZY", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1664170966-pixelfireworks.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Swirl 🌀", + "downloads": "14260", + "id": 298, + "image": "NdU7By6V", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1664170950-spriallines.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Trains are beautiful 🚄", + "downloads": "13239", + "id": 297, + "image": "cskeY8Fx", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1663832513-bridgetrain.png", + "wallpapertype": 3 + }, + { + "category": "Geometry", + "description": "Magic below the blocks 🪄", + "downloads": "12364", + "id": 296, + "image": "m3i5XUIA", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1663832509-risingneon.png", + "wallpapertype": 3 + }, + { + "category": "Typography", + "description": "Make it count ⏳", + "downloads": "14671", + "id": 295, + "image": "KEUARZqg", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1663568574-makeitcount3.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Just floating around 🌊", + "downloads": "13852", + "id": 294, + "image": "1UWTpG87", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1663568542-jellyfish1.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Gradient strings 🪡", + "downloads": "10977", + "id": 293, + "image": "NiCIf7nO", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1663217492-gradientline.png", + "wallpapertype": 3 + }, + { + "category": "Cityscape", + "description": "Way back home 🪟", + "downloads": "7507", + "id": 292, + "image": "DEBxzG9u", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1663217494-window.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Ring Planet 🌌", + "downloads": "47734", + "id": 285, + "image": "FrinSg37", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1662879807-saturn1.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Kinda spooky 🦇", + "downloads": "26097", + "id": 284, + "image": "i6GlZz4g", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1662879788-spookyforest.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Disco floor 💃🏻", + "downloads": "10471", + "id": 283, + "image": "4tyKUwEl", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1662621794-discovibe.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Buzzing bees 🐝", + "downloads": "9126", + "id": 282, + "image": "JBg1PslY", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1662621769-beehive.png", + "wallpapertype": 3 + }, + { + "category": "Cityscape", + "description": "Golden Gate Bridge 🌉", + "downloads": "14313", + "id": 281, + "image": "Aio6auR2", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1662355278-goldengatebridge.png", + "wallpapertype": 3 + }, + { + "category": "Movies", + "description": "I solemnly swear that I am up to no good 🪄", + "downloads": "9892", + "id": 280, + "image": "q07B9wFL", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1662355270-footprint.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Above the clouds 🛩️", + "downloads": "16277", + "id": 279, + "image": "qYZW1Rv0", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1662008358-planeabovewater.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Halftone 🪄", + "downloads": "6331", + "id": 278, + "image": "4HyjqJlt", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1662008355-Dots.png", + "wallpapertype": 3 + }, + { + "category": "Pixel", + "description": "Pixel warmth 🔥", + "downloads": "13832", + "id": 277, + "image": "hyzI7Pk3", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1661751428-pixelcampfire.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Push and Pull 🥸", + "downloads": "5337", + "id": 276, + "image": "PiAKybTX", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1661751415-pushline.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Meow 🐈", + "downloads": "16366", + "id": 273, + "image": "i0E3UoF9", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1661490668-sleepingcat.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Crystal dimension 🤩", + "downloads": "17247", + "id": 272, + "image": "yCWtPghR", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1661490666-animation81.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Hilltop holidays 🖖🏻", + "downloads": "5709", + "id": 271, + "image": "bC9oJ78l", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1660751887-Hillhouse.png", + "wallpapertype": 3 + }, + { + "category": "Geometry", + "description": "The maze 🫣", + "downloads": "13626", + "id": 270, + "image": "eYlUWwG3", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1660751880-patternrgb.png", + "wallpapertype": 3 + }, + { + "category": "Cityscape", + "description": "Winter night ☃", + "downloads": "55895", + "id": 269, + "image": "rT350txs", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1660723718-snowapartment.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Minimal waves 🌊", + "downloads": "8365", + "id": 268, + "image": "jxsMPnZO", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1660723701-abstractwaves.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Weekend rides 🚙", + "downloads": "15007", + "id": 267, + "image": "2pHIefF3", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1660376766-sunsetride.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Entering the night 🌙", + "downloads": "6464", + "id": 266, + "image": "GrLxaBz5", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1660376731-lighthousevector.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Go with the flow ⛵", + "downloads": "15836", + "id": 265, + "image": "ZIj76vOl", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1660118394-redboat.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Strings of reality ⭕", + "downloads": "22984", + "id": 264, + "image": "aiVWKcY1", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1660118383-contourarray.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Nature heals 🌳", + "downloads": "19023", + "id": 263, + "image": "PjXMoci9", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1659866405-fallleaves.png", + "wallpapertype": 3 + }, + { + "category": "Material", + "description": "Clash of opposites 🌈", + "downloads": "8520", + "id": 262, + "image": "N8A1wHLX", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1659866395-loopie.png", + "wallpapertype": 3 + }, + { + "category": "Cityscape", + "description": "Wire\u0027s connecting people 👕👖", + "downloads": "11849", + "id": 259, + "image": "xRM4ArGk", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1659593345-hangingclothes.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Everything is energy ⚡", + "downloads": "35593", + "id": 258, + "image": "IN0nhgL4", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1659593329-circuit.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Waves of shades 🌊", + "downloads": "8988", + "id": 257, + "image": "qyIXY1ZG", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1659335310-colourgrid6.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "It\u0027s fading 🤞🏻", + "downloads": "6495", + "id": 256, + "image": "beVy1x6O", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1659335301-fadinglines1.png", + "wallpapertype": 3 + }, + { + "category": "Anime", + "description": "Domain Expansion 🤞🏻", + "downloads": "55325", + "id": 255, + "image": "PiQtZJen", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1658994833-gojo1.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Face towards light 🌻", + "downloads": "13841", + "id": 254, + "image": "RHDuFAgb", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1658994666-sunflower.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Night brings fear 🏰", + "downloads": "28856", + "id": 253, + "image": "nAKjYWZ3", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1658655062-nightcatle.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "The path isn\u0027t a straight line, it\u0027s a spiral 🌀", + "downloads": "17420", + "id": 252, + "image": "qVJI5SN0", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1658649402-crcfluid.png", + "wallpapertype": 3 + }, + { + "category": "Dope", + "description": "Through the unknown 🤐", + "downloads": "19806", + "id": 251, + "image": "zLp2Vj4x", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1658385467-animation 670001-0120.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Endings are beautiful 🌇", + "downloads": "17405", + "id": 250, + "image": "NMy608Ya", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1658385460-sunset.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Glide through your dreams 🛩", + "downloads": "6136", + "id": 249, + "image": "EUqnwDWt", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1658134331-glider.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Strip\u0027s traffic 😉", + "downloads": "10830", + "id": 248, + "image": "kGB3yMqb", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1658134320-grid1.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "To honour the time machine - James Webb Telescope", + "downloads": "17217", + "id": 247, + "image": "n5cMUxgb", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1657812000-galaxy.png", + "wallpapertype": 3 + }, + { + "category": "Typography", + "description": "Life is a journey 🚗 ", + "downloads": "7788", + "id": 246, + "image": "yZvaUhFu", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1657811993-lifejourney.png", + "wallpapertype": 3 + }, + { + "category": "Cityscape", + "description": "Comfort of home 🌃", + "downloads": "20284", + "id": 245, + "image": "BCT9fx3h", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1657517940-window scape new.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Home is where plants are🪴", + "downloads": "17135", + "id": 244, + "image": "5Vu7v1yp", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1657517928-leaves1.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Make a wish 🌠", + "downloads": "40387", + "id": 243, + "image": "cLVaypI2", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1657291661-shootingstar.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Flocking beams ⚡", + "downloads": "19099", + "id": 242, + "image": "578AbrmR", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1657291653-dots.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Raining colors 🌧", + "downloads": "34561", + "id": 241, + "image": "yWAg8i4Q", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1657031337-rainbowrain.png", + "wallpapertype": 3 + }, + { + "category": "Material", + "description": "Looping loops ⭕", + "downloads": "5955", + "id": 240, + "image": "Oi8ofNPb", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1657031328-circle.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Cruising the unknown 🚀", + "downloads": "24491", + "id": 239, + "image": "AFY4hrK0", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1656773205-rocketnew.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Monolith of energy ⚡", + "downloads": "18018", + "id": 238, + "image": "nXOH7dPa", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1656773192-trianglewaves.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Blow 💨", + "downloads": "9642", + "id": 237, + "image": "YwJ2fH5V", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1656482859-paperwindmill.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Fusion 🌀", + "downloads": "25882", + "id": 236, + "image": "RQt2913o", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1656482849-Energyfield.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Land of dreams 🌳", + "downloads": "40565", + "id": 235, + "image": "jkobCr5V", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1656235975-butterflygreen.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Blazing through the tunnel ⚡", + "downloads": "39397", + "id": 234, + "image": "Fa8NqnjJ", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1656235972-circletunnel23.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Chilling through the countryside 🚙", + "downloads": "12497", + "id": 233, + "image": "rzTJdu4Q", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1655976665-countrydrive.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Shades of sun 🕶", + "downloads": "8436", + "id": 232, + "image": "Xwz4GZqr", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1655976648-colour_1.png", + "wallpapertype": 3 + }, + + { + "category": "Movies", + "description": "Stay Out Of My Territory - Heisenberg ⚗️", + "downloads": "28476", + "id": 227, + "image": "NbxPlFc3", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1655190766-breaking bad.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Old school 🎧", + "downloads": "26803", + "id": 225, + "image": "S6F4TnJ7", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1655189835-walkman.png", + "wallpapertype": 3 + }, + { + "category": "Anime", + "description": "It\u0027s my turn 🔥", + "downloads": "92346", + "id": 224, + "image": "K6ySTF5k", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1654933736-gokuhair.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Being minimal 😉", + "downloads": "32791", + "id": 223, + "image": "h4Z5OQDq", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1654933732-snowfall.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Enjoy the smell of rain ☔", + "downloads": "12485", + "id": 222, + "image": "1VcGN9RO", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1654668060-rainvector.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Trying to connect 😉", + "downloads": "9309", + "id": 221, + "image": "ZUkGF4Ez", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1654668052-roundewave.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Spring is nature\u0027s way of saying let\u0027s party 🌄", + "downloads": "6956", + "id": 220, + "image": "LMBHkEXS", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1654413275-landscape.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Digital branches ⚡", + "downloads": "31536", + "id": 219, + "image": "wzT3YAxH", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1654413266-simdots.png", + "wallpapertype": 3 + }, + { + "category": "Movies", + "description": "Beginning of the Hawkin\u0027s curse 🎃", + "downloads": "96580", + "id": 218, + "image": "VKpGv0RL", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1654161170-vecnahouse.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Summer waves 🌊", + "downloads": "6533", + "id": 217, + "image": "Q0HK57si", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1654161159-wavvve.png", + "wallpapertype": 3 + }, + { + "category": "Cityscape", + "description": "Life is like a roller coaster, live it, be happy, enjoy life 🎢", + "downloads": "11891", + "id": 216, + "image": "tUuqKWn5", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1653896481-rollercoster40.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Dustin , Do you copy 😉", + "downloads": "15823", + "id": 215, + "image": "EBMK7NTF", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1653896478-walkietalkie.png", + "wallpapertype": 3 + }, + { + "category": "Dope", + "description": "Through the hurdles ⚡", + "downloads": "24404", + "id": 214, + "image": "wQ37vMgz", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1653546875-animation56.png", + "wallpapertype": 3 + }, + { + "category": "Typography", + "description": "Today is your day 😁", + "downloads": "19519", + "id": 213, + "image": "VnoQmB5a", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1653546861-today.png", + "wallpapertype": 3 + }, + { + "category": "Material", + "description": "Rotary cards 🎴", + "downloads": "47420", + "id": 212, + "image": "a0TEy1IM", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1653291520-roundedsquare2.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "In one drop of water are found all the secrets of all the oceans", + "downloads": "16073", + "id": 211, + "image": "k6uprVsf", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1653291509-boattrip6.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Converging stripes ⭕", + "downloads": "7242", + "id": 210, + "image": "e1Evxh7K", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1653028917-cutcircle2.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Dropping frames 📐", + "downloads": "14824", + "id": 209, + "image": "9QDqL4BM", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1653028915-framerotate2.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Comfort of home 🏡", + "downloads": "50495", + "id": 208, + "image": "nG0Qs51U", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1652767860-livingroom.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Ice and fire 🔥❄️", + "downloads": "15892", + "id": 207, + "image": "eNWAYdob", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1652767839-zig.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Cozy summer 🏖️", + "downloads": "16156", + "id": 206, + "image": "zE9R6gSG", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1652337222-seawave.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Mirror dimension 🪄", + "downloads": "4103", + "id": 205, + "image": "Ukx7qj3K", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1652337215-cutsphere.png", + "wallpapertype": 3 + }, + + { + "category": "Landscape", + "description": "Mining the coins 🪙", + "downloads": "19665", + "id": 196, + "image": "CeFq9Owm", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1651215776-mining.png", + "wallpapertype": 3 + }, + { + "category": "Material", + "description": "Flipping cards 🎴", + "downloads": "21405", + "id": 195, + "image": "5mXc9s83", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1651215762-tilewave.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Blue Planet 🔵", + "downloads": "95474", + "id": 194, + "image": "osJuAmep", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1651049003-planet007.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Droplets 💧", + "downloads": "6104", + "id": 193, + "image": "TMiOn2da", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1651048971-droppattern.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Way back home 🚦", + "downloads": "21282", + "id": 192, + "image": "nCfxJUEd", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1650866841-traffic light.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Ghost Rider 🔥", + "downloads": "28949", + "id": 191, + "image": "agjLlwE3", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1650866838-skullnew.png", + "wallpapertype": 3 + }, + { + "category": "Cityscape", + "description": "Wakeup call 🍵", + "downloads": "15116", + "id": 190, + "image": "5zsv48Oi", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1650692872-windownearsubway.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Tick Tock ⏰", + "downloads": "10522", + "id": 189, + "image": "EX9qN2Sp", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1650692865-ballpattern.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Where am I 🕵🏻‍♀️", + "downloads": "5186", + "id": 188, + "image": "VjDfLBgT", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1650437848-bushsub.png", + "wallpapertype": 3 + }, + { + "category": "Geometry", + "description": "Never ending triangles 📐", + "downloads": "10538", + "id": 187, + "image": "ViDSUzfG", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1650437837-foldingtriangle.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Hexagonal waves ⚡", + "downloads": "24948", + "id": 186, + "image": "mVsNlo9a", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1650263214-hex0001-0300.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Home sweet home 🌎", + "downloads": "65003", + "id": 185, + "image": "SXkQLevp", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1650263209-solarsystem30.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "I remember every night 🌙", + "downloads": "43685", + "id": 184, + "image": "ZckCjNdM", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1650005692-circlingstartrail.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Chill 🥤", + "downloads": "5713", + "id": 183, + "image": "LXi2ztvh", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1650005674-chill.png", + "wallpapertype": 3 + }, + + { + "category": "Pattern", + "description": "Circling ⭕", + "downloads": "10382", + "id": 164, + "image": "M3w0tZxG", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1648446785-pluspattern.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Confused steps 🤭", + "downloads": "13653", + "id": 163, + "image": "Xi0J6UdY", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1648310198-contour.png", + "wallpapertype": 3 + }, + { + "category": "Typography", + "description": "Taking rest is also being productive 💤", + "downloads": "20668", + "id": 162, + "image": "M8qTZGFQ", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1648195234-restisproductive.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "I\u0027m in love with the grass 🌳", + "downloads": "16630", + "id": 161, + "image": "uHybICne", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1648112120-grasscutter0001-0310.png", + "wallpapertype": 3 + }, + { + "category": "Dope", + "description": "The Eighty\u0027s Vibe 🕺 ", + "downloads": "16953", + "id": 160, + "image": "9hoTBQZL", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1648112112-animation380001-0120.png", + "wallpapertype": 3 + }, + { + "category": "Superheroes", + "description": "I think I\u0027m superman\u0027s favorite 💚", + "downloads": "8838", + "id": 159, + "image": "Oox1TRYe", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1647851269-supperman0001-0093.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Confused ghost 👻", + "downloads": "15853", + "id": 158, + "image": "joyRhH14", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1647851266-panghost.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Joy of smiley\u0027s 😉", + "downloads": "3987", + "id": 157, + "image": "m7hJcMwv", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1647760634-smiley.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Hide and seek with the cats 😸", + "downloads": "18341", + "id": 156, + "image": "BLck8Qrx", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1647760632-cats.png", + "wallpapertype": 3 + }, + { + "category": "Movies", + "description": "The Resistance ski speeder 🔥", + "downloads": "33573", + "id": 155, + "image": "qm6kevX7", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1647590528-starwars0080-0240.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Gift from nature 🌊", + "downloads": "24805", + "id": 154, + "image": "opYn9biL", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1647590523-waterfall.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Rainbow effect 🌈", + "downloads": "29502", + "id": 153, + "image": "IrWp7Pok", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1647418463-circlingrainbowhigh.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Through the town road 🤠", + "downloads": "4135", + "id": 152, + "image": "Gvj8U5RM", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1647418455-cowbo45.png", + "wallpapertype": 3 + }, + { + "category": "Anime", + "description": "There is something you have to protect ⚔️", + "downloads": "19655", + "id": 150, + "image": "9FzEXMxC", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1647246742-nezukobox.png", + "wallpapertype": 3 + }, + { + "category": "Geometry", + "description": "Beats ⚡", + "downloads": "10892", + "id": 149, + "image": "cqWTe6jN", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1647246737-greenanim.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Countryside are always refreshing 🏡", + "downloads": "7561", + "id": 148, + "image": "dGAhZSgC", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1646986493-house 3.png", + "wallpapertype": 3 + }, + { + "category": "Cityscape", + "description": "Chores of the city 🌇", + "downloads": "7860", + "id": 147, + "image": "prKe6Qwu", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1646986489-sidetrain.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Joy of celebration 🎉", + "downloads": "16140", + "id": 146, + "image": "L4VbOsYe", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1646986481-fireworkview.png", + "wallpapertype": 3 + }, + { + "category": "Cityscape", + "description": "Feeling the calm 📻", + "downloads": "50154", + "id": 145, + "image": "KbaDizGu", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1646888235-windowview.png", + "wallpapertype": 3 + }, + { + "category": "Dope", + "description": "Through the warp tunnel 🚀", + "downloads": "19924", + "id": 144, + "image": "xVDSuvjo", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1646888230-animation390001-0120.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Winter cave 🪵", + "downloads": "5577", + "id": 143, + "image": "YfFaywoH", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1646725986-foresthouse.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Juicy slices 🍉", + "downloads": "5634", + "id": 142, + "image": "CUgLfE0M", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1646725977-watermelon.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Love for old 🎷", + "downloads": "22506", + "id": 141, + "image": "fshCMoKF", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1646500025-musictape.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Joy of baloons 🎈", + "downloads": "4514", + "id": 140, + "image": "4aNESDct", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1646500005-baloon.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Camping nights ⛺", + "downloads": "17785", + "id": 139, + "image": "YzMrhTdj", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1646306068-snowforest.png", + "wallpapertype": 3 + }, + { + "category": "Gaming", + "description": "Gamer\u0027s paradise 👨🏻‍💻", + "downloads": "28767", + "id": 138, + "image": "brocN6Da", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1646306064-pc.png", + "wallpapertype": 3 + }, + { + "category": "Superheroes", + "description": "Batmobile in Action 🦇", + "downloads": "26251", + "id": 137, + "image": "0oKr7TM4", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1646123484-batmobile.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Gateway to the metaverse ⚡️", + "downloads": "10402", + "id": 136, + "image": "ATgbnVti", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1646123475-animation33.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Trying to meet the ends 😁", + "downloads": "3460", + "id": 135, + "image": "E39sJtD8", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1646123470-tripattern.png", + "wallpapertype": 3 + }, + { + "category": "Superheroes", + "description": "On a date 🦇 🐱", + "downloads": "41699", + "id": 134, + "image": "sUMx4igS", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1645948957-thebatman.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Being retro 🕺", + "downloads": "5221", + "id": 133, + "image": "Y5EsZt9h", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1645948953-animation330001-0120.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Beats 💓", + "downloads": "32496", + "id": 132, + "image": "UJN3sn7G", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1645948947-heartbeat.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Weekend life 🎣", + "downloads": "21075", + "id": 131, + "image": "UHGgV6xz", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1645689678-fishingboat.png", + "wallpapertype": 3 + }, + { + "category": "Anime", + "description": "Pokeball ❤️", + "downloads": "29725", + "id": 130, + "image": "gf98ksKa", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1645689676-pokeball0001-0100.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Colour Blades 💚", + "downloads": "7661", + "id": 129, + "image": "byXhakCg", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1645689669-yellowpanel.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Serene Night ✨", + "downloads": "23302", + "id": 128, + "image": "MG6JrH1F", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1645601780-windmillill.png", + "wallpapertype": 3 + }, + { + "category": "Gaming", + "description": "Pac Man 🕹", + "downloads": "42164", + "id": 127, + "image": "wZWDOt1x", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1645601772-pacman.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Cube of Wisdom ⚡", + "downloads": "15387", + "id": 126, + "image": "6nPkafpA", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1645601756-icecube.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Run with the stripes 💜", + "downloads": "12677", + "id": 125, + "image": "54nkHS0T", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1645515883-intercutline.png", + "wallpapertype": 3 + }, + { + "category": "Dope", + "description": "Cyber Planet ", + "downloads": "7650", + "id": 124, + "image": "FdBayDEC", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1645515875-animation620001-0120.png", + "wallpapertype": 3 + }, + { + "category": "Gaming", + "description": "Love\u0027s clicking ⌨️", + "downloads": "51051", + "id": 123, + "image": "Kuj9oSd4", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1645515864-key0001-0247.png", + "wallpapertype": 3 + }, + { + "category": "Geometry", + "description": "Rings and Rings ✌🏻", + "downloads": "28938", + "id": 122, + "image": "NVcnSvTy", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1645515845-vectorgalaxy.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Vroom Vroom 🏎️", + "downloads": "7868", + "id": 121, + "image": "OCXNm04f", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1645259201-car0001-0150.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Meow Meow 🐱", + "downloads": "7582", + "id": 120, + "image": "UauRwNgt", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1645259197-catdoodles.png", + "wallpapertype": 3 + }, + { + "category": "Geometry", + "description": "Core of the ancient magic 🔮", + "downloads": "8480", + "id": 119, + "image": "QHtIJZqr", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1645259194-cubetemp0001-0250.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Curly curly 🖤", + "downloads": "2843", + "id": 118, + "image": "J0YFxAoq", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1645173539-zigzag.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Solve the riddle 🔮", + "downloads": "5099", + "id": 117, + "image": "cxm8NBsl", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1645173533-ancientartifact.png", + "wallpapertype": 3 + }, + { + "category": "Typography", + "description": "Just charging 🔋", + "downloads": "9093", + "id": 116, + "image": "6h5i7aTK", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1645173517-justcharging.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Rainbow rain 🌈", + "downloads": "4098", + "id": 115, + "image": "A0xUfN6E", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1645173469-rainbowcloud.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Imagination is important than knowledge 🔬", + "downloads": "7391", + "id": 114, + "image": "u0sL3bFq", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1645087072-galaxyhouse.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Magic steps 🔮", + "downloads": "4093", + "id": 113, + "image": "FTQVdDNo", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1645087070-arr0040-0119.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Dancing dots 💚", + "downloads": "2173", + "id": 112, + "image": "wb9c0oGx", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1645000768-circlesplashpattern.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Train\u0027s coming 🚞", + "downloads": "9956", + "id": 111, + "image": "JcweovKf", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1645000755-train0001-0250.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Follow the wave ⚡", + "downloads": "13076", + "id": 110, + "image": "E9LzS5PG", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1645000748-Comp2dot.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Sprouting forest 🌳", + "downloads": "2845", + "id": 109, + "image": "qefFvO0a", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1644653266-colourtree.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Where are the humans 🛸", + "downloads": "14777", + "id": 108, + "image": "xtTe6CAl", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1644653255-ufo.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Hello anybody home 🚀", + "downloads": "27032", + "id": 107, + "image": "EmrYWiA1", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1644653245-blackhole.png", + "wallpapertype": 3 + }, + { + "category": "Typography", + "description": "Error ", + "downloads": "24550", + "id": 106, + "image": "cofEiJ9d", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1644653226-error.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Disco disco 🕺", + "downloads": "3723", + "id": 105, + "image": "0tExmCbu", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1644653213-animation 210001-0240.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Loving the queit life 🏡", + "downloads": "3643", + "id": 104, + "image": "Af0esPFS", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1644566689-hotair.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Sailing through the horizon ⛵", + "downloads": "7979", + "id": 103, + "image": "eBdwiH6f", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1644566665-oceanboat.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Lava lamp ☮️", + "downloads": "14879", + "id": 102, + "image": "l01wioFT", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1644566624-lavalamp.png", + "wallpapertype": 3 + }, + { + "category": "Geometry", + "description": "Realm of cubes ▪️◻️◾◼️", + "downloads": "7134", + "id": 101, + "image": "hAe9R7wf", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1644566610-decube.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Waves 💜", + "downloads": "7413", + "id": 100, + "image": "MWjAhRZF", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1644566581-gradientwave.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Every action has a reaction 🤓", + "downloads": "16880", + "id": 99, + "image": "9kC2wZUn", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1644566566-pend.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Dots dots go away 😜", + "downloads": "5505", + "id": 98, + "image": "UoYrjhKc", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1644566535-dotarray.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Tik tok Tik tok ⏳", + "downloads": "3457", + "id": 97, + "image": "i3xABMhj", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1644566514-rotateballs.png", + "wallpapertype": 3 + }, + { + "category": "Anime", + "description": "Feeling the rain 🌧️", + "downloads": "13316", + "id": 96, + "image": "H59OQqzb", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1644566465-girl in rain.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Camping folks ⛺", + "downloads": "13276", + "id": 84, + "image": "gYska4tH", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1643356780-camp fire.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Night sky ✨", + "downloads": "11100", + "id": 83, + "image": "xtVHQ5qX", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1643356776-night shy.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Creating memories in the snow, one angel at a time ☃️❄️", + "downloads": "1936", + "id": 705, + "image": "rX1J9fqj", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1733126052-snow angel_2k.png", + "wallpapertype": 3 + }, + { + "category": "Movies", + "description": "Christmas time for snoopy ❄️☃️", + "downloads": "1220", + "id": 704, + "image": "85IPsh6E", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1733125861-snoopy house_2k.png", + "wallpapertype": 3 + }, + { + "category": "Geometry", + "description": "The wave of joy 🌊", + "downloads": "7106", + "id": 182, + "image": "nYb783FD", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1649835082-wave.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "The opposite pairs 😉", + "downloads": "11237", + "id": 181, + "image": "g4NZzoAl", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1649835076-dna.png", + "wallpapertype": 3 + }, + { + "category": "Movies", + "description": "Roll into adventure with BB-8 💫", + "downloads": "1886", + "id": 700, + "image": "HDabQGWh", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1732175087-BB-8_2k.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Chasing the breeze ⛵", + "downloads": "1682", + "id": 699, + "image": "31HPOwuK", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1732175071-waving boat_2k.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Let\u0027s Bravo 💪🏻", + "downloads": "3553", + "id": 695, + "image": "x3rgHsu0", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1731314484-johnny bravo_2k.png", + "wallpapertype": 3 + }, + { + "category": "Dope", + "description": "Energy tiles ⚡", + "downloads": "1964", + "id": 694, + "image": "35VZSQ2q", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1731314477-cybersandwich_2k0001-0350.png", + "wallpapertype": 3 + }, + { + "category": "Superheroes", + "description": "From the shadows, I rise 🕷✨", + "downloads": "4665", + "id": 690, + "image": "7tphTLSA", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1730447376-spiderman noir_2k.png", + "wallpapertype": 3 + }, + { + "category": "Miscellaneous", + "description": "Under the watchful eye of the moon, she rides the night 🌕✨🧙‍♀️", + "downloads": "2033", + "id": 689, + "image": "l8rWAa52", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1730447262-witch night_2k.png", + "wallpapertype": 3 + }, + { + "category": "Space", + "description": "Moon 🌕", + "downloads": "5277", + "id": 685, + "image": "EDVQUOwk", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1729501659-moon_2k.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Boo want to be scary👻 ", + "downloads": "3210", + "id": 684, + "image": "PUW2EhR0", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1729501572-ghostwind_2k.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Someone\u0027s being cooked 🪦", + "downloads": "2618", + "id": 680, + "image": "eQTYlByI", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1728551180-graveyard_2k.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Woo hahaha 🎃🕯️", + "downloads": "2211", + "id": 679, + "image": "Wwu1pX5t", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1728551171-pumkin candle_2k.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Monsoon cocktail 🍸", + "downloads": "2692", + "id": 675, + "image": "XHRV2kop", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1727687143-cocktail_2k.png", + "wallpapertype": 3 + }, + { + "category": "Space", + "description": "The red planet 🌍", + "downloads": "3070", + "id": 674, + "image": "vufNpc9r", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1727687132-planet landscape_2k.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Ace Burner ♠️♥️♦️♣️", + "downloads": "7229", + "id": 670, + "image": "bHAg0sop", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1726732728-card on fire_2k.png", + "wallpapertype": 3 + }, + { + "category": "Cityscape", + "description": "Golden Gate Bridge 🌉", + "downloads": "4815", + "id": 669, + "image": "NBfadl9x", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1726732699-golden gate bridge view_2k.png", + "wallpapertype": 3 + }, + { + "category": "Dope", + "description": "The core ⚡", + "downloads": "6344", + "id": 665, + "image": "si2RCIbU", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1725870751-hexogen_2k.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Radiate like flowers 🌼", + "downloads": "3406", + "id": 664, + "image": "K6zaDsGx", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1725870736-fadingflowers_2k.png", + "wallpapertype": 3 + }, + { + "category": "Movies", + "description": "Spider Glitch 🕸️", + "downloads": "11606", + "id": 660, + "image": "qducAoan", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1724917214-spiderlogoglitch_2k.png", + "wallpapertype": 3 + }, + { + "category": "Tech", + "description": "Give your device some power surge ⚡", + "downloads": "5455", + "id": 659, + "image": "Ob9d70IC", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1724917204-generator_2k.png", + "wallpapertype": 3 + }, + { + "category": "Anime", + "description": "Autonomous Ultra Instinct 🔥", + "downloads": "20255", + "id": 655, + "image": "9f0Cepkb", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1724059272-gokuultrainstinct2k.png", + "wallpapertype": 3 + }, + { + "category": "Geometry", + "description": "⭕ pop out ⭕", + "downloads": "4045", + "id": 654, + "image": "Hogh0Jt3", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1724059263-cylinder2k0001-0250.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Wiggly wiggly 😁", + "downloads": "11687", + "id": 82, + "image": "ku28xKdm", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1643356768-deform.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Where\u0027s my mouse 🤔", + "downloads": "7843", + "id": 81, + "image": "ijQndh5H", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1643356755-old computer0001-0250.png", + "wallpapertype": 3 + }, + { + "category": "Dope", + "description": "Enter the metaverse⚡", + "downloads": "14561", + "id": 79, + "image": "pY1Fq7tw", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1643271285-animation 450001-0200.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Busy riding the sands 🌵", + "downloads": "11250", + "id": 78, + "image": "cM85T0jo", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1643010196-car0001-0247.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Atoms play 🔬", + "downloads": "3933", + "id": 77, + "image": "FgTs76uc", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1643010160-animation 250001-0120.png", + "wallpapertype": 3 + }, + { + "category": "Superheroes", + "description": "I am vengeance 🔥", + "downloads": "79041", + "id": 76, + "image": "lRNOhvxW", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1643010123-batman.png", + "wallpapertype": 3 + }, + { + "category": "Typography", + "description": "Vibe 🕺", + "downloads": "4625", + "id": 75, + "image": "86ixr5kA", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1643010117-vibe.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Warp drive through the vaccum ✨", + "downloads": "22782", + "id": 74, + "image": "tFNP0Ywm", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1643010114-erer.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Need a bucket to collect all these 🪣", + "downloads": "22076", + "id": 73, + "image": "FGPpaDgu", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1642839034-playstation symbol0250-0499.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Fabric of reality 😉", + "downloads": "10565", + "id": 71, + "image": "jVHDdWh6", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642752256-dot 1.png", + "wallpapertype": 3 + }, + { + "category": "Nature", + "description": "Enjoying through the woods 🚗", + "downloads": "19355", + "id": 70, + "image": "4Oiby2ms", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642752242-night forest ride0001-0150.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Don\u0027t tell anyone about this base 🚀", + "downloads": "4460", + "id": 69, + "image": "clMvD7o4", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642752214-pyramid0001-0250.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Festival of light 🕯️", + "downloads": "11457", + "id": 68, + "image": "ABnsbwC3", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1642750093-lanterns0118-1000.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Searching for glaciers ☹️", + "downloads": "7258", + "id": 67, + "image": "32yZIpDV", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642750069-boat ride.png", + "wallpapertype": 3 + }, + { + "category": "Anime", + "description": "Rengoku🔥", + "downloads": "51805", + "id": 66, + "image": "IVLv624U", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642750053-rengoku.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Spiral of spectrum 🌈", + "downloads": "5468", + "id": 65, + "image": "u6lHZCQF", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642750022-circle0001-0200.png", + "wallpapertype": 3 + }, + { + "category": "Geometry", + "description": "Antigravity keeps me floating⚡", + "downloads": "4770", + "id": 64, + "image": "JKvqt5Pa", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642750008-dune0001-0150.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Through the pulses 🔮 .", + "downloads": "9721", + "id": 63, + "image": "CBy8i1kc", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642749980-worm hole0001-0120.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Booo Booo 👻", + "downloads": "79317", + "id": 62, + "image": "VflzaU4B", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642749968-ghost.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Countryside 🚜", + "downloads": "7608", + "id": 61, + "image": "N20IdgeG", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1642749960-farmhouse0001-0250.png", + "wallpapertype": 3 + }, + { + "category": "Typography", + "description": "Be a percent better everyday 💚", + "downloads": "43680", + "id": 60, + "image": "EDLpF1YJ", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1642668016-1better.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "WIndmill 🍃", + "downloads": "6871", + "id": 59, + "image": "AY4nRzhf", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642667421-windmill0001-0250.png", + "wallpapertype": 3 + }, + { + "category": "Anime", + "description": "Founding Titan", + "downloads": "14549", + "id": 58, + "image": "SbVr2TeA", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642667392-Aot.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Ride by the river 🚗", + "downloads": "7984", + "id": 57, + "image": "gDf0iX2S", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642667356-night ride0001-0150.png", + "wallpapertype": 3 + }, + { + "category": "Superheroes", + "description": "God of thunder⚡", + "downloads": "30090", + "id": 56, + "image": "0TIqwLE7", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642667341-thor.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Exploring the deep waters 🌊", + "downloads": "8687", + "id": 55, + "image": "kfMaSvZ4", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642667334-sub0001-0250.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Cyber waves 💜", + "downloads": "6689", + "id": 54, + "image": "ZP4qMsQe", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1642491028-shape10001-0120.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Hoping for Dr Strange to come 😉", + "downloads": "18501", + "id": 53, + "image": "VR4E6smB", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642491015-strange portal.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Have fun at the carnival 🎡", + "downloads": "13168", + "id": 52, + "image": "z4bn3Hlk", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1642491005-carnival0001-0500.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Pink flower ", + "downloads": "7908", + "id": 51, + "image": "VPIEWTYB", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642490992-flower.png", + "wallpapertype": 3 + }, + { + "category": "Amoled", + "description": "Feel the pulse 😊", + "downloads": "10718", + "id": 50, + "image": "41gcyMYN", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642490982-cube0001-0250.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Cat love 🐈", + "downloads": "9241", + "id": 49, + "image": "Om2nPfBg", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642490976-cat.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Have a good day 😎", + "downloads": "5768", + "id": 48, + "image": "Q0Ironk1", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1642490971-coffee.png", + "wallpapertype": 3 + }, + { + "category": "Pattern", + "description": "Magic Flower 💙", + "downloads": "6247", + "id": 47, + "image": "T3YR9Wnf", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642490964-blue flower.png", + "wallpapertype": 3 + }, + { + "category": "Abstract", + "description": "Waveform 🖤", + "downloads": "15265", + "id": 46, + "image": "HpqY1Qxd", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642490957-shape0001-0120.png", + "wallpapertype": 3 + }, + { + "category": "Anime", + "description": "Ultra Instinct 🔥", + "downloads": "70321", + "id": 45, + "image": "mV5S6Qko", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1642490947-goku ultra.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Planet love 🌍", + "downloads": "16894", + "id": 44, + "image": "VZ6i51qI", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642490937-planet.png", + "wallpapertype": 3 + }, + { + "category": "Typography", + "description": "Loading ...... ", + "downloads": "13881", + "id": 43, + "image": "5kdBMGiW", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642490932-loading.png", + "wallpapertype": 3 + }, + { + "category": "Minimal", + "description": "Color popping jet 🌈", + "downloads": "7164", + "id": 42, + "image": "iGXD8kwI", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642490923-jet.png", + "wallpapertype": 3 + }, + + { + "category": "Landscape", + "description": "Climb the hill 💙", + "downloads": "7916", + "id": 31, + "image": "4ldD89Fn", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642486325-ropeway.png", + "wallpapertype": 3 + }, + + + { + "category": "Minimal", + "description": "Dance with the cactus 🌵", + "downloads": "6398", + "id": 30, + "image": "6BiDZEWA", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642486262-catcus.png", + "wallpapertype": 3 + }, + + + { + "category": "Amoled", + "description": "Ball of fire 🔥", + "downloads": "20861", + "id": 29, + "image": "gLiRYKEk", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642486187-geometryball0001-0250.png", + "wallpapertype": 3 + }, + { + "category": "Landscape", + "description": "Spooky 🎃", + "downloads": "87567", + "id": 25, + "image": "BHMsxl02", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1639590645-halloween2021.png", + "wallpapertype": 3 + } +] \ No newline at end of file diff --git a/app/src/main/assets/Shift.json b/app/src/main/assets/Shift.json new file mode 100644 index 0000000..476ddef --- /dev/null +++ b/app/src/main/assets/Shift.json @@ -0,0 +1,1036 @@ +[ + { + "category": "Material", + "description": "Sticky notes 📒", + "downloads": "2103", + "id": 620, + "image": "YJD7LnCX", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1720085704-square2k.png", + "wallpapertype": 2 + }, + { + "category": "Amoled", + "description": "Get scared 🙀", + "downloads": "2846", + "id": 616, + "image": "rZLjIRhE", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1719215549-glitchskull2K.png", + "wallpapertype": 2 + }, + { + "category": "Landscape", + "description": "The switch 🌵", + "downloads": "1847", + "id": 615, + "image": "vD7QEWG1", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1719215546-desertdune2K.png", + "wallpapertype": 2 + }, + { + "category": "Superheroes", + "description": "Spidey sense ⚡", + "downloads": "9491", + "id": 611, + "image": "lgX9Ano5", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1718267939-spiderman_2k.png", + "wallpapertype": 2 + }, + { + "category": "Minimal", + "description": "Happy for the sunlight ☀️", + "downloads": "1836", + "id": 610, + "image": "tkKnUw0l", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1718267930-sunlight plant_2k.png", + "wallpapertype": 2 + }, + { + "category": "Minimal", + "description": "Morning brew ☕️", + "downloads": "5436", + "id": 576, + "image": "VUPXYARh", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1711962964-coffeecup2k.png", + "wallpapertype": 2 + }, + { + "category": "Geometry", + "description": "Shifting to place", + "downloads": "3785", + "id": 575, + "image": "58hJ1Nr6", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1711962940-cubes2k0001-0050.png", + "wallpapertype": 2 + }, + { + "category": "Space", + "description": "You never know what is on other side 🌌", + "downloads": "8644", + "id": 571, + "image": "7BbSo6rh", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1711087406-blackHole2K_new.png", + "wallpapertype": 2 + }, + { + "category": "Amoled", + "description": "Choose your card ♥️♣️♦️♠️", + "downloads": "7814", + "id": 570, + "image": "1KzDkET8", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1711087377-cards2K.png", + "wallpapertype": 2 + }, + { + "category": "Anime", + "description": "Feel pain, contemplate pain, accept pain, know pain 🍃", + "downloads": "15354", + "id": 566, + "image": "TDObkX4i", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1710142587-pain2k.png", + "wallpapertype": 2 + }, + { + "category": "Pattern", + "description": "Drops that freeze in time 💧", + "downloads": "2622", + "id": 565, + "image": "q04esM6p", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1710142568-cutlines2k.png", + "wallpapertype": 2 + }, + { + "category": "Minimal", + "description": "Christmas tree brings warmth and joy 🎄❄️", + "downloads": "306", + "id": 708, + "image": "91FmL0Jl", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1733734622-christmas tree_2k.png", + "wallpapertype": 2 + }, + { + "category": "Miscellaneous", + "description": "Santa 🎅🏻", + "downloads": "260", + "id": 707, + "image": "ajNEZA8D", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1733734615-santa_2k.png", + "wallpapertype": 2 + }, + { + "category": "Superheroes", + "description": "I am Ironman 💪🏻", + "downloads": "1326", + "id": 703, + "image": "ICzHuLJP", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1732780381-ironman neon_2k.png", + "wallpapertype": 2 + }, + + { + "category": "Minimal", + "description": "Tower house 🗼", + "downloads": "591", + "id": 698, + "image": "xsjW8gvY", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1731915691-tower_2k.png", + "wallpapertype": 2 + }, + { + "category": "Nature", + "description": "Crayon Mountains Popping 🖍️", + "downloads": "674", + "id": 697, + "image": "t3mSRDCL", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1731915688-colour mountain_2k.png", + "wallpapertype": 2 + }, + { + "category": "Amoled", + "description": "Synth pyramid 📐", + "downloads": "1553", + "id": 693, + "image": "x38Pp6Vr", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1731050705-trineon_2k.png", + "wallpapertype": 2 + }, + { + "category": "Material", + "description": "Falling waves 🌊", + "downloads": "792", + "id": 692, + "image": "yYkH9Vq0", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1731050684-circle to layer_2k.png", + "wallpapertype": 2 + }, + { + "category": "Movies", + "description": "Darth Vader ⚡", + "downloads": "2206", + "id": 688, + "image": "ouPNjUaG", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1730105713-dark vader_2k.png", + "wallpapertype": 2 + }, + { + "category": "Minimal", + "description": "Boooo 👻", + "downloads": "1070", + "id": 687, + "image": "9uTM4ACd", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1730105705-Boo_2k.png", + "wallpapertype": 2 + }, + { + "category": "Miscellaneous", + "description": "Knock knock , Who is there ? 🧛", + "downloads": "1886", + "id": 683, + "image": "KO0uSwXC", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1729154624-opening door_2k.png", + "wallpapertype": 2 + }, + { + "category": "Miscellaneous", + "description": "Way to October vacation 🎃🏰 ", + "downloads": "889", + "id": 682, + "image": "JNEV0mit", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1729151449-haunted mansion_2k.png", + "wallpapertype": 2 + }, + { + "category": "Material", + "description": "Be precise as an arrow ▶️ ", + "downloads": "1534", + "id": 678, + "image": "L0bF283S", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1728292173-slidingtile_2k.png", + "wallpapertype": 2 + }, + { + "category": "Landscape", + "description": "Desert Shift 🌵☀️", + "downloads": "1361", + "id": 677, + "image": "S5dMltrq", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1728292118-desertdunes2K.png", + "wallpapertype": 2 + }, + { + "category": "Pattern", + "description": "The curves 😎", + "downloads": "2478", + "id": 673, + "image": "o6e9FsQv", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1727341664-curvedlines2k.png", + "wallpapertype": 2 + }, + { + "category": "Minimal", + "description": "Good old days 💾", + "downloads": "1559", + "id": 672, + "image": "lx845U6Q", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1727341650-pc2k.png", + "wallpapertype": 2 + }, + { + "category": "Superheroes", + "description": "Spidey zips down 🕸️", + "downloads": "3520", + "id": 668, + "image": "F8hIbuJ4", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1726475725-spidermanhanging2k.png", + "wallpapertype": 2 + }, + { + "category": "Pet", + "description": "Cutie Penguin 🐧", + "downloads": "1474", + "id": 667, + "image": "Tcntw8bH", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1726475712-penguinface2k.png", + "wallpapertype": 2 + }, + { + "category": "Anime", + "description": "⚡Thunder Breathing 1st form⚡", + "downloads": "3094", + "id": 663, + "image": "bAJ08nia", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1725522176-zenitsu_2k.png", + "wallpapertype": 2 + }, + { + "category": "Minimal", + "description": "Don a pair of Air Jordans 👟", + "downloads": "1921", + "id": 662, + "image": "OXSLmJtw", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1725522167-nike shoe_2k.png", + "wallpapertype": 2 + }, + { + "category": "Geometry", + "description": "Building blocks 🟪🟥", + "downloads": "1274", + "id": 658, + "image": "DmvYtg80", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1724667176-blocks2K.png", + "wallpapertype": 2 + }, + { + "category": "Material", + "description": "Pop and mix 🎉", + "downloads": "1549", + "id": 657, + "image": "7EmxM1jV", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1724667168-bubbles2K.png", + "wallpapertype": 2 + }, + { + "category": "Superheroes", + "description": "Wolverine ☠️", + "downloads": "4756", + "id": 653, + "image": "FYVlR1NU", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1723713273-wolverine2k.png", + "wallpapertype": 2 + }, + { + "category": "Material", + "description": "Jiggle Jiggle 🍬", + "downloads": "1994", + "id": 652, + "image": "LCc5pKIB", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1723713251-Gradientpalette2k.png", + "wallpapertype": 2 + }, + { + "category": "Minimal", + "description": "Any one can be a king 👑", + "downloads": "2395", + "id": 643, + "image": "fDpQxayu", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1722847957-chess2k.png", + "wallpapertype": 2 + }, + { + "category": "Pet", + "description": "Kitty gang 🐈🐾", + "downloads": "1439", + "id": 642, + "image": "MlpP4B0S", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1722847942-catpaw2K.png", + "wallpapertype": 2 + }, + { + "category": "Superheroes", + "description": "Deadpool and Wolverine 🔥", + "downloads": "6087", + "id": 638, + "image": "ncBUSZ2L", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1721896129-DeadpoolWolverine2K.png", + "wallpapertype": 2 + }, + { + "category": "Cityscape", + "description": "A new day begins 🪟", + "downloads": "2436", + "id": 637, + "image": "jIEJ9BA1", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1721896117-throughwindow1_2K.png", + "wallpapertype": 2 + }, + { + "category": "Minimal", + "description": "A summer morning 🏡", + "downloads": "2073", + "id": 633, + "image": "XFlIokSP", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1721032986-Dayflip2K.png", + "wallpapertype": 2 + }, + { + "category": "Space", + "description": "Saturn spins adorned with dazzling rings 🌌", + "downloads": "10756", + "id": 545, + "image": "H2aKjmDL", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1706514413-ringplanet_2k.png", + "wallpapertype": 2 + }, + { + "category": "Material", + "description": "Evolving circles ⭕", + "downloads": "7355", + "id": 544, + "image": "ZyDusM4P", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1706513923-circleblow_2k.png", + "wallpapertype": 2 + }, + { + "category": "Landscape", + "description": "Shifting Serenity Views 🏠", + "downloads": "2885", + "id": 540, + "image": "C8g7pe24", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1705651363-newlandscapehouse2k.png", + "wallpapertype": 2 + }, + { + "category": "Geometry", + "description": "Harmony unfolds 🟦", + "downloads": "5555", + "id": 539, + "image": "48YVaEuq", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1705651353-cuberotate2k.png", + "wallpapertype": 2 + }, + { + "category": "Nature", + "description": "Day switch ☀️🌙", + "downloads": "3386", + "id": 535, + "image": "8J7czLSB", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1704703062-window sunrise.png", + "wallpapertype": 2 + }, + { + "category": "Minimal", + "description": "Looping to position 💫", + "downloads": "3050", + "id": 534, + "image": "pvYL4hFO", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1704703054-expandingcircle.png", + "wallpapertype": 2 + }, + { + "category": "Landscape", + "description": "Once upon a time in the woods 🌳", + "downloads": "2961", + "id": 530, + "image": "hnseFk3Z", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1703947630-home_bush_2k.png", + "wallpapertype": 2 + }, + { + "category": "Material", + "description": "Popping up 🎈", + "downloads": "2338", + "id": 529, + "image": "WOXEH5D4", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1703947537-popping_colors_2k.png", + "wallpapertype": 2 + }, + { + "category": "Movies", + "description": "It\u0027s a warning 🦇", + "downloads": "9634", + "id": 525, + "image": "sZoI6gRf", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1702968393-bat signal.png", + "wallpapertype": 2 + }, + { + "category": "Material", + "description": "Shades shuffle fun begins 🎨", + "downloads": "2795", + "id": 524, + "image": "GeONUQ6J", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1702967787-circleshift.png", + "wallpapertype": 2 + }, + { + "category": "Pattern", + "description": "Feel the gentle shift 🍃", + "downloads": "4692", + "id": 521, + "image": "z9GA6cHW", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1702286051-cylinder2k.png", + "wallpapertype": 2 + }, + { + "category": "Material", + "description": "Rising sun ☀️", + "downloads": "2985", + "id": 520, + "image": "rwi1MSsY", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1702286038-raising sun.png", + "wallpapertype": 2 + }, + { + "category": "Amoled", + "description": "On Off 😎", + "downloads": "5914", + "id": 632, + "image": "QVtPCovm", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1721032969-onoff2K.png", + "wallpapertype": 2 + }, + { + "category": "Superheroes", + "description": "Hiding in the shadows 🦇", + "downloads": "7283", + "id": 621, + "image": "YXD8CmeA", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1720085732-batman_2k.png", + "wallpapertype": 2 + }, + + { + "category": "Minimal", + "description": "Rolling to destiny 🎱", + "downloads": "4790", + "id": 561, + "image": "qC4psWve", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1709273956-billiard2k.png", + "wallpapertype": 2 + }, + { + "category": "Amoled", + "description": "Petals jiggle in the breeze 🌸", + "downloads": "10406", + "id": 560, + "image": "bHiwXdo2", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1709273946-openflower2k.png", + "wallpapertype": 2 + }, + { + "category": "Minimal", + "description": "Day night shift ☀️🌕", + "downloads": "5157", + "id": 556, + "image": "Mlc9oRVH", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1708333651-sunturn.png", + "wallpapertype": 2 + }, + { + "category": "Typography", + "description": "Locked Unlocked 🔒🔓", + "downloads": "11009", + "id": 554, + "image": "Av4VI0qC", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1708332444-unlocked.png", + "wallpapertype": 2 + }, + { + "category": "Landscape", + "description": "Bright arid landscape 🌵", + "downloads": "3443", + "id": 550, + "image": "4aYWQKNS", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1707475758-desert2K.png", + "wallpapertype": 2 + }, + { + "category": "Geometry", + "description": "Rings align ⭕", + "downloads": "4777", + "id": 549, + "image": "pidgYrxB", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1707475745-loopsNew2K.png", + "wallpapertype": 2 + }, + + + + + + + { + "category": "Abstract", + "description": "Orange slices 🟠", + "downloads": "2433", + "id": 606, + "image": "1PtmB6il", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1717395427-orange circle_2k0001-0050.png", + "wallpapertype": 2 + }, + { + "category": "Pattern", + "description": "Falling stripes 🎨", + "downloads": "2070", + "id": 605, + "image": "tfs0AY7l", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1717395410-linerundown_2k.png", + "wallpapertype": 2 + }, + { + "category": "Anime", + "description": "Itadori x Sukuna 🔥", + "downloads": "8954", + "id": 601, + "image": "lrUWHFvP", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1716449636-itadoriandzukuna.png", + "wallpapertype": 2 + }, + { + "category": "Pattern", + "description": "Navigate the maze 🧩", + "downloads": "3419", + "id": 600, + "image": "DxkCl7iq", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1716449627-rectanglelines.png", + "wallpapertype": 2 + }, + { + "category": "Minimal", + "description": "Landscape shift 🖼️", + "downloads": "2727", + "id": 596, + "image": "KtN2sG5w", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1715584110-framezoom2k.png", + "wallpapertype": 2 + }, + { + "category": "Typography", + "description": "Good Vibes Only 😁", + "downloads": "2733", + "id": 595, + "image": "zO5ksKJV", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1715584105-goodvibeonly2k.png", + "wallpapertype": 2 + }, + { + "category": "Gaming", + "description": "Gameboy inside out 🪛", + "downloads": "6698", + "id": 591, + "image": "QjGb2vy5", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1714639479-gameboy_2k.png", + "wallpapertype": 2 + }, + { + "category": "Minimal", + "description": "3 Body Problem ☀️☀️☀️", + "downloads": "2845", + "id": 590, + "image": "zdQN8P3W", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1714639448-3 body problem_2k.png", + "wallpapertype": 2 + }, + { + "category": "Minimal", + "description": "Spring call 🌸", + "downloads": "3753", + "id": 586, + "image": "pL0kMy1C", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1713773909-flowerbranch.png", + "wallpapertype": 2 + }, + { + "category": "Amoled", + "description": "Glitch in existence 🪩", + "downloads": "6597", + "id": 585, + "image": "WeAF2qJm", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1713773884-glitch man0001-0035.png", + "wallpapertype": 2 + }, + { + "category": "Cityscape", + "description": "Pop into existence 🏘", + "downloads": "1301", + "id": 581, + "image": "6r81al3P", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1712997465-risingtown2k.png", + "wallpapertype": 2 + }, + { + "category": "Material", + "description": "Form the Palette 🎨", + "downloads": "2866", + "id": 580, + "image": "0sXSAFkj", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1712997453-linesmmove2k.png", + "wallpapertype": 2 + }, + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { + "category": "Geometry", + "description": "Growing bubbles 🫧", + "downloads": "2656", + "id": 519, + "image": "WEf1JHFZ", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1702285284-growingbubble.png", + "wallpapertype": 2 + }, + + + + + + + + + + + + + + + + + + + + + + + + { + "category": "Material", + "description": "Sliding square ⏹", + "downloads": "5871", + "id": 518, + "image": "hOGIEMqX", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1702285263-sliding_square.png", + "wallpapertype": 2 + }, + + + + + + + + + + + + + + + + + + + + + + + { + "category": "Geometry", + "description": "Intertwined cubes ", + "downloads": "5396", + "id": 517, + "image": "Bc20n43T", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1702285251-roundedcube2k.png", + "wallpapertype": 2 + }, + { + "category": "Nature", + "description": "Let it bloom 💮", + "downloads": "3282", + "id": 516, + "image": "W1XC0yrb", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1702285229-flower2K.png", + "wallpapertype": 2 + }, + + + + + + + + + + + + + + + + { + "category": "Miscellaneous", + "description": "Swirl into the green void ", + "downloads": "5267", + "id": 515, + "image": "kPY95NQo", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1702285213-lays2K.png", + "wallpapertype": 2 + }, + { + "category": "Amoled", + "description": "Windows 7", + "downloads": "758", + "id": 702, + "image": "fGSUEenP", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1732780372-windows 7_2k.png", + "wallpapertype": 2 + }, + { + "category": "Abstract", + "description": "Wafer hues 🔴🟡", + "downloads": "3539", + "id": 514, + "image": "Sf1wL0E6", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1702285186-yellowlayer.png", + "wallpapertype": 2 + } +] \ No newline at end of file diff --git a/app/src/main/assets/font.ttf b/app/src/main/assets/font.ttf new file mode 100644 index 0000000..23e4502 Binary files /dev/null and b/app/src/main/assets/font.ttf differ diff --git a/app/src/main/assets/trending.json b/app/src/main/assets/trending.json new file mode 100644 index 0000000..86f4932 --- /dev/null +++ b/app/src/main/assets/trending.json @@ -0,0 +1,4833 @@ +[ + { + "category": "Cityscape", + "description": "Beauty of late night snow ☃️", + "downloads": "27034", + "id": 428, + "image": "CA95YeWL", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1684743860-streetlight_2k.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Glimpse of parallel world 🌍", + "downloads": "18688", + "id": 562, + "image": "oVLnApSP", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1709535857-4 layer land.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Where trekking ends ⛺", + "downloads": "18369", + "id": 166, + "image": "TslXeryf", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1648617295-vectorcamp.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Push and Pull 🥸", + "downloads": "5337", + "id": 276, + "image": "PiAKybTX", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1661751415-pushline.png", + "wallpapertype": 0 + }, + { + "category": "Gaming", + "description": "Gamer\u0027s paradise 👨🏻‍💻", + "downloads": "28767", + "id": 138, + "image": "brocN6Da", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1646306064-pc.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Beats 💓", + "downloads": "32497", + "id": 132, + "image": "UJN3sn7G", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1645948947-heartbeat.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Glide through your dreams 🛩", + "downloads": "6136", + "id": 249, + "image": "EUqnwDWt", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1658134331-glider.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Catch with the lines 🤐", + "downloads": "7333", + "id": 228, + "image": "UNgGb3f6", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1655452805-justlines.png", + "wallpapertype": 0 + }, + { + "category": "Superheroes", + "description": "Batmobile in Action 🦇", + "downloads": "26251", + "id": 137, + "image": "0oKr7TM4", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1646123484-batmobile.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Hide and seek with the cats 😸", + "downloads": "18342", + "id": 156, + "image": "BLck8Qrx", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1647760632-cats.png", + "wallpapertype": 0 + }, + { + "category": "Anime", + "description": "Pokeball ❤️", + "downloads": "29725", + "id": 130, + "image": "gf98ksKa", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1645689676-pokeball0001-0100.png", + "wallpapertype": 0 + }, + { + "category": "Dope", + "description": "The Eighty\u0027s Vibe 🕺 ", + "downloads": "16953", + "id": 160, + "image": "9hoTBQZL", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1648112112-animation380001-0120.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "I\u0027m in love with the grass 🌳", + "downloads": "16630", + "id": 161, + "image": "uHybICne", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1648112120-grasscutter0001-0310.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "A day in the desert 🌵", + "downloads": "8885", + "id": 230, + "image": "CATQUy6K", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1655713087-materialdesert.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "The Watcher ⚡", + "downloads": "15915", + "id": 180, + "image": "rcGDtH4i", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1649662069-animation 470001-0250.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Shades of sun 🕶", + "downloads": "8436", + "id": 232, + "image": "Xwz4GZqr", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1655976648-colour_1.png", + "wallpapertype": 0 + }, + { + "category": "Typography", + "description": "Taking rest is also being productive 💤", + "downloads": "20668", + "id": 162, + "image": "M8qTZGFQ", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1648195234-restisproductive.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Trying to connect 😉", + "downloads": "9309", + "id": 221, + "image": "ZUkGF4Ez", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1654668052-roundewave.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "It\u0027s fading 🤞🏻", + "downloads": "6495", + "id": 256, + "image": "beVy1x6O", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1659335301-fadinglines1.png", + "wallpapertype": 0 + }, + { + "category": "Material", + "description": "Rhythm of the circles 💜 ", + "downloads": "17511", + "id": 171, + "image": "582tpb6m", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1648711049-circlegrad.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Hilltop holidays 🖖🏻", + "downloads": "5709", + "id": 271, + "image": "bC9oJ78l", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1660751887-Hillhouse.png", + "wallpapertype": 0 + }, + { + "category": "Anime", + "description": "You are already under my genjutsu 🥷🏻", + "downloads": "133346", + "id": 400, + "image": "I9rPTLMw", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1678429646-itachiuchiha.png", + "wallpapertype": 0 + }, + { + "category": "Anime", + "description": "Itachi Uchiha 🔥", + "downloads": "47422", + "id": 573, + "image": "EuWIeJiO", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1711352204-itachi_moon_2K.png", + "wallpapertype": 0 + }, + { + "category": "Anime", + "description": "Any technique is worthless before my eyes ⚔️", + "downloads": "113536", + "id": 303, + "image": "o8O5Zjg9", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1664871083-itachiuchiha2.png", + "wallpapertype": 0 + }, + { + "category": "Cityscape", + "description": "A rainy night ☔", + "downloads": "68432", + "id": 416, + "image": "ZcCYk74p", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1681804057-rainingstreet.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Through the window night whispers its secrets 🪟", + "downloads": "31153", + "id": 592, + "image": "x1sAjaXT", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1714984080-outside window view.png", + "wallpapertype": 0 + }, + { + "category": "Space", + "description": "There\u0027s a way out 🌌", + "downloads": "40457", + "id": 443, + "image": "dgHwYSLM", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1688456077-bk2k.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Eternal hues dance in the void\u0027s embrace 🎗️", + "downloads": "32127", + "id": 501, + "image": "AH5k0P6g", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1699344949-gradstroke_2k.png", + "wallpapertype": 0 + }, + { + "category": "Retro", + "description": "Evening in the garage 🔧", + "downloads": "32082", + "id": 457, + "image": "irEbHd9Y", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1691565326-street2k.png", + "wallpapertype": 0 + }, + { + "category": "Anime", + "description": "Autonomous Ultra Instinct 🔥", + "downloads": "20256", + "id": 655, + "image": "9f0Cepkb", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1724059272-gokuultrainstinct2k.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Thunder ⚡", + "downloads": "31019", + "id": 451, + "image": "iBepAVKk", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1690361455-lightning2K.png", + "wallpapertype": 0 + }, + { + "category": "Movies", + "description": "EVE 💓", + "downloads": "22128", + "id": 588, + "image": "IgLHh1Sk", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1714060538-eve_2K.png", + "wallpapertype": 0 + }, + { + "category": "Space", + "description": "Imagination is the limit 🧑🏻‍🚀🎈", + "downloads": "28778", + "id": 469, + "image": "0DaVbFgs", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1694076934-flying astronaut.png", + "wallpapertype": 0 + }, + { + "category": "Anime", + "description": "When in doubt nap it out - Snorlax\u0027s motto 💤", + "downloads": "23170", + "id": 473, + "image": "kDPZBVYW", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1694594155-snorlax.png", + "wallpapertype": 0 + }, + { + "category": "Movies", + "description": "Peanuts Snoopy ✈️", + "downloads": "21721", + "id": 479, + "image": "9X65KbOj", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1695799095-snoopy.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Ring Planet 🌌", + "downloads": "47734", + "id": 285, + "image": "FrinSg37", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1662879807-saturn1.png", + "wallpapertype": 0 + }, + { + "category": "Movies", + "description": "Hiding in the shadows 🦇 Waiting to strike ⚡", + "downloads": "23746", + "id": 455, + "image": "wfUACS1t", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1690956632-batcave_2k.png", + "wallpapertype": 0 + }, + { + "category": "Movies", + "description": "Stay on target 💫🛸", + "downloads": "20936", + "id": 496, + "image": "CoeM1An7", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1697521561-starfighter starwars_2k.png", + "wallpapertype": 0 + }, + { + "category": "Geometry", + "description": "Dancing with the flow 🙄", + "downloads": "26572", + "id": 424, + "image": "P1h65qJA", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1684046241-red_black_2k_vbr2.png", + "wallpapertype": 0 + }, + { + "category": "Space", + "description": "Vroooom 🚀", + "downloads": "26702", + "id": 422, + "image": "9mWULPBx", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1683189916-rocket.png", + "wallpapertype": 0 + }, + { + "category": "Movies", + "description": "Welcome to Arrakis ☀️", + "downloads": "17919", + "id": 563, + "image": "m31EhtRz", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1709535876-dune0001-0045.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Rise and grind 🍵", + "downloads": "17604", + "id": 572, + "image": "JOuItFm3", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1711352182-coffee_cup_2K.png", + "wallpapertype": 0 + }, + { + "category": "Retro", + "description": "Switch of an era 🎶", + "downloads": "21591", + "id": 582, + "image": "YKog49vH", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1713257189-ipod_2k.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Quack quack 🦆", + "downloads": "23616", + "id": 531, + "image": "blzMJ4Ip", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1704208911-duck_2k.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Never ending ☀️", + "downloads": "21092", + "id": 583, + "image": "rbA5MsC2", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1713257200-retro sun rally.png", + "wallpapertype": 0 + }, + { + "category": "Geometry", + "description": "Streaks through the cracks 🔦", + "downloads": "42679", + "id": 346, + "image": "2YdFqCme", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1669098067-bleedinglight.png", + "wallpapertype": 0 + }, + { + "category": "Anime", + "description": "It\u0027s my turn 🔥", + "downloads": "92347", + "id": 224, + "image": "K6ySTF5k", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1654933736-gokuhair.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Make a wish 💫", + "downloads": "31632", + "id": 413, + "image": "v48jd1uq", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1681201758-mountainskyview.png", + "wallpapertype": 0 + }, + { + "category": "Movies", + "description": "Beginning of the Hawkin\u0027s curse 🎃", + "downloads": "96580", + "id": 218, + "image": "VKpGv0RL", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1654161170-vecnahouse.png", + "wallpapertype": 0 + }, + { + "category": "Anime", + "description": "Show me where is the enemy ", + "downloads": "44977", + "id": 322, + "image": "25QVbcyG", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1666073442-erenyeager.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Fading ghost 👻", + "downloads": "29733", + "id": 418, + "image": "yiYvJB7c", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1682493720-movingghost_2k.png", + "wallpapertype": 0 + }, + { + "category": "Movies", + "description": "Glitch in the matrix 💾", + "downloads": "37534", + "id": 350, + "image": "p3u7Osyn", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1669615907-matrix.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "With me comes the tail ✈️", + "downloads": "33202", + "id": 386, + "image": "bMOCTl9N", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1675674061-planetail.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "They glow 🌙", + "downloads": "19554", + "id": 552, + "image": "CkdnroBR", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1707727905-firefilebottle.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Pulses to infinity ♾️", + "downloads": "17887", + "id": 558, + "image": "B2mpiW7j", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1708590245-lineexpand360.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Love for RGB ⌨️", + "downloads": "39427", + "id": 320, + "image": "5ZVq6Prd", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1665764837-keys50.png", + "wallpapertype": 0 + }, + { + "category": "Gaming", + "description": "Fallen hero 😃", + "downloads": "28919", + "id": 394, + "image": "D4dkOoLq", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1677218914-among us_2k.png", + "wallpapertype": 0 + }, + { + "category": "Dope", + "description": "Neon Tunnel ⚡", + "downloads": "15158", + "id": 635, + "image": "hCUj7aN6", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1721293058-tunetunnel_2k0001-0300.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Loops like domino ♦️", + "downloads": "17722", + "id": 541, + "image": "QMpWG2bY", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1705999547-morf lines.png", + "wallpapertype": 0 + }, + { + "category": "Anime", + "description": "Domain Expansion 🤞🏻", + "downloads": "55327", + "id": 255, + "image": "PiQtZJen", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1658994833-gojo1.png", + "wallpapertype": 0 + }, + { + "category": "Space", + "description": "Am I on the right planet 🧑🏻‍🚀", + "downloads": "29524", + "id": 381, + "image": "iQW8dSPH", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1674109405-Astrounaut on planet_2k.png", + "wallpapertype": 0 + }, + { + "category": "Retro", + "description": "Good old days 💻", + "downloads": "14702", + "id": 622, + "image": "N9KsFl3O", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1720429136-windowsxp2K.png", + "wallpapertype": 0 + }, + { + "category": "Movies", + "description": "Charting the unknown one map at a time 🧭", + "downloads": "18324", + "id": 509, + "image": "Q0igIXVA", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1700978539-compass.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Colourful memories of old school 📼", + "downloads": "32147", + "id": 349, + "image": "HVKo2fx5", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1669615899-cassetterainbow.png", + "wallpapertype": 0 + }, + { + "category": "Miscellaneous", + "description": "Pop out Pop in ⚽", + "downloads": "16221", + "id": 567, + "image": "TZUgQRtJ", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1710404359-cylinderballs2k.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Ocean planet 😁", + "downloads": "32765", + "id": 343, + "image": "ToXANS7D", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1668584406-planetinocean.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Atoms surfed the waves of fun ⚛️", + "downloads": "16729", + "id": 546, + "image": "JaRcbEiC", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1706956200-wavedots_2k.png", + "wallpapertype": 0 + }, + { + "category": "Geometry", + "description": "Harnessing the power ⚛️", + "downloads": "16134", + "id": 551, + "image": "DrNBnY6z", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1707727879-spherical2K.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Retro vibes ⚡", + "downloads": "16840", + "id": 523, + "image": "LyfTNpZr", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1702654981-neon_lines_2k.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Curved glass ✨", + "downloads": "14165", + "id": 602, + "image": "bnSzZRO0", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1716799592-rainbow_2k0001-0200.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Swirling into the hearts ➰", + "downloads": "20209", + "id": 448, + "image": "NWjAcdlJ", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1689838759-gradientloop2K.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Blue Planet 🔵", + "downloads": "95474", + "id": 194, + "image": "osJuAmep", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1651049003-planet007.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Red Radiance ⭕", + "downloads": "19173", + "id": 460, + "image": "D0ZKbEIl", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1692167428-energyfield2k.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Colors in a mesmerizing dance 🎨", + "downloads": "17455", + "id": 483, + "image": "4DHhiegM", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1696497611-gradlines2k.png", + "wallpapertype": 0 + }, + { + "category": "Typography", + "description": "Apple \u0027s Hello 👋🏻", + "downloads": "19111", + "id": 458, + "image": "HumJo4BE", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1691565388-hello2k.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "The pop waves 🌊", + "downloads": "20111", + "id": 445, + "image": "WgRq68CP", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1689149442-waves.png", + "wallpapertype": 0 + }, + { + "category": "Space", + "description": "Star gazing 💫", + "downloads": "13899", + "id": 593, + "image": "fN82DWoX", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1714984090-star gazing astronaut.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Sunlit meadows 🌲", + "downloads": "18514", + "id": 464, + "image": "1bjIgeUr", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1692776611-vectorbirdscenery.png", + "wallpapertype": 0 + }, + { + "category": "Retro", + "description": "Record Play Repeat 🎤", + "downloads": "14541", + "id": 568, + "image": "69vNVpUj", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1710404402-TeenageEngineering2K.png", + "wallpapertype": 0 + }, + { + "category": "Gaming", + "description": "Mario time 💥", + "downloads": "18024", + "id": 470, + "image": "0hzyAtom", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1694076946-supermario2K.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Pencil Pen and Rubber", + "downloads": "13329", + "id": 607, + "image": "BIZVzLhf", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1717667297-computerportal2k.png", + "wallpapertype": 0 + }, + { + "category": "Dope", + "description": "Quantum engine ⚡", + "downloads": "18174", + "id": 463, + "image": "LCYPha4j", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1692776605-cubeneon.png", + "wallpapertype": 0 + }, + { + "category": "Dope", + "description": "Lost in luminescence 🟩", + "downloads": "16625", + "id": 495, + "image": "mC6WLnhq", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1697521556-cyberally_2k.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Desert nights where stars write their own stories 🌵", + "downloads": "17040", + "id": 476, + "image": "3T8jLvog", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1695198738-pyramid star gaze.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Christmas time ❄️", + "downloads": "26055", + "id": 371, + "image": "59PsapVJ", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1671781190-lightsetchristmas_2k .png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "A feline farewell to daylight ☀️🐈", + "downloads": "12906", + "id": 598, + "image": "V7m6i1fw", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1715848167-cat_2k.png", + "wallpapertype": 0 + }, + { + "category": "Gaming", + "description": "Childhood memories 🕹️", + "downloads": "19855", + "id": 431, + "image": "jDKXMEw2", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1685514859-gameboy_2k.png", + "wallpapertype": 0 + }, + { + "category": "Movies", + "description": "Spider Glitch 🕸️", + "downloads": "11607", + "id": 660, + "image": "qducAoan", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1724917214-spiderlogoglitch_2k.png", + "wallpapertype": 0 + }, + { + "category": "Material", + "description": "Melting into the backdrops🔵", + "downloads": "13878", + "id": 557, + "image": "L3dv7UKW", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1708590234-layerlava.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Seaside bliss framed in sunlight 🌊", + "downloads": "14632", + "id": 522, + "image": "xXNtEKmv", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1702654961-horizontal_landscape_2k.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Energy orb ⚡", + "downloads": "25517", + "id": 352, + "image": "OloNzAQy", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1669881138-scifireactor.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Nostalgia meets sound 🎶", + "downloads": "15172", + "id": 498, + "image": "n9VhFq3s", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1698050834-twoshaderecordplayer2k.png", + "wallpapertype": 0 + }, + { + "category": "Cityscape", + "description": "Soul of the street painted in rain drops", + "downloads": "12640", + "id": 578, + "image": "2qtG1ZMH", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1712388148-rainingsidewalk2k.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Rise against the wind 🪁", + "downloads": "11621", + "id": 613, + "image": "Rw3mt7SW", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1718609085-kitevalley2K.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "stripes 🔻", + "downloads": "18209", + "id": 433, + "image": "1FACemca", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1686295552-steplines2k.png", + "wallpapertype": 0 + }, + { + "category": "Superheroes", + "description": "This looks like a job for Superman 💪", + "downloads": "10964", + "id": 640, + "image": "EfkJFC2q", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1722262750-suoerman2k.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Edge lighting 🌈", + "downloads": "11309", + "id": 617, + "image": "3MqLDHgV", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1719476474-rgb frame.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Boo boo 👻", + "downloads": "23431", + "id": 368, + "image": "2G49hE5K", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1670919440-pixelghost2k.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "The dead shall raise 💀", + "downloads": "26938", + "id": 326, + "image": "YBsEl3bd", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1666766418-walkingskeleton.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Neon tunnel ⚡", + "downloads": "14192", + "id": 497, + "image": "kVy928fx", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1698050818-room2K.png", + "wallpapertype": 0 + }, + { + "category": "Cityscape", + "description": "Cruising through the street 🚗", + "downloads": "19331", + "id": 409, + "image": "CegovyQJ", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1680509310-neoncity.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Decked boat dancing on ripples 🛶", + "downloads": "13655", + "id": 504, + "image": "OrfjM83b", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1700211939-boatreflection2k.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Every petal tells a story 🌸", + "downloads": "13810", + "id": 500, + "image": "rNv4fW6u", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1699344917-flowerbranch_2k.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Enter the neon-lit future where beats and bytes collide ⚡", + "downloads": "14666", + "id": 472, + "image": "7t3pUOLY", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1694590930-retrodot_2k.png", + "wallpapertype": 0 + }, + { + "category": "Space", + "description": "Spaceship on a joy ride 🚀", + "downloads": "12519", + "id": 537, + "image": "mMaCO5Dp", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1704961330-vector planet.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Still a long way to go 🚶🏻‍♀️", + "downloads": "11983", + "id": 547, + "image": "JTL6lDty", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1706956207-long way_2k.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Propelling the colors 🌈", + "downloads": "10949", + "id": 587, + "image": "lhvpF8Rx", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1714060447-propeller_2K.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Northern lights ☁", + "downloads": "20410", + "id": 378, + "image": "MDuYI51V", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1673154571-lines.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Magical Forest 🌙", + "downloads": "10444", + "id": 603, + "image": "3ZRN94cV", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1716827412-forestbrook2K.png", + "wallpapertype": 0 + }, + { + "category": "Movies", + "description": "The seeds of the sacred tree 🍃", + "downloads": "21113", + "id": 369, + "image": "q7WLCVaM", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1670919451-avatar0601-1200.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Everything is energy ⚡", + "downloads": "35593", + "id": 258, + "image": "IN0nhgL4", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1659593329-circuit.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Neon drops 🌟", + "downloads": "19901", + "id": 377, + "image": "b1vrFOlV", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1673154563-raindrops.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Planets doing its job 🌍", + "downloads": "16227", + "id": 425, + "image": "kifBrWvn", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1684046356-solar_system_orange_2k.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Make a wish 🌠", + "downloads": "40387", + "id": 243, + "image": "cLVaypI2", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1657291661-shootingstar.png", + "wallpapertype": 0 + }, + { + "category": "Dope", + "description": "Waves within waves 😁", + "downloads": "18588", + "id": 389, + "image": "R84zOhsM", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1676443809-circlestripes2K.png", + "wallpapertype": 0 + }, + { + "category": "Typography", + "description": "Dream it do it 🦄", + "downloads": "12236", + "id": 503, + "image": "oGkTW15v", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1700212340-dream.png", + "wallpapertype": 0 + }, + { + "category": "Travel", + "description": "As the landscape unfolds outside the window 🚊", + "downloads": "14730", + "id": 440, + "image": "mqMsnKui", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1687675294-train doorwindow2k.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Era of gamers 🎮", + "downloads": "14820", + "id": 437, + "image": "bVjyp4hr", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1686986248-tv2k.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Be calm as koi 🐟", + "downloads": "9404", + "id": 618, + "image": "BeIJvh3T", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1719476480-koi fish.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Nearing the end of day ⛵", + "downloads": "15541", + "id": 421, + "image": "GqeN0UxH", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1683189872-boatshadow_2k.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Ripples ⭕", + "downloads": "62835", + "id": 197, + "image": "xtrPQmnY", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1651467012-drops.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Travel through time ⏳", + "downloads": "23381", + "id": 319, + "image": "lzmt7owB", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1665764832-rgbfinal.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Silky waves 🌊", + "downloads": "16259", + "id": 406, + "image": "KG3R7iX4", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1679896671-waves.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Land of dreams 🌳", + "downloads": "40565", + "id": 235, + "image": "jkobCr5V", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1656235975-butterflygreen.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Life a flying plane with ever changing backdrop colors ✈️", + "downloads": "11866", + "id": 481, + "image": "P8S2Gopf", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1696496990-planeexpand2K.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Keep smiling until it\u0027s clear 📷", + "downloads": "13533", + "id": 446, + "image": "7iG4Usoh", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "camerafocus2k7676.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Eat drink and be scary 🎃", + "downloads": "21949", + "id": 324, + "image": "UXmzNlDI", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1666457699-cementry330.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Kinda spooky 🦇", + "downloads": "26097", + "id": 284, + "image": "i6GlZz4g", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1662879788-spookyforest.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Blazing through the tunnel ⚡", + "downloads": "39397", + "id": 234, + "image": "Fa8NqnjJ", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1656235972-circletunnel23.png", + "wallpapertype": 0 + }, + { + "category": "Geometry", + "description": "Breathing cubes 🟩", + "downloads": "17639", + "id": 375, + "image": "YGXbzLM1", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1672397960-cubesmerge.png", + "wallpapertype": 0 + }, + { + "category": "Dope", + "description": "Frames of reality 🔮", + "downloads": "15110", + "id": 412, + "image": "XJK8uRe4", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1681201744-frame2k.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Countryside 🏕", + "downloads": "22600", + "id": 306, + "image": "Pl1uckY0", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1665245461-nightgrass1.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Window of time 🪟", + "downloads": "17742", + "id": 372, + "image": "oPxUq89D", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1671781199-frame.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Sky shows the way ✨", + "downloads": "13406", + "id": 434, + "image": "Qirg9kAw", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1686295557-lighthouse2k.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Comfort of home 🏡", + "downloads": "50495", + "id": 208, + "image": "nG0Qs51U", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1652767860-livingroom.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Air drops 🪂", + "downloads": "22613", + "id": 301, + "image": "Bdq0uYwg", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1664526005-forestairdrop.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Winter embrace with snowflakes as delicate as whispered dreams ❄️☃️", + "downloads": "10265", + "id": 513, + "image": "NMmZzpDI", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1701677478-colourful snowfall.png", + "wallpapertype": 0 + }, + { + "category": "Material", + "description": "Rotary cards 🎴", + "downloads": "47420", + "id": 212, + "image": "a0TEy1IM", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1653291520-roundedsquare2.png", + "wallpapertype": 0 + }, + { + "category": "Dope", + "description": "Analog warmth in a digital world 🎧", + "downloads": "8205", + "id": 623, + "image": "miEeOcTs", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1720429273-recordplayer2K.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "A sunny beach day 🏖️", + "downloads": "9754", + "id": 536, + "image": "cnyDCeda", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1704961259-beach guard.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Raining colors 🌧", + "downloads": "34561", + "id": 241, + "image": "yWAg8i4Q", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1657031337-rainbowrain.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Home sweet home 🌎", + "downloads": "65003", + "id": 185, + "image": "SXkQLevp", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1650263209-solarsystem30.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Warm beginning 🌄", + "downloads": "54617", + "id": 198, + "image": "6M4yxFB2", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1651467020-birdsflying.png", + "wallpapertype": 0 + }, + { + "category": "Dope", + "description": "Wormhole 🚀", + "downloads": "19846", + "id": 323, + "image": "g3SMjGI8", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1666357791-looper51.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Melodic Vibrating Wires 🎸", + "downloads": "11127", + "id": 467, + "image": "oVmTNSUe", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1693380422-guitar.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "✖️⭕", + "downloads": "20094", + "id": 321, + "image": "kfISWXG6", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1666073451-glitchface.png", + "wallpapertype": 0 + }, + { + "category": "Material", + "description": "Sliding cards 🎴", + "downloads": "11580", + "id": 452, + "image": "QncwPgzG", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1690361489-jumping_shade_2k.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Ace Burner ♠️♥️♦️♣️", + "downloads": "7229", + "id": 670, + "image": "bHAg0sop", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1726732728-card on fire_2k.png", + "wallpapertype": 0 + }, + { + "category": "Dope", + "description": "Trapped in unknown 💢 ", + "downloads": "13065", + "id": 419, + "image": "Qrvs6PAb", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "lineneon.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Cubes Glide on Breeze 🟨", + "downloads": "9265", + "id": 528, + "image": "PpxmrE8C", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1703667173-cube cylinder_2k.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Night brings fear 🏰", + "downloads": "28856", + "id": 253, + "image": "nAKjYWZ3", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1658655062-nightcatle.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Looking for the prey 🦅", + "downloads": "17104", + "id": 344, + "image": "ILohYjwu", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1668584410-treesabove.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Up up and away ✈", + "downloads": "17367", + "id": 339, + "image": "sxVPWklG", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1667900451-planewindow.png", + "wallpapertype": 0 + }, + { + "category": "Material", + "description": "Embracing the subtle artistry of shades 🟠🟡🟢🔵", + "downloads": "7843", + "id": 597, + "image": "GnYQwXOT", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1715848159-halfcircle_2k.png", + "wallpapertype": 0 + }, + { + "category": "Pixel", + "description": "Torii ⛩", + "downloads": "17351", + "id": 338, + "image": "VYeXZAd4", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1667900441-japanesearch.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Fusion 🌀", + "downloads": "11282", + "id": 439, + "image": "KAVzISrB", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1687675278-test2k.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Circles shift into places", + "downloads": "7883", + "id": 577, + "image": "rekDpLvG", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1712388120-move2k.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Flowing qubits 💡", + "downloads": "11363", + "id": 436, + "image": "72WQsAgc", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1686986110-dotlayer2k.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Gentle breezes and the turning of blades 🍃", + "downloads": "8983", + "id": 508, + "image": "ysKJIc51", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1700978311-windmill valley.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Gentleness of evening wind 🍃", + "downloads": "13770", + "id": 387, + "image": "o28DawGu", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1675674075-tricutreevalley.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Bridge through the mist 🌳", + "downloads": "6774", + "id": 645, + "image": "nFAQaw0h", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1723108025-forest waterfalls_2k.png", + "wallpapertype": 0 + }, + { + "category": "Material", + "description": "Gradient Hue 🔴", + "downloads": "6912", + "id": 634, + "image": "5LFc76e2", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1721293053-gradient timerlinear_2k.png", + "wallpapertype": 0 + }, + { + "category": "Dope", + "description": "Sprint through cyber tunnel ⚡", + "downloads": "14289", + "id": 374, + "image": "HsjFeWJv", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1672397952-tunnel2K.png", + "wallpapertype": 0 + }, + { + "category": "Space", + "description": "In search for life 🚀", + "downloads": "15434", + "id": 347, + "image": "zRWeQaAj", + "pro": 99, + "resolution": "2160 x 3840", + "thumbnail": "1669098076-exoplanet.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Lines of music 🎸", + "downloads": "10193", + "id": 454, + "image": "fayjwWkG", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1690956236-two shade record player_2k.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Pinging for the enemies 🪖", + "downloads": "6701", + "id": 644, + "image": "FJLr4j6T", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1723108060-radar_2k.png", + "wallpapertype": 0 + }, + { + "category": "Material", + "description": "Pebble waves 🌌", + "downloads": "16096", + "id": 333, + "image": "f0tcegFG", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1667557680-chips.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Sponge loops 🧽", + "downloads": "9122", + "id": 478, + "image": "vWLsGClJ", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1695799085-gradienttube_2k.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "A captivating view that holds our gaze refusing to let go 🏞️", + "downloads": "10129", + "id": 449, + "image": "akJXn52S", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1689839410-cloudvalley2K.png", + "wallpapertype": 0 + }, + { + "category": "Dope", + "description": "The core ⚡", + "downloads": "6344", + "id": 665, + "image": "si2RCIbU", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1725870751-hexogen_2k.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Escaping the chores of life🧳", + "downloads": "72644", + "id": 165, + "image": "1b9Enzr8", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1648446795-van0001-0250.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Strings of reality ⭕", + "downloads": "22984", + "id": 264, + "image": "aiVWKcY1", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1660118383-contourarray.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Gamers paradise 🎮", + "downloads": "67122", + "id": 169, + "image": "ZNIgCsTj", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1648711035-pssyarray0.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Being minimal 😉", + "downloads": "32791", + "id": 223, + "image": "h4Z5OQDq", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1654933732-snowfall.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "A tapestry of seamless blending 🟥🟧🟨", + "downloads": "7989", + "id": 512, + "image": "bJs7kS5q", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1701677467-square expanition flip.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Messing around with lines 🌈", + "downloads": "13971", + "id": 351, + "image": "ktlWo6YM", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1669881134-lineplay.png", + "wallpapertype": 0 + }, + { + "category": "Geometry", + "description": "Life\u0027s like a rolling ball on a track full of twists and turns ", + "downloads": "8669", + "id": 475, + "image": "D1NMe3so", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1695198716-rolling ball2K.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Pew pew 😁", + "downloads": "15250", + "id": 328, + "image": "bKT7ZB8v", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1667146129-pewgun.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Stretch some candy 🍬", + "downloads": "16610", + "id": 302, + "image": "QqugVMzt", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1664871075-candy.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Recording the life 📼", + "downloads": "38594", + "id": 204, + "image": "fwPayG3u", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1652165587-record1.png", + "wallpapertype": 0 + }, + { + "category": "Typography", + "description": "Gamer Zone ", + "downloads": "5937", + "id": 639, + "image": "jeavPVlk", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1722262736-gameover2k.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Break the rules 🤭", + "downloads": "39315", + "id": 201, + "image": "4k7pbWnN", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1652009042-inteldino.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "I can wiggle wiggle 🌻🌵", + "downloads": "10645", + "id": 407, + "image": "4TERVbsO", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1679896707-cactus.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Digital branches ⚡", + "downloads": "31536", + "id": 219, + "image": "wzT3YAxH", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1654413266-simdots.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "House\u0027s like a step 🪜", + "downloads": "6960", + "id": 542, + "image": "5Zv1adoC", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1705999571-merge houses.png", + "wallpapertype": 0 + }, + { + "category": "Typography", + "description": "Let it go 😉", + "downloads": "10826", + "id": 399, + "image": "okXRmlH7", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1678429628-letitgo.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Nature has it\u0027s own secrets 🍃", + "downloads": "27997", + "id": 229, + "image": "NfUDOu0K", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1655452812-fantasyland.png", + "wallpapertype": 0 + }, + { + "category": "Space", + "description": "Moon 🌕", + "downloads": "5279", + "id": 685, + "image": "EDVQUOwk", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1729501659-moon_2k.png", + "wallpapertype": 0 + }, + { + "category": "Movies", + "description": "Stay Out Of My Territory - Heisenberg ⚗️", + "downloads": "28476", + "id": 227, + "image": "NbxPlFc3", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1655190766-breaking bad.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Fusion 🌀", + "downloads": "25882", + "id": 236, + "image": "RQt2913o", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1656482849-Energyfield.png", + "wallpapertype": 0 + }, + { + "category": "Material", + "description": "Popping pops 🎉", + "downloads": "9486", + "id": 427, + "image": "xoP63fkn", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1684743824-stringingcolour_2k.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Ripples 🌊", + "downloads": "12342", + "id": 366, + "image": "fy6ijzpL", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1670574723-speaker2k.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Fourfold Path", + "downloads": "8218", + "id": 461, + "image": "VKy4mqPT", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1692167442-jlines2k.png", + "wallpapertype": 0 + }, + { + "category": "Tech", + "description": "Give your device some power surge ⚡", + "downloads": "5455", + "id": 659, + "image": "Ob9d70IC", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1724917204-generator_2k.png", + "wallpapertype": 0 + }, + { + "category": "Geometry", + "description": "Rising blocks 🧱", + "downloads": "8798", + "id": 442, + "image": "rjLqdbJn", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1688456022-risingBlocks2K.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Cornering stripes 🏁", + "downloads": "13463", + "id": 332, + "image": "jvMzuYBS", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1667557670-turninglines.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Cruising the unknown 🚀", + "downloads": "24491", + "id": 239, + "image": "AFY4hrK0", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1656773205-rocketnew.png", + "wallpapertype": 0 + }, + { + "category": "Retro", + "description": "An inviting friend 🐈", + "downloads": "5581", + "id": 612, + "image": "3ToUh4n5", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1718609070-cattable2K.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Nature heals 🌳", + "downloads": "19023", + "id": 263, + "image": "PjXMoci9", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1659866405-fallleaves.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Old school 🎧", + "downloads": "26803", + "id": 225, + "image": "S6F4TnJ7", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1655189835-walkman.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Crystal dimension 🤩", + "downloads": "17247", + "id": 272, + "image": "yCWtPghR", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1661490666-animation81.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Sailing the evening wind ⛵", + "downloads": "10105", + "id": 393, + "image": "oKUqdwa1", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1677218894-lighthouse boat.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "I remember every night 🌙", + "downloads": "43686", + "id": 184, + "image": "ZckCjNdM", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1650005692-circlingstartrail.png", + "wallpapertype": 0 + }, + { + "category": "Geometry", + "description": "The Glitch", + "downloads": "5416", + "id": 608, + "image": "IQ432Vmq", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1717667347-cubes2kmain0001-0350.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Above the clouds 🛩️", + "downloads": "16277", + "id": 279, + "image": "qYZW1Rv0", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1662008358-planeabovewater.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Glitch ⚡", + "downloads": "9707", + "id": 397, + "image": "gvJl2drZ", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1677823065-synth.png", + "wallpapertype": 0 + }, + { + "category": "Superheroes", + "description": "From the shadows, I rise 🕷✨", + "downloads": "4666", + "id": 690, + "image": "7tphTLSA", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1730447376-spiderman noir_2k.png", + "wallpapertype": 0 + }, + { + "category": "Typography", + "description": "Make it count ⏳", + "downloads": "14671", + "id": 295, + "image": "KEUARZqg", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1663568574-makeitcount3.png", + "wallpapertype": 0 + }, + { + "category": "Dope", + "description": "Through the unknown 🤐", + "downloads": "19806", + "id": 251, + "image": "zLp2Vj4x", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1658385467-animation 670001-0120.png", + "wallpapertype": 0 + }, + { + "category": "Cityscape", + "description": "Golden Gate Bridge 🌉", + "downloads": "4815", + "id": 669, + "image": "NBfadl9x", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1726732699-golden gate bridge view_2k.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Swirl 🌀", + "downloads": "14260", + "id": 298, + "image": "NdU7By6V", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1664170950-spriallines.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Best part of the day - Evening 🌆", + "downloads": "9277", + "id": 403, + "image": "sMcSilt2", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1679204730-sunlightreflectionvbr1.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Meow 🐈", + "downloads": "16366", + "id": 273, + "image": "i0E3UoF9", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1661490668-sleepingcat.png", + "wallpapertype": 0 + }, + { + "category": "Cityscape", + "description": "Riding the town 🚙", + "downloads": "32298", + "id": 202, + "image": "t7c0Vnr9", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1652009046-town.png", + "wallpapertype": 0 + }, + { + "category": "Geometry", + "description": "Linking links 🔗", + "downloads": "8785", + "id": 410, + "image": "0ugr2XTF", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1680509340-rubber.png", + "wallpapertype": 0 + }, + { + "category": "Cityscape", + "description": "Comfort of home 🌃", + "downloads": "20284", + "id": 245, + "image": "BCT9fx3h", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1657517940-window scape new.png", + "wallpapertype": 0 + }, + { + "category": "Cityscape", + "description": "A day in city 🏙", + "downloads": "11885", + "id": 329, + "image": "uHbALW25", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1667146134-planeabove.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Pulse of energy ⚡", + "downloads": "9623", + "id": 383, + "image": "Nh1ofe8P", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1674890229-wave2k.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Just floating around 🌊", + "downloads": "13852", + "id": 294, + "image": "1UWTpG87", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1663568542-jellyfish1.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Trains are beautiful 🚄", + "downloads": "13239", + "id": 297, + "image": "cskeY8Fx", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1663832513-bridgetrain.png", + "wallpapertype": 0 + }, + { + "category": "Cityscape", + "description": "Golden Gate Bridge 🌉", + "downloads": "14313", + "id": 281, + "image": "Aio6auR2", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1662355278-goldengatebridge.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Light bars ⚡", + "downloads": "10833", + "id": 340, + "image": "AOLH63u2", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1668151038-spectrum.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Go with the flow ⛵", + "downloads": "15836", + "id": 265, + "image": "ZIj76vOl", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1660118394-redboat.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "The path isn\u0027t a straight line, it\u0027s a spiral 🌀", + "downloads": "17420", + "id": 252, + "image": "qVJI5SN0", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1658649402-crcfluid.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Flying above the grass 🍃", + "downloads": "8682", + "id": 390, + "image": "HcKWT93r", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1676443822-hotairballoon.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Flocking beams ⚡", + "downloads": "19099", + "id": 242, + "image": "578AbrmR", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1657291653-dots.png", + "wallpapertype": 0 + }, + { + "category": "Pixel", + "description": "Festival vibe 🎆", + "downloads": "12369", + "id": 299, + "image": "cDJIejZY", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1664170966-pixelfireworks.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Endings are beautiful 🌇", + "downloads": "17405", + "id": 250, + "image": "NMy608Ya", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1658385460-sunset.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Weekend rides 🚙", + "downloads": "15007", + "id": 267, + "image": "2pHIefF3", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1660376766-sunsetride.png", + "wallpapertype": 0 + }, + { + "category": "Pixel", + "description": "Pixel warmth 🔥", + "downloads": "13833", + "id": 277, + "image": "hyzI7Pk3", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1661751428-pixelcampfire.png", + "wallpapertype": 0 + }, + { + "category": "Geometry", + "description": "Magic below the blocks 🪄", + "downloads": "12364", + "id": 296, + "image": "m3i5XUIA", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1663832509-risingneon.png", + "wallpapertype": 0 + }, + { + "category": "Dope", + "description": "Through the hurdles ⚡", + "downloads": "24404", + "id": 214, + "image": "wQ37vMgz", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1653546875-animation56.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Wind and flowers 🌷", + "downloads": "9931", + "id": 341, + "image": "9HPnwGeM", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1668151041-flowerfield.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "To honour the time machine - James Webb Telescope", + "downloads": "17217", + "id": 247, + "image": "n5cMUxgb", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1657812000-galaxy.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Wind\u0027s Caress 🌼", + "downloads": "6041", + "id": 466, + "image": "XAYWrv2H", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1693380406-flower.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Mirror reality 😎", + "downloads": "7271", + "id": 415, + "image": "rgALv9TE", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1681804030-flip.png", + "wallpapertype": 0 + }, + { + "category": "Geometry", + "description": "⭕ pop out ⭕", + "downloads": "4045", + "id": 654, + "image": "Hogh0Jt3", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1724059263-cylinder2k0001-0250.png", + "wallpapertype": 0 + }, + { + "category": "Geometry", + "description": "Waves contained in a traingle 📐", + "downloads": "8373", + "id": 380, + "image": "kzDQR9JP", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1674109401-gradientframewave_2k.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Home is where plants are🪴", + "downloads": "17135", + "id": 244, + "image": "5Vu7v1yp", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1657517928-leaves1.png", + "wallpapertype": 0 + }, + { + "category": "Geometry", + "description": "The maze 🫣", + "downloads": "13626", + "id": 270, + "image": "eYlUWwG3", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1660751880-patternrgb.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Monolith of energy ⚡", + "downloads": "18018", + "id": 238, + "image": "nXOH7dPa", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1656773192-trianglewaves.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Yin and yang ☯", + "downloads": "7919", + "id": 384, + "image": "DYWXTiLx", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1674890254-yinyang2K.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Let\u0027s Bravo 💪🏻", + "downloads": "3554", + "id": 695, + "image": "x3rgHsu0", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1731314484-johnny bravo_2k.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Winter\u0027s Silent Whispers ☃️", + "downloads": "4833", + "id": 527, + "image": "MA8NXHL7", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1703667129-snow globe.png", + "wallpapertype": 0 + }, + { + "category": "Geometry", + "description": "Expanding bubbles 🎈", + "downloads": "7193", + "id": 402, + "image": "OgYCR5WZ", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1679204714-bubble.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Line that divides dimension 🔮", + "downloads": "8405", + "id": 367, + "image": "OseuYg9c", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1670574738-flipbubbles2k.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Ghost Rider 🔥", + "downloads": "28949", + "id": 191, + "image": "agjLlwE3", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1650866838-skullnew.png", + "wallpapertype": 0 + }, + { + "category": "Typography", + "description": "Happy New Year 🎆", + "downloads": "4631", + "id": 532, + "image": "PhMH24dz", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1704208922-happynewyear_2k.png", + "wallpapertype": 0 + }, + { + "category": "Dope", + "description": "Are we in a simulation 🤔", + "downloads": "9950", + "id": 318, + "image": "FQNd2aKp", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1665474502-cybercity.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Gradient strings 🪡", + "downloads": "10977", + "id": 293, + "image": "NiCIf7nO", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1663217492-gradientline.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Face towards light 🌻", + "downloads": "13841", + "id": 254, + "image": "RHDuFAgb", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1658994666-sunflower.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Radiate like flowers 🌼", + "downloads": "3406", + "id": 664, + "image": "K6zaDsGx", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1725870736-fadingflowers_2k.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Raining triangles ⚡️", + "downloads": "16841", + "id": 231, + "image": "Wg13hPZz", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1655713095-triangs.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Boo want to be scary👻 ", + "downloads": "3210", + "id": 684, + "image": "PUW2EhR0", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1729501572-ghostwind_2k.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Disco floor 💃🏻", + "downloads": "10471", + "id": 283, + "image": "4tyKUwEl", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1662621794-discovibe.png", + "wallpapertype": 0 + }, + { + "category": "Typography", + "description": "Today is your day 😁", + "downloads": "19519", + "id": 213, + "image": "VnoQmB5a", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1653546861-today.png", + "wallpapertype": 0 + }, + { + "category": "Movies", + "description": "Banana 🍌", + "downloads": "30165", + "id": 179, + "image": "7f3Bsx60", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1649661826-minions.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Soothing of sea ⛵", + "downloads": "30550", + "id": 178, + "image": "3fabqR4C", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1649485172-sunset boat.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Catch the toast 🍞", + "downloads": "5430", + "id": 430, + "image": "U0FJ38hC", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1685514843-bread toaster_2k.png", + "wallpapertype": 0 + }, + { + "category": "Cityscape", + "description": "Wire\u0027s connecting people 👕👖", + "downloads": "11849", + "id": 259, + "image": "xRM4ArGk", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1659593345-hangingclothes.png", + "wallpapertype": 0 + }, + { + "category": "Cityscape", + "description": "Feeling the calm 📻", + "downloads": "50154", + "id": 145, + "image": "KbaDizGu", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1646888235-windowview.png", + "wallpapertype": 0 + }, + { + "category": "Space", + "description": "The red planet 🌍", + "downloads": "3070", + "id": 674, + "image": "vufNpc9r", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1727687132-planet landscape_2k.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Looping trios 😎", + "downloads": "6160", + "id": 396, + "image": "67SLDahN", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1677822985-twotripattern.png", + "wallpapertype": 0 + }, + { + "category": "Movies", + "description": "I solemnly swear that I am up to no good 🪄", + "downloads": "9892", + "id": 280, + "image": "q07B9wFL", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1662355270-footprint.png", + "wallpapertype": 0 + }, + { + "category": "Material", + "description": "Mountain of cards ⛰️", + "downloads": "21303", + "id": 200, + "image": "1OUHBt0A", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1651642619-mount.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Simple as a flower 🌼", + "downloads": "7734", + "id": 327, + "image": "luVyJaZX", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1666766421-flowerpot.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Hexagonal waves ⚡", + "downloads": "24948", + "id": 186, + "image": "mVsNlo9a", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1650263214-hex0001-0300.png", + "wallpapertype": 0 + }, + { + "category": "Material", + "description": "Trying to expand 🤔", + "downloads": "8120", + "id": 305, + "image": "e8p9NE2q", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1665245449-criclebreathe.png", + "wallpapertype": 0 + }, + { + "category": "Material", + "description": "Flipping cards 🎴", + "downloads": "21405", + "id": 195, + "image": "5mXc9s83", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1651215762-tilewave.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Buzzing bees 🐝", + "downloads": "9126", + "id": 282, + "image": "JBg1PslY", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1662621769-beehive.png", + "wallpapertype": 0 + }, + { + "category": "Geometry", + "description": "Bouncers ⭕", + "downloads": "8236", + "id": 300, + "image": "2PXEkfjJ", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1664525996-twoshadeball.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Monsoon cocktail 🍸", + "downloads": "2692", + "id": 675, + "image": "XHRV2kop", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1727687143-cocktail_2k.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Way back home 🚦", + "downloads": "21282", + "id": 192, + "image": "nCfxJUEd", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1650866841-traffic light.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Someone\u0027s being cooked 🪦", + "downloads": "2618", + "id": 680, + "image": "eQTYlByI", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1728551180-graveyard_2k.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Dustin , Do you copy 😉", + "downloads": "15823", + "id": 215, + "image": "EBMK7NTF", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1653896478-walkietalkie.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Mining the coins 🪙", + "downloads": "19665", + "id": 196, + "image": "CeFq9Owm", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1651215776-mining.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "In one drop of water are found all the secrets of all the oceans", + "downloads": "16073", + "id": 211, + "image": "k6uprVsf", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1653291509-boattrip6.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Strip\u0027s traffic 😉", + "downloads": "10830", + "id": 248, + "image": "kGB3yMqb", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1658134320-grid1.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Chilling through the countryside 🚙", + "downloads": "12497", + "id": 233, + "image": "rzTJdu4Q", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1655976665-countrydrive.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Journey through the color valley 🌈", + "downloads": "26208", + "id": 172, + "image": "xNAUw4vm", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1648970974-plane.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Cozy summer 🏖️", + "downloads": "16156", + "id": 206, + "image": "zE9R6gSG", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1652337222-seawave.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Ice and fire 🔥❄️", + "downloads": "15892", + "id": 207, + "image": "eNWAYdob", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1652767839-zig.png", + "wallpapertype": 0 + }, + { + "category": "Movies", + "description": "The Resistance ski speeder 🔥", + "downloads": "33573", + "id": 155, + "image": "qm6kevX7", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1647590528-starwars0080-0240.png", + "wallpapertype": 0 + }, + { + "category": "Anime", + "description": "Awakening the dragon 🔥", + "downloads": "24039", + "id": 175, + "image": "sLUpavix", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1649322130-dragonball.png", + "wallpapertype": 0 + }, + { + "category": "Cityscape", + "description": "Way back home 🪟", + "downloads": "7507", + "id": 292, + "image": "DEBxzG9u", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1663217494-window.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Keep calm and play 🎧", + "downloads": "23149", + "id": 176, + "image": "Ve8GXgvF", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1649322136-cassette.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Minimal waves 🌊", + "downloads": "8365", + "id": 268, + "image": "jxsMPnZO", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1660723701-abstractwaves.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Dropping frames 📐", + "downloads": "14825", + "id": 209, + "image": "9QDqL4BM", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1653028915-framerotate2.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Waves of shades 🌊", + "downloads": "8988", + "id": 257, + "image": "qyIXY1ZG", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1659335310-colourgrid6.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Juicy Pine 🍍", + "downloads": "16425", + "id": 199, + "image": "uVXhD8zU", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1651642615-pineapple.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Enjoy the smell of rain ☔", + "downloads": "12485", + "id": 222, + "image": "1VcGN9RO", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1654668060-rainvector.png", + "wallpapertype": 0 + }, + { + "category": "Material", + "description": "Clash of opposites 🌈", + "downloads": "8520", + "id": 262, + "image": "N8A1wHLX", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1659866395-loopie.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Woo hahaha 🎃🕯️", + "downloads": "2211", + "id": 679, + "image": "Wwu1pX5t", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1728551171-pumkin candle_2k.png", + "wallpapertype": 0 + }, + { + "category": "Miscellaneous", + "description": "Under the watchful eye of the moon, she rides the night 🌕✨🧙‍♀️", + "downloads": "2033", + "id": 689, + "image": "l8rWAa52", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1730447262-witch night_2k.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Creating memories in the snow, one angel at a time ☃️❄️", + "downloads": "1937", + "id": 705, + "image": "rX1J9fqj", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1733126052-snow angel_2k.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Rainbow effect 🌈", + "downloads": "29502", + "id": 153, + "image": "IrWp7Pok", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1647418463-circlingrainbowhigh.png", + "wallpapertype": 0 + }, + { + "category": "Superheroes", + "description": "On a date 🦇 🐱", + "downloads": "41699", + "id": 134, + "image": "sUMx4igS", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1645948957-thebatman.png", + "wallpapertype": 0 + }, + { + "category": "Dope", + "description": "Energy tiles ⚡", + "downloads": "1964", + "id": 694, + "image": "35VZSQ2q", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1731314477-cybersandwich_2k0001-0350.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Blow 💨", + "downloads": "9642", + "id": 237, + "image": "YwJ2fH5V", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1656482859-paperwindmill.png", + "wallpapertype": 0 + }, + { + "category": "Cityscape", + "description": "Life is like a roller coaster, live it, be happy, enjoy life 🎢", + "downloads": "11891", + "id": 216, + "image": "tUuqKWn5", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1653896481-rollercoster40.png", + "wallpapertype": 0 + }, + { + "category": "Movies", + "description": "Roll into adventure with BB-8 💫", + "downloads": "1886", + "id": 700, + "image": "HDabQGWh", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1732175087-BB-8_2k.png", + "wallpapertype": 0 + }, + { + "category": "Gaming", + "description": "Love\u0027s clicking ⌨️", + "downloads": "51051", + "id": 123, + "image": "Kuj9oSd4", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1645515864-key0001-0247.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Halftone 🪄", + "downloads": "6331", + "id": 278, + "image": "4HyjqJlt", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1662008355-Dots.png", + "wallpapertype": 0 + }, + { + "category": "Cityscape", + "description": "Wakeup call 🍵", + "downloads": "15116", + "id": 190, + "image": "5zsv48Oi", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1650692872-windownearsubway.png", + "wallpapertype": 0 + }, + { + "category": "Typography", + "description": "Life is a journey 🚗 ", + "downloads": "7788", + "id": 246, + "image": "yZvaUhFu", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1657811993-lifejourney.png", + "wallpapertype": 0 + }, + { + "category": "Gaming", + "description": "Pac Man 🕹", + "downloads": "42164", + "id": 127, + "image": "wZWDOt1x", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1645601772-pacman.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Chasing the breeze ⛵", + "downloads": "1683", + "id": 699, + "image": "31HPOwuK", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1732175071-waving boat_2k.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Entering the night 🌙", + "downloads": "6464", + "id": 266, + "image": "GrLxaBz5", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1660376731-lighthousevector.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Gift from nature 🌊", + "downloads": "24805", + "id": 154, + "image": "opYn9biL", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1647590523-waterfall.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Incursion 😉", + "downloads": "12058", + "id": 203, + "image": "5mMz2Xae", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1652165583-frames.png", + "wallpapertype": 0 + }, + + { + "category": "Cityscape", + "description": "Winter night ☃", + "downloads": "55895", + "id": 269, + "image": "rT350txs", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1660723718-snowapartment.png", + "wallpapertype": 0 + }, + + { + "category": "Anime", + "description": "There is something you have to protect ⚔️", + "downloads": "19655", + "id": 150, + "image": "9FzEXMxC", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1647246742-nezukobox.png", + "wallpapertype": 0 + }, + { + "category": "Movies", + "description": "Christmas time for snoopy ❄️☃️", + "downloads": "1221", + "id": 704, + "image": "85IPsh6E", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1733125861-snoopy house_2k.png", + "wallpapertype": 0 + }, + { + "category": "Material", + "description": "Looping loops ⭕", + "downloads": "5955", + "id": 240, + "image": "Oi8ofNPb", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1657031328-circle.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Tick Tock ⏰", + "downloads": "10522", + "id": 189, + "image": "EX9qN2Sp", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1650692865-ballpattern.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Love for old 🎷", + "downloads": "22506", + "id": 141, + "image": "fshCMoKF", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1646500025-musictape.png", + "wallpapertype": 0 + }, + { + "category": "Geometry", + "description": "Never ending triangles 📐", + "downloads": "10538", + "id": 187, + "image": "ViDSUzfG", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1650437837-foldingtriangle.png", + "wallpapertype": 0 + }, + { + "category": "Material", + "description": "Glide with the cards 💜", + "downloads": "12076", + "id": 177, + "image": "JcHhSQiF", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1649485125-trianglewave.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Spring is nature\u0027s way of saying let\u0027s party 🌄", + "downloads": "6956", + "id": 220, + "image": "LMBHkEXS", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1654413275-landscape.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "The opposite pairs 😉", + "downloads": "11237", + "id": 181, + "image": "g4NZzoAl", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1649835076-dna.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Confused ghost 👻", + "downloads": "15853", + "id": 158, + "image": "joyRhH14", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1647851266-panghost.png", + "wallpapertype": 0 + }, + { + "category": "Dope", + "description": "Through the warp tunnel 🚀", + "downloads": "19924", + "id": 144, + "image": "xVDSuvjo", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1646888230-animation390001-0120.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "There\u0027s two sides for everything 😇", + "downloads": "12718", + "id": 170, + "image": "OqL53EQk", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1648711046-minimalsun.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Converging stripes ⭕", + "downloads": "7242", + "id": 210, + "image": "e1Evxh7K", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1653028917-cutcircle2.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Confused steps 🤭", + "downloads": "13653", + "id": 163, + "image": "Xi0J6UdY", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1648310198-contour.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Summer waves 🌊", + "downloads": "6533", + "id": 217, + "image": "Q0HK57si", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1654161159-wavvve.png", + "wallpapertype": 0 + }, + { + "category": "Geometry", + "description": "Rings and Rings ✌🏻", + "downloads": "28938", + "id": 122, + "image": "NVcnSvTy", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1645515845-vectorgalaxy.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Splitting halves ⚛️", + "downloads": "3033", + "id": 317, + "image": "FxKsChSA", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1665474490-toggle3.png", + "wallpapertype": 0 + }, + { + "category": "Material", + "description": "Excited cards 🧡", + "downloads": "11782", + "id": 168, + "image": "bN0WaRht", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1648711023-recarray.png", + "wallpapertype": 0 + }, + { + "category": "Superheroes", + "description": "I am vengeance 🔥", + "downloads": "79041", + "id": 76, + "image": "lRNOhvxW", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1643010123-batman.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "The Eighty\u0027s 🕺", + "downloads": "10381", + "id": 174, + "image": "UHF3y6E7", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1649137233-dotshigh.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Joy of celebration 🎉", + "downloads": "16140", + "id": 146, + "image": "L4VbOsYe", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1646986481-fireworkview.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Serene Night ✨", + "downloads": "23302", + "id": 128, + "image": "MG6JrH1F", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1645601780-windmillill.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Squares are on a trip 😉", + "downloads": "10223", + "id": 173, + "image": "fi49c06E", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1649137222-squares.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Weekend life 🎣", + "downloads": "21075", + "id": 131, + "image": "UHGgV6xz", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1645689678-fishingboat.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Camping nights ⛺", + "downloads": "17785", + "id": 139, + "image": "YzMrhTdj", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1646306068-snowforest.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Circling ⭕", + "downloads": "10382", + "id": 164, + "image": "M3w0tZxG", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1648446785-pluspattern.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Runaway lines 😉", + "downloads": "9402", + "id": 167, + "image": "GLZf5btI", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1648617302-squareill.png", + "wallpapertype": 0 + }, + { + "category": "Geometry", + "description": "The wave of joy 🌊", + "downloads": "7106", + "id": 182, + "image": "nYb783FD", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1649835082-wave.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Droplets 💧", + "downloads": "6104", + "id": 193, + "image": "TMiOn2da", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1651048971-droppattern.png", + "wallpapertype": 0 + }, + { + "category": "Geometry", + "description": "Beats ⚡", + "downloads": "10892", + "id": 149, + "image": "cqWTe6jN", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1647246737-greenanim.png", + "wallpapertype": 0 + }, + { + "category": "Superheroes", + "description": "I think I\u0027m superman\u0027s favorite 💚", + "downloads": "8838", + "id": 159, + "image": "Oox1TRYe", + "pro": 10, + "resolution": "2160 x 3840", + "thumbnail": "1647851269-supperman0001-0093.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Hello anybody home 🚀", + "downloads": "27032", + "id": 107, + "image": "EmrYWiA1", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1644653245-blackhole.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Chill 🥤", + "downloads": "5713", + "id": 183, + "image": "LXi2ztvh", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1650005674-chill.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Cube of Wisdom ⚡", + "downloads": "15387", + "id": 126, + "image": "6nPkafpA", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1645601756-icecube.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Where am I 🕵🏻‍♀️", + "downloads": "5186", + "id": 188, + "image": "VjDfLBgT", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1650437848-bushsub.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Mirror dimension 🪄", + "downloads": "4103", + "id": 205, + "image": "Ukx7qj3K", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1652337215-cutsphere.png", + "wallpapertype": 0 + }, + { + "category": "Typography", + "description": "Error ", + "downloads": "24550", + "id": 106, + "image": "cofEiJ9d", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1644653226-error.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Booo Booo 👻", + "downloads": "79317", + "id": 62, + "image": "VflzaU4B", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642749968-ghost.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Gateway to the metaverse ⚡️", + "downloads": "10402", + "id": 136, + "image": "ATgbnVti", + "pro": 7, + "resolution": "2160 x 3840", + "thumbnail": "1646123475-animation33.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Run with the stripes 💜", + "downloads": "12677", + "id": 125, + "image": "54nkHS0T", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1645515883-intercutline.png", + "wallpapertype": 0 + }, + { + "category": "Cityscape", + "description": "Chores of the city 🌇", + "downloads": "7860", + "id": 147, + "image": "prKe6Qwu", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1646986489-sidetrain.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Countryside are always refreshing 🏡", + "downloads": "7561", + "id": 148, + "image": "dGAhZSgC", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1646986493-house 3.png", + "wallpapertype": 0 + }, + { + "category": "Anime", + "description": "Rengoku🔥", + "downloads": "51807", + "id": 66, + "image": "IVLv624U", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642750053-rengoku.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Where are the humans 🛸", + "downloads": "14777", + "id": 108, + "image": "xtTe6CAl", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1644653255-ufo.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Follow the wave ⚡", + "downloads": "13076", + "id": 110, + "image": "E9LzS5PG", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1645000748-Comp2dot.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Colour Blades 💚", + "downloads": "7661", + "id": 129, + "image": "byXhakCg", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1645689669-yellowpanel.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Every action has a reaction 🤓", + "downloads": "16880", + "id": 99, + "image": "9kC2wZUn", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1644566566-pend.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Winter cave 🪵", + "downloads": "5577", + "id": 143, + "image": "YfFaywoH", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1646725986-foresthouse.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Juicy slices 🍉", + "downloads": "5634", + "id": 142, + "image": "CUgLfE0M", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1646725977-watermelon.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Lava lamp ☮️", + "downloads": "14879", + "id": 102, + "image": "l01wioFT", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1644566624-lavalamp.png", + "wallpapertype": 0 + }, + { + "category": "Dope", + "description": "Cyber Planet ", + "downloads": "7650", + "id": 124, + "image": "FdBayDEC", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1645515875-animation620001-0120.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Joy of smiley\u0027s 😉", + "downloads": "3987", + "id": 157, + "image": "m7hJcMwv", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1647760634-smiley.png", + "wallpapertype": 0 + }, + { + "category": "Geometry", + "description": "Core of the ancient magic 🔮", + "downloads": "8480", + "id": 119, + "image": "QHtIJZqr", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1645259194-cubetemp0001-0250.png", + "wallpapertype": 0 + }, + { + "category": "Typography", + "description": "Just charging 🔋", + "downloads": "9093", + "id": 116, + "image": "6h5i7aTK", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1645173517-justcharging.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Vroom Vroom 🏎️", + "downloads": "7868", + "id": 121, + "image": "OCXNm04f", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1645259201-car0001-0150.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Through the town road 🤠", + "downloads": "4135", + "id": 152, + "image": "Gvj8U5RM", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1647418455-cowbo45.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Train\u0027s coming 🚞", + "downloads": "9956", + "id": 111, + "image": "JcweovKf", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1645000755-train0001-0250.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Warp drive through the vaccum ✨", + "downloads": "22782", + "id": 74, + "image": "tFNP0Ywm", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1643010114-erer.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Meow Meow 🐱", + "downloads": "7582", + "id": 120, + "image": "UauRwNgt", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1645259197-catdoodles.png", + "wallpapertype": 0 + }, + { + "category": "Typography", + "description": "Be a percent better everyday 💚", + "downloads": "43680", + "id": 60, + "image": "EDLpF1YJ", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1642668016-1better.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Need a bucket to collect all these 🪣", + "downloads": "22076", + "id": 73, + "image": "FGPpaDgu", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1642839034-playstation symbol0250-0499.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Being retro 🕺", + "downloads": "5221", + "id": 133, + "image": "Y5EsZt9h", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1645948953-animation330001-0120.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Joy of baloons 🎈", + "downloads": "4514", + "id": 140, + "image": "4aNESDct", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1646500005-baloon.png", + "wallpapertype": 0 + }, + { + "category": "Anime", + "description": "Feeling the rain 🌧️", + "downloads": "13316", + "id": 96, + "image": "H59OQqzb", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1644566465-girl in rain.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Imagination is important than knowledge 🔬", + "downloads": "7391", + "id": 114, + "image": "u0sL3bFq", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1645087072-galaxyhouse.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Camping folks ⛺", + "downloads": "13276", + "id": 84, + "image": "gYska4tH", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1643356780-camp fire.png", + "wallpapertype": 0 + }, + { + "category": "Dope", + "description": "Enter the metaverse⚡", + "downloads": "14561", + "id": 79, + "image": "pY1Fq7tw", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1643271285-animation 450001-0200.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Enjoying through the woods 🚗", + "downloads": "19355", + "id": 70, + "image": "4Oiby2ms", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642752242-night forest ride0001-0150.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Wiggly wiggly 😁", + "downloads": "11687", + "id": 82, + "image": "ku28xKdm", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1643356768-deform.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Night sky ✨", + "downloads": "11100", + "id": 83, + "image": "xtVHQ5qX", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1643356776-night shy.png", + "wallpapertype": 0 + }, + { + "category": "Nature", + "description": "Sailing through the horizon ⛵", + "downloads": "7979", + "id": 103, + "image": "eBdwiH6f", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1644566665-oceanboat.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Trying to meet the ends 😁", + "downloads": "3460", + "id": 135, + "image": "E39sJtD8", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1646123470-tripattern.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Solve the riddle 🔮", + "downloads": "5099", + "id": 117, + "image": "cxm8NBsl", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1645173533-ancientartifact.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Busy riding the sands 🌵", + "downloads": "11250", + "id": 78, + "image": "cM85T0jo", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1643010196-car0001-0247.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Waves 💜", + "downloads": "7413", + "id": 100, + "image": "MWjAhRZF", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1644566581-gradientwave.png", + "wallpapertype": 0 + }, + { + "category": "Geometry", + "description": "Realm of cubes ▪️◻️◾◼️", + "downloads": "7134", + "id": 101, + "image": "hAe9R7wf", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1644566610-decube.png", + "wallpapertype": 0 + }, + { + "category": "Superheroes", + "description": "God of thunder⚡", + "downloads": "30090", + "id": 56, + "image": "0TIqwLE7", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642667341-thor.png", + "wallpapertype": 0 + }, + { + "category": "Anime", + "description": "Ultra Instinct 🔥", + "downloads": "70321", + "id": 45, + "image": "mV5S6Qko", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1642490947-goku ultra.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Rainbow rain 🌈", + "downloads": "4098", + "id": 115, + "image": "A0xUfN6E", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1645173469-rainbowcloud.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Magic steps 🔮", + "downloads": "4093", + "id": 113, + "image": "FTQVdDNo", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1645087070-arr0040-0119.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Where\u0027s my mouse 🤔", + "downloads": "7843", + "id": 81, + "image": "ijQndh5H", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1643356755-old computer0001-0250.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Fabric of reality 😉", + "downloads": "10566", + "id": 71, + "image": "jVHDdWh6", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642752256-dot 1.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Festival of light 🕯️", + "downloads": "11457", + "id": 68, + "image": "ABnsbwC3", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1642750093-lanterns0118-1000.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Dots dots go away 😜", + "downloads": "5505", + "id": 98, + "image": "UoYrjhKc", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1644566535-dotarray.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Curly curly 🖤", + "downloads": "2843", + "id": 118, + "image": "J0YFxAoq", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1645173539-zigzag.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Disco disco 🕺", + "downloads": "3723", + "id": 105, + "image": "0tExmCbu", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1644653213-animation 210001-0240.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Loving the queit life 🏡", + "downloads": "3643", + "id": 104, + "image": "Af0esPFS", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1644566689-hotair.png", + "wallpapertype": 0 + }, + { + "category": "Anime", + "description": "Founding Titan", + "downloads": "14549", + "id": 58, + "image": "SbVr2TeA", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642667392-Aot.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Sprouting forest 🌳", + "downloads": "2845", + "id": 109, + "image": "qefFvO0a", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1644653266-colourtree.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Hoping for Dr Strange to come 😉", + "downloads": "18502", + "id": 53, + "image": "VR4E6smB", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642491015-strange portal.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Through the pulses 🔮 .", + "downloads": "9721", + "id": 63, + "image": "CBy8i1kc", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642749980-worm hole0001-0120.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Searching for glaciers ☹️", + "downloads": "7258", + "id": 67, + "image": "32yZIpDV", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642750069-boat ride.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Tik tok Tik tok ⏳", + "downloads": "3457", + "id": 97, + "image": "i3xABMhj", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1644566514-rotateballs.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Dancing dots 💚", + "downloads": "2173", + "id": 112, + "image": "wb9c0oGx", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1645000768-circlesplashpattern.png", + "wallpapertype": 0 + }, + { + "category": "Typography", + "description": "Vibe 🕺", + "downloads": "4625", + "id": 75, + "image": "86ixr5kA", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1643010117-vibe.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Atoms play 🔬", + "downloads": "3934", + "id": 77, + "image": "FgTs76uc", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1643010160-animation 250001-0120.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Countryside 🚜", + "downloads": "7608", + "id": 61, + "image": "N20IdgeG", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1642749960-farmhouse0001-0250.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Have fun at the carnival 🎡", + "downloads": "13168", + "id": 52, + "image": "z4bn3Hlk", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1642491005-carnival0001-0500.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Spiral of spectrum 🌈", + "downloads": "5468", + "id": 65, + "image": "u6lHZCQF", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642750022-circle0001-0200.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Don\u0027t tell anyone about this base 🚀", + "downloads": "4460", + "id": 69, + "image": "clMvD7o4", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642752214-pyramid0001-0250.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Ride by the river 🚗", + "downloads": "7984", + "id": 57, + "image": "gDf0iX2S", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642667356-night ride0001-0150.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "WIndmill 🍃", + "downloads": "6871", + "id": 59, + "image": "AY4nRzhf", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642667421-windmill0001-0250.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Exploring the deep waters 🌊", + "downloads": "8687", + "id": 55, + "image": "kfMaSvZ4", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642667334-sub0001-0250.png", + "wallpapertype": 0 + }, + { + "category": "Geometry", + "description": "Antigravity keeps me floating⚡", + "downloads": "4770", + "id": 64, + "image": "JKvqt5Pa", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642750008-dune0001-0150.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Feel the pulse 😊", + "downloads": "10718", + "id": 50, + "image": "41gcyMYN", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642490982-cube0001-0250.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Waveform 🖤", + "downloads": "15265", + "id": 46, + "image": "HpqY1Qxd", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642490957-shape0001-0120.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Planet love 🌍", + "downloads": "16894", + "id": 44, + "image": "VZ6i51qI", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642490937-planet.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Cyber waves 💜", + "downloads": "6689", + "id": 54, + "image": "ZP4qMsQe", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1642491028-shape10001-0120.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Mood for a rain 🌧️", + "downloads": "30616", + "id": 39, + "image": "Zs3BCXJl", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642486515-rain.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Pink flower ", + "downloads": "7908", + "id": 51, + "image": "VPIEWTYB", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642490992-flower.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Cat love 🐈", + "downloads": "9241", + "id": 49, + "image": "Om2nPfBg", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642490976-cat.png", + "wallpapertype": 0 + }, + { + "category": "Typography", + "description": "Loading ...... ", + "downloads": "13881", + "id": 43, + "image": "5kdBMGiW", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642490932-loading.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Wriggly cosmos 🖤", + "downloads": "13123", + "id": 41, + "image": "xNFSWdyz", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642490906-dark hole0001-0240.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Have a good day 😎", + "downloads": "5768", + "id": 48, + "image": "Q0Ironk1", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1642490971-coffee.png", + "wallpapertype": 0 + }, + { + "category": "Pattern", + "description": "Magic Flower 💙", + "downloads": "6247", + "id": 47, + "image": "T3YR9Wnf", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642490964-blue flower.png", + "wallpapertype": 0 + }, + { + "category": "Anime", + "description": "The Saiyan Prince 🔥", + "downloads": "21458", + "id": 37, + "image": "ayb6ospZ", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642486467-vegeta.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Swing with the lamp 🛋️", + "downloads": "11339", + "id": 40, + "image": "I0GAalQN", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1642488646-hanging light.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Color popping jet 🌈", + "downloads": "7164", + "id": 42, + "image": "iGXD8kwI", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642490923-jet.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Christmas eve ☃️", + "downloads": "18453", + "id": 36, + "image": "qO5rKNj9", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642486448-snow fall.png", + "wallpapertype": 0 + }, + { + "category": "Typography", + "description": "Think Big 💡", + "downloads": "9340", + "id": 38, + "image": "eOcINzdF", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642486479-think big.png", + "wallpapertype": 0 + }, + { + "category": "Abstract", + "description": "Spiral of light 💙", + "downloads": "11455", + "id": 34, + "image": "GeYfZgVw", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642486424-rolling tube0001-0500.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Guider of the sea 🌊", + "downloads": "10444", + "id": 33, + "image": "qMXGWpEH", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642486388-lighthouse0001-0100.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Play with dino 🦕", + "downloads": "5122", + "id": 35, + "image": "xfMGgp1q", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642486428-0001-0125.png", + "wallpapertype": 0 + }, + { + "category": "Typography", + "description": "Always be yourself ❤️", + "downloads": "6754", + "id": 32, + "image": "ewJ0fYQr", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642486351-bee.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Spooky 🎃", + "downloads": "87567", + "id": 25, + "image": "BHMsxl02", + "pro": 5, + "resolution": "2160 x 3840", + "thumbnail": "1639590645-halloween2021.png", + "wallpapertype": 0 + }, + { + "category": "Landscape", + "description": "Climb the hill 💙", + "downloads": "7916", + "id": 31, + "image": "4ldD89Fn", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642486325-ropeway.png", + "wallpapertype": 0 + }, + { + "category": "Amoled", + "description": "Ball of fire 🔥", + "downloads": "20861", + "id": 29, + "image": "gLiRYKEk", + "pro": 0, + "resolution": "2160 x 3840", + "thumbnail": "1642486187-geometryball0001-0250.png", + "wallpapertype": 0 + }, + { + "category": "Minimal", + "description": "Dance with the cactus 🌵", + "downloads": "6398", + "id": 30, + "image": "6BiDZEWA", + "pro": 3, + "resolution": "2160 x 3840", + "thumbnail": "1642486262-catcus.png", + "wallpapertype": 0 + } +] \ No newline at end of file diff --git a/app/src/main/java/com/hd/live/wallpapers/LiveApp.java b/app/src/main/java/com/hd/live/wallpapers/LiveApp.java new file mode 100644 index 0000000..135ee6a --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/LiveApp.java @@ -0,0 +1,110 @@ +package com.hd.live.wallpapers; + +import android.app.Application; +import android.graphics.Typeface; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.hd.live.wallpapers.bean.ResultData; +import com.hd.live.wallpapers.others.ComUtils; +import com.hd.live.wallpapers.others.DbUtils; +import com.hd.live.wallpapers.others.SaveUtils; + +import java.io.InputStream; +import java.lang.reflect.Type; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +public class LiveApp extends Application { + private static Typeface defaultFont; + private static LiveApp mApplication; + private static String thumbStr = "https://neutrolabgames.com/LiveLoop/CpanelPix/VideoThumb/"; + + public static String TAG = "--------------------LIVE----------"; + public static String getThumbStr() { + return thumbStr; + } + + public static LiveApp getApplication() { + return mApplication; + } + + @Override + public void onCreate() { + super.onCreate(); + mApplication = this; + defaultFont = Typeface.createFromAsset(getAssets(), "font.ttf"); +// initSDk(); + DbUtils.init(this); + String dbinit = SaveUtils.INSTANCE.getDbinit(); + if(dbinit.equals("0")){ + loadData(); + } + + } + + public static Typeface getDefaultFont() { + return defaultFont; + } + + private void loadData() { + String name[] = {"trending.json","Explore.json","Shift.json"}; + ExecutorService cachedThreadPool = Executors.newFixedThreadPool(3); + for (int i = 0;i<3;i++){ + int task = i; + cachedThreadPool.execute(new Runnable() { + @Override + public void run() { +// Common.logMsg("执行任务 "+task+"---开始--"+Thread.currentThread().getName()); + Gson gson = new Gson(); + InputStream open = null; + try { + open = getAssets().open(name[task]); + }catch (Exception e){ + } + if(open == null){ + return; + } + Type type = new TypeToken>() { + }.getType(); + String covertStr = ComUtils.getCovertStr(open); + List data = gson.fromJson(covertStr, type); + for (ResultData datum : data) { + DbUtils.insertDb(datum); + } + SaveUtils.INSTANCE.setDbinit("1"); +// Common.logMsg("执行任务 "+task+"---完成--"+Thread.currentThread().getName()); + } + }); + } + } + + + + private void initSDk(){ +// String APPId ="h6776591bc967e"; +// +// String AppKey ="a359707dba4dcae7ac8bc66d0d163295c"; +// String debugKey = "d2f08ee302fdd0741819983376817c0bf71bfe67"; +// ATSDK.checkIsEuTraffic(this, new NetTrafficeCallback() { +// +// @Override +// public void onResultCallback(boolean isEU) { +// if (isEU && ATSDK.getGDPRDataLevel(App.this) == ATSDK.UNKNOWN) { +// ATSDK.showGdprAuth(App.this); +// } +// +// } +// +// @Override +// public void onErrorCallback(String errorMsg) { +// +// } +// }); +// ATSDK.init( this, APPId, AppKey); +//// ATDebuggerUITest.showDebuggerUI(this,debugKey); +// AdManager.loadAllAd(); + } +} diff --git a/app/src/main/java/com/hd/live/wallpapers/actfrag/ActMain.java b/app/src/main/java/com/hd/live/wallpapers/actfrag/ActMain.java new file mode 100644 index 0000000..f0059bd --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/actfrag/ActMain.java @@ -0,0 +1,84 @@ +package com.hd.live.wallpapers.actfrag; + +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; + +import com.google.android.material.tabs.TabLayout; +import com.google.android.material.tabs.TabLayoutMediator; +import com.hd.live.wallpapers.R; +import com.hd.live.wallpapers.alladapter.AdaVp; +import com.hd.live.wallpapers.base.BaseActivity; +import com.hd.live.wallpapers.databinding.ActMainBinding; +import com.hd.live.wallpapers.databinding.ItemTabViewBinding; + +import java.util.ArrayList; +import java.util.List; + +public class ActMain extends BaseActivity { + + + @Override + protected ActMainBinding getViewBinding() { + return ActMainBinding.inflate(getLayoutInflater()); + } + + @Override + protected void onCreateInit() { + List fragmentList = new ArrayList<>(); + fragmentList.add(FragHome.newInstance(0)); + fragmentList.add(FragHome.newInstance(3)); + fragmentList.add(FragHome.newInstance(2)); + fragmentList.add(FragLike.newInstance()); + + AdaVp adapter = new AdaVp(this, fragmentList); + vb.vp.setAdapter(adapter); + new TabLayoutMediator(vb.tab, vb.vp, new TabLayoutMediator.TabConfigurationStrategy() { + @Override + public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) { + ItemTabViewBinding inflate = ItemTabViewBinding.inflate(getLayoutInflater()); + tab.setCustomView(inflate.getRoot()); + switch (position) { + case 0: + inflate.tabTitle.setText(ContextCompat.getString(ActMain.this, R.string.tab_Trending)); + inflate.tabIm.setImageDrawable(ContextCompat.getDrawable(ActMain.this, R.drawable.selector_tab1)); + break; + case 1: + inflate.tabTitle.setText(ContextCompat.getString(ActMain.this, R.string.tab_Explore)); + inflate.tabIm.setImageDrawable(ContextCompat.getDrawable(ActMain.this, R.drawable.selector_tab2)); + break; + case 2: + inflate.tabTitle.setText(ContextCompat.getString(ActMain.this, R.string.tab_Shift)); + inflate.tabIm.setImageDrawable(ContextCompat.getDrawable(ActMain.this, R.drawable.selector_tab3)); + break; + case 3: + inflate.tabTitle.setText(ContextCompat.getString(ActMain.this, R.string.tab_Favorites)); + inflate.tabIm.setImageDrawable(ContextCompat.getDrawable(ActMain.this, R.drawable.selector_tab_like)); + break; + } + } + }).attach(); + } + + @Override + protected void onInitClick() { + + } + + @Override + public boolean isFullScreen() { + return true; + } + + @Override + public boolean statusBarLight() { + return false; + } + + @Override + public void onClick(View v) { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hd/live/wallpapers/actfrag/ActPreView.java b/app/src/main/java/com/hd/live/wallpapers/actfrag/ActPreView.java new file mode 100644 index 0000000..8407bbf --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/actfrag/ActPreView.java @@ -0,0 +1,352 @@ +package com.hd.live.wallpapers.actfrag; + +import android.app.WallpaperManager; +import android.content.ComponentName; +import android.content.Intent; +import android.net.Uri; +import android.os.CountDownTimer; +import android.view.View; +import android.widget.Toast; + +import androidx.annotation.OptIn; +import androidx.media3.common.MediaItem; +import androidx.media3.common.Player; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.datasource.DefaultDataSourceFactory; +import androidx.media3.exoplayer.ExoPlayer; +import androidx.media3.exoplayer.source.ProgressiveMediaSource; + +import com.hd.live.wallpapers.R; +import com.hd.live.wallpapers.base.BaseActivity; +import com.hd.live.wallpapers.bean.FavoriteData; +import com.hd.live.wallpapers.databinding.ActPreviewBinding; +import com.hd.live.wallpapers.inter.VideoInterface; +import com.hd.live.wallpapers.net.MyRequestBody; +import com.hd.live.wallpapers.net.RetrofitUtil; +import com.hd.live.wallpapers.others.ComUtils; +import com.hd.live.wallpapers.others.DbUtils; +import com.hd.live.wallpapers.others.LiveWallService; +import com.hd.live.wallpapers.others.SaveUtils; + +import java.io.File; +import java.util.concurrent.atomic.AtomicBoolean; + +import io.reactivex.disposables.Disposable; + +public class ActPreView extends BaseActivity implements MyRequestBody.ProgressListener { + + + private CountDownTimer countDownTimer; + + + private String filePath; + private File mFile; + +// private boolean download = false; + + private ExoPlayer exoPlayer; + + + private int id; + private String image; + private String describe; + private String thumb; + private int wallpaperType; + + public static String KEY_ID = "ID"; + public static String KEY_image = "image"; + public static String KEY_describe = "describe"; + public static String KEY_wallpaperType = "wallpaperType"; + public static String KEY_thumb = "thumb"; + + // private boolean loadingui = false; + private AtomicBoolean loadingui ; + private Disposable disposable; + + @Override + protected ActPreviewBinding getViewBinding() { + return ActPreviewBinding.inflate(getLayoutInflater()); + } + + @Override + protected void onCreateInit() { + showLoading(true, false); + Intent intent = getIntent(); + id = intent.getIntExtra(KEY_ID, -1); + wallpaperType = intent.getIntExtra(KEY_wallpaperType, -1); + image = intent.getStringExtra(KEY_image); + describe = intent.getStringExtra(KEY_describe); + thumb = intent.getStringExtra(KEY_thumb); + vb.tvDescribe.setText(describe); + filePath = ComUtils.getCachePath(id); + mFile = new File(filePath); + initExoPlay(); + initFavorite(); + if (mFile.exists()) { + ComUtils.logMsg("------checkPlay-"); + checkPlay(); + return; + } + loadingui = new AtomicBoolean(false); + requestVideo(); + + + } + + private void requestVideo() { + + if (wallpaperType == 2) { + //shift + disposable = RetrofitUtil.getInstance().getShiftMp4(id, image, filePath,this, new VideoInterface() { + @Override + public void onVideoResult(boolean success, String path) { + ComUtils.logMsg("-------------success =" + success + "--path=" + path); + runOnUiThread(new Runnable() { + @Override + public void run() { + if (success) { + checkPlay(); + } else { + showRetry(); + ComUtils.logMsg("-------------loading fail"); + } + } + }); + + } + }); + } else { + disposable = RetrofitUtil.getInstance().getMp4(id, image, filePath,this, new VideoInterface() { + @Override + public void onVideoResult(boolean success, String path) { + ComUtils.logMsg("-------------success =" + success + "--path=" + path); + runOnUiThread(new Runnable() { + @Override + public void run() { + if (success) { + checkPlay(); + } else { + showRetry(); + ComUtils.logMsg("-------------loading fail"); + } + } + }); + + } + }); + } + } + + private void initFavorite() { + boolean b = DbUtils.queryIsLike(id); + vb.imFavorite.setSelected(b); + } + + @OptIn(markerClass = UnstableApi.class) + private void initExoPlay() { + exoPlayer = new ExoPlayer.Builder(this) + .build(); + exoPlayer.setRepeatMode(ExoPlayer.REPEAT_MODE_ONE); + vb.playerView.setPlayer(exoPlayer); + exoPlayer.addListener(new Player.Listener() { + @Override + public void onPlaybackStateChanged(int playbackState) { + if (playbackState == Player.STATE_READY) { + showLoading(false, true); + ComUtils.logMsg("-------onPlaybackStateChanged-----" + exoPlayer.getPlayWhenReady()); + } + } + }); + } + + private void checkPlay() { + playMedia3(); + } + + private void showLoading(boolean loading, boolean isHorizontal) { + if (loading) { + vb.layoutRetry.setVisibility(View.GONE); + vb.relativeLoading.setVisibility(View.VISIBLE); + if (isHorizontal) { + vb.horizontalLayout.setVisibility(View.VISIBLE); + vb.normalProgress.setVisibility(View.GONE); + } else { + vb.normalProgress.setVisibility(View.VISIBLE); + vb.horizontalLayout.setVisibility(View.GONE); + } + } else { + if (isHorizontal) { + vb.horizontalProgress.setProgress(100); + } + vb.relativeLoading.setVisibility(View.GONE); + } + + } + + private void showRetry() { + Toast.makeText(ActPreView.this, getString(R.string.check_connection), Toast.LENGTH_SHORT).show(); + vb.relativeLoading.setVisibility(View.VISIBLE); + vb.horizontalLayout.setVisibility(View.GONE); + vb.normalProgress.setVisibility(View.GONE); + vb.layoutRetry.setVisibility(View.VISIBLE); + } + + @Override + protected void onInitClick() { + vb.like.setOnClickListener(this); + vb.layoutSet.setOnClickListener(this); + vb.layoutBack.setOnClickListener(this); + vb.tvRetry.setOnClickListener(this); + } + + @Override + public boolean isFullScreen() { + return true; + } + + @Override + public boolean statusBarLight() { + return false; + } + + @Override + public void onClick(View v) { + if (v.equals(vb.like)) { + vb.imFavorite.setSelected(!vb.imFavorite.isSelected()); + boolean selected = vb.imFavorite.isSelected(); + if (selected) { + FavoriteData favoriteData = new FavoriteData(describe, id, image, wallpaperType, thumb); + DbUtils.insertLike(favoriteData); + } else { + DbUtils.deleteLike(id); + } + } else if (v.equals(vb.layoutSet)) { + setLiveWallpaper(); + } else if (v.equals(vb.layoutBack)) { + finish(); + } else if (v.equals(vb.tvRetry)) { + requestVideo(); + } + + + } + + @OptIn(markerClass = UnstableApi.class) + @Override + protected void onDestroy() { + super.onDestroy(); + if (exoPlayer != null) { + exoPlayer.release(); + } + + if (countDownTimer != null) { + countDownTimer.cancel(); + countDownTimer = null; + } + if (disposable != null && !disposable.isDisposed()) { + ComUtils.logMsg("-------------dispose"); + disposable.dispose(); + } + + + } + + @OptIn(markerClass = UnstableApi.class) + private void playMedia3() { + try { + ComUtils.logMsg("-------------playMedia3"); + Uri uriFromFilePath = ComUtils.getUriFromFilePath(this, filePath); + MediaItem mediaItem = MediaItem.fromUri(uriFromFilePath); + ProgressiveMediaSource mediaSource = createMediaSource(mediaItem); + exoPlayer.setMediaSource(mediaSource); + exoPlayer.prepare(); + exoPlayer.play(); + } catch (Exception e) { + ComUtils.logMsg("-------" + e.getMessage()); + } + } + + @OptIn(markerClass = UnstableApi.class) + public ProgressiveMediaSource createMediaSource(MediaItem mediaItem) { + DefaultDataSourceFactory dataSourceFactory = new DefaultDataSourceFactory( + this, "user-agent" + ); + ProgressiveMediaSource.Factory factory = new ProgressiveMediaSource.Factory(dataSourceFactory); + return factory.createMediaSource(mediaItem); + } + + + private void setLiveWallpaper() { + if (mFile.exists()) { + SaveUtils.INSTANCE.setVideo_path(filePath); + ComUtils.logMsg("----------setVideo_path---filePath=" + filePath); + } + + WallpaperManager wallpaperManager = WallpaperManager.getInstance(this); + try { + wallpaperManager.clear(); + ComUtils.logMsg("----------clear="); + } catch (Exception e) { + ComUtils.logMsg("---------e=" + e.getMessage()); + } + + try { + ComponentName componentName = new ComponentName(ActPreView.this, LiveWallService.class); + Intent intent = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER); + intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, componentName); + startActivity(intent); + } catch (Exception e) { + ComUtils.logMsg("---------e=" + e.getMessage()); + } + finish(); + } + + + @Override + public void onProgress(long bytesRead, long contentLength, boolean done) { + + if (contentLength <= 0) { + ComUtils.logMsg("contentLength" + contentLength); + } else { + int progress = (int) ((100 * bytesRead) / contentLength); +// Common.logMsg("Download progress: " + progress + "%"+"---loadingui="+loadingui); + if (vb.horizontalProgress.getProgress() != progress) { + runOnUiThread(new Runnable() { + @Override + public void run() { + if(vb.horizontalLayout.getVisibility() != View.VISIBLE){ + showLoading(true, true); + ComUtils.logMsg("------------showLoading------11-----"); + }else { + ComUtils.logMsg("------------showLoading------22-----"); + } + vb.horizontalProgress.setProgress(progress); + } + }); + } + + } + if (done) { + ComUtils.logMsg("Download complete!"); + } + + +// runOnUiThread(new Runnable() { +// @Override +// public void run() { +// if (contentLength <= 0) { +// Common.logMsg("contentLength" +contentLength); +// } else { +// showLoading(true, true); +// int progress = (int) ((100 * bytesRead) / contentLength); +// Common.logMsg("Download progress: " + progress + "%"+"---loadingui="+loadingui); +// vb.horizontalProgress.setProgress(progress); +// } +// if (done) { +// Common.logMsg("Download complete!"); +// } +// } +// }); + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hd/live/wallpapers/actfrag/ActWelcome.java b/app/src/main/java/com/hd/live/wallpapers/actfrag/ActWelcome.java new file mode 100644 index 0000000..07a2e8b --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/actfrag/ActWelcome.java @@ -0,0 +1,85 @@ +package com.hd.live.wallpapers.actfrag; + +import android.content.Intent; +import android.os.CountDownTimer; +import android.view.View; + +import com.hd.live.wallpapers.base.BaseActivity; +import com.hd.live.wallpapers.databinding.ActWelcomeBinding; + +public class ActWelcome extends BaseActivity { + + private static final long SPLASH_TIME_OUT = 1000L; + private CountDownTimer countDownTimer; + + @Override + protected ActWelcomeBinding getViewBinding() { + return ActWelcomeBinding.inflate(getLayoutInflater()); + } + + @Override + protected void onCreateInit() { + countDownTimer = new CountDownTimer(SPLASH_TIME_OUT,100) { + @Override + public void onTick(long millisUntilFinished) { + float v = 100 - (float) millisUntilFinished / SPLASH_TIME_OUT * 100; + int v1 = (int) v; + vb.progressBar.setProgress(v1); + } + + @Override + public void onFinish() { + vb.progressBar.setProgress(100); + Intent intent = new Intent(ActWelcome.this, ActMain.class); + startActivity(intent); + finish(); + } + }; +// countDownTimer = AdManager.showWelcomeAd(WelcomeActivity.this, SPLASH_TIME_OUT, new CountAction() { +// @Override +// public void onCount(long millisUntilFinished) { +// float v = 100 - (float) millisUntilFinished / SPLASH_TIME_OUT * 100; +// int v1 = (int) v; +// vb.progressBar.setProgress(v1); +// } +// }, new GoMainAction() { +// @Override +// public void onGo() { +// vb.progressBar.setProgress(100); +// Intent intent = new Intent(WelcomeActivity.this, MainActivity.class); +// startActivity(intent); +// finish(); +// } +// }); + countDownTimer.start(); + } + + @Override + protected void onInitClick() { + + } + + @Override + public boolean isFullScreen() { + return true; + } + + @Override + public boolean statusBarLight() { + return false; + } + + @Override + public void onClick(View view) { + + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if(countDownTimer!= null){ + countDownTimer.cancel(); + countDownTimer = null; + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hd/live/wallpapers/actfrag/FragHome.java b/app/src/main/java/com/hd/live/wallpapers/actfrag/FragHome.java new file mode 100644 index 0000000..3ac47be --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/actfrag/FragHome.java @@ -0,0 +1,67 @@ +package com.hd.live.wallpapers.actfrag; + +import android.os.Bundle; + +import androidx.lifecycle.Observer; +import androidx.paging.PagingData; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.hd.live.wallpapers.alladapter.AdaHome; +import com.hd.live.wallpapers.base.BaseFragment; +import com.hd.live.wallpapers.bean.ResultData; +import com.hd.live.wallpapers.databinding.FragHomeBinding; +import com.hd.live.wallpapers.others.ItemUtils; +import com.hd.live.wallpapers.vm.VmHome; + +public class FragHome extends BaseFragment { + + + private static final String ARG_PARAM1 = "param1"; + + + private int wallpaperType; + + private VmHome vmHome; + + public FragHome() { + + } + public static FragHome newInstance(int type) { + FragHome fragment = new FragHome(); + Bundle args = new Bundle(); + args.putInt(ARG_PARAM1, type); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { + wallpaperType = getArguments().getInt(ARG_PARAM1); + } + } + + + @Override + protected FragHomeBinding getFragmentVb() { + return FragHomeBinding.inflate(getLayoutInflater()); + } + + @Override + protected void initView() { + AdaHome adaHome = new AdaHome(requireActivity()); + Vb.recycler.setAdapter(adaHome); + Vb.recycler.setLayoutManager(new GridLayoutManager(requireContext(),2, RecyclerView.VERTICAL, false)); + Vb.recycler.addItemDecoration(new ItemUtils(requireContext(),15,15,10)); + vmHome = getFragmentScopeViewModel(VmHome.class); + vmHome.getPagingData(wallpaperType).observe(getViewLifecycleOwner(), new Observer>() { + @Override + public void onChanged(PagingData resultDataPagingData) { + adaHome.submitData(requireActivity().getLifecycle(),resultDataPagingData); + } + }); + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hd/live/wallpapers/actfrag/FragLike.java b/app/src/main/java/com/hd/live/wallpapers/actfrag/FragLike.java new file mode 100644 index 0000000..f382d04 --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/actfrag/FragLike.java @@ -0,0 +1,80 @@ +package com.hd.live.wallpapers.actfrag; + +import android.view.View; + +import androidx.lifecycle.Observer; +import androidx.paging.PagingData; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.hd.live.wallpapers.alladapter.AdaLike; +import com.hd.live.wallpapers.base.BaseFragment; +import com.hd.live.wallpapers.bean.FavoriteData; +import com.hd.live.wallpapers.databinding.FragLikeBinding; +import com.hd.live.wallpapers.inter.LikeInterface; +import com.hd.live.wallpapers.others.DbUtils; +import com.hd.live.wallpapers.others.ItemUtils; +import com.hd.live.wallpapers.vm.VmLike; + +import java.util.List; + +import io.objectbox.reactive.DataSubscription; + +public class FragLike extends BaseFragment { + private DataSubscription dataSubscription; + + private VmLike vmLike; + + + public FragLike() { + + } + + public static FragLike newInstance() { + FragLike fragment = new FragLike(); + return fragment; + } + + + + + @Override + protected FragLikeBinding getFragmentVb() { + return FragLikeBinding.inflate(getLayoutInflater()); + } + + @Override + protected void initView() { + AdaLike likeAdapter = new AdaLike(requireActivity()); + Vb.recycler.setAdapter(likeAdapter); + Vb.recycler.setLayoutManager(new GridLayoutManager(requireContext(), 2, RecyclerView.VERTICAL, false)); + Vb.recycler.addItemDecoration(new ItemUtils(requireContext(), 8, 8, 8)); + vmLike = getFragmentScopeViewModel(VmLike.class); + + vmLike.likeLiveData.observe(getViewLifecycleOwner(), new Observer>() { + @Override + public void onChanged(PagingData data) { + likeAdapter.submitData(requireActivity().getLifecycle(), data); + } + }); + dataSubscription = DbUtils.setLikeUpdateListener(new LikeInterface() { + @Override + public void onLikeUpdate(List data) { + if(data.size() == 0){ + Vb.layoutEmpty.setVisibility(View.VISIBLE); + }else { + Vb.layoutEmpty.setVisibility(View.GONE); + } + vmLike.update(data); + } + }); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (dataSubscription != null) { + dataSubscription.cancel(); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hd/live/wallpapers/alladapter/AdaHome.java b/app/src/main/java/com/hd/live/wallpapers/alladapter/AdaHome.java new file mode 100644 index 0000000..60b1dad --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/alladapter/AdaHome.java @@ -0,0 +1,106 @@ +package com.hd.live.wallpapers.alladapter; + +import android.app.Activity; +import android.content.Intent; +import android.graphics.drawable.Drawable; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.paging.PagingDataAdapter; +import androidx.recyclerview.widget.DiffUtil; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.load.DataSource; +import com.bumptech.glide.load.engine.GlideException; +import com.bumptech.glide.load.resource.bitmap.RoundedCorners; +import com.bumptech.glide.request.RequestListener; +import com.bumptech.glide.request.RequestOptions; +import com.bumptech.glide.request.target.Target; +import com.hd.live.wallpapers.LiveApp; +import com.hd.live.wallpapers.R; +import com.hd.live.wallpapers.actfrag.ActPreView; +import com.hd.live.wallpapers.base.BaseViewHolder; +import com.hd.live.wallpapers.bean.ResultData; +import com.hd.live.wallpapers.databinding.ItemHomeBinding; +import com.hd.live.wallpapers.others.ComUtils; + +import java.lang.ref.WeakReference; + +public class AdaHome extends PagingDataAdapter> { + + private WeakReference contextWeakReference; + private Activity MContext; + + public AdaHome(Activity context) { + super(DIFF_CALLBACK); + contextWeakReference = new WeakReference<>(context); + MContext = contextWeakReference.get(); + } + + @NonNull + @Override + public BaseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemHomeBinding inflate = ItemHomeBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new BaseViewHolder(inflate); + + + } + + @Override + public void onBindViewHolder(@NonNull BaseViewHolder holder, int position) { + ItemHomeBinding itemVb = holder.getItemVb(); + ResultData item = getItem(position); + + String thumbStr = LiveApp.getThumbStr() + item.getThumbnail(); + + Glide.with(MContext) + .asDrawable() + .load(thumbStr) + .apply(RequestOptions.bitmapTransform(new RoundedCorners(ComUtils.dpToPx(MContext, 4)))) + .placeholder(R.drawable.png_place_hlder) + .centerCrop() + .listener(new RequestListener() { + @Override + public boolean onLoadFailed(@Nullable GlideException e, @Nullable Object model, @NonNull Target target, boolean isFirstResource) { + ComUtils.logMsg(e.getMessage()); + return false; + } + + @Override + public boolean onResourceReady(@NonNull Drawable resource, @NonNull Object model, Target target, @NonNull DataSource dataSource, boolean isFirstResource) { + return false; + } + }) + .into(itemVb.imageThumb); + itemVb.imageThumb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(MContext, ActPreView.class); + intent.putExtra(ActPreView.KEY_ID, item.getId()); + intent.putExtra(ActPreView.KEY_wallpaperType, item.getWallpapertype()); + intent.putExtra(ActPreView.KEY_image, item.getImage()); + intent.putExtra(ActPreView.KEY_describe, item.getDescription()); + intent.putExtra(ActPreView.KEY_thumb, item.getThumbnail()); + MContext.startActivity(intent); + } + }); + } + + + private static final DiffUtil.ItemCallback DIFF_CALLBACK = new DiffUtil.ItemCallback() { + + + @Override + public boolean areItemsTheSame(@NonNull ResultData oldItem, @NonNull ResultData newItem) { + return oldItem.getId() == newItem.getId(); + } + + @Override + public boolean areContentsTheSame(@NonNull ResultData oldItem, @NonNull ResultData newItem) { + return oldItem.getId() == newItem.getId(); + } + }; +} diff --git a/app/src/main/java/com/hd/live/wallpapers/alladapter/AdaLike.java b/app/src/main/java/com/hd/live/wallpapers/alladapter/AdaLike.java new file mode 100644 index 0000000..657f7a2 --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/alladapter/AdaLike.java @@ -0,0 +1,109 @@ +package com.hd.live.wallpapers.alladapter; + +import android.app.Activity; +import android.content.Intent; +import android.graphics.drawable.Drawable; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.paging.PagingDataAdapter; +import androidx.recyclerview.widget.DiffUtil; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.load.DataSource; +import com.bumptech.glide.load.engine.GlideException; +import com.bumptech.glide.load.resource.bitmap.RoundedCorners; +import com.bumptech.glide.request.RequestListener; +import com.bumptech.glide.request.RequestOptions; +import com.bumptech.glide.request.target.Target; +import com.hd.live.wallpapers.LiveApp; +import com.hd.live.wallpapers.R; +import com.hd.live.wallpapers.databinding.ItemLikeBinding; +import com.hd.live.wallpapers.bean.FavoriteData; +import com.hd.live.wallpapers.actfrag.ActPreView; +import com.hd.live.wallpapers.others.ComUtils; +import com.hd.live.wallpapers.base.BaseViewHolder; + +import java.lang.ref.WeakReference; + +public class AdaLike extends PagingDataAdapter> { + + private WeakReference contextWeakReference; + private Activity MContext; + + public AdaLike(Activity context) { + super(DIFF_CALLBACK); + contextWeakReference = new WeakReference<>(context); + MContext = contextWeakReference.get(); + } + + @NonNull + @Override + public BaseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + ItemLikeBinding inflate = ItemLikeBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + return new BaseViewHolder<>(inflate); + + + } + + @Override + public void onBindViewHolder(@NonNull BaseViewHolder holder, int position) { + ItemLikeBinding itemVb = holder.getItemVb(); + FavoriteData item = getItem(position); + + String thumbStr = LiveApp.getThumbStr() + item.getThumbnail(); + + Glide.with(MContext) + .asDrawable() + .load(thumbStr) + .apply(RequestOptions.bitmapTransform(new RoundedCorners(ComUtils.dpToPx(MContext, 4)))) + .placeholder(R.drawable.png_place_hlder) + .centerCrop() + .listener(new RequestListener() { + @Override + public boolean onLoadFailed(@Nullable GlideException e, @Nullable Object model, @NonNull Target target, boolean isFirstResource) { + ComUtils.logMsg(e.getMessage()); + return false; + } + + @Override + public boolean onResourceReady(@NonNull Drawable resource, @NonNull Object model, Target target, @NonNull DataSource dataSource, boolean isFirstResource) { + return false; + } + }) + .into(itemVb.imageThumb); + itemVb.imageThumb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(MContext, ActPreView.class); + intent.putExtra(ActPreView.KEY_ID, item.getId()); + intent.putExtra(ActPreView.KEY_wallpaperType, item.getWallpapertype()); + intent.putExtra(ActPreView.KEY_image, item.getImage()); + intent.putExtra(ActPreView.KEY_describe, item.getDescription()); + intent.putExtra(ActPreView.KEY_thumb, item.getThumbnail()); + MContext.startActivity(intent); + + + + } + }); + } + + + private static final DiffUtil.ItemCallback DIFF_CALLBACK = new DiffUtil.ItemCallback() { + + + @Override + public boolean areItemsTheSame(@NonNull FavoriteData oldItem, @NonNull FavoriteData newItem) { + return oldItem.getId() == newItem.getId(); + } + + @Override + public boolean areContentsTheSame(@NonNull FavoriteData oldItem, @NonNull FavoriteData newItem) { + return oldItem.getId() == newItem.getId(); + } + }; +} diff --git a/app/src/main/java/com/hd/live/wallpapers/alladapter/AdaVp.java b/app/src/main/java/com/hd/live/wallpapers/alladapter/AdaVp.java new file mode 100644 index 0000000..75bec17 --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/alladapter/AdaVp.java @@ -0,0 +1,30 @@ +package com.hd.live.wallpapers.alladapter; + + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentActivity; +import androidx.viewpager2.adapter.FragmentStateAdapter; + +import java.util.List; + +public class AdaVp extends FragmentStateAdapter { + private final List fragmentList; + + public AdaVp(@NonNull FragmentActivity fragmentActivity, List fragmentList) { + super(fragmentActivity); + this.fragmentList = fragmentList; + } + + + @Override + public Fragment createFragment(int position) { + return fragmentList.get(position); + } + + @Override + public int getItemCount() { + return fragmentList.size(); + } +} + diff --git a/app/src/main/java/com/hd/live/wallpapers/base/BaseActivity.java b/app/src/main/java/com/hd/live/wallpapers/base/BaseActivity.java new file mode 100644 index 0000000..93f8bd2 --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/base/BaseActivity.java @@ -0,0 +1,88 @@ +package com.hd.live.wallpapers.base; + +import android.os.Bundle; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.view.WindowCompat; +import androidx.core.view.WindowInsetsControllerCompat; +import androidx.lifecycle.ViewModel; +import androidx.viewbinding.ViewBinding; + +import com.hd.live.wallpapers.databinding.ActBaseBinding; +import com.hd.live.wallpapers.vm.VMScope; + + +public abstract class BaseActivity extends AppCompatActivity implements View.OnClickListener { + + private final VMScope mVMScope = new VMScope(); + + protected T vb; + + private Window window; + private View decorView; + protected View mView; + private ActBaseBinding rootVb; + +// protected VMApplication vmApplication; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + vb = getViewBinding(); + View root = vb.getRoot(); + rootVb = ActBaseBinding.inflate(getLayoutInflater(), null, false); + rootVb.frameLayout.addView(root); + setContentView(rootVb.getRoot()); + window = getWindow(); + decorView = window.getDecorView(); + mView = decorView.getRootView(); +// vmApplication = getApplicationScopeViewModel(VMApplication.class); + + + setStatusBar(); + if (isFullScreen()) { + initFullScreen(); + } + onCreateInit(); + onInitClick(); + } + + protected abstract T getViewBinding(); + + + protected abstract void onCreateInit(); + + protected abstract void onInitClick(); + + public abstract boolean isFullScreen(); + + public abstract boolean statusBarLight(); + + + private void setStatusBar() { + //深色模式 + WindowInsetsControllerCompat insetsController = WindowCompat.getInsetsController(getWindow(), getWindow().getDecorView()); + insetsController.setAppearanceLightStatusBars(statusBarLight()); + } + + private void initFullScreen() { + decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); +// mView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); + mView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); + } + + protected K getActivityScopeViewModel(@NonNull Class modelClass) { + return mVMScope.getActivityScopeViewModel(this, modelClass); + } + + protected K getApplicationScopeViewModel(@NonNull Class modelClass) { + return mVMScope.getApplicationScopeViewModel(modelClass); + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/hd/live/wallpapers/base/BaseFragment.java b/app/src/main/java/com/hd/live/wallpapers/base/BaseFragment.java new file mode 100644 index 0000000..f7bd81d --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/base/BaseFragment.java @@ -0,0 +1,54 @@ +package com.hd.live.wallpapers.base; + +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModel; +import androidx.viewbinding.ViewBinding; + +import com.hd.live.wallpapers.vm.VMScope; + + +public abstract class BaseFragment extends Fragment { + private final VMScope mVMScope = new VMScope(); + protected T Vb; + + protected AppCompatActivity mActivity; +// protected VMApplication vmApplication; + public BaseFragment() { + + } + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + mActivity = (AppCompatActivity) context; + } + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + Vb = getFragmentVb(); +// vmApplication = getApplicationScopeViewModel(VMApplication.class); + initView(); + return Vb.getRoot(); + } + + protected abstract T getFragmentVb(); + protected abstract void initView(); + + protected K getFragmentScopeViewModel(@NonNull Class modelClass) { + return mVMScope.getFragmentScopeViewModel(this, modelClass); + } + protected K getActivityScopeViewModel(@NonNull Class modelClass) { + return mVMScope.getActivityScopeViewModel(mActivity, modelClass); + } + + protected K getApplicationScopeViewModel(@NonNull Class modelClass) { + return mVMScope.getApplicationScopeViewModel(modelClass); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hd/live/wallpapers/base/BaseViewHolder.java b/app/src/main/java/com/hd/live/wallpapers/base/BaseViewHolder.java new file mode 100644 index 0000000..b6eb131 --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/base/BaseViewHolder.java @@ -0,0 +1,20 @@ +package com.hd.live.wallpapers.base; + + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; +import androidx.viewbinding.ViewBinding; + +public class BaseViewHolder extends RecyclerView.ViewHolder { + + private T itemVb; + + public BaseViewHolder(@NonNull T itemView) { + super(itemView.getRoot()); + itemVb = itemView; + } + + public T getItemVb() { + return itemVb; + } +} diff --git a/app/src/main/java/com/hd/live/wallpapers/bean/FavoriteData.java b/app/src/main/java/com/hd/live/wallpapers/bean/FavoriteData.java new file mode 100644 index 0000000..70f4a74 --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/bean/FavoriteData.java @@ -0,0 +1,100 @@ +package com.hd.live.wallpapers.bean; + + +import java.io.Serializable; + +import io.objectbox.annotation.Entity; +import io.objectbox.annotation.Id; + + +@Entity +public class FavoriteData implements Serializable { + + @Id + private long objectId; + + + private String description; + + private int id; + private String image; + + + //0 :trending 1:dnamic 2:shift 3:explore + private int wallpapertype; + + private String thumbnail; + + + public FavoriteData(String description, int id, String image, int wallpapertype, String thumbnail) { + this.description = description; + this.id = id; + this.image = image; + this.wallpapertype = wallpapertype; + this.thumbnail = thumbnail; + } + + + public FavoriteData(long objectId, String description, int id, String image, int wallpapertype, String thumbnail) { + this.objectId = objectId; + this.description = description; + this.id = id; + this.image = image; + this.wallpapertype = wallpapertype; + this.thumbnail = thumbnail; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public long getObjectId() { + return objectId; + } + + public void setObjectId(long objectId) { + this.objectId = objectId; + } + + + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + + + public String getImage() { + return image; + } + + public void setImage(String image) { + this.image = image; + } + + + public int getWallpapertype() { + return wallpapertype; + } + + public void setWallpapertype(int wallpapertype) { + this.wallpapertype = wallpapertype; + } + + + public String getThumbnail() { + return thumbnail; + } + + public void setThumbnail(String thumbnail) { + this.thumbnail = thumbnail; + } +} diff --git a/app/src/main/java/com/hd/live/wallpapers/bean/ResultData.java b/app/src/main/java/com/hd/live/wallpapers/bean/ResultData.java new file mode 100644 index 0000000..9877f53 --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/bean/ResultData.java @@ -0,0 +1,108 @@ +package com.hd.live.wallpapers.bean; + + +import java.io.Serializable; + +import io.objectbox.annotation.Entity; +import io.objectbox.annotation.Id; + +@Entity +public class ResultData implements Serializable { + + @Id + private long objectId; + + private String category; + private String description; + private String downloads; + private int id; + private String image; + private int pro; + + private String resolution; + private String thumbnail; + + //0 :trending 1:dnamic 2:shift 3:explore + private int wallpapertype; + + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public long getObjectId() { + return objectId; + } + + public void setObjectId(long objectId) { + this.objectId = objectId; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getDownloads() { + return downloads; + } + + public void setDownloads(String downloads) { + this.downloads = downloads; + } + + public String getImage() { + return image; + } + + public void setImage(String image) { + this.image = image; + } + + public int getPro() { + return pro; + } + + public void setPro(int pro) { + this.pro = pro; + } + + public String getResolution() { + return resolution; + } + + public void setResolution(String resolution) { + this.resolution = resolution; + } + + public String getThumbnail() { + return thumbnail; + } + + public void setThumbnail(String thumbnail) { + this.thumbnail = thumbnail; + } + + public int getWallpapertype() { + return wallpapertype; + } + + public void setWallpapertype(int wallpapertype) { + this.wallpapertype = wallpapertype; + } +} diff --git a/app/src/main/java/com/hd/live/wallpapers/inter/LikeInterface.java b/app/src/main/java/com/hd/live/wallpapers/inter/LikeInterface.java new file mode 100644 index 0000000..90f258c --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/inter/LikeInterface.java @@ -0,0 +1,9 @@ +package com.hd.live.wallpapers.inter; + +import com.hd.live.wallpapers.bean.FavoriteData; + +import java.util.List; + +public interface LikeInterface { + void onLikeUpdate(List data); +} diff --git a/app/src/main/java/com/hd/live/wallpapers/inter/RequestInterface.java b/app/src/main/java/com/hd/live/wallpapers/inter/RequestInterface.java new file mode 100644 index 0000000..80001e9 --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/inter/RequestInterface.java @@ -0,0 +1,43 @@ +package com.hd.live.wallpapers.inter; + +import io.reactivex.Observable; +import okhttp3.ResponseBody; +import retrofit2.http.Field; +import retrofit2.http.FormUrlEncoded; +import retrofit2.http.POST; + +public interface RequestInterface { + + + + @POST("LiveLoop/AppData/jmywall.php") + @FormUrlEncoded + Observable getMP4(@Field("pi") int pi, + @Field("medium") String medium, + @Field("alpha") String alpha, + @Field("version") String version, + @Field("quality") String quality); + + + + //shift + @POST("LiveLoop/AppData/jshiftwall.php") + @FormUrlEncoded + Observable getShiftMP4(@Field("pi") int pi, + @Field("medium") String medium, + @Field("alpha") String alpha, + @Field("version") String version, + @Field("quality") String quality); + +// +// //Dnamic +// @POST("LiveLoop/AppData/jdaytimewall.php") +// @FormUrlEncoded +// Observable getDMP4(@Field("pi") int pi, +// @Field("medium") String medium, +// @Field("alpha") String alpha, +// @Field("version") String version, +// @Field("quality") String quality, +// @Field("filenumber") String filenumber); + +} diff --git a/app/src/main/java/com/hd/live/wallpapers/inter/VideoInterface.java b/app/src/main/java/com/hd/live/wallpapers/inter/VideoInterface.java new file mode 100644 index 0000000..d5ab1fe --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/inter/VideoInterface.java @@ -0,0 +1,5 @@ +package com.hd.live.wallpapers.inter; + +public interface VideoInterface { + void onVideoResult(boolean success,String path); +} diff --git a/app/src/main/java/com/hd/live/wallpapers/net/MyRequestBody.java b/app/src/main/java/com/hd/live/wallpapers/net/MyRequestBody.java new file mode 100644 index 0000000..793efdc --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/net/MyRequestBody.java @@ -0,0 +1,57 @@ +package com.hd.live.wallpapers.net; +import okhttp3.MediaType; +import okhttp3.ResponseBody; +import okio.Buffer; +import okio.BufferedSource; +import okio.ForwardingSource; +import okio.Okio; + +import java.io.IOException; + +public class MyRequestBody extends ResponseBody { + + private final ResponseBody responseBody; + private final ProgressListener progressListener; + private BufferedSource bufferedSource; + private String length; + + public MyRequestBody(ResponseBody responseBody, String length, ProgressListener progressListener) { + this.responseBody = responseBody; + this.progressListener = progressListener; + this.length = length; + } + + @Override + public MediaType contentType() { + return responseBody.contentType(); + } + + @Override + public long contentLength() { + return responseBody.contentLength(); + } + + @Override + public BufferedSource source() { + if (bufferedSource == null) { + bufferedSource = Okio.buffer(new ForwardingSource(responseBody.source()) { + long totalBytesRead = 0L; + + @Override + public long read(Buffer sink, long byteCount) throws IOException { + long bytesRead = super.read(sink, byteCount); + totalBytesRead += bytesRead != -1 ? bytesRead : 0; + if (progressListener != null) { + progressListener.onProgress(totalBytesRead, Long.parseLong(length), bytesRead == -1); + } + return bytesRead; + } + }); + } + return bufferedSource; + } + + public interface ProgressListener { + void onProgress(long bytesRead, long contentLength, boolean done); + } +} diff --git a/app/src/main/java/com/hd/live/wallpapers/net/RequestInterceptor.java b/app/src/main/java/com/hd/live/wallpapers/net/RequestInterceptor.java new file mode 100644 index 0000000..f75c4ad --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/net/RequestInterceptor.java @@ -0,0 +1,28 @@ +package com.hd.live.wallpapers.net; + +import okhttp3.Interceptor; +import okhttp3.Response; + +import java.io.IOException; + +public class RequestInterceptor implements Interceptor { + + private final MyRequestBody.ProgressListener progressListener; + + public RequestInterceptor(MyRequestBody.ProgressListener progressListener) { + this.progressListener = progressListener; + } + + @Override + public Response intercept(Chain chain) throws IOException { + Response originalResponse = chain.proceed(chain.request()); + String fileLength = originalResponse.header("File-Length"); + if (fileLength == null) { + fileLength = "0"; + } + return originalResponse.newBuilder() + .body(new MyRequestBody(originalResponse.body(), fileLength, progressListener)) + .build(); + } +} + diff --git a/app/src/main/java/com/hd/live/wallpapers/net/RetrofitUtil.java b/app/src/main/java/com/hd/live/wallpapers/net/RetrofitUtil.java new file mode 100644 index 0000000..89cfec2 --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/net/RetrofitUtil.java @@ -0,0 +1,142 @@ +package com.hd.live.wallpapers.net; + +import com.hd.live.wallpapers.inter.RequestInterface; +import com.hd.live.wallpapers.others.ComUtils; +import com.hd.live.wallpapers.inter.VideoInterface; + +import java.util.concurrent.TimeUnit; + +import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Consumer; +import io.reactivex.schedulers.Schedulers; +import okhttp3.OkHttpClient; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import retrofit2.Retrofit; +import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; +//import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; +//import retrofit2.converter.gson.GsonConverterFactory; +//import retrofit2.converter.scalars.ScalarsConverterFactory; + +public class RetrofitUtil { + + private String base_Host = "https://neutrolabgames.com/"; + + private static volatile RetrofitUtil REQUEST_MANAGER; + + private Retrofit retrofit; +// public MediaType JSON = MediaType.get("application/json; charset=utf-8"); + private RequestInterface requestInterface; + private Retrofit.Builder builder; + private OkHttpClient.Builder clientBuilder; + + + private RetrofitUtil() { + + } + + + private synchronized Retrofit getRetrofit(MyRequestBody.ProgressListener listener) { + if (builder == null) { +// retrofit = new Retrofit.Builder() +// .baseUrl(base_Host) +// .client(client) +//// .addConverterFactory(ScalarsConverterFactory.create()) // 支持返回 String 类型 +//// .addConverterFactory(GsonConverterFactory.create()) +// .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) +// .build(); + + builder = new Retrofit.Builder() + .baseUrl(base_Host) + .addCallAdapterFactory(RxJava2CallAdapterFactory.create()); + + } + if(clientBuilder == null){ + long DEFAULT_TIMEOUT = 5; + HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(); + httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + clientBuilder = new OkHttpClient.Builder() +// .addNetworkInterceptor(new GzipInterceptor()) + .connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS) + .readTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS); + } + clientBuilder.addInterceptor(new RequestInterceptor(listener)); + + return builder.client(clientBuilder.build()).build(); + } + + public static RetrofitUtil getInstance() { + if (REQUEST_MANAGER == null) { + synchronized (RetrofitUtil.class) { + if (REQUEST_MANAGER == null) { + REQUEST_MANAGER = new RetrofitUtil(); + } + } + } + return REQUEST_MANAGER; + } + + + public Disposable getMp4(int id, String image, String path, MyRequestBody.ProgressListener progressListener, VideoInterface listener) { + Disposable subscribe = getRetrofit(progressListener).create(RequestInterface.class).getMP4(id, "5eV6snEwfY7Yv6Ub", image, "DL8", "ViewLive") + .subscribeOn(Schedulers.io()) + .unsubscribeOn(Schedulers.io()) + .observeOn(Schedulers.io()) + .subscribe(new Consumer() { + @Override + public void accept(ResponseBody body) throws Exception { + boolean b = ComUtils.writeFile(body.byteStream(), path); + listener.onVideoResult(b, path); + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + listener.onVideoResult(false, throwable.getMessage()); + } + }); + return subscribe; + } + + + public Disposable getShiftMp4(int id, String image, String path, MyRequestBody.ProgressListener progressListener, VideoInterface listener) { + Disposable subscribe = getRetrofit(progressListener).create(RequestInterface.class).getShiftMP4(id, "5eV6snEwfY7Yv6Ub", image, "DL8", "ViewShiftLive") + .subscribeOn(Schedulers.io()) + .unsubscribeOn(Schedulers.io()) + .observeOn(Schedulers.io()) + .subscribe(new Consumer() { + @Override + public void accept(ResponseBody body) throws Exception { + boolean b = ComUtils.writeFile(body.byteStream(), path); + listener.onVideoResult(b, path); + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + listener.onVideoResult(false, throwable.getMessage()); + } + }); + return subscribe; + } + + +// public void getDnamicMp4(int id, String image,String path, OnVideoResultListener listener) { +// musicApi.getDMP4(id,"5eV6snEwfY7Yv6Ub",image,"DL8","ViewTimerLive","1" ) +// .subscribeOn(Schedulers.io()) +// .unsubscribeOn(Schedulers.io()) +// .observeOn(Schedulers.io()) +// .subscribe(new ObserverWrapper<>(new OnRequestListener() { +// @Override +// public void onFail(String errorMsg) { +// listener.onVideoResult(false,errorMsg); +// } +// +// @Override +// public void onSuccess(ResponseBody data) { +// boolean b = Common.writeFile(data.byteStream(), path); +// listener.onVideoResult(b,path); +// } +// +// })); +// } +} diff --git a/app/src/main/java/com/hd/live/wallpapers/others/ComUtils.java b/app/src/main/java/com/hd/live/wallpapers/others/ComUtils.java new file mode 100644 index 0000000..50ba0e7 --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/others/ComUtils.java @@ -0,0 +1,97 @@ +package com.hd.live.wallpapers.others; + +import android.content.Context; +import android.net.Uri; +import android.util.DisplayMetrics; +import android.util.Log; + +import androidx.core.content.FileProvider; + +import com.hd.live.wallpapers.LiveApp; + +import java.io.BufferedReader; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.io.StringWriter; +import java.nio.charset.StandardCharsets; + +public class ComUtils { + private static String TAG = "============="; + + public static String getCovertStr(InputStream stream) { + String covertStr = ""; + try { + StringWriter writer = new StringWriter(); + char[] buffer = new char[stream.available()]; + Reader reader = new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8)); + int a = 0; + while ((a = reader.read(buffer)) != -1) { + writer.write(buffer, 0, a); + } + covertStr = writer.toString(); + } catch (IOException e) { + return covertStr; + } + return covertStr; + } + + public static void logMsg(String msg) { + Log.d(TAG, msg); + } + + public static int dpToPx(Context context,int dp) { + return Math.round(dp * (context.getResources().getDisplayMetrics().xdpi / DisplayMetrics.DENSITY_DEFAULT)); + } + + public static int pxToDp(Context context,int px) { + return Math.round(px / (context.getResources().getDisplayMetrics().xdpi / DisplayMetrics.DENSITY_DEFAULT)); + } + + + + public static boolean writeFile(InputStream input, String filePath) { + try { + byte[] byteArray = new byte[4096]; + ByteArrayOutputStream output = new ByteArrayOutputStream(); + int bytesRead; + while ((bytesRead = input.read(byteArray)) != -1) { + output.write(byteArray, 0, bytesRead); + } + + File file = new File(filePath); + if (!file.exists()) { + file.createNewFile(); + } + + FileOutputStream fileOutputStream = new FileOutputStream(filePath); + fileOutputStream.write(output.toByteArray()); + output.close(); + fileOutputStream.close(); + ComUtils.logMsg("-------------onSuccess return true"); + return true; + } catch (Exception ex) { + Log.d("-----------", "---------ex=" + ex.getMessage()); + return false; + } + } + + public static String getCachePath(int id){ + LiveApp application = LiveApp.getApplication(); + String s1 = application.getCacheDir() +"/"+ id+".mp4"; + return s1; + + } + + + public static Uri getUriFromFilePath(Context context, String filePath) { + File file = new File(filePath); + + // 使用 FileProvider 获取 URI + return FileProvider.getUriForFile(context, context.getPackageName() + ".fileprovider", file); + } +} diff --git a/app/src/main/java/com/hd/live/wallpapers/others/DbUtils.java b/app/src/main/java/com/hd/live/wallpapers/others/DbUtils.java new file mode 100644 index 0000000..cd756b7 --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/others/DbUtils.java @@ -0,0 +1,188 @@ +package com.hd.live.wallpapers.others; + +import android.content.Context; + +import androidx.annotation.NonNull; + +import com.hd.live.wallpapers.inter.LikeInterface; +import com.hd.live.wallpapers.bean.FavoriteData; +import com.hd.live.wallpapers.bean.FavoriteData_; +import com.hd.live.wallpapers.bean.MyObjectBox; +import com.hd.live.wallpapers.bean.ResultData; +import com.hd.live.wallpapers.bean.ResultData_; +import com.hd.live.wallpapers.page.LikePageSource; +import com.hd.live.wallpapers.page.MyPageSource; + +import java.util.List; + +import io.objectbox.Box; +import io.objectbox.BoxStore; +import io.objectbox.android.AndroidScheduler; +import io.objectbox.query.Query; +import io.objectbox.reactive.DataObserver; +import io.objectbox.reactive.DataSubscription; +import io.objectbox.reactive.DataSubscriptionList; + +public class DbUtils { + + private static BoxStore boxStore; + + private static Box dataBox; + private static Box likeBox; + + private static DataSubscription observer; + + + public static void init(Context context) { + boxStore = MyObjectBox.builder().androidContext(context).build(); + } + + public static Box getDataBox() { + if (dataBox == null) { + dataBox = boxStore.boxFor(ResultData.class); + } + + return dataBox; + } + + public static Box getLikeBox() { + if (likeBox == null) { + likeBox = boxStore.boxFor(FavoriteData.class); + } + + return likeBox; + } + + public static DataSubscription setLikeUpdateListener(LikeInterface listener) { + Box likeBox = getLikeBox(); + Query build = likeBox.query() + .build(); + return build.subscribe(new DataSubscriptionList()) + .on(AndroidScheduler.mainThread()) + .observer(new DataObserver>() { + @Override + public void onData(@NonNull List data) { + ComUtils.logMsg("---OnLikeUpdateListener-------------" + data.size()); + listener.onLikeUpdate(data); + } + }); + + } + + public static void insertDb(ResultData resultData) { + Box objectBox = getDataBox(); + ResultData first = objectBox.query() + .equal(ResultData_.wallpapertype, resultData.getWallpapertype()) + .equal(ResultData_.id, resultData.getId()) + .build() + .findFirst(); + if (first == null) { +// Common.logMsg("---insertDb------Wallpapertype------" + resultData.getWallpapertype() + "-------id=" + resultData.getId()); + objectBox.put(resultData); + } else { +// Common.logMsg("---insertDb-------------" + resultData.getWallpapertype() + "-------id=" + resultData.getId()); + } + } + + + public static void insertLike(FavoriteData favoriteData) { + Box likeBox = getLikeBox(); + FavoriteData first = likeBox.query() + .equal(FavoriteData_.id, favoriteData.getId()) + .build() + .findFirst(); + if (first == null) { + ComUtils.logMsg("---insertLike-----------------id=" + favoriteData.getId()); + likeBox.put(favoriteData); + } else { + ComUtils.logMsg("---insertLike-----------------id=" + favoriteData.getId()); + } + } + + + public static void deleteLike(int id) { + Box likeBox = getLikeBox(); + FavoriteData first = likeBox.query() + .equal(FavoriteData_.id, id) + .build() + .findFirst(); + if (first != null) { + likeBox.remove(first); + ComUtils.logMsg("---deleteLike-----------------id=" + id); + } + + + } + + // +// public static void deleteDownload(Data downloadData) { +// Box objectBoxLike = getObjectBox(); +// String imId = downloadData.getImId(); +// Data boxLike = objectBoxLike.query() +// .equal(Data_.imId, imId, QueryBuilder.StringOrder.CASE_SENSITIVE) +// .build() +// .findFirst(); +// if (boxLike != null) { +// if (boxLike.isLike()) { +// boxLike.setDownload(false); +// objectBoxLike.put(boxLike); +// } else { +// objectBoxLike.remove(boxLike); +// } +// Log.d(MyWallpaper.TAG, "--------deleteDownload imId=" + imId); +// } +// +// +// } +// +// + public static boolean queryIsLike(int id) { + Box likeBox = getLikeBox(); + FavoriteData first = likeBox.query() + .equal(FavoriteData_.id, id) + .build() + .findFirst(); + if (first != null) { + return true; + } else { + return false; + } + } + public static List queryAllLike() { + Box likeBox = getLikeBox(); + return likeBox.query() + .build() + .find(); + } + + public static List queryData(int wallpaperType, int currentPage) { + int offset = (currentPage - 1) * MyPageSource.pageSize; + + Box objectBoxLike = getDataBox(); + List data = objectBoxLike.query() + .equal(ResultData_.wallpapertype, wallpaperType) + .build() + .find(offset, MyPageSource.pageSize); + + return data; + } + public static List queryLike(int currentPage) { + int offset = (currentPage - 1) * LikePageSource.pageSize; + Box likeBox = getLikeBox(); + List data = likeBox.query() + .build() + .find(offset, LikePageSource.pageSize); + + return data; + } + + public static List queryAllData(int wallpaperType) { + Box objectBoxLike = getDataBox(); + List data = objectBoxLike.query() + .equal(ResultData_.wallpapertype, wallpaperType) + .build() + .find(); + + return data; + } +} diff --git a/app/src/main/java/com/hd/live/wallpapers/others/ItemUtils.java b/app/src/main/java/com/hd/live/wallpapers/others/ItemUtils.java new file mode 100644 index 0000000..3dd20e2 --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/others/ItemUtils.java @@ -0,0 +1,73 @@ +package com.hd.live.wallpapers.others; + +import android.content.Context; +import android.graphics.Rect; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.StaggeredGridLayoutManager; + + + +public class ItemUtils extends RecyclerView.ItemDecoration { + + private int v, h, ex; + + public ItemUtils(Context context, int v, int h, int ex) { + this.v = Math.round(ComUtils.dpToPx(context,v)); + this.h = Math.round(ComUtils.dpToPx(context,h)); + this.ex = Math.round(ComUtils.dpToPx(context,ex)); + } + + @Override + public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { + super.getItemOffsets(outRect, view, parent, state); + int spanCount = 1; + int spanSize = 1; + int spanIndex = 0; + + int childAdapterPosition = parent.getChildAdapterPosition(view); + RecyclerView.LayoutManager layoutManager = parent.getLayoutManager(); + if (layoutManager instanceof StaggeredGridLayoutManager) { + StaggeredGridLayoutManager staggeredGridLayoutManager = (StaggeredGridLayoutManager) layoutManager; + StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) view.getLayoutParams(); + spanCount = staggeredGridLayoutManager.getSpanCount(); + if (layoutParams.isFullSpan()) { + spanSize = spanCount; + } + spanIndex = layoutParams.getSpanIndex(); + } else if (layoutManager instanceof GridLayoutManager) { + GridLayoutManager gridLayoutManager = (GridLayoutManager) layoutManager; + GridLayoutManager.LayoutParams layoutParams = (GridLayoutManager.LayoutParams) view.getLayoutParams(); + spanCount = gridLayoutManager.getSpanCount(); + spanSize = gridLayoutManager.getSpanSizeLookup().getSpanSize(childAdapterPosition); + spanIndex = layoutParams.getSpanIndex(); + } else if (layoutManager instanceof LinearLayoutManager) { + outRect.left = v; + outRect.right = v; + outRect.bottom = h; + } + + if (spanSize == spanCount) { + outRect.left = v + ex; + outRect.right = v + ex; + outRect.bottom = h; + + } else { + int itemAllSpacing = (v * (spanCount + 1) + ex * 2) / spanCount; + int left = v * (spanIndex + 1) - itemAllSpacing * spanIndex + ex; + int right = itemAllSpacing - left; + outRect.left = left; + outRect.right = right; + outRect.bottom = h; + + } + + } + + + +} diff --git a/app/src/main/java/com/hd/live/wallpapers/others/LiveWallService.kt b/app/src/main/java/com/hd/live/wallpapers/others/LiveWallService.kt new file mode 100644 index 0000000..6b5c681 --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/others/LiveWallService.kt @@ -0,0 +1,119 @@ +package com.hd.live.wallpapers.others + +import android.content.Context +import android.net.Uri +import android.service.wallpaper.WallpaperService +import android.view.SurfaceHolder +import androidx.annotation.OptIn +import androidx.media3.common.C +import androidx.media3.common.MediaItem +import androidx.media3.common.util.UnstableApi +import androidx.media3.datasource.DefaultDataSourceFactory +import androidx.media3.exoplayer.ExoPlayer +import androidx.media3.exoplayer.source.ProgressiveMediaSource +import java.io.File + + +class LiveWallService : WallpaperService() { + + + override fun onCreateEngine(): Engine { + return VideoWallpaperEngine() + } + + inner class VideoWallpaperEngine : Engine() { + private var exoPlayer: ExoPlayer? = null + + + @OptIn(UnstableApi::class) + private fun initExoPlay() { + exoPlayer = ExoPlayer.Builder(this@LiveWallService).build() + exoPlayer?.repeatMode = ExoPlayer.REPEAT_MODE_ONE + update() + } + + override fun onCreate(surfaceHolder: SurfaceHolder?) { + super.onCreate(surfaceHolder) + ComUtils.logMsg("-----Engine-----onCreate") + initExoPlay() + + } + + @OptIn(UnstableApi::class) + override fun onSurfaceCreated(holder: SurfaceHolder?) { + super.onSurfaceCreated(holder) + val surface = holder?.surface + if (surface != null) { + exoPlayer?.setVideoSurface(surface) + exoPlayer?.videoScalingMode = C.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING + } + + + } + + override fun onVisibilityChanged(visible: Boolean) { + super.onVisibilityChanged(visible) + ComUtils.logMsg("-------Engine---onVisibilityChanged visible=$visible") + if (visible) { + update() + exoPlayer?.play() + } else { + exoPlayer?.pause() + } + } + + + override fun onSurfaceDestroyed(holder: SurfaceHolder?) { + super.onSurfaceDestroyed(holder) + ComUtils.logMsg("------Engine----onSurfaceDestroyed---") + exoPlayer?.release() + } + + override fun onDestroy() { + super.onDestroy() + ComUtils.logMsg("-------Engine---onDestroy---") + + + } + + @OptIn(UnstableApi::class) + override fun onSurfaceChanged( + holder: SurfaceHolder?, + format: Int, + width: Int, + height: Int + ) { + super.onSurfaceChanged(holder, format, width, height) + + } + + @OptIn(UnstableApi::class) + private fun update() { + val uri = getVideoUrl(this@LiveWallService) +// val test = "android.resource://" + packageName + "/" + R.raw.test1 + if (uri != null) { + val fromUri = MediaItem.fromUri(uri) + val mediaSource = ProgressiveMediaSource.Factory( + DefaultDataSourceFactory(this@LiveWallService, "user-agent") + ).createMediaSource(fromUri) + exoPlayer?.setMediaSource(mediaSource) + exoPlayer?.prepare() + exoPlayer?.playWhenReady = true + } + } + + + } + + + private fun getVideoUrl(con: Context): Uri? { + + val file = File(SaveUtils.video_path) + val uri = if (file.isFile && file.exists()) { + ComUtils.getUriFromFilePath(con, SaveUtils.video_path) + } else { + null + } + return uri + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hd/live/wallpapers/others/MyText.java b/app/src/main/java/com/hd/live/wallpapers/others/MyText.java new file mode 100644 index 0000000..7b00aa3 --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/others/MyText.java @@ -0,0 +1,36 @@ +package com.hd.live.wallpapers.others; + + + +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; + +import androidx.annotation.Nullable; + +import com.hd.live.wallpapers.LiveApp; +import com.hd.live.wallpapers.R; + + +public class MyText extends androidx.appcompat.widget.AppCompatTextView { + + + public MyText(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + initAttrs(context,attrs); + } + + + private void initAttrs(Context context, AttributeSet attrs){ + TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MyTextView); + boolean aBoolean = typedArray.getBoolean(R.styleable.MyTextView_apply_font,false); + if(aBoolean){ + setTypeface(LiveApp.getDefaultFont()); + } + + typedArray.recycle(); + } + + + +} diff --git a/app/src/main/java/com/hd/live/wallpapers/others/SaveUtils.kt b/app/src/main/java/com/hd/live/wallpapers/others/SaveUtils.kt new file mode 100644 index 0000000..0c6886b --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/others/SaveUtils.kt @@ -0,0 +1,53 @@ +package com.hd.live.wallpapers.others + +import android.content.Context +import android.content.SharedPreferences +import com.hd.live.wallpapers.LiveApp + +object SaveUtils { + + val KEY_CURRENT_WAPPPAPER_PATH = "wallpaper_path" + val DB_INIT_DATAT = "init_db_data" + + private var shared: SharedPreferences? = null + + var video_path: String + get() = queryString( + KEY_CURRENT_WAPPPAPER_PATH, + "" + ) + set(value) { + saveString(KEY_CURRENT_WAPPPAPER_PATH, value) + } + var dbinit: String + get() = queryString( + DB_INIT_DATAT, + "0" + ) + set(value) { + saveString(DB_INIT_DATAT, value) + } + + private fun getShared(): SharedPreferences { + if (shared == null) { + shared = LiveApp.getApplication().getSharedPreferences("", Context.MODE_PRIVATE) + } + return shared!! + + } + + + + + + fun saveString(key: String, value: String) { + getShared().edit() + .putString(key, value).apply() + } + + fun queryString(key: String, defaultValue: String): String { + return getShared() + .getString(key, defaultValue).orEmpty() + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/hd/live/wallpapers/page/LikePageSource.java b/app/src/main/java/com/hd/live/wallpapers/page/LikePageSource.java new file mode 100644 index 0000000..059310d --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/page/LikePageSource.java @@ -0,0 +1,50 @@ +package com.hd.live.wallpapers.page; + + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.paging.PagingSource; +import androidx.paging.PagingState; + +import com.hd.live.wallpapers.bean.FavoriteData; +import com.hd.live.wallpapers.others.ComUtils; +import com.hd.live.wallpapers.others.DbUtils; + +import java.util.List; + +import kotlin.coroutines.Continuation; + +public class LikePageSource extends PagingSource { + public static int pageSize = 10; + + + public LikePageSource() { + + } + + @Nullable + @Override + public Integer getRefreshKey(@NonNull PagingState pagingState) { + return null; + } + + @Nullable + @Override + public Object load(@NonNull LoadParams loadParams, @NonNull Continuation> continuation) { + + try { + int page = loadParams.getKey() != null ? loadParams.getKey() : 1; + + List data = DbUtils.queryLike(page); + ComUtils.logMsg("-----loadLIke---------page="+page+"--data="+data.size()); + return new LoadResult.Page<>( + data, + page > 1 ? page - 1 : null, + data.isEmpty() ? null : page + 1 + ); + } catch (Exception e) { + return new LoadResult.Error<>(e); + } + } +} + diff --git a/app/src/main/java/com/hd/live/wallpapers/page/MyPageSource.java b/app/src/main/java/com/hd/live/wallpapers/page/MyPageSource.java new file mode 100644 index 0000000..8273e1e --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/page/MyPageSource.java @@ -0,0 +1,49 @@ +package com.hd.live.wallpapers.page; + + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.paging.PagingSource; +import androidx.paging.PagingState; + +import com.hd.live.wallpapers.bean.ResultData; +import com.hd.live.wallpapers.others.DbUtils; + +import java.util.List; + +import kotlin.coroutines.Continuation; + +public class MyPageSource extends PagingSource { + public static int pageSize = 20; + private int wallpaperType; + + public MyPageSource(int wallpaperType) { + this.wallpaperType = wallpaperType; + } + + @Nullable + @Override + public Integer getRefreshKey(@NonNull PagingState pagingState) { + return null; + } + + @Nullable + @Override + public Object load(@NonNull LoadParams loadParams, @NonNull Continuation> continuation) { + + try { + int page = loadParams.getKey() != null ? loadParams.getKey() : 1; + + List data = DbUtils.queryData(wallpaperType,page); +// Common.logMsg("-----load---------"+wallpaperType+"----page="+page+"'--data="+data.size()); + return new LoadResult.Page<>( + data, + page > 1 ? page - 1 : null, + data.isEmpty() ? null : page + 1 + ); + } catch (Exception e) { + return new LoadResult.Error<>(e); + } + } +} + diff --git a/app/src/main/java/com/hd/live/wallpapers/vm/VMScope.java b/app/src/main/java/com/hd/live/wallpapers/vm/VMScope.java new file mode 100644 index 0000000..79db950 --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/vm/VMScope.java @@ -0,0 +1,29 @@ +package com.hd.live.wallpapers.vm; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModel; +import androidx.lifecycle.ViewModelProvider; + +public class VMScope { + private ViewModelProvider mFragmentProvider; + private ViewModelProvider mActivityProvider; + private ViewModelProvider mApplicationProvider; + + public T getFragmentScopeViewModel(@NonNull Fragment fragment, @NonNull Class modelClass) { + if (mFragmentProvider == null) mFragmentProvider = new ViewModelProvider(fragment); + return mFragmentProvider.get(modelClass); + } + + public T getActivityScopeViewModel(@NonNull AppCompatActivity activity, @NonNull Class modelClass) { + if (mActivityProvider == null) mActivityProvider = new ViewModelProvider(activity); + return mActivityProvider.get(modelClass); + } + + public T getApplicationScopeViewModel(@NonNull Class modelClass) { + if (mApplicationProvider == null) + mApplicationProvider = new ViewModelProvider(VmOwner.getInstance()); + return mApplicationProvider.get(modelClass); + } +} diff --git a/app/src/main/java/com/hd/live/wallpapers/vm/VmHome.java b/app/src/main/java/com/hd/live/wallpapers/vm/VmHome.java new file mode 100644 index 0000000..66bc3a8 --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/vm/VmHome.java @@ -0,0 +1,24 @@ +package com.hd.live.wallpapers.vm; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.ViewModel; +import androidx.paging.Pager; +import androidx.paging.PagingConfig; +import androidx.paging.PagingData; +import androidx.paging.PagingLiveData; + +import com.hd.live.wallpapers.bean.ResultData; +import com.hd.live.wallpapers.page.MyPageSource; + + +public class VmHome extends ViewModel { + + public LiveData> getPagingData(int wallpaperType) { + + return PagingLiveData.getLiveData(new Pager<>( + new PagingConfig(10), + () -> new MyPageSource(wallpaperType) + )); + } + +} diff --git a/app/src/main/java/com/hd/live/wallpapers/vm/VmLike.java b/app/src/main/java/com/hd/live/wallpapers/vm/VmLike.java new file mode 100644 index 0000000..39d1dcc --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/vm/VmLike.java @@ -0,0 +1,40 @@ +package com.hd.live.wallpapers.vm; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; +import androidx.paging.Pager; +import androidx.paging.PagingConfig; +import androidx.paging.PagingData; +import androidx.paging.PagingLiveData; + +import com.hd.live.wallpapers.bean.FavoriteData; +import com.hd.live.wallpapers.page.LikePageSource; + +import java.util.List; + + +public class VmLike extends ViewModel { + + public Pager pager; + + + + private MutableLiveData> _likeLiveData = new MutableLiveData<>(); + public LiveData> likeLiveData = _likeLiveData ; + + public LiveData> getPagingData() { + Pager integerLikeDataPager = new Pager<>( + new PagingConfig(10), // 每页加载 20 条数据 + LikePageSource::new + ); + + return PagingLiveData.getLiveData(integerLikeDataPager); + } + public void update(List data){ + PagingData from = PagingData.from(data); + _likeLiveData.postValue(from); + } + + +} diff --git a/app/src/main/java/com/hd/live/wallpapers/vm/VmOwner.java b/app/src/main/java/com/hd/live/wallpapers/vm/VmOwner.java new file mode 100644 index 0000000..8431db8 --- /dev/null +++ b/app/src/main/java/com/hd/live/wallpapers/vm/VmOwner.java @@ -0,0 +1,24 @@ +package com.hd.live.wallpapers.vm; + +import androidx.annotation.NonNull; +import androidx.lifecycle.ViewModelStore; +import androidx.lifecycle.ViewModelStoreOwner; + +public class VmOwner implements ViewModelStoreOwner { + private final static VmOwner sInstance = new VmOwner(); + private ViewModelStore mAppViewModelStore; + + private VmOwner() { + } + + public static VmOwner getInstance() { + return sInstance; + } + + @NonNull + @Override + public ViewModelStore getViewModelStore() { + if (mAppViewModelStore == null) mAppViewModelStore = new ViewModelStore(); + return mAppViewModelStore; + } +} diff --git a/app/src/main/res/color/selector_tab_name.xml b/app/src/main/res/color/selector_tab_name.xml new file mode 100644 index 0000000..d6450f0 --- /dev/null +++ b/app/src/main/res/color/selector_tab_name.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_16.xml b/app/src/main/res/drawable/bg_16.xml new file mode 100644 index 0000000..913d014 --- /dev/null +++ b/app/src/main/res/drawable/bg_16.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/im_empty.xml b/app/src/main/res/drawable/im_empty.xml new file mode 100644 index 0000000..1ef5394 --- /dev/null +++ b/app/src/main/res/drawable/im_empty.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/like_gray.xml b/app/src/main/res/drawable/like_gray.xml new file mode 100644 index 0000000..bd2801d --- /dev/null +++ b/app/src/main/res/drawable/like_gray.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/like_light.xml b/app/src/main/res/drawable/like_light.xml new file mode 100644 index 0000000..5204f13 --- /dev/null +++ b/app/src/main/res/drawable/like_light.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/pb_h_download.xml b/app/src/main/res/drawable/pb_h_download.xml new file mode 100644 index 0000000..00c7422 --- /dev/null +++ b/app/src/main/res/drawable/pb_h_download.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/pb_welcome.xml b/app/src/main/res/drawable/pb_welcome.xml new file mode 100644 index 0000000..ac9b447 --- /dev/null +++ b/app/src/main/res/drawable/pb_welcome.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/png_place_hlder.xml b/app/src/main/res/drawable/png_place_hlder.xml new file mode 100644 index 0000000..2cdfaea --- /dev/null +++ b/app/src/main/res/drawable/png_place_hlder.xml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/app/src/main/res/drawable/selector_favorite.xml b/app/src/main/res/drawable/selector_favorite.xml new file mode 100644 index 0000000..30ad1a8 --- /dev/null +++ b/app/src/main/res/drawable/selector_favorite.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_tab1.xml b/app/src/main/res/drawable/selector_tab1.xml new file mode 100644 index 0000000..deaf96e --- /dev/null +++ b/app/src/main/res/drawable/selector_tab1.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_tab2.xml b/app/src/main/res/drawable/selector_tab2.xml new file mode 100644 index 0000000..50518c1 --- /dev/null +++ b/app/src/main/res/drawable/selector_tab2.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_tab3.xml b/app/src/main/res/drawable/selector_tab3.xml new file mode 100644 index 0000000..073c64c --- /dev/null +++ b/app/src/main/res/drawable/selector_tab3.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_tab_like.xml b/app/src/main/res/drawable/selector_tab_like.xml new file mode 100644 index 0000000..30e9345 --- /dev/null +++ b/app/src/main/res/drawable/selector_tab_like.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/src/main/res/drawable/shape_oval.xml b/app/src/main/res/drawable/shape_oval.xml new file mode 100644 index 0000000..ce3e85c --- /dev/null +++ b/app/src/main/res/drawable/shape_oval.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_retry.xml b/app/src/main/res/drawable/shape_retry.xml new file mode 100644 index 0000000..97289b5 --- /dev/null +++ b/app/src/main/res/drawable/shape_retry.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_set.xml b/app/src/main/res/drawable/shape_set.xml new file mode 100644 index 0000000..362adf5 --- /dev/null +++ b/app/src/main/res/drawable/shape_set.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/tab1_gray.xml b/app/src/main/res/drawable/tab1_gray.xml new file mode 100644 index 0000000..6793162 --- /dev/null +++ b/app/src/main/res/drawable/tab1_gray.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/tab1_light.xml b/app/src/main/res/drawable/tab1_light.xml new file mode 100644 index 0000000..bcb031b --- /dev/null +++ b/app/src/main/res/drawable/tab1_light.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/tab2_gray.xml b/app/src/main/res/drawable/tab2_gray.xml new file mode 100644 index 0000000..3bbcc7b --- /dev/null +++ b/app/src/main/res/drawable/tab2_gray.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/tab2_light.xml b/app/src/main/res/drawable/tab2_light.xml new file mode 100644 index 0000000..81b0d12 --- /dev/null +++ b/app/src/main/res/drawable/tab2_light.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/tab3_gray.xml b/app/src/main/res/drawable/tab3_gray.xml new file mode 100644 index 0000000..be903aa --- /dev/null +++ b/app/src/main/res/drawable/tab3_gray.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/tab3_light.xml b/app/src/main/res/drawable/tab3_light.xml new file mode 100644 index 0000000..96c7e86 --- /dev/null +++ b/app/src/main/res/drawable/tab3_light.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/tab_like_gray.xml b/app/src/main/res/drawable/tab_like_gray.xml new file mode 100644 index 0000000..aac1665 --- /dev/null +++ b/app/src/main/res/drawable/tab_like_gray.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/tab_like_light.xml b/app/src/main/res/drawable/tab_like_light.xml new file mode 100644 index 0000000..4a4cb9b --- /dev/null +++ b/app/src/main/res/drawable/tab_like_light.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/white_back.xml b/app/src/main/res/drawable/white_back.xml new file mode 100644 index 0000000..b47d615 --- /dev/null +++ b/app/src/main/res/drawable/white_back.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/act_base.xml b/app/src/main/res/layout/act_base.xml new file mode 100644 index 0000000..c999a16 --- /dev/null +++ b/app/src/main/res/layout/act_base.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/act_main.xml b/app/src/main/res/layout/act_main.xml new file mode 100644 index 0000000..ef962c9 --- /dev/null +++ b/app/src/main/res/layout/act_main.xml @@ -0,0 +1,38 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/act_preview.xml b/app/src/main/res/layout/act_preview.xml new file mode 100644 index 0000000..bd801eb --- /dev/null +++ b/app/src/main/res/layout/act_preview.xml @@ -0,0 +1,198 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/act_welcome.xml b/app/src/main/res/layout/act_welcome.xml new file mode 100644 index 0000000..6d371f0 --- /dev/null +++ b/app/src/main/res/layout/act_welcome.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/frag_home.xml b/app/src/main/res/layout/frag_home.xml new file mode 100644 index 0000000..5fe2ace --- /dev/null +++ b/app/src/main/res/layout/frag_home.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/frag_like.xml b/app/src/main/res/layout/frag_like.xml new file mode 100644 index 0000000..70f21c1 --- /dev/null +++ b/app/src/main/res/layout/frag_like.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_home.xml b/app/src/main/res/layout/item_home.xml new file mode 100644 index 0000000..5641e17 --- /dev/null +++ b/app/src/main/res/layout/item_home.xml @@ -0,0 +1,15 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_like.xml b/app/src/main/res/layout/item_like.xml new file mode 100644 index 0000000..439e263 --- /dev/null +++ b/app/src/main/res/layout/item_like.xml @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_tab_view.xml b/app/src/main/res/layout/item_tab_view.xml new file mode 100644 index 0000000..7ba9589 --- /dev/null +++ b/app/src/main/res/layout/item_tab_view.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxxhdpi/icon.png b/app/src/main/res/mipmap-xxxhdpi/icon.png new file mode 100644 index 0000000..3212425 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon.png differ diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml new file mode 100644 index 0000000..58773c2 --- /dev/null +++ b/app/src/main/res/values-night/themes.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml new file mode 100644 index 0000000..daef106 --- /dev/null +++ b/app/src/main/res/values/attrs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..2324f65 --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,24 @@ + + + #FF000000 + #FFFFFFFF + #00000000 + #878080 + + #33FFFFFF + #BA2828 + #BFBDBD + + + + + + + #04122A + #989292 + #F01101 + #80D4D5D6 + #FA3E5B + #FC3498 + + \ 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..b83b6a0 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,13 @@ + + Live Wallpapers + Trending + Explore + Shift + Favorites + Set + Loading failed, please check the network and try again + Retry + Go add your favorite wallpapers + Please check your network connection + Downloading video, please wait patiently + \ 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..afdc993 --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,9 @@ + + + + +