增加功能
This commit is contained in:
parent
a80c706a70
commit
d17993f4ce
@ -1,10 +1,12 @@
|
|||||||
import java.util.Date
|
import java.util.Date
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
plugins {
|
plugins {
|
||||||
|
kotlin("kapt")
|
||||||
id("com.android.application")
|
id("com.android.application")
|
||||||
id("org.jetbrains.kotlin.android")
|
id("org.jetbrains.kotlin.android")
|
||||||
id("com.google.gms.google-services")
|
id("com.google.gms.google-services")
|
||||||
id("com.google.firebase.crashlytics")
|
id("com.google.firebase.crashlytics")
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date())
|
val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date())
|
||||||
@ -63,4 +65,12 @@ dependencies {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
val room_version = "2.6.1"
|
||||||
|
implementation ("androidx.room:room-runtime:$room_version")
|
||||||
|
kapt("androidx.room:room-compiler:$room_version")
|
||||||
|
|
||||||
|
implementation("com.squareup.okhttp3:okhttp:4.11.0")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
15
app/proguard-rules.pro
vendored
15
app/proguard-rules.pro
vendored
@ -34,3 +34,18 @@ java.lang.Object writeReplace();
|
|||||||
java.lang.Object readResolve();
|
java.lang.Object readResolve();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
-keepclassmembers class com.pink.cute.wallpapers.PinkWallpapers {
|
||||||
|
public static final java.lang.String DB_NAME;
|
||||||
|
public static final int DB_VERSION;
|
||||||
|
}
|
||||||
|
|
||||||
|
-keepclassmembers class * {
|
||||||
|
@androidx.room.Query <methods>;
|
||||||
|
}
|
||||||
|
-keep class com.pink.cute.wallpapers.bean.Wallpaper { *; }
|
||||||
|
-keep class com.pink.cute.wallpapers.bean.Category { *; }
|
||||||
|
-keep class com.pink.cute.wallpapers.myroom.MyDatabase { *; }
|
||||||
|
-keep class com.pink.cute.wallpapers.myroom.CategoryDao { *; }
|
||||||
|
-keep class com.pink.cute.wallpapers.myroom.WallpaperDao { *; }
|
||||||
|
|||||||
@ -5,6 +5,9 @@
|
|||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.SET_WALLPAPER" />
|
<uses-permission android:name="android.permission.SET_WALLPAPER" />
|
||||||
|
<uses-permission
|
||||||
|
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||||
|
android:maxSdkVersion="32" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:name=".PinkWallpapers"
|
android:name=".PinkWallpapers"
|
||||||
@ -18,14 +21,19 @@
|
|||||||
android:theme="@style/Theme.PinkWallpapers"
|
android:theme="@style/Theme.PinkWallpapers"
|
||||||
tools:targetApi="31">
|
tools:targetApi="31">
|
||||||
<activity
|
<activity
|
||||||
android:name=".SetWallpaperActivity"
|
android:name=".activity.SetWallpaperActivity"
|
||||||
android:exported="false" />
|
android:exported="false" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".WallpaperListActivity"
|
android:name=".activity.WallpaperListActivity"
|
||||||
android:exported="false" />
|
android:exported="false" />
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".LaunActivity"
|
android:name=".activity.AboutActivity"
|
||||||
|
android:exported="false" />
|
||||||
|
<activity
|
||||||
|
android:name=".activity.PrivacyActivity"
|
||||||
|
android:exported="false" />
|
||||||
|
<activity
|
||||||
|
android:name=".activity.LaunActivity"
|
||||||
android:exported="true" >
|
android:exported="true" >
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
@ -34,7 +42,7 @@
|
|||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
android:name=".MainActivity"
|
android:name=".activity.MainActivity"
|
||||||
android:exported="false"
|
android:exported="false"
|
||||||
android:label="@string/app_name"/>
|
android:label="@string/app_name"/>
|
||||||
|
|
||||||
|
|||||||
144
app/src/main/assets/Pink_Wallpapers_privacy.html
Normal file
144
app/src/main/assets/Pink_Wallpapers_privacy.html
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Privacy Policy</title>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
line-height: 1.6;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
max-width: 800px;
|
||||||
|
margin: 0px auto;
|
||||||
|
padding: 20px;
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 8px;
|
||||||
|
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
h1, h2 {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
font-size: 24px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
font-size: 20px;
|
||||||
|
margin-top: 20px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
margin: 10px 0;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: #1a73e8;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>Privacy Policy</h1>
|
||||||
|
<p>This page is used to inform visitors regarding our policies with the collection, use, and
|
||||||
|
disclosure of Personal Information if anyone decided to use our Service.</p>
|
||||||
|
|
||||||
|
<p>If you choose to use our Service, then you agree to the collection and use of information in
|
||||||
|
relation to this policy. The Personal Information that We collect is used for providing and
|
||||||
|
improving the Service. We will not use or share your information with anyone except as
|
||||||
|
described in this Privacy Policy.</p>
|
||||||
|
|
||||||
|
<p>The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions,
|
||||||
|
which are accessible at [Terms and Conditions link] unless otherwise defined in this Privacy
|
||||||
|
Policy.</p>
|
||||||
|
|
||||||
|
<h2>Information Collection and Use</h2>
|
||||||
|
<p>For a better experience, while using our Service, We may require you to provide us with
|
||||||
|
certain personally identifiable information add whatever else you collect here, e.g. users
|
||||||
|
name, address, location, pictures. The information that We request will be retained on your
|
||||||
|
device and is not collected by us in any way retained by us and used as described in this
|
||||||
|
privacy policy.</p>
|
||||||
|
|
||||||
|
<p>The app does use third-party services that may collect information used to identify you.
|
||||||
|
Please refer to the privacy policy of the third-party service provider used by the
|
||||||
|
application.</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Google Play Services</li>
|
||||||
|
<li>Google Analytics for Firebase</li>
|
||||||
|
<li>Firebase Crashlytics</li>
|
||||||
|
<li>Unity</li>
|
||||||
|
<li>AppLovin</li>
|
||||||
|
<li>Vungle</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Log Data</h2>
|
||||||
|
<p>We want to inform you that whenever you use our Service, in a case of an error in the app We
|
||||||
|
collect data and information (through third-party products) on your phone called Log Data.
|
||||||
|
This Log Data may include information such as your device Internet Protocol (“IP”) address,
|
||||||
|
device name, operating system version, the configuration of the app when utilizing our
|
||||||
|
Service, the time and date of your use of the Service, and other statistics.</p>
|
||||||
|
|
||||||
|
<h2>Cookies</h2>
|
||||||
|
<p>Cookies are files with a small amount of data that are commonly used as anonymous unique
|
||||||
|
identifiers. These are sent to your browser from the websites that you visit and are stored
|
||||||
|
on your device's internal memory.</p>
|
||||||
|
|
||||||
|
<p>This Service does not use these “cookies” explicitly. However, the app may use third-party
|
||||||
|
code and libraries that use “cookies” to collect information and improve their services. You
|
||||||
|
have the option to either accept or refuse these cookies and know when a cookie is being
|
||||||
|
sent to your device. If you choose to refuse our cookies, you may not be able to use some
|
||||||
|
portions of this Service.</p>
|
||||||
|
|
||||||
|
<h2>Service Providers</h2>
|
||||||
|
<p>We may employ third-party companies and individuals due to the following reasons:</p>
|
||||||
|
<ul>
|
||||||
|
<li>To facilitate our Service;</li>
|
||||||
|
<li>To provide the Service on our behalf;</li>
|
||||||
|
<li>To perform Service-related services; or</li>
|
||||||
|
<li>To assist us in analyzing how our Service is used.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>We want to inform users of this Service that these third parties have access to their
|
||||||
|
Personal Information. The reason is to perform the tasks assigned to them on our behalf.
|
||||||
|
However, they are obligated not to disclose or use the information for any other
|
||||||
|
purpose.</p>
|
||||||
|
|
||||||
|
<h2>Security</h2>
|
||||||
|
<p>We value your trust in providing us your Personal Information, thus we are striving to use
|
||||||
|
commercially acceptable means of protecting it. But remember that no method of transmission
|
||||||
|
over the internet, or method of electronic storage is 100% secure and reliable, and We
|
||||||
|
cannot guarantee its absolute security.</p>
|
||||||
|
|
||||||
|
<h2>Links to Other Sites</h2>
|
||||||
|
<p>This Service may contain links to other sites. If you click on a third-party link, you will
|
||||||
|
be directed to that site. Note that these external sites are not operated by us. Therefore,
|
||||||
|
We strongly advise you to review the Privacy Policy of these websites. We have no control
|
||||||
|
over and assume no responsibility for the content, privacy policies, or practices of any
|
||||||
|
third-party sites or services.</p>
|
||||||
|
|
||||||
|
<h2>Children’s Privacy</h2>
|
||||||
|
<p>These Services do not address anyone under the age of 13. We do not knowingly collect
|
||||||
|
personally identifiable information from children under 13 years of age. In the case We
|
||||||
|
discover that a child under 13 has provided us with personal information, We immediately
|
||||||
|
delete this from our servers. If you are a parent or guardian and you are aware that your
|
||||||
|
child has provided us with personal information, please contact us so that We will be able
|
||||||
|
to do the necessary actions.</p>
|
||||||
|
|
||||||
|
<h2>Changes to This Privacy Policy</h2>
|
||||||
|
<p>We may update our Privacy Policy from time to time. Thus, you are advised to review this page
|
||||||
|
periodically for any changes. We will notify you of any changes by posting the new Privacy
|
||||||
|
Policy on this page.</p>
|
||||||
|
|
||||||
|
<p>This policy is effective as of 2024-01-09</p>
|
||||||
|
|
||||||
|
<h2>Contact Us</h2>
|
||||||
|
<p>If you have any questions or suggestions about our Privacy Policy, do not hesitate to contact
|
||||||
|
us at <a href="mailto:angiewiles2@gmail.com">angiewiles2@gmail.com</a>.</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -1,6 +1,7 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "feature",
|
"name": "feature",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d799900c0ed4448a858fabe9a97adb74.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0778d29d9df3135981fa983db6447d4c.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0778d29d9df3135981fa983db6447d4c.jpeg",
|
||||||
@ -102,6 +103,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "recent",
|
"name": "recent",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/35b096446e9a5d5f48ceb0200a8f998a.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e3e9cfd7ecb0f9291a40577ccd5a6041.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e3e9cfd7ecb0f9291a40577ccd5a6041.jpeg",
|
||||||
@ -191,6 +193,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "popular",
|
"name": "popular",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/450cfe73f9504835f27f7e86dff24d7f.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/cb1e57d9a8a8b74bd9da3a59d048b5f5.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/cb1e57d9a8a8b74bd9da3a59d048b5f5.jpeg",
|
||||||
@ -280,6 +283,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "anime",
|
"name": "anime",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4dedaccf8e3cdec4bab521ba2714735d.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/78a53756b869919dea40478e803165fe.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/78a53756b869919dea40478e803165fe.jpeg",
|
||||||
@ -333,6 +337,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "unicorn",
|
"name": "unicorn",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/66e51fb0c777083a33c87169ff431c27.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f394722f00db0df931ea62d8e0f1f273.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f394722f00db0df931ea62d8e0f1f273.jpeg",
|
||||||
@ -386,6 +391,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "kitty",
|
"name": "kitty",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/77b08753cd065bd8e60873b1c119538d.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0b52fe7cc5b2cf2d11cda94cf6dd77a9.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0b52fe7cc5b2cf2d11cda94cf6dd77a9.jpeg",
|
||||||
@ -439,6 +445,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "puppies",
|
"name": "puppies",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/29c711336f36473a3cacd4d9661f953a.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d86f07746d129601913d2bf09599f6e8.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d86f07746d129601913d2bf09599f6e8.jpeg",
|
||||||
@ -492,6 +499,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "flowers",
|
"name": "flowers",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c7a1784fb016359f7a62a882333cc83b.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2a05f339aa023822a6b07c843910241d.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2a05f339aa023822a6b07c843910241d.jpeg",
|
||||||
@ -545,6 +553,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "eiffel tower",
|
"name": "eiffel tower",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b6cde087dab857fdb24b0f0abd2385fa.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d7ea774c7936847034e7d47c6a4c3621.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d7ea774c7936847034e7d47c6a4c3621.jpeg",
|
||||||
@ -598,6 +607,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "dreamy",
|
"name": "dreamy",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b66b86b24e7d5998b3ea5a6536929fa6.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/078a2934e9bd4e91691040427e42c1cf.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/078a2934e9bd4e91691040427e42c1cf.jpeg",
|
||||||
@ -651,6 +661,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "animals",
|
"name": "animals",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ad04501013a619c9b579dc2d9e593bf2.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/10a20226dda3cf01850566e1cfe2e57b.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/10a20226dda3cf01850566e1cfe2e57b.jpeg",
|
||||||
@ -704,6 +715,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nature",
|
"name": "nature",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/aeaf0a95791d5064adf22a0dffc59692.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0a0068552c7716f4e62b52389be2e7aa.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0a0068552c7716f4e62b52389be2e7aa.jpeg",
|
||||||
@ -757,6 +769,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cute",
|
"name": "cute",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7a5e9212400d93fd5f5d6c1848b3d76e.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6a53bf315f64477d85ceb46298475b8d.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6a53bf315f64477d85ceb46298475b8d.jpeg",
|
||||||
@ -810,6 +823,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cute",
|
"name": "cute",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/6af1ac41c0bda2023d5b8268b7e1295b.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/24281fc765fce9da4c3d9d86e1e9ccf3.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/24281fc765fce9da4c3d9d86e1e9ccf3.jpeg",
|
||||||
@ -863,6 +877,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "beautiful",
|
"name": "beautiful",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0045a8e120149c1088dcc90669b4e08c.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a2e09a56793fbf9e8104833a199cf332.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a2e09a56793fbf9e8104833a199cf332.jpeg",
|
||||||
@ -916,6 +931,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "love",
|
"name": "love",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/7929459c12e04cfdc0613518a620b44b.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/93d96dd6956db5e77d25d83b9f46624c.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/93d96dd6956db5e77d25d83b9f46624c.jpeg",
|
||||||
@ -969,6 +985,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "quotes",
|
"name": "quotes",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3deec3b8eaeff16459a684cef5224b9b.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ffdee201ab115879fd038a7f529d7d2c.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ffdee201ab115879fd038a7f529d7d2c.jpeg",
|
||||||
@ -1022,6 +1039,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "kawaii",
|
"name": "kawaii",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/59eecae04d88aafdfc27dbdbed3f7206.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/de00f68d508f814beb905cd2fcb105b6.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/de00f68d508f814beb905cd2fcb105b6.jpeg",
|
||||||
@ -1075,6 +1093,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "butterflies",
|
"name": "butterflies",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2be531772db23680710b0ae0f6bbd6b1.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/14bec2138e0dbbb8269fcd823373ec81.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/14bec2138e0dbbb8269fcd823373ec81.jpeg",
|
||||||
@ -1128,6 +1147,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ice-cream",
|
"name": "ice-cream",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0bf796c657ed4d6f71a87506f78d5810.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1bbcf0d4423449788cbc823441a3639a.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1bbcf0d4423449788cbc823441a3639a.jpeg",
|
||||||
@ -1181,6 +1201,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "birds",
|
"name": "birds",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/eb8cff06bba7da5f3bdc7171815f30b0.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d027d5c75d46118a8ff86257f87a7818.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d027d5c75d46118a8ff86257f87a7818.jpeg",
|
||||||
@ -1234,6 +1255,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "candy",
|
"name": "candy",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e249865fcb0a40a9e64fbb125b467643.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d0522722bb51d48e79670f07e4ec94ed.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d0522722bb51d48e79670f07e4ec94ed.jpeg",
|
||||||
@ -1287,6 +1309,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "illustration",
|
"name": "illustration",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0bd89baff334793eac9ea18c651d43b5.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/741a4f4e3c11a30f5f250eabb255f3d5.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/741a4f4e3c11a30f5f250eabb255f3d5.jpeg",
|
||||||
@ -1340,6 +1363,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "colorful",
|
"name": "colorful",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2af2a4d4e9ab05a8ed888fb4a704ee07.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/668845fe70cd30c376a78f566e4b89c6.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/668845fe70cd30c376a78f566e4b89c6.jpeg",
|
||||||
@ -1393,6 +1417,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "pattern",
|
"name": "pattern",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/9e75b52e8e3fee0ad35f4145935c2cb2.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8b570d932db8d172bb9c1aca58972d4d.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8b570d932db8d172bb9c1aca58972d4d.jpeg",
|
||||||
@ -1446,6 +1471,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "floral",
|
"name": "floral",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/2831602ba02537da94d995723ccf7267.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4ae5e4942ebe89d59e9cdc92b2805ccb.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4ae5e4942ebe89d59e9cdc92b2805ccb.jpeg",
|
||||||
@ -1499,6 +1525,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cakes",
|
"name": "cakes",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b18657ce8505fca699060de13b37ce03.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/96e101029fa82cad3fba032e4d907874.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/96e101029fa82cad3fba032e4d907874.jpeg",
|
||||||
@ -1540,6 +1567,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "abstract",
|
"name": "abstract",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/043429d95275d9ac3b571751507632d1.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4bff588558b80ede14e99fdeeef127ad.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/4bff588558b80ede14e99fdeeef127ad.jpeg",
|
||||||
@ -1593,6 +1621,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "amoled",
|
"name": "amoled",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c7e353bebb4b98ecd4cd3d5311fcc84d.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/13362a433eeb77a8fddc8c5a75291d57.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/13362a433eeb77a8fddc8c5a75291d57.jpeg",
|
||||||
@ -1646,6 +1675,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "vintage",
|
"name": "vintage",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0d7fe05abaa5a041d26b3c0541533f88.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a4e335102bf1bd6e2b9a305afff7c9b0.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/a4e335102bf1bd6e2b9a305afff7c9b0.jpeg",
|
||||||
@ -1699,6 +1729,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cool",
|
"name": "cool",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0d183f9e2cc4ad2626d58bf60ef423e6.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/de36a2eae65bb24a433f22d2de2adf2f.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/de36a2eae65bb24a433f22d2de2adf2f.jpeg",
|
||||||
@ -1752,6 +1783,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "variety",
|
"name": "variety",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/fe57f912ce3eedf20716b20335b92a7a.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3a5965c4291dba859c4b7f0b196f99c2.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3a5965c4291dba859c4b7f0b196f99c2.jpeg",
|
||||||
@ -1805,6 +1837,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "funny",
|
"name": "funny",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/b2e70fdc63bcefd5846f136da3975f9c.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1bd4c32c2eb2045a19c4cf7afb8201d4.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/1bd4c32c2eb2045a19c4cf7afb8201d4.jpeg",
|
||||||
@ -1858,6 +1891,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "food",
|
"name": "food",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d04ee07feb44c02fcf92a7c3094370fb.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3a49c824f553e1b8f2ce743cb89e1b6c.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3a49c824f553e1b8f2ce743cb89e1b6c.jpeg",
|
||||||
@ -1911,6 +1945,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "fashion",
|
"name": "fashion",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d9fb7a20ef94b3c8379eeabd2f085211.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f90e441b77b209c856bb2441ba11bac4.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/f90e441b77b209c856bb2441ba11bac4.jpeg",
|
||||||
@ -1964,6 +1999,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sad",
|
"name": "sad",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/3670282caa3a1b93913827c103476de4.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c59007c4e8b3befb96dbecb3ec326cc1.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/c59007c4e8b3befb96dbecb3ec326cc1.jpeg",
|
||||||
@ -2017,6 +2053,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "music",
|
"name": "music",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/ba895bdb432d5ae1315777e89f07b2de.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d5f3a2230952dab694ff0a80825e0a9d.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/d5f3a2230952dab694ff0a80825e0a9d.jpeg",
|
||||||
@ -2038,6 +2075,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "fruit",
|
"name": "fruit",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/25defad4df6676943fee66672cd9c469.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e0f64bd789ef513368865c9f42adfaab.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/e0f64bd789ef513368865c9f42adfaab.jpeg",
|
||||||
@ -2091,6 +2129,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "doll",
|
"name": "doll",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/cf99a915f6e25f8a84edb0297ae5d5a7.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8adbcdd5abe61cc2210d8d5bdc7343e8.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8adbcdd5abe61cc2210d8d5bdc7343e8.jpeg",
|
||||||
@ -2144,6 +2183,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "teddy",
|
"name": "teddy",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/0cd0f61b1feaaca0be9d35baecfa9fb3.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/03b962f4e3ff5cc220544c6589a49482.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/03b962f4e3ff5cc220544c6589a49482.jpeg",
|
||||||
@ -2197,6 +2237,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "winter",
|
"name": "winter",
|
||||||
|
"preUrl": "https://resource-sg-public.lux-ad.com/wallpaper/8497b431b92946723d7acbd1c9836bde.jpeg",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/028622eed6c6083a721b5c6af19053d1.jpeg",
|
"sourceUrl": "https://resource-sg-public.lux-ad.com/wallpaper/028622eed6c6083a721b5c6af19053d1.jpeg",
|
||||||
|
|||||||
@ -1,13 +1,24 @@
|
|||||||
package com.pink.cute.wallpapers
|
package com.pink.cute.wallpapers
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
|
import android.util.Log
|
||||||
import com.pink.cute.wallpapers.bean.Category
|
import com.pink.cute.wallpapers.bean.Category
|
||||||
import com.pink.cute.wallpapers.manager.Common
|
import com.pink.cute.wallpapers.manager.Common
|
||||||
|
import com.pink.cute.wallpapers.myroom.MyDatabase
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
class PinkWallpapers : Application() {
|
class PinkWallpapers : Application() {
|
||||||
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
|
const val DB_NAME = "Wall"
|
||||||
|
const val DB_VERSION = 1
|
||||||
|
const val TB_NAME_CATEGORY = "category"
|
||||||
|
const val TB_NAME_WALLPAPER = "wallpaper"
|
||||||
|
|
||||||
lateinit var pinkWallpapers: PinkWallpapers
|
lateinit var pinkWallpapers: PinkWallpapers
|
||||||
|
|
||||||
lateinit var categoryList: List<Category>
|
lateinit var categoryList: List<Category>
|
||||||
@ -22,9 +33,17 @@ class PinkWallpapers : Application() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun analyzeFiles() {
|
private fun analyzeFiles() {
|
||||||
|
|
||||||
|
CoroutineScope(Dispatchers.IO).launch {
|
||||||
|
val queryAllData = MyDatabase.myDatabase.CategoryDao().queryAllData()
|
||||||
|
Log.d("ting","---------queryAllData=${queryAllData.size}")
|
||||||
|
if (queryAllData.size <= 0) {
|
||||||
val fdInput = assets.open("wallres.json")
|
val fdInput = assets.open("wallres.json")
|
||||||
val jsonStr = Common.getJsonString(fdInput)
|
val jsonStr = Common.getJsonString(fdInput)
|
||||||
categoryList = Common.getListCategory(jsonStr)
|
categoryList = Common.getListCategory(jsonStr)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,232 +0,0 @@
|
|||||||
package com.pink.cute.wallpapers
|
|
||||||
|
|
||||||
import android.app.WallpaperManager
|
|
||||||
import android.graphics.Bitmap
|
|
||||||
import android.graphics.BitmapFactory
|
|
||||||
import android.graphics.drawable.Drawable
|
|
||||||
import android.os.Build
|
|
||||||
import android.os.Bundle
|
|
||||||
import android.util.Log
|
|
||||||
import android.view.LayoutInflater
|
|
||||||
import android.view.View
|
|
||||||
import android.view.WindowManager
|
|
||||||
import android.widget.Toast
|
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
|
||||||
import androidx.core.view.isVisible
|
|
||||||
import androidx.lifecycle.lifecycleScope
|
|
||||||
import com.bumptech.glide.Glide
|
|
||||||
import com.bumptech.glide.load.DataSource
|
|
||||||
import com.bumptech.glide.load.engine.GlideException
|
|
||||||
import com.bumptech.glide.request.RequestListener
|
|
||||||
import com.bumptech.glide.request.target.CustomTarget
|
|
||||||
import com.bumptech.glide.request.target.Target
|
|
||||||
import com.bumptech.glide.request.transition.Transition
|
|
||||||
import com.pink.cute.wallpapers.bean.Wallpaper
|
|
||||||
import com.pink.cute.wallpapers.databinding.ActivitySetWallpaperBinding
|
|
||||||
import com.pink.cute.wallpapers.manager.Common
|
|
||||||
import com.pink.cute.wallpapers.manager.CropTransformation
|
|
||||||
import com.pink.cute.wallpapers.ui.DialogWallpaper
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
|
||||||
import kotlinx.coroutines.launch
|
|
||||||
import kotlinx.coroutines.withContext
|
|
||||||
import java.io.File
|
|
||||||
|
|
||||||
class SetWallpaperActivity : AppCompatActivity() {
|
|
||||||
private lateinit var viewbing: ActivitySetWallpaperBinding
|
|
||||||
private lateinit var wallpaper: Wallpaper
|
|
||||||
private lateinit var wallpaperManager: WallpaperManager
|
|
||||||
|
|
||||||
private var mFile: File? = null
|
|
||||||
private var mBitmap: Bitmap? = null
|
|
||||||
private var selectDialog: DialogWallpaper? = null
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
|
||||||
super.onCreate(savedInstanceState)
|
|
||||||
viewbing = ActivitySetWallpaperBinding.inflate(LayoutInflater.from(this), null, false)
|
|
||||||
setContentView(viewbing.root)
|
|
||||||
initBar()
|
|
||||||
|
|
||||||
wallpaper = intent.getSerializableExtra(Common.KEY_WALLPAPER) as Wallpaper
|
|
||||||
wallpaperManager = WallpaperManager.getInstance(this)
|
|
||||||
loadSource()
|
|
||||||
|
|
||||||
viewbing.btnBack.setOnClickListener {
|
|
||||||
finish()
|
|
||||||
}
|
|
||||||
viewbing.textSetBtn.setOnClickListener {
|
|
||||||
|
|
||||||
startShowAd{
|
|
||||||
startSet()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun startSet() {
|
|
||||||
if (selectDialog == null) {
|
|
||||||
selectDialog = DialogWallpaper.newInstance()
|
|
||||||
selectDialog?.onSetListener {
|
|
||||||
viewbing.loading.isVisible = true
|
|
||||||
mBitmap?.let { bitmap ->
|
|
||||||
when (it) {
|
|
||||||
Common.TYPE_BOTH -> {
|
|
||||||
lifecycleScope.launch {
|
|
||||||
withContext(Dispatchers.IO){
|
|
||||||
wallpaperManager.setBitmap(bitmap)//FLAG_SYSTEM | FLAG_LOCK)
|
|
||||||
}
|
|
||||||
runOnUiThread {
|
|
||||||
viewbing.loading.isVisible = false
|
|
||||||
Toast.makeText(
|
|
||||||
this@SetWallpaperActivity,
|
|
||||||
getString(R.string.set_ok),
|
|
||||||
Toast.LENGTH_SHORT
|
|
||||||
).show()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Common.TYPE_HOME -> {
|
|
||||||
lifecycleScope.launch {
|
|
||||||
withContext(Dispatchers.IO){
|
|
||||||
Log.d("------","-------thread=${Thread.currentThread().name}")
|
|
||||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
|
|
||||||
wallpaperManager.setBitmap(bitmap)
|
|
||||||
} else {
|
|
||||||
wallpaperManager.setBitmap(
|
|
||||||
bitmap,
|
|
||||||
null,
|
|
||||||
true,
|
|
||||||
WallpaperManager.FLAG_SYSTEM
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
runOnUiThread {
|
|
||||||
viewbing.loading.isVisible = false
|
|
||||||
Toast.makeText(
|
|
||||||
this@SetWallpaperActivity,
|
|
||||||
getString(R.string.set_ok),
|
|
||||||
Toast.LENGTH_SHORT
|
|
||||||
).show()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Common.TYPE_LOCK -> {
|
|
||||||
lifecycleScope.launch {
|
|
||||||
withContext(Dispatchers.IO) {
|
|
||||||
Log.d("------","-------IO thread=${Thread.currentThread().name}")
|
|
||||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
|
|
||||||
wallpaperManager.setBitmap(bitmap)
|
|
||||||
} else {
|
|
||||||
wallpaperManager.setBitmap(
|
|
||||||
mBitmap,
|
|
||||||
null,
|
|
||||||
true,
|
|
||||||
WallpaperManager.FLAG_LOCK
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
runOnUiThread {
|
|
||||||
viewbing.loading.isVisible = false
|
|
||||||
Toast.makeText(
|
|
||||||
this@SetWallpaperActivity,
|
|
||||||
getString(R.string.set_ok),
|
|
||||||
Toast.LENGTH_SHORT
|
|
||||||
).show()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Common.TYPE_DISSMISS -> {
|
|
||||||
viewbing.loading.isVisible = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
selectDialog?.show(supportFragmentManager, "")
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private fun startShowAd(action:()->Unit) {
|
|
||||||
// TODO: showAd
|
|
||||||
action.invoke()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun initBar() {
|
|
||||||
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
|
|
||||||
window.decorView.systemUiVisibility =
|
|
||||||
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun loadSource1() {
|
|
||||||
// viewbing.loading.isVisible = true
|
|
||||||
Glide.with(this)
|
|
||||||
.asFile()
|
|
||||||
.load(wallpaper.source)
|
|
||||||
.thumbnail(0.1f)
|
|
||||||
.transform(CropTransformation())
|
|
||||||
.into(object : CustomTarget<File>() {
|
|
||||||
override fun onResourceReady(resource: File, transition: Transition<in File>?) {
|
|
||||||
if (resource.exists()) {
|
|
||||||
mFile = resource
|
|
||||||
Log.d("--------", "--------resource=${resource.absolutePath}")
|
|
||||||
val decodeFile = BitmapFactory.decodeFile(resource.absolutePath)
|
|
||||||
viewbing.previewImg.setImageBitmap(decodeFile)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onLoadCleared(placeholder: Drawable?) {
|
|
||||||
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun loadSource() {
|
|
||||||
viewbing.loading.isVisible = true
|
|
||||||
Glide.with(this)
|
|
||||||
.asBitmap()
|
|
||||||
.load(wallpaper.source)
|
|
||||||
.thumbnail(0.1f)
|
|
||||||
.transform(CropTransformation())
|
|
||||||
.listener(object : RequestListener<Bitmap> {
|
|
||||||
override fun onLoadFailed(
|
|
||||||
e: GlideException?,
|
|
||||||
model: Any?,
|
|
||||||
target: Target<Bitmap>,
|
|
||||||
isFirstResource: Boolean
|
|
||||||
): Boolean {
|
|
||||||
|
|
||||||
viewbing.loading.isVisible = false
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onResourceReady(
|
|
||||||
resource: Bitmap,
|
|
||||||
model: Any,
|
|
||||||
target: Target<Bitmap>?,
|
|
||||||
dataSource: DataSource,
|
|
||||||
isFirstResource: Boolean
|
|
||||||
): Boolean {
|
|
||||||
viewbing.loading.isVisible = false
|
|
||||||
mBitmap = resource
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}).into(viewbing.previewImg)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -0,0 +1,77 @@
|
|||||||
|
package com.pink.cute.wallpapers.activity
|
||||||
|
|
||||||
|
|
||||||
|
import android.content.Intent
|
||||||
|
import android.content.pm.PackageInfo
|
||||||
|
import android.content.pm.PackageManager
|
||||||
|
import android.net.Uri
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.util.Log
|
||||||
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
import com.pink.cute.wallpapers.R
|
||||||
|
import com.pink.cute.wallpapers.databinding.ActivityAboutBinding
|
||||||
|
|
||||||
|
|
||||||
|
class AboutActivity : AppCompatActivity() {
|
||||||
|
private lateinit var vb: ActivityAboutBinding
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
vb = ActivityAboutBinding.inflate(layoutInflater)
|
||||||
|
setContentView(vb.root)
|
||||||
|
// AdManager.loadAllAd()
|
||||||
|
val appVersionName = getAppVersionName()
|
||||||
|
appVersionName?.run {
|
||||||
|
vb.tvVersion.text = String.format(getString(R.string.app_version), this.versionName)
|
||||||
|
} ?: run {
|
||||||
|
vb.tvVersion.text = String.format(getString(R.string.app_version), "1.0.0")
|
||||||
|
}
|
||||||
|
vb.back.setOnClickListener {
|
||||||
|
// AdManager.showTopOn(this@AboutActivity) {
|
||||||
|
finish()
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
vb.tvRate.setOnClickListener {
|
||||||
|
try {
|
||||||
|
|
||||||
|
val uri = String.format(getString(R.string.gp), packageName)
|
||||||
|
startActivity(Intent(Intent.ACTION_VIEW).apply {
|
||||||
|
data = Uri.parse(uri)
|
||||||
|
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||||
|
})
|
||||||
|
|
||||||
|
}catch (ex:Exception){
|
||||||
|
Log.d("ting","---------ex=${ex.message}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
vb.tvPrivacy.setOnClickListener {
|
||||||
|
startActivity(Intent(this@AboutActivity, PrivacyActivity::class.java))
|
||||||
|
|
||||||
|
}
|
||||||
|
vb.tvShare.setOnClickListener {
|
||||||
|
val uri = String.format(getString(R.string.gp), packageName)
|
||||||
|
val sendIntent = Intent(Intent.ACTION_SEND).apply {
|
||||||
|
putExtra(Intent.EXTRA_TEXT, uri)
|
||||||
|
type = "text/plain"
|
||||||
|
}
|
||||||
|
startActivity(Intent.createChooser(sendIntent, resources.getString(R.string.share_title)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
override fun onBackPressed() {
|
||||||
|
super.onBackPressed()
|
||||||
|
// AdManager.showTopOn(this@AboutActivity) {
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getAppVersionName(): PackageInfo? {
|
||||||
|
return try {
|
||||||
|
packageManager.getPackageInfo(packageName, 0)
|
||||||
|
|
||||||
|
} catch (e: PackageManager.NameNotFoundException) {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.pink.cute.wallpapers
|
package com.pink.cute.wallpapers.activity
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
@ -20,7 +20,6 @@ class LaunActivity : AppCompatActivity() {
|
|||||||
startActivity(Intent(this@LaunActivity, MainActivity::class.java))
|
startActivity(Intent(this@LaunActivity, MainActivity::class.java))
|
||||||
finish()
|
finish()
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
@ -1,12 +1,14 @@
|
|||||||
package com.pink.cute.wallpapers
|
package com.pink.cute.wallpapers.activity
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import com.google.android.material.bottomnavigation.BottomNavigationView
|
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.navigation.findNavController
|
import androidx.navigation.findNavController
|
||||||
import androidx.navigation.ui.setupWithNavController
|
import androidx.navigation.ui.setupWithNavController
|
||||||
|
import com.google.android.material.bottomnavigation.BottomNavigationView
|
||||||
|
import com.pink.cute.wallpapers.R
|
||||||
import com.pink.cute.wallpapers.databinding.ActivityMainBinding
|
import com.pink.cute.wallpapers.databinding.ActivityMainBinding
|
||||||
|
|
||||||
|
|
||||||
class MainActivity : AppCompatActivity() {
|
class MainActivity : AppCompatActivity() {
|
||||||
|
|
||||||
private lateinit var binding: ActivityMainBinding
|
private lateinit var binding: ActivityMainBinding
|
||||||
@ -20,12 +22,8 @@ class MainActivity : AppCompatActivity() {
|
|||||||
val navView: BottomNavigationView = binding.navView
|
val navView: BottomNavigationView = binding.navView
|
||||||
|
|
||||||
val navController = findNavController(R.id.nav_host_fragment_activity_main)
|
val navController = findNavController(R.id.nav_host_fragment_activity_main)
|
||||||
// val appBarConfiguration = AppBarConfiguration(
|
|
||||||
// setOf(
|
|
||||||
// R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications
|
|
||||||
// )
|
|
||||||
// )
|
|
||||||
// setupActionBarWithNavController(navController, appBarConfiguration)
|
|
||||||
navView.setupWithNavController(navController)
|
navView.setupWithNavController(navController)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
package com.pink.cute.wallpapers.activity
|
||||||
|
|
||||||
|
import android.os.Bundle
|
||||||
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
import com.pink.cute.wallpapers.databinding.ActivityPrivacyBinding
|
||||||
|
|
||||||
|
|
||||||
|
class PrivacyActivity : AppCompatActivity() {
|
||||||
|
|
||||||
|
private lateinit var vb: ActivityPrivacyBinding
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
|
vb = ActivityPrivacyBinding.inflate(layoutInflater)
|
||||||
|
setContentView(vb.root)
|
||||||
|
vb.webView.loadUrl("file:///android_asset/Pink_Wallpapers_privacy.html")
|
||||||
|
vb.back.setOnClickListener {
|
||||||
|
|
||||||
|
finish()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onBackPressed() {
|
||||||
|
super.onBackPressed()
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,393 @@
|
|||||||
|
package com.pink.cute.wallpapers.activity
|
||||||
|
|
||||||
|
import android.Manifest
|
||||||
|
import android.app.Activity
|
||||||
|
import android.app.WallpaperManager
|
||||||
|
import android.content.ContentValues
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.pm.PackageManager
|
||||||
|
import android.graphics.Bitmap
|
||||||
|
import android.graphics.BitmapFactory
|
||||||
|
import android.net.Uri
|
||||||
|
import android.os.Build
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.provider.MediaStore
|
||||||
|
import android.util.Log
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.WindowManager
|
||||||
|
import android.widget.Toast
|
||||||
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
import androidx.core.app.ActivityCompat
|
||||||
|
import androidx.core.graphics.drawable.toBitmap
|
||||||
|
import androidx.core.view.isVisible
|
||||||
|
import androidx.lifecycle.lifecycleScope
|
||||||
|
import com.bumptech.glide.Glide
|
||||||
|
import com.bumptech.glide.load.DataSource
|
||||||
|
import com.bumptech.glide.load.engine.GlideException
|
||||||
|
import com.bumptech.glide.request.RequestListener
|
||||||
|
import com.bumptech.glide.request.target.Target
|
||||||
|
import com.pink.cute.wallpapers.PinkWallpapers
|
||||||
|
import com.pink.cute.wallpapers.R
|
||||||
|
import com.pink.cute.wallpapers.bean.Wallpaper
|
||||||
|
import com.pink.cute.wallpapers.databinding.ActivitySetWallpaperBinding
|
||||||
|
import com.pink.cute.wallpapers.manager.Common
|
||||||
|
import com.pink.cute.wallpapers.manager.CropTransformation
|
||||||
|
import com.pink.cute.wallpapers.myroom.MyDatabase
|
||||||
|
import com.pink.cute.wallpapers.ui.DialogWallpaper
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
import kotlinx.coroutines.withContext
|
||||||
|
import java.io.File
|
||||||
|
import java.io.FileInputStream
|
||||||
|
import java.io.IOException
|
||||||
|
|
||||||
|
class SetWallpaperActivity : AppCompatActivity() {
|
||||||
|
private lateinit var viewbing: ActivitySetWallpaperBinding
|
||||||
|
private lateinit var wallpaper: Wallpaper
|
||||||
|
private lateinit var wallpaperManager: WallpaperManager
|
||||||
|
|
||||||
|
private var mBitmap: Bitmap? = null
|
||||||
|
private var selectDialog: DialogWallpaper? = null
|
||||||
|
|
||||||
|
private val code = -23
|
||||||
|
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
viewbing = ActivitySetWallpaperBinding.inflate(LayoutInflater.from(this), null, false)
|
||||||
|
setContentView(viewbing.root)
|
||||||
|
initBar()
|
||||||
|
|
||||||
|
wallpaper = intent.getSerializableExtra(Common.KEY_WALLPAPER) as Wallpaper
|
||||||
|
refrshLike()
|
||||||
|
wallpaperManager = WallpaperManager.getInstance(this)
|
||||||
|
loadSource()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
viewbing.btnBack.setOnClickListener {
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
viewbing.textSetBtn.setOnClickListener {
|
||||||
|
startShowAd {
|
||||||
|
startSet()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
viewbing.btnSave.setOnClickListener {
|
||||||
|
if (requestPermission(this@SetWallpaperActivity, code)) {
|
||||||
|
startSave()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
viewbing.btnLike.setOnClickListener {
|
||||||
|
viewbing.imLike.isSelected = !viewbing.imLike.isSelected
|
||||||
|
if(viewbing.imLike.isSelected){
|
||||||
|
Toast.makeText(this, getString(R.string.add_like), Toast.LENGTH_SHORT)
|
||||||
|
.show()
|
||||||
|
}else{
|
||||||
|
Toast.makeText(this, getString(R.string.cancel_like), Toast.LENGTH_SHORT)
|
||||||
|
.show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun refrshLike(){
|
||||||
|
CoroutineScope(Dispatchers.IO).launch {
|
||||||
|
wallpaper = MyDatabase.myDatabase.WallpaperDao().queryWallpaper(wallpaper.id)
|
||||||
|
withContext(Dispatchers.Main){
|
||||||
|
viewbing.imLike.isSelected = wallpaper.like
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onPause() {
|
||||||
|
super.onPause()
|
||||||
|
CoroutineScope(Dispatchers.IO).launch {
|
||||||
|
MyDatabase.myDatabase.WallpaperDao().updateWallpaper(wallpaper.apply {
|
||||||
|
like = viewbing.imLike.isSelected
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun startSave() {
|
||||||
|
viewbing.loading.isVisible = true
|
||||||
|
wallpaper.sourceCache?.let {
|
||||||
|
val file = File(it)
|
||||||
|
if (file.exists()) {
|
||||||
|
val saveToGallery = saveToGallery(PinkWallpapers.pinkWallpapers, file)
|
||||||
|
if (saveToGallery != null) {
|
||||||
|
Toast.makeText(this, getString(R.string.save_success), Toast.LENGTH_SHORT)
|
||||||
|
.show()
|
||||||
|
} else {
|
||||||
|
Toast.makeText(this, getString(R.string.save_fail), Toast.LENGTH_SHORT)
|
||||||
|
.show()
|
||||||
|
}
|
||||||
|
viewbing.loading.isVisible = false
|
||||||
|
}
|
||||||
|
} ?: run {
|
||||||
|
Toast.makeText(this, getString(R.string.save_fail), Toast.LENGTH_SHORT)
|
||||||
|
.show()
|
||||||
|
viewbing.loading.isVisible = false
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun startSet() {
|
||||||
|
mBitmap = viewbing.previewImg.drawable.toBitmap()
|
||||||
|
if (selectDialog == null) {
|
||||||
|
selectDialog = DialogWallpaper.newInstance()
|
||||||
|
selectDialog?.onSetListener {
|
||||||
|
viewbing.loading.isVisible = true
|
||||||
|
mBitmap?.let { bitmap ->
|
||||||
|
when (it) {
|
||||||
|
Common.TYPE_BOTH -> {
|
||||||
|
lifecycleScope.launch {
|
||||||
|
withContext(Dispatchers.IO) {
|
||||||
|
wallpaperManager.setBitmap(bitmap)//FLAG_SYSTEM | FLAG_LOCK)
|
||||||
|
}
|
||||||
|
runOnUiThread {
|
||||||
|
viewbing.loading.isVisible = false
|
||||||
|
Toast.makeText(
|
||||||
|
this@SetWallpaperActivity,
|
||||||
|
getString(R.string.set_ok),
|
||||||
|
Toast.LENGTH_SHORT
|
||||||
|
).show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Common.TYPE_HOME -> {
|
||||||
|
lifecycleScope.launch {
|
||||||
|
withContext(Dispatchers.IO) {
|
||||||
|
Log.d("------", "-------thread=${Thread.currentThread().name}")
|
||||||
|
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
|
||||||
|
wallpaperManager.setBitmap(bitmap)
|
||||||
|
} else {
|
||||||
|
wallpaperManager.setBitmap(
|
||||||
|
bitmap,
|
||||||
|
null,
|
||||||
|
true,
|
||||||
|
WallpaperManager.FLAG_SYSTEM
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
runOnUiThread {
|
||||||
|
viewbing.loading.isVisible = false
|
||||||
|
Toast.makeText(
|
||||||
|
this@SetWallpaperActivity,
|
||||||
|
getString(R.string.set_ok),
|
||||||
|
Toast.LENGTH_SHORT
|
||||||
|
).show()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Common.TYPE_LOCK -> {
|
||||||
|
lifecycleScope.launch {
|
||||||
|
withContext(Dispatchers.IO) {
|
||||||
|
Log.d(
|
||||||
|
"------",
|
||||||
|
"-------IO thread=${Thread.currentThread().name}"
|
||||||
|
)
|
||||||
|
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
|
||||||
|
wallpaperManager.setBitmap(bitmap)
|
||||||
|
} else {
|
||||||
|
wallpaperManager.setBitmap(
|
||||||
|
mBitmap,
|
||||||
|
null,
|
||||||
|
true,
|
||||||
|
WallpaperManager.FLAG_LOCK
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
runOnUiThread {
|
||||||
|
viewbing.loading.isVisible = false
|
||||||
|
Toast.makeText(
|
||||||
|
this@SetWallpaperActivity,
|
||||||
|
getString(R.string.set_ok),
|
||||||
|
Toast.LENGTH_SHORT
|
||||||
|
).show()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Common.TYPE_DISSMISS -> {
|
||||||
|
viewbing.loading.isVisible = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
selectDialog?.show(supportFragmentManager, "")
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private fun startShowAd(action: () -> Unit) {
|
||||||
|
action.invoke()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun initBar() {
|
||||||
|
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
|
||||||
|
window.decorView.systemUiVisibility =
|
||||||
|
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun loadSource() {
|
||||||
|
viewbing.loading.isVisible = true
|
||||||
|
Glide.with(this)
|
||||||
|
.asFile()
|
||||||
|
.load(wallpaper.source)
|
||||||
|
.thumbnail(0.1f)
|
||||||
|
.transform(CropTransformation())
|
||||||
|
.listener(object : RequestListener<File> {
|
||||||
|
override fun onLoadFailed(
|
||||||
|
e: GlideException?,
|
||||||
|
model: Any?,
|
||||||
|
target: Target<File>,
|
||||||
|
isFirstResource: Boolean
|
||||||
|
): Boolean {
|
||||||
|
viewbing.loading.isVisible = false
|
||||||
|
Toast.makeText(
|
||||||
|
this@SetWallpaperActivity,
|
||||||
|
getString(R.string.load_file),
|
||||||
|
Toast.LENGTH_SHORT
|
||||||
|
)
|
||||||
|
.show()
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onResourceReady(
|
||||||
|
resource: File,
|
||||||
|
model: Any,
|
||||||
|
target: Target<File>?,
|
||||||
|
dataSource: DataSource,
|
||||||
|
isFirstResource: Boolean
|
||||||
|
): Boolean {
|
||||||
|
wallpaper.sourceCache = resource.absolutePath
|
||||||
|
val bitmap = BitmapFactory.decodeFile(resource.absolutePath)
|
||||||
|
viewbing.previewImg.setImageBitmap(bitmap)
|
||||||
|
viewbing.loading.isVisible = false
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
}).preload()
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* .listener(object : RequestListener<Bitmap> {
|
||||||
|
* override fun onLoadFailed(
|
||||||
|
* e: GlideException?,
|
||||||
|
* model: Any?,
|
||||||
|
* target: Target<Bitmap>,
|
||||||
|
* isFirstResource: Boolean
|
||||||
|
* ): Boolean {
|
||||||
|
*
|
||||||
|
* viewbing.loading.isVisible = false
|
||||||
|
* return false
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* override fun onResourceReady(
|
||||||
|
* resource: Bitmap,
|
||||||
|
* model: Any,
|
||||||
|
* target: Target<Bitmap>?,
|
||||||
|
* dataSource: DataSource,
|
||||||
|
* isFirstResource: Boolean
|
||||||
|
* ): Boolean {
|
||||||
|
* viewbing.loading.isVisible = false
|
||||||
|
* mBitmap = resource
|
||||||
|
*
|
||||||
|
* return false
|
||||||
|
* }
|
||||||
|
* })
|
||||||
|
*/
|
||||||
|
override fun onRequestPermissionsResult(
|
||||||
|
requestCode: Int,
|
||||||
|
permissions: Array<out String>,
|
||||||
|
grantResults: IntArray
|
||||||
|
) {
|
||||||
|
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
|
||||||
|
if (requestCode == code) {
|
||||||
|
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||||
|
startSave()
|
||||||
|
} else {
|
||||||
|
Toast.makeText(this, getString(R.string.grant_permission), Toast.LENGTH_SHORT)
|
||||||
|
.show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun requestPermission(context: Activity, requestCode: Int): Boolean {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return if (context.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
|
||||||
|
ActivityCompat.requestPermissions(
|
||||||
|
context,
|
||||||
|
arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE),
|
||||||
|
requestCode
|
||||||
|
)
|
||||||
|
false
|
||||||
|
} else {
|
||||||
|
true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private fun saveToGallery(context: Context, photoFile: File): Uri? {
|
||||||
|
val displayName = "${System.currentTimeMillis()}.jpg"
|
||||||
|
val contentValues = ContentValues().apply {
|
||||||
|
put(MediaStore.Images.Media.DISPLAY_NAME, displayName)
|
||||||
|
put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg")
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||||
|
put(MediaStore.Images.Media.IS_PENDING, 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val contentResolver = context.contentResolver
|
||||||
|
val collectionUri = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||||
|
MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY)
|
||||||
|
} else {
|
||||||
|
MediaStore.Images.Media.EXTERNAL_CONTENT_URI
|
||||||
|
}
|
||||||
|
|
||||||
|
val imageUri = contentResolver.insert(collectionUri, contentValues)
|
||||||
|
|
||||||
|
imageUri?.let { uri ->
|
||||||
|
try {
|
||||||
|
contentResolver.openOutputStream(uri)?.use { outputStream ->
|
||||||
|
val inputStream = FileInputStream(photoFile)
|
||||||
|
inputStream.copyTo(outputStream)
|
||||||
|
inputStream.close()
|
||||||
|
outputStream.close()
|
||||||
|
}
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||||
|
contentValues.clear()
|
||||||
|
contentValues.put(MediaStore.Images.Media.IS_PENDING, 0)
|
||||||
|
contentResolver.update(uri, contentValues, null, null)
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
return uri
|
||||||
|
} catch (e: IOException) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
} ?: run {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,35 +1,41 @@
|
|||||||
package com.pink.cute.wallpapers
|
package com.pink.cute.wallpapers.activity
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
|
import com.pink.cute.wallpapers.PinkWallpapers
|
||||||
|
import com.pink.cute.wallpapers.bean.Category
|
||||||
import com.pink.cute.wallpapers.databinding.ActivityWallpaperListBinding
|
import com.pink.cute.wallpapers.databinding.ActivityWallpaperListBinding
|
||||||
import com.pink.cute.wallpapers.manager.Common
|
import com.pink.cute.wallpapers.manager.Common
|
||||||
import com.pink.cute.wallpapers.manager.ItemDecoration
|
import com.pink.cute.wallpapers.manager.ItemDecoration
|
||||||
|
import com.pink.cute.wallpapers.myroom.MyDatabase
|
||||||
import com.pink.cute.wallpapers.viewadapter.AdapterRecommend
|
import com.pink.cute.wallpapers.viewadapter.AdapterRecommend
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
class WallpaperListActivity : AppCompatActivity() {
|
class WallpaperListActivity : AppCompatActivity() {
|
||||||
private lateinit var viewbing: ActivityWallpaperListBinding
|
private lateinit var viewbing: ActivityWallpaperListBinding
|
||||||
private lateinit var mAdapter: AdapterRecommend
|
private lateinit var mAdapter: AdapterRecommend
|
||||||
|
|
||||||
|
private lateinit var mCategory: Category
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
viewbing = ActivityWallpaperListBinding.inflate(LayoutInflater.from(this), null, false)
|
viewbing = ActivityWallpaperListBinding.inflate(LayoutInflater.from(this), null, false)
|
||||||
setContentView(viewbing.root)
|
setContentView(viewbing.root)
|
||||||
|
|
||||||
|
|
||||||
val categoryName = intent.getStringExtra(Common.KEY_CATEGORY_NAME)
|
mCategory = intent.getSerializableExtra(Common.KEY_CATEGORY_NAME) as Category
|
||||||
mAdapter = AdapterRecommend(this)
|
mAdapter = AdapterRecommend(this)
|
||||||
|
|
||||||
PinkWallpapers.categoryList.filter {
|
CoroutineScope(Dispatchers.IO).launch{
|
||||||
it.category == categoryName
|
val queryList = MyDatabase.myDatabase.WallpaperDao().queryList(mCategory.id)
|
||||||
}.let {
|
mAdapter.updateList(queryList)
|
||||||
mAdapter.updateList(it[0].list)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
setList()
|
setList()
|
||||||
viewbing.textName.text = categoryName
|
viewbing.textName.text = mCategory.category
|
||||||
viewbing.btnBack.setOnClickListener {
|
viewbing.btnBack.setOnClickListener {
|
||||||
startShowAd {
|
startShowAd {
|
||||||
finish()
|
finish()
|
||||||
@ -1,4 +1,16 @@
|
|||||||
package com.pink.cute.wallpapers.bean
|
package com.pink.cute.wallpapers.bean
|
||||||
|
|
||||||
class Category(var category: String,var list:List<Wallpaper>) {
|
import androidx.room.Entity
|
||||||
|
import androidx.room.PrimaryKey
|
||||||
|
import com.pink.cute.wallpapers.PinkWallpapers
|
||||||
|
import java.io.Serializable
|
||||||
|
|
||||||
|
|
||||||
|
@Entity(tableName = PinkWallpapers.TB_NAME_CATEGORY)
|
||||||
|
class Category(
|
||||||
|
@PrimaryKey(autoGenerate = true)
|
||||||
|
var id: Long = 0,
|
||||||
|
var category: String,
|
||||||
|
var covert:String
|
||||||
|
):Serializable{
|
||||||
}
|
}
|
||||||
@ -1,6 +1,29 @@
|
|||||||
package com.pink.cute.wallpapers.bean
|
package com.pink.cute.wallpapers.bean
|
||||||
|
|
||||||
|
import androidx.room.Entity
|
||||||
|
import androidx.room.ForeignKey
|
||||||
|
import androidx.room.Index
|
||||||
|
import androidx.room.PrimaryKey
|
||||||
|
import com.pink.cute.wallpapers.PinkWallpapers
|
||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
|
|
||||||
class Wallpaper(var source: String,var preview:String) :Serializable{
|
@Entity(
|
||||||
|
tableName = PinkWallpapers.TB_NAME_WALLPAPER, foreignKeys = arrayOf(
|
||||||
|
ForeignKey(
|
||||||
|
entity = Category::class,
|
||||||
|
parentColumns = arrayOf("id"),
|
||||||
|
childColumns = arrayOf("categoryId"),
|
||||||
|
onDelete = ForeignKey.CASCADE
|
||||||
|
)
|
||||||
|
),
|
||||||
|
indices = [Index(value = ["id"], unique = true)]
|
||||||
|
)
|
||||||
|
class Wallpaper(
|
||||||
|
@PrimaryKey(autoGenerate = true)
|
||||||
|
var id: Long = 0,
|
||||||
|
var categoryId: Long = 0,
|
||||||
|
var source: String, var preview: String,
|
||||||
|
var sourceCache: String?= null,
|
||||||
|
var like: Boolean = false
|
||||||
|
) : Serializable {
|
||||||
}
|
}
|
||||||
@ -1,8 +1,10 @@
|
|||||||
package com.pink.cute.wallpapers.manager
|
package com.pink.cute.wallpapers.manager
|
||||||
|
|
||||||
|
import android.util.Log
|
||||||
import com.pink.cute.wallpapers.PinkWallpapers
|
import com.pink.cute.wallpapers.PinkWallpapers
|
||||||
import com.pink.cute.wallpapers.bean.Category
|
import com.pink.cute.wallpapers.bean.Category
|
||||||
import com.pink.cute.wallpapers.bean.Wallpaper
|
import com.pink.cute.wallpapers.bean.Wallpaper
|
||||||
|
import com.pink.cute.wallpapers.myroom.MyDatabase
|
||||||
import org.json.JSONArray
|
import org.json.JSONArray
|
||||||
import java.io.BufferedReader
|
import java.io.BufferedReader
|
||||||
import java.io.ByteArrayOutputStream
|
import java.io.ByteArrayOutputStream
|
||||||
@ -29,15 +31,28 @@ object Common {
|
|||||||
for (i in 0 until array.length()) {
|
for (i in 0 until array.length()) {
|
||||||
val any = array.getJSONObject(i)
|
val any = array.getJSONObject(i)
|
||||||
val title = any.getString("name")
|
val title = any.getString("name")
|
||||||
|
val mCovert = any.getString("preUrl")
|
||||||
|
val category = Category(category = title, covert = mCovert)
|
||||||
|
data.add(category)
|
||||||
|
val insertCateId = MyDatabase.myDatabase.CategoryDao().insertData(category)
|
||||||
|
|
||||||
val jsonArray = any.getJSONArray("list")
|
val jsonArray = any.getJSONArray("list")
|
||||||
var wallpaperMutableList = mutableListOf<Wallpaper>()
|
var wallpaperMutableList = mutableListOf<Wallpaper>()
|
||||||
|
|
||||||
|
Log.d("ting","-----------category=${category.category} $insertCateId")
|
||||||
for (k in 0 until jsonArray.length()) {
|
for (k in 0 until jsonArray.length()) {
|
||||||
val jsonObject = jsonArray.getJSONObject(k)
|
val jsonObject = jsonArray.getJSONObject(k)
|
||||||
val source = jsonObject.getString("sourceUrl")
|
val source = jsonObject.getString("sourceUrl")
|
||||||
val preview = jsonObject.getString("preUrl")
|
val preview = jsonObject.getString("preUrl")
|
||||||
wallpaperMutableList.add(Wallpaper(preview = preview, source = source))
|
|
||||||
|
val wallpaper = Wallpaper(preview = preview, source = source, categoryId = insertCateId)
|
||||||
|
MyDatabase.myDatabase.WallpaperDao().insertWallpaper(wallpaper)
|
||||||
|
|
||||||
|
wallpaperMutableList.add(wallpaper)
|
||||||
}
|
}
|
||||||
data.add(Category(title, wallpaperMutableList))
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|||||||
@ -0,0 +1,31 @@
|
|||||||
|
package com.pink.cute.wallpapers.myroom;
|
||||||
|
|
||||||
|
import androidx.lifecycle.LiveData;
|
||||||
|
import androidx.room.Dao;
|
||||||
|
import androidx.room.Insert;
|
||||||
|
import androidx.room.OnConflictStrategy;
|
||||||
|
import androidx.room.Query;
|
||||||
|
|
||||||
|
|
||||||
|
import com.pink.cute.wallpapers.bean.Category;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Dao
|
||||||
|
public interface CategoryDao {
|
||||||
|
|
||||||
|
@Insert(onConflict = OnConflictStrategy.IGNORE)
|
||||||
|
long insertData(Category data);
|
||||||
|
|
||||||
|
|
||||||
|
@Query("select * from category order by id desc")
|
||||||
|
LiveData<List<Category>> queryAll();
|
||||||
|
|
||||||
|
@Query("select * from category where category = :title")
|
||||||
|
Category queryCateId(String title);
|
||||||
|
|
||||||
|
@Query("select * from category order by id desc")
|
||||||
|
List<Category> queryAllData();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,31 @@
|
|||||||
|
package com.pink.cute.wallpapers.myroom
|
||||||
|
|
||||||
|
import androidx.room.Database
|
||||||
|
import androidx.room.Room
|
||||||
|
import androidx.room.RoomDatabase
|
||||||
|
|
||||||
|
import com.pink.cute.wallpapers.PinkWallpapers
|
||||||
|
import com.pink.cute.wallpapers.bean.Category
|
||||||
|
import com.pink.cute.wallpapers.bean.Wallpaper
|
||||||
|
|
||||||
|
@Database(
|
||||||
|
entities = [Category::class, Wallpaper::class],
|
||||||
|
version = PinkWallpapers.DB_VERSION,
|
||||||
|
exportSchema = false
|
||||||
|
)
|
||||||
|
abstract class MyDatabase : RoomDatabase() {
|
||||||
|
|
||||||
|
abstract fun CategoryDao(): CategoryDao
|
||||||
|
abstract fun WallpaperDao(): WallpaperDao
|
||||||
|
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val myDatabase: MyDatabase by lazy {
|
||||||
|
Room.databaseBuilder(
|
||||||
|
PinkWallpapers.pinkWallpapers, MyDatabase::class.java,
|
||||||
|
PinkWallpapers.DB_NAME
|
||||||
|
).build()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
package com.pink.cute.wallpapers.myroom;
|
||||||
|
|
||||||
|
import androidx.lifecycle.LiveData;
|
||||||
|
import androidx.room.Dao;
|
||||||
|
import androidx.room.Insert;
|
||||||
|
import androidx.room.OnConflictStrategy;
|
||||||
|
import androidx.room.Query;
|
||||||
|
import androidx.room.Update;
|
||||||
|
|
||||||
|
import com.pink.cute.wallpapers.bean.Wallpaper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Dao
|
||||||
|
public interface WallpaperDao {
|
||||||
|
|
||||||
|
@Insert(onConflict = OnConflictStrategy.IGNORE)
|
||||||
|
void insertWallpaper(Wallpaper prank);
|
||||||
|
|
||||||
|
@Query("select * from wallpaper where `like` ==:mlike")
|
||||||
|
LiveData<List<Wallpaper>> queryAllLike(boolean mlike );
|
||||||
|
|
||||||
|
@Query("select * from wallpaper where categoryId ==:mId")
|
||||||
|
List<Wallpaper> queryList(long mId);
|
||||||
|
|
||||||
|
@Query("select * from wallpaper where id ==:mId")
|
||||||
|
Wallpaper queryWallpaper(long mId);
|
||||||
|
@Update
|
||||||
|
void updateWallpaper(Wallpaper wallpaper);
|
||||||
|
}
|
||||||
@ -1,5 +1,6 @@
|
|||||||
package com.pink.cute.wallpapers.ui.dashboard
|
package com.pink.cute.wallpapers.ui.dashboard
|
||||||
|
|
||||||
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
@ -7,6 +8,7 @@ import android.view.ViewGroup
|
|||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
|
import com.pink.cute.wallpapers.activity.AboutActivity
|
||||||
import com.pink.cute.wallpapers.databinding.FragmentDashboardBinding
|
import com.pink.cute.wallpapers.databinding.FragmentDashboardBinding
|
||||||
import com.pink.cute.wallpapers.manager.ItemDecoration
|
import com.pink.cute.wallpapers.manager.ItemDecoration
|
||||||
import com.pink.cute.wallpapers.viewadapter.AdapterRecommend
|
import com.pink.cute.wallpapers.viewadapter.AdapterRecommend
|
||||||
@ -15,8 +17,7 @@ class DashboardFragment : Fragment() {
|
|||||||
|
|
||||||
private var _binding: FragmentDashboardBinding? = null
|
private var _binding: FragmentDashboardBinding? = null
|
||||||
|
|
||||||
// This property is only valid between onCreateView and
|
|
||||||
// onDestroyView.
|
|
||||||
private val binding get() = _binding!!
|
private val binding get() = _binding!!
|
||||||
private lateinit var mAdapter: AdapterRecommend
|
private lateinit var mAdapter: AdapterRecommend
|
||||||
|
|
||||||
@ -30,21 +31,30 @@ class DashboardFragment : Fragment() {
|
|||||||
|
|
||||||
_binding = FragmentDashboardBinding.inflate(inflater, container, false)
|
_binding = FragmentDashboardBinding.inflate(inflater, container, false)
|
||||||
val root: View = binding.root
|
val root: View = binding.root
|
||||||
dashboardViewModel.setListValue()
|
|
||||||
mAdapter = AdapterRecommend(requireContext())
|
mAdapter = AdapterRecommend(requireContext())
|
||||||
setList()
|
setList()
|
||||||
dashboardViewModel.listLiveData.observe(viewLifecycleOwner) {
|
dashboardViewModel.listLiveData.observe(viewLifecycleOwner) {
|
||||||
mAdapter.updateList(it)
|
mAdapter.updateList(it)
|
||||||
}
|
}
|
||||||
|
onClick()
|
||||||
return root
|
return root
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun onClick() {
|
||||||
|
binding.set.setOnClickListener {
|
||||||
|
startActivity(Intent(requireContext(), AboutActivity::class.java))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun setList() {
|
private fun setList() {
|
||||||
binding.recomonedRecycler.run {
|
binding.recomonedRecycler.run {
|
||||||
layoutManager = GridLayoutManager(requireContext(),3)
|
layoutManager = GridLayoutManager(requireContext(), 3)
|
||||||
adapter = mAdapter
|
adapter = mAdapter
|
||||||
addItemDecoration(ItemDecoration(8,8,2))
|
addItemDecoration(ItemDecoration(8, 8, 2))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroyView() {
|
override fun onDestroyView() {
|
||||||
super.onDestroyView()
|
super.onDestroyView()
|
||||||
_binding = null
|
_binding = null
|
||||||
|
|||||||
@ -5,6 +5,12 @@ import androidx.lifecycle.MutableLiveData
|
|||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import com.pink.cute.wallpapers.PinkWallpapers
|
import com.pink.cute.wallpapers.PinkWallpapers
|
||||||
import com.pink.cute.wallpapers.bean.Wallpaper
|
import com.pink.cute.wallpapers.bean.Wallpaper
|
||||||
|
import com.pink.cute.wallpapers.myroom.CategoryDao
|
||||||
|
import com.pink.cute.wallpapers.myroom.MyDatabase
|
||||||
|
import com.pink.cute.wallpapers.myroom.WallpaperDao
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
class DashboardViewModel : ViewModel() {
|
class DashboardViewModel : ViewModel() {
|
||||||
|
|
||||||
@ -12,15 +18,32 @@ class DashboardViewModel : ViewModel() {
|
|||||||
val listLiveData: LiveData<List<Wallpaper>> = _list
|
val listLiveData: LiveData<List<Wallpaper>> = _list
|
||||||
|
|
||||||
|
|
||||||
fun setListValue() {
|
init {
|
||||||
val wallpaperList = mutableListOf<Wallpaper>()
|
CoroutineScope(Dispatchers.IO).launch {
|
||||||
val data = PinkWallpapers.categoryList.filter {
|
val queryCateId1 = MyDatabase.myDatabase.CategoryDao().queryCateId("recent")
|
||||||
it.category == "recent" || it.category == "feature" || it.category == "popular"
|
val queryCateId2 = MyDatabase.myDatabase.CategoryDao().queryCateId("feature")
|
||||||
|
val queryCateId3 = MyDatabase.myDatabase.CategoryDao().queryCateId("popular")
|
||||||
|
|
||||||
|
var list = mutableListOf<Wallpaper>()
|
||||||
|
|
||||||
|
queryCateId1?.let {
|
||||||
|
val queryList = MyDatabase.myDatabase.WallpaperDao().queryList(queryCateId1.id)
|
||||||
|
list.addAll(queryList)
|
||||||
}
|
}
|
||||||
data.forEach {
|
queryCateId2?.let {
|
||||||
wallpaperList.addAll(it.list)
|
val queryList2 = MyDatabase.myDatabase.WallpaperDao().queryList(queryCateId2.id)
|
||||||
|
list.addAll(queryList2)
|
||||||
}
|
}
|
||||||
wallpaperList.shuffle()
|
queryCateId3?.let {
|
||||||
_list.postValue(wallpaperList)
|
val queryList3 = MyDatabase.myDatabase.WallpaperDao().queryList(queryCateId3.id)
|
||||||
|
list.addAll(queryList3)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
list.shuffle()
|
||||||
|
_list.postValue(list)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -8,7 +8,9 @@ import android.view.ViewGroup
|
|||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
import com.pink.cute.wallpapers.WallpaperListActivity
|
import com.pink.cute.wallpapers.activity.AboutActivity
|
||||||
|
import com.pink.cute.wallpapers.activity.SetWallpaperActivity
|
||||||
|
import com.pink.cute.wallpapers.activity.WallpaperListActivity
|
||||||
import com.pink.cute.wallpapers.databinding.FragmentHomeBinding
|
import com.pink.cute.wallpapers.databinding.FragmentHomeBinding
|
||||||
import com.pink.cute.wallpapers.manager.Common
|
import com.pink.cute.wallpapers.manager.Common
|
||||||
import com.pink.cute.wallpapers.manager.ItemDecoration
|
import com.pink.cute.wallpapers.manager.ItemDecoration
|
||||||
@ -29,12 +31,15 @@ class HomeFragment : Fragment() {
|
|||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View {
|
): View {
|
||||||
val homeViewModel = ViewModelProvider(this)[HomeViewModel::class.java]
|
val homeViewModel = ViewModelProvider(this)[HomeViewModel::class.java]
|
||||||
homeViewModel.setListValue()
|
|
||||||
_binding = FragmentHomeBinding.inflate(inflater, container, false)
|
_binding = FragmentHomeBinding.inflate(inflater, container, false)
|
||||||
val root: View = binding.root
|
val root: View = binding.root
|
||||||
adapterCategory = AdapterCategory(requireContext())
|
adapterCategory = AdapterCategory(requireContext())
|
||||||
homeViewModel.listLiveData.observe(viewLifecycleOwner) {
|
homeViewModel.listLiveData.observe(viewLifecycleOwner) { list->
|
||||||
adapterCategory.updateList(it)
|
val data = list.filter {
|
||||||
|
it.category != "recent" && it.category != "feature" && it.category != "popular"
|
||||||
|
}
|
||||||
|
adapterCategory.updateList(data)
|
||||||
}
|
}
|
||||||
setList()
|
setList()
|
||||||
return root
|
return root
|
||||||
@ -42,18 +47,20 @@ class HomeFragment : Fragment() {
|
|||||||
|
|
||||||
private fun setList() {
|
private fun setList() {
|
||||||
binding.categoryRecycler.run {
|
binding.categoryRecycler.run {
|
||||||
layoutManager = GridLayoutManager(requireContext(),2)
|
layoutManager = GridLayoutManager(requireContext(), 2)
|
||||||
adapter = adapterCategory
|
adapter = adapterCategory
|
||||||
addItemDecoration(ItemDecoration(12,12,2))
|
addItemDecoration(ItemDecoration(12, 12, 2))
|
||||||
}
|
}
|
||||||
|
|
||||||
adapterCategory.setClickAction{
|
adapterCategory.setClickAction {
|
||||||
startActivity( Intent(requireContext(),WallpaperListActivity::class.java).apply {
|
startActivity(Intent(requireContext(), WallpaperListActivity::class.java).apply {
|
||||||
putExtra(Common.KEY_CATEGORY_NAME,it)
|
putExtra(Common.KEY_CATEGORY_NAME, it)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroyView() {
|
override fun onDestroyView() {
|
||||||
|
|||||||
@ -5,17 +5,22 @@ import androidx.lifecycle.MutableLiveData
|
|||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import com.pink.cute.wallpapers.PinkWallpapers
|
import com.pink.cute.wallpapers.PinkWallpapers
|
||||||
import com.pink.cute.wallpapers.bean.Category
|
import com.pink.cute.wallpapers.bean.Category
|
||||||
|
import com.pink.cute.wallpapers.myroom.CategoryDao
|
||||||
|
import com.pink.cute.wallpapers.myroom.MyDatabase
|
||||||
|
|
||||||
class HomeViewModel : ViewModel() {
|
class HomeViewModel(var cateDao: CategoryDao? = null) : ViewModel() {
|
||||||
|
|
||||||
private val _list = MutableLiveData<List<Category>>()
|
|
||||||
val listLiveData: LiveData<List<Category>> = _list
|
|
||||||
|
|
||||||
|
|
||||||
fun setListValue() {
|
var listLiveData: LiveData<List<Category>>
|
||||||
val data = PinkWallpapers.categoryList.filter {
|
|
||||||
it.category != "recent" && it.category != "feature" && it.category != "popular"
|
init {
|
||||||
}
|
cateDao = MyDatabase.myDatabase.CategoryDao()
|
||||||
_list.postValue(data)
|
val queryAll = cateDao?.queryAll()
|
||||||
|
// val data = PinkWallpapers.categoryList.filter {
|
||||||
|
// it.category != "recent" && it.category != "feature" && it.category != "popular"
|
||||||
|
// }
|
||||||
|
listLiveData = queryAll!!
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -0,0 +1,57 @@
|
|||||||
|
package com.pink.cute.wallpapers.ui.notifications
|
||||||
|
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import androidx.core.view.isVisible
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
|
import androidx.lifecycle.ViewModelProvider
|
||||||
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
|
import com.pink.cute.wallpapers.databinding.FragmentFavoriteBinding
|
||||||
|
import com.pink.cute.wallpapers.manager.ItemDecoration
|
||||||
|
import com.pink.cute.wallpapers.viewadapter.AdapterRecommend
|
||||||
|
|
||||||
|
class FavoriteFragment : Fragment() {
|
||||||
|
|
||||||
|
private var _binding: FragmentFavoriteBinding? = null
|
||||||
|
|
||||||
|
|
||||||
|
private val binding get() = _binding!!
|
||||||
|
private lateinit var mAdapter: AdapterRecommend
|
||||||
|
override fun onCreateView(
|
||||||
|
inflater: LayoutInflater,
|
||||||
|
container: ViewGroup?,
|
||||||
|
savedInstanceState: Bundle?
|
||||||
|
): View {
|
||||||
|
val favoriteViewModel =
|
||||||
|
ViewModelProvider(this).get(FavoriteViewModel::class.java)
|
||||||
|
|
||||||
|
_binding = FragmentFavoriteBinding.inflate(inflater, container, false)
|
||||||
|
val root: View = binding.root
|
||||||
|
|
||||||
|
mAdapter = AdapterRecommend(requireContext())
|
||||||
|
setList()
|
||||||
|
favoriteViewModel.listLiveData.observe(viewLifecycleOwner) {
|
||||||
|
updateView(it.isNotEmpty())
|
||||||
|
mAdapter.updateList(it)
|
||||||
|
}
|
||||||
|
return root
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updateView(hasData: Boolean){
|
||||||
|
binding.tvNoData.isVisible = !hasData
|
||||||
|
binding.likeRecycler.isVisible = hasData
|
||||||
|
}
|
||||||
|
private fun setList() {
|
||||||
|
binding.likeRecycler.run {
|
||||||
|
layoutManager = GridLayoutManager(requireContext(),3)
|
||||||
|
adapter = mAdapter
|
||||||
|
addItemDecoration(ItemDecoration(8,8,2))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
override fun onDestroyView() {
|
||||||
|
super.onDestroyView()
|
||||||
|
_binding = null
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
package com.pink.cute.wallpapers.ui.notifications
|
||||||
|
|
||||||
|
import androidx.lifecycle.LiveData
|
||||||
|
import androidx.lifecycle.MutableLiveData
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import com.pink.cute.wallpapers.bean.Category
|
||||||
|
import com.pink.cute.wallpapers.bean.Wallpaper
|
||||||
|
import com.pink.cute.wallpapers.myroom.MyDatabase
|
||||||
|
|
||||||
|
class FavoriteViewModel : ViewModel() {
|
||||||
|
|
||||||
|
|
||||||
|
var listLiveData: LiveData<List<Wallpaper>>
|
||||||
|
|
||||||
|
init {
|
||||||
|
var wallDao = MyDatabase.myDatabase.WallpaperDao()
|
||||||
|
listLiveData = wallDao.queryAllLike(true)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,42 +0,0 @@
|
|||||||
package com.pink.cute.wallpapers.ui.notifications
|
|
||||||
|
|
||||||
import android.os.Bundle
|
|
||||||
import android.view.LayoutInflater
|
|
||||||
import android.view.View
|
|
||||||
import android.view.ViewGroup
|
|
||||||
import android.widget.TextView
|
|
||||||
import androidx.fragment.app.Fragment
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
|
||||||
import com.pink.cute.wallpapers.databinding.FragmentNotificationsBinding
|
|
||||||
|
|
||||||
class NotificationsFragment : Fragment() {
|
|
||||||
|
|
||||||
private var _binding: FragmentNotificationsBinding? = null
|
|
||||||
|
|
||||||
// This property is only valid between onCreateView and
|
|
||||||
// onDestroyView.
|
|
||||||
private val binding get() = _binding!!
|
|
||||||
|
|
||||||
override fun onCreateView(
|
|
||||||
inflater: LayoutInflater,
|
|
||||||
container: ViewGroup?,
|
|
||||||
savedInstanceState: Bundle?
|
|
||||||
): View {
|
|
||||||
val notificationsViewModel =
|
|
||||||
ViewModelProvider(this).get(NotificationsViewModel::class.java)
|
|
||||||
|
|
||||||
_binding = FragmentNotificationsBinding.inflate(inflater, container, false)
|
|
||||||
val root: View = binding.root
|
|
||||||
|
|
||||||
val textView: TextView = binding.textNotifications
|
|
||||||
notificationsViewModel.text.observe(viewLifecycleOwner) {
|
|
||||||
textView.text = it
|
|
||||||
}
|
|
||||||
return root
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onDestroyView() {
|
|
||||||
super.onDestroyView()
|
|
||||||
_binding = null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,13 +0,0 @@
|
|||||||
package com.pink.cute.wallpapers.ui.notifications
|
|
||||||
|
|
||||||
import androidx.lifecycle.LiveData
|
|
||||||
import androidx.lifecycle.MutableLiveData
|
|
||||||
import androidx.lifecycle.ViewModel
|
|
||||||
|
|
||||||
class NotificationsViewModel : ViewModel() {
|
|
||||||
|
|
||||||
private val _text = MutableLiveData<String>().apply {
|
|
||||||
value = "This is notifications Fragment"
|
|
||||||
}
|
|
||||||
val text: LiveData<String> = _text
|
|
||||||
}
|
|
||||||
@ -15,7 +15,7 @@ import com.pink.cute.wallpapers.manager.Common
|
|||||||
open class AdapterCategory(var context: Context) : RecyclerView.Adapter<AdapterCategory.VH>() {
|
open class AdapterCategory(var context: Context) : RecyclerView.Adapter<AdapterCategory.VH>() {
|
||||||
|
|
||||||
var mList: List<Category> = emptyList()
|
var mList: List<Category> = emptyList()
|
||||||
private lateinit var mCallback: (String) -> Unit
|
private lateinit var mCallback: (Category) -> Unit
|
||||||
var options = RequestOptions().transform(RoundedCorners(Common.dp2Px(26)))
|
var options = RequestOptions().transform(RoundedCorners(Common.dp2Px(26)))
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH {
|
||||||
@ -32,7 +32,7 @@ open class AdapterCategory(var context: Context) : RecyclerView.Adapter<AdapterC
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setClickAction(callback: (String) -> Unit) {
|
fun setClickAction(callback: (Category) -> Unit) {
|
||||||
mCallback = callback
|
mCallback = callback
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,10 +45,10 @@ open class AdapterCategory(var context: Context) : RecyclerView.Adapter<AdapterC
|
|||||||
|
|
||||||
mList[position].let { data->
|
mList[position].let { data->
|
||||||
categoryName.text = data.category
|
categoryName.text = data.category
|
||||||
Glide.with(context).load(data.list[2].preview)
|
Glide.with(context).load(data.covert)
|
||||||
.into(imageCovert)
|
.into(imageCovert)
|
||||||
root.setOnClickListener {
|
root.setOnClickListener {
|
||||||
mCallback.invoke(data.category)
|
mCallback.invoke(data)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import androidx.recyclerview.widget.RecyclerView
|
|||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
|
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
|
||||||
import com.bumptech.glide.request.RequestOptions
|
import com.bumptech.glide.request.RequestOptions
|
||||||
import com.pink.cute.wallpapers.SetWallpaperActivity
|
import com.pink.cute.wallpapers.activity.SetWallpaperActivity
|
||||||
import com.pink.cute.wallpapers.bean.Wallpaper
|
import com.pink.cute.wallpapers.bean.Wallpaper
|
||||||
import com.pink.cute.wallpapers.databinding.ItemWallpaperBinding
|
import com.pink.cute.wallpapers.databinding.ItemWallpaperBinding
|
||||||
import com.pink.cute.wallpapers.manager.Common
|
import com.pink.cute.wallpapers.manager.Common
|
||||||
|
|||||||
9
app/src/main/res/drawable/download.xml
Normal file
9
app/src/main/res/drawable/download.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="64dp"
|
||||||
|
android:height="64dp"
|
||||||
|
android:viewportWidth="1024"
|
||||||
|
android:viewportHeight="1024">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FFffffff"
|
||||||
|
android:pathData="M188.3,729.4h644.8c18.4,0 33.3,14.9 33.3,33.3S851.5,796 833.1,796L188.3,796c-18.4,0 -33.3,-14.9 -33.3,-33.3s14.9,-33.3 33.3,-33.3zM577.4,429.1h124.2c5.9,0 11.6,2.3 15.7,6.5 8.7,8.7 8.7,22.8 0,31.4L526.4,657.9c-8.7,8.7 -22.8,8.7 -31.4,0L304.1,467c-4.2,-4.2 -6.5,-9.8 -6.5,-15.7 0,-12.3 10,-22.2 22.2,-22.2L444,429.1L444,151.3c0,-36.8 29.9,-66.7 66.7,-66.7s66.7,29.9 66.7,66.7v277.8z"/>
|
||||||
|
</vector>
|
||||||
7
app/src/main/res/drawable/download_bg.xml
Normal file
7
app/src/main/res/drawable/download_bg.xml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:shape="oval">
|
||||||
|
|
||||||
|
<solid android:color="@color/set_btn_color"/>
|
||||||
|
|
||||||
|
</shape>
|
||||||
@ -1,9 +0,0 @@
|
|||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:width="24dp"
|
|
||||||
android:height="24dp"
|
|
||||||
android:viewportWidth="24.0"
|
|
||||||
android:viewportHeight="24.0">
|
|
||||||
<path
|
|
||||||
android:fillColor="#FF000000"
|
|
||||||
android:pathData="M12,22c1.1,0 2,-0.9 2,-2h-4c0,1.1 0.89,2 2,2zM18,16v-5c0,-3.07 -1.64,-5.64 -4.5,-6.32L13.5,4c0,-0.83 -0.67,-1.5 -1.5,-1.5s-1.5,0.67 -1.5,1.5v0.68C7.63,5.36 6,7.92 6,11v5l-2,2v1h16v-1l-2,-2z" />
|
|
||||||
</vector>
|
|
||||||
9
app/src/main/res/drawable/icon_set.xml
Normal file
9
app/src/main/res/drawable/icon_set.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="64dp"
|
||||||
|
android:height="64dp"
|
||||||
|
android:viewportWidth="1024"
|
||||||
|
android:viewportHeight="1024">
|
||||||
|
<path
|
||||||
|
android:pathData="M944.5,552.5l-182.4,330.7a73.8,73.8 0,0 1,-64.6 38.3h-362.1a73.8,73.8 0,0 1,-64.6 -38.3l-182.4,-330.7a75.3,75.3 0,0 1,0 -72.7l182.4,-330.7a73.8,73.8 0,0 1,64.6 -38.3h362.1a73.8,73.8 0,0 1,64.6 38.3l182.4,330.7a75.3,75.3 0,0 1,0 72.7zM888.5,521.3a10.8,10.8 0,0 0,0 -10.4l-182,-330.7a10.5,10.5 0,0 0,-9.2 -5.5L335.7,174.8a10.5,10.5 0,0 0,-9.2 5.5l-182,330.7a10.8,10.8 0,0 0,0 10.4l182,330.7a10.5,10.5 0,0 0,9.2 5.5h361.5a10.5,10.5 0,0 0,9.2 -5.5l182,-330.7zM513.7,682.7c-94.3,0 -170.7,-76.4 -170.7,-170.7s76.4,-170.7 170.7,-170.7c94.3,0 170.7,76.4 170.7,170.7s-76.4,170.7 -170.7,170.7zM513.7,618.7c58.9,0 106.7,-47.8 106.7,-106.7s-47.8,-106.7 -106.7,-106.7 -106.7,47.8 -106.7,106.7 47.8,106.7 106.7,106.7z"
|
||||||
|
android:fillColor="@color/purple_500"/>
|
||||||
|
</vector>
|
||||||
9
app/src/main/res/drawable/like_gray.xml
Normal file
9
app/src/main/res/drawable/like_gray.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="64dp"
|
||||||
|
android:height="64dp"
|
||||||
|
android:viewportWidth="1024"
|
||||||
|
android:viewportHeight="1024">
|
||||||
|
<path
|
||||||
|
android:fillColor="@color/like_gray"
|
||||||
|
android:pathData="M533.5,268.3q33.8,-42 71.7,-75.8 32.8,-27.6 74.2,-50.2t86.5,-19.5q63.5,5.1 106,30.2t67.6,63.5 34.3,87 6.1,99.8 -17.9,97.8 -36.9,87 -48.6,74.8 -53.2,62q-41,42 -85.5,78.3t-85,62.5 -73.7,41.5 -51.7,15.4q-20.5,1 -52.2,-14.3t-69.6,-41.5 -79.9,-62 -82.9,-75.8q-26.6,-25.6 -57.3,-59.4t-57.9,-74.2 -46.6,-87.6 -21.5,-100.4 11.3,-99.8 39.9,-83.5 65.5,-62 88.1,-35.3q24.6,-5.1 49.2,-1.5t48.1,12.3 45.1,22 41,27.6q45.1,33.8 86,80.9z"/>
|
||||||
|
</vector>
|
||||||
9
app/src/main/res/drawable/like_red.xml
Normal file
9
app/src/main/res/drawable/like_red.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="64dp"
|
||||||
|
android:height="64dp"
|
||||||
|
android:viewportWidth="1024"
|
||||||
|
android:viewportHeight="1024">
|
||||||
|
<path
|
||||||
|
android:fillColor="@color/like_red"
|
||||||
|
android:pathData="M533.5,268.3q33.8,-42 71.7,-75.8 32.8,-27.6 74.2,-50.2t86.5,-19.5q63.5,5.1 106,30.2t67.6,63.5 34.3,87 6.1,99.8 -17.9,97.8 -36.9,87 -48.6,74.8 -53.2,62q-41,42 -85.5,78.3t-85,62.5 -73.7,41.5 -51.7,15.4q-20.5,1 -52.2,-14.3t-69.6,-41.5 -79.9,-62 -82.9,-75.8q-26.6,-25.6 -57.3,-59.4t-57.9,-74.2 -46.6,-87.6 -21.5,-100.4 11.3,-99.8 39.9,-83.5 65.5,-62 88.1,-35.3q24.6,-5.1 49.2,-1.5t48.1,12.3 45.1,22 41,27.6q45.1,33.8 86,80.9z"/>
|
||||||
|
</vector>
|
||||||
9
app/src/main/res/drawable/navgation_like.xml
Normal file
9
app/src/main/res/drawable/navgation_like.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="64dp"
|
||||||
|
android:height="64dp"
|
||||||
|
android:viewportWidth="1024"
|
||||||
|
android:viewportHeight="1024">
|
||||||
|
<path
|
||||||
|
android:fillColor="#666666"
|
||||||
|
android:pathData="M533.5,268.3q33.8,-42 71.7,-75.8 32.8,-27.6 74.2,-50.2t86.5,-19.5q63.5,5.1 106,30.2t67.6,63.5 34.3,87 6.1,99.8 -17.9,97.8 -36.9,87 -48.6,74.8 -53.2,62q-41,42 -85.5,78.3t-85,62.5 -73.7,41.5 -51.7,15.4q-20.5,1 -52.2,-14.3t-69.6,-41.5 -79.9,-62 -82.9,-75.8q-26.6,-25.6 -57.3,-59.4t-57.9,-74.2 -46.6,-87.6 -21.5,-100.4 11.3,-99.8 39.9,-83.5 65.5,-62 88.1,-35.3q24.6,-5.1 49.2,-1.5t48.1,12.3 45.1,22 41,27.6q45.1,33.8 86,80.9z"/>
|
||||||
|
</vector>
|
||||||
6
app/src/main/res/drawable/selector_like.xml
Normal file
6
app/src/main/res/drawable/selector_like.xml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item android:drawable="@drawable/like_red" android:state_selected="true" />
|
||||||
|
<item android:drawable="@drawable/like_gray" android:state_selected="false" />
|
||||||
|
|
||||||
|
</selector>
|
||||||
120
app/src/main/res/layout/activity_about.xml
Normal file
120
app/src/main/res/layout/activity_about.xml
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/back"
|
||||||
|
android:layout_width="44dp"
|
||||||
|
android:layout_height="44dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:padding="10dp"
|
||||||
|
android:src="@drawable/btnback"
|
||||||
|
app:layout_constraintLeft_toLeftOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.cardview.widget.CardView
|
||||||
|
android:id="@+id/card_logo"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="63dp"
|
||||||
|
app:cardCornerRadius="6dp"
|
||||||
|
app:layout_constraintLeft_toLeftOf="parent"
|
||||||
|
app:layout_constraintRight_toRightOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/back">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="86dp"
|
||||||
|
android:layout_height="86dp"
|
||||||
|
android:src="@mipmap/logo" />
|
||||||
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_version"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="4dp"
|
||||||
|
android:text="@string/app_version"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="15sp"
|
||||||
|
app:layout_constraintLeft_toLeftOf="parent"
|
||||||
|
app:layout_constraintRight_toRightOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/card_logo" />
|
||||||
|
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="60dp"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:text="@string/app_rate"
|
||||||
|
android:layout_marginStart="25dp"
|
||||||
|
android:id="@+id/tv_rate"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="16sp"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/tv_version" />
|
||||||
|
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:id="@+id/view1"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="0.5dp"
|
||||||
|
android:layout_marginStart="25dp"
|
||||||
|
android:layout_marginTop="2dp"
|
||||||
|
android:layout_marginEnd="25dp"
|
||||||
|
android:background="@color/line_color"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/tv_rate" />
|
||||||
|
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="60dp"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:text="@string/app_share"
|
||||||
|
android:layout_marginStart="25dp"
|
||||||
|
android:id="@+id/tv_share"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="16sp"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/view1" />
|
||||||
|
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:id="@+id/view2"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="0.5dp"
|
||||||
|
android:layout_marginStart="25dp"
|
||||||
|
android:layout_marginTop="2dp"
|
||||||
|
android:layout_marginEnd="25dp"
|
||||||
|
android:background="@color/line_color"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/tv_share" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="60dp"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:text="@string/app_privacy"
|
||||||
|
android:layout_marginStart="25dp"
|
||||||
|
android:id="@+id/tv_privacy"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="16sp"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/view2" />
|
||||||
|
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:id="@+id/view3"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="0.5dp"
|
||||||
|
android:layout_marginStart="25dp"
|
||||||
|
android:layout_marginTop="2dp"
|
||||||
|
android:layout_marginEnd="25dp"
|
||||||
|
android:background="@color/line_color"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/tv_privacy" />
|
||||||
|
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
@ -4,18 +4,25 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context=".LaunActivity">
|
tools:context=".activity.LaunActivity">
|
||||||
|
|
||||||
|
|
||||||
<ImageView
|
<androidx.cardview.widget.CardView
|
||||||
android:id="@+id/logo"
|
android:id="@+id/logo"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="200dp"
|
android:layout_marginTop="200dp"
|
||||||
android:src="@mipmap/logo"
|
app:cardCornerRadius="10dp"
|
||||||
app:layout_constraintLeft_toLeftOf="parent"
|
app:layout_constraintLeft_toLeftOf="parent"
|
||||||
app:layout_constraintRight_toRightOf="parent"
|
app:layout_constraintRight_toRightOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:src="@mipmap/logo" />
|
||||||
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|||||||
43
app/src/main/res/layout/activity_privacy.xml
Normal file
43
app/src/main/res/layout/activity_privacy.xml
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:background="@color/white"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/back"
|
||||||
|
android:layout_width="44dp"
|
||||||
|
android:layout_height="44dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:padding="10dp"
|
||||||
|
android:src="@drawable/btnback" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="44dp"
|
||||||
|
android:layout_centerHorizontal="true"
|
||||||
|
android:layout_gravity="center_horizontal"
|
||||||
|
android:padding="10dp"
|
||||||
|
android:text="@string/app_privacy"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="18sp"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<WebView
|
||||||
|
android:id="@+id/webView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@id/back"
|
||||||
|
android:text="@string/app_privacy"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="15sp"
|
||||||
|
tools:ignore="WebViewLayout" />
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
</androidx.core.widget.NestedScrollView>
|
||||||
@ -4,7 +4,7 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context=".SetWallpaperActivity">
|
tools:context=".activity.SetWallpaperActivity">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/previewImg"
|
android:id="@+id/previewImg"
|
||||||
@ -26,7 +26,25 @@
|
|||||||
android:src="@drawable/btnback"
|
android:src="@drawable/btnback"
|
||||||
app:layout_constraintLeft_toLeftOf="parent"
|
app:layout_constraintLeft_toLeftOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/btn_like"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginEnd="20dp"
|
||||||
|
android:padding="5dp"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@id/text_set_btn"
|
||||||
|
app:layout_constraintEnd_toStartOf="@id/text_set_btn"
|
||||||
|
app:layout_constraintTop_toTopOf="@id/text_set_btn">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="34dp"
|
||||||
|
android:id="@+id/imLike"
|
||||||
|
android:layout_height="34dp"
|
||||||
|
android:background="@drawable/download_bg"
|
||||||
|
android:gravity="center"
|
||||||
|
android:padding="6dp"
|
||||||
|
android:src="@drawable/selector_like" />
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/text_set_btn"
|
android:id="@+id/text_set_btn"
|
||||||
@ -42,6 +60,26 @@
|
|||||||
app:layout_constraintLeft_toLeftOf="parent"
|
app:layout_constraintLeft_toLeftOf="parent"
|
||||||
app:layout_constraintRight_toRightOf="parent" />
|
app:layout_constraintRight_toRightOf="parent" />
|
||||||
|
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/btn_save"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="20dp"
|
||||||
|
android:padding="5dp"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@id/text_set_btn"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/text_set_btn"
|
||||||
|
app:layout_constraintTop_toTopOf="@id/text_set_btn">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="34dp"
|
||||||
|
android:layout_height="34dp"
|
||||||
|
android:background="@drawable/download_bg"
|
||||||
|
android:gravity="center"
|
||||||
|
android:padding="6dp"
|
||||||
|
android:src="@drawable/download" />
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
<ProgressBar
|
<ProgressBar
|
||||||
android:id="@+id/loading"
|
android:id="@+id/loading"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context=".WallpaperListActivity">
|
tools:context=".activity.WallpaperListActivity">
|
||||||
|
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
@ -21,7 +21,7 @@
|
|||||||
android:layout_height="44dp"
|
android:layout_height="44dp"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:textColor="@color/black"
|
android:textColor="@color/black"
|
||||||
android:textSize="16sp"
|
android:textSize="21sp"
|
||||||
android:id="@+id/text_name"
|
android:id="@+id/text_name"
|
||||||
app:layout_constraintLeft_toLeftOf="parent"
|
app:layout_constraintLeft_toLeftOf="parent"
|
||||||
app:layout_constraintRight_toRightOf="parent"
|
app:layout_constraintRight_toRightOf="parent"
|
||||||
|
|||||||
@ -6,11 +6,32 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context=".ui.dashboard.DashboardFragment">
|
tools:context=".ui.dashboard.DashboardFragment">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/set"
|
||||||
|
android:layout_width="50dp"
|
||||||
|
android:layout_height="50dp"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:padding="12dp"
|
||||||
|
android:src="@drawable/icon_set"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/app_name"
|
||||||
|
android:textColor="@color/purple_500"
|
||||||
|
android:textSize="21sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@id/set"
|
||||||
|
app:layout_constraintLeft_toLeftOf="parent"
|
||||||
|
app:layout_constraintRight_toRightOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="@id/set" />
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/recomoned_recycler"
|
android:id="@+id/recomoned_recycler"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toBottomOf="@id/set" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
@ -4,19 +4,26 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context=".ui.notifications.NotificationsFragment">
|
tools:context=".ui.notifications.FavoriteFragment">
|
||||||
|
|
||||||
<TextView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/text_notifications"
|
android:id="@+id/like_recycler"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="8dp"
|
|
||||||
android:layout_marginTop="8dp"
|
|
||||||
android:layout_marginEnd="8dp"
|
|
||||||
android:textAlignment="center"
|
|
||||||
android:textSize="20sp"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="22dp"
|
||||||
|
android:layout_marginEnd="22dp"
|
||||||
|
android:gravity="center"
|
||||||
|
android:id="@+id/tv_no_data"
|
||||||
|
android:text="@string/no_like"
|
||||||
|
android:textColor="@color/purple_500"
|
||||||
|
android:textSize="19sp"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
@ -10,6 +10,6 @@
|
|||||||
android:id="@+id/category_recycler"
|
android:id="@+id/category_recycler"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintStart_toStartOf="parent" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
@ -1,19 +1,17 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item
|
||||||
|
android:id="@+id/navigation_dashboard"
|
||||||
|
android:icon="@drawable/recommend"
|
||||||
|
android:title="@string/title_recommend" />
|
||||||
<item
|
<item
|
||||||
android:id="@+id/navigation_home"
|
android:id="@+id/navigation_home"
|
||||||
android:icon="@drawable/category"
|
android:icon="@drawable/category"
|
||||||
android:title="@string/title_category" />
|
android:title="@string/title_category" />
|
||||||
|
|
||||||
<item
|
<item
|
||||||
android:id="@+id/navigation_dashboard"
|
android:id="@+id/navigation_favorite"
|
||||||
android:icon="@drawable/recommend"
|
android:icon="@drawable/like_gray"
|
||||||
android:title="@string/title_recommend" />
|
android:title="@string/title_favorite" />
|
||||||
|
|
||||||
<!-- <item-->
|
|
||||||
<!-- android:id="@+id/navigation_notifications"-->
|
|
||||||
<!-- android:icon="@drawable/ic_notifications_black_24dp"-->
|
|
||||||
<!-- android:title="@string/title_favorite" />-->
|
|
||||||
|
|
||||||
</menu>
|
</menu>
|
||||||
@ -3,8 +3,12 @@
|
|||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/mobile_navigation"
|
android:id="@+id/mobile_navigation"
|
||||||
app:startDestination="@+id/navigation_home">
|
app:startDestination="@+id/navigation_dashboard">
|
||||||
|
<fragment
|
||||||
|
android:id="@+id/navigation_dashboard"
|
||||||
|
android:name="com.pink.cute.wallpapers.ui.dashboard.DashboardFragment"
|
||||||
|
android:label="@string/title_recommend"
|
||||||
|
tools:layout="@layout/fragment_dashboard" />
|
||||||
<fragment
|
<fragment
|
||||||
android:id="@+id/navigation_home"
|
android:id="@+id/navigation_home"
|
||||||
android:name="com.pink.cute.wallpapers.ui.home.HomeFragment"
|
android:name="com.pink.cute.wallpapers.ui.home.HomeFragment"
|
||||||
@ -12,14 +16,8 @@
|
|||||||
tools:layout="@layout/fragment_home" />
|
tools:layout="@layout/fragment_home" />
|
||||||
|
|
||||||
<fragment
|
<fragment
|
||||||
android:id="@+id/navigation_dashboard"
|
android:id="@+id/navigation_favorite"
|
||||||
android:name="com.pink.cute.wallpapers.ui.dashboard.DashboardFragment"
|
android:name="com.pink.cute.wallpapers.ui.notifications.FavoriteFragment"
|
||||||
android:label="@string/title_recommend"
|
android:label="@string/title_favorite"
|
||||||
tools:layout="@layout/fragment_dashboard" />
|
tools:layout="@layout/fragment_favorite" />
|
||||||
|
|
||||||
<!-- <fragment-->
|
|
||||||
<!-- android:id="@+id/navigation_notifications"-->
|
|
||||||
<!-- android:name="wallpaperspapers.ui.notifications.NotificationsFragment"-->
|
|
||||||
<!-- android:label="@string/title_favorite"-->
|
|
||||||
<!-- tools:layout="@layout/fragment_notifications" />-->
|
|
||||||
</navigation>
|
</navigation>
|
||||||
@ -13,4 +13,8 @@
|
|||||||
<color name="text_color">#FFFdfdfd</color>
|
<color name="text_color">#FFFdfdfd</color>
|
||||||
<color name="nocolor">#00000000</color>
|
<color name="nocolor">#00000000</color>
|
||||||
<color name="text_color_sub">#d39bdc</color>
|
<color name="text_color_sub">#d39bdc</color>
|
||||||
|
<color name="line_color">#737373</color>
|
||||||
|
<color name="like_gray">#737373</color>
|
||||||
|
<color name="like_red">#D13434</color>
|
||||||
|
<color name="ss">#1a73e8</color>
|
||||||
</resources>
|
</resources>
|
||||||
@ -10,5 +10,18 @@
|
|||||||
<string name="dialog_lock_btn">Lock Screen</string>
|
<string name="dialog_lock_btn">Lock Screen</string>
|
||||||
<string name="dialog_both_btn">Both</string>
|
<string name="dialog_both_btn">Both</string>
|
||||||
<string name="set_ok">Congratulations, the wallpaper is set successfully</string>
|
<string name="set_ok">Congratulations, the wallpaper is set successfully</string>
|
||||||
|
<string name="app_version">V%s</string>
|
||||||
|
<string name="app_rate">Rate Us</string>
|
||||||
|
<string name="app_privacy">Privacy Policy</string>
|
||||||
|
<string name="app_share">Share</string>
|
||||||
|
<string name="gp">https://play.google.com/store/apps/details?id=%s</string>
|
||||||
|
<string name="grant_permission">Please grant permission to use related functions</string>
|
||||||
|
<string name="save">Save Album</string>
|
||||||
|
<string name="save_fail">Sorry, failed to save the image, please exit the current page and try again</string>
|
||||||
|
<string name="load_file">Loading failed, please check the network and re-enter the page</string>
|
||||||
|
<string name="save_success">Congratulations, the image was saved successfully</string>
|
||||||
|
<string name="add_like">Added to favorites successfully</string>
|
||||||
|
<string name="cancel_like">Successfully canceled the collection</string>
|
||||||
|
<string name="no_like">You haven not added any favorite wallpapers yet</string>
|
||||||
|
<string name="share_title">There are many wallpapers for you to choose from</string>
|
||||||
</resources>
|
</resources>
|
||||||
@ -1,5 +1,6 @@
|
|||||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||||
plugins {
|
plugins {
|
||||||
|
kotlin("kapt") version "2.0.0"
|
||||||
id("com.android.application") version "8.1.3" apply false
|
id("com.android.application") version "8.1.3" apply false
|
||||||
id("org.jetbrains.kotlin.android") version "1.9.0" apply false
|
id("org.jetbrains.kotlin.android") version "1.9.0" apply false
|
||||||
id("com.google.gms.google-services") version "4.3.15" apply false
|
id("com.google.gms.google-services") version "4.3.15" apply false
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user