Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
A
appzxhy
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanglei
appzxhy
Commits
7bce9429
Commit
7bce9429
authored
Jun 05, 2025
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[新增]通知
parent
c3593211
Show whitespace changes
Inline
Side-by-side
Showing
34 changed files
with
604 additions
and
41 deletions
+604
-41
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+1
-1
MyApplication.kt
app/src/main/java/com/base/appzxhy/MyApplication.kt
+3
-3
SpConstObject.kt
app/src/main/java/com/base/appzxhy/SpConstObject.kt
+34
-0
NotificationSendBean.kt
...n/java/com/base/appzxhy/bean/push/NotificationSendBean.kt
+1
-1
FcmReceiver.kt
...in/java/com/base/appzxhy/business/push/fcm/FcmReceiver.kt
+1
-1
MessagingService.kt
...va/com/base/appzxhy/business/push/fcm/MessagingService.kt
+1
-1
MyNotificationManager.kt
...pzxhy/business/push/notification/MyNotificationManager.kt
+25
-11
NotificationBeanUtils.kt
...pzxhy/business/push/notification/NotificationBeanUtils.kt
+1
-1
NotificationHoverUtils.kt
...zxhy/business/push/notification/NotificationHoverUtils.kt
+1
-1
NotificationUiUtil.kt
.../appzxhy/business/push/notification/NotificationUiUtil.kt
+62
-6
AlarmReceiver.kt
.../com/base/appzxhy/business/push/receiver/AlarmReceiver.kt
+1
-1
ScreenStatusReceiver.kt
...se/appzxhy/business/push/receiver/ScreenStatusReceiver.kt
+1
-1
TimerManager.kt
...java/com/base/appzxhy/business/push/timer/TimerManager.kt
+1
-1
RepeatingWorker.kt
...va/com/base/appzxhy/business/push/work/RepeatingWorker.kt
+1
-1
RateDialog.kt
app/src/main/java/com/base/appzxhy/ui/dialog/RateDialog.kt
+71
-0
Home2Fragment.kt
app/src/main/java/com/base/appzxhy/ui/main/Home2Fragment.kt
+2
-1
MainActivity.kt
app/src/main/java/com/base/appzxhy/ui/main/MainActivity.kt
+33
-0
MainViewModel.kt
app/src/main/java/com/base/appzxhy/ui/main/MainViewModel.kt
+19
-0
RecycleBinFragment.kt
...java/com/base/appzxhy/ui/recyclebin/RecycleBinFragment.kt
+2
-2
RecycleBinUtils.kt
...in/java/com/base/appzxhy/ui/recyclebin/RecycleBinUtils.kt
+42
-0
SettingActivity.kt
app/src/main/java/com/base/appzxhy/ui/set/SettingActivity.kt
+1
-1
SettingsFragment.kt
...src/main/java/com/base/appzxhy/ui/set/SettingsFragment.kt
+4
-3
icon_star_n.png
app/src/main/res/drawable-xxhdpi/icon_star_n.png
+0
-0
icon_star_s.png
app/src/main/res/drawable-xxhdpi/icon_star_s.png
+0
-0
img_pingjia.png
app/src/main/res/drawable-xxhdpi/img_pingjia.png
+0
-0
activity_setting.xml
app/src/main/res/layout/activity_setting.xml
+2
-2
dialog_rate.xml
app/src/main/res/layout/dialog_rate.xml
+127
-0
fragment_home2.xml
app/src/main/res/layout/fragment_home2.xml
+1
-1
fragment_recycle_bin.xml
app/src/main/res/layout/fragment_recycle_bin.xml
+1
-1
notification_common_large.xml
app/src/main/res/layout/notification_common_large.xml
+93
-0
notification_common_small.xml
app/src/main/res/layout/notification_common_small.xml
+66
-0
logo.png
app/src/main/res/mipmap-xxhdpi/logo.png
+0
-0
dimens.xml
app/src/main/res/values/dimens.xml
+2
-0
strings.xml
app/src/main/res/values/strings.xml
+4
-0
No files found.
app/src/main/AndroidManifest.xml
View file @
7bce9429
...
@@ -101,7 +101,7 @@
...
@@ -101,7 +101,7 @@
android:screenOrientation=
"portrait"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
<activity
android:name=
".ui.
main
.SettingActivity"
android:name=
".ui.
set
.SettingActivity"
android:exported=
"false"
android:exported=
"false"
android:screenOrientation=
"portrait"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
...
...
app/src/main/java/com/base/appzxhy/MyApplication.kt
View file @
7bce9429
...
@@ -30,12 +30,13 @@ import com.base.appzxhy.bean.config.AdConfigBean
...
@@ -30,12 +30,13 @@ import com.base.appzxhy.bean.config.AdConfigBean
import
com.base.appzxhy.bean.config.ConfigBean
import
com.base.appzxhy.bean.config.ConfigBean
import
com.base.appzxhy.bean.config.PopupConfigBean
import
com.base.appzxhy.bean.config.PopupConfigBean
import
com.base.appzxhy.business.ads.AdsMgr
import
com.base.appzxhy.business.ads.AdsMgr
import
com.base.appzxhy.business.push.notification.MyNotificationManager
import
com.base.appzxhy.push.fcm.FCMManager
import
com.base.appzxhy.push.fcm.FCMManager
import
com.base.appzxhy.push.notification.MyNotificationManager
import
com.base.appzxhy.push.receiver.AlarmReceiver.Companion.startAlarm
import
com.base.appzxhy.push.receiver.AlarmReceiver.Companion.startAlarm
import
com.base.appzxhy.push.receiver.ScreenStatusReceiver
import
com.base.appzxhy.push.receiver.ScreenStatusReceiver
import
com.base.appzxhy.push.timer.TimerManager.Companion.changeTimer
import
com.base.appzxhy.push.timer.TimerManager.Companion.changeTimer
import
com.base.appzxhy.push.work.RepeatingWorker.Companion.schedulePeriodicWork
import
com.base.appzxhy.push.work.RepeatingWorker.Companion.schedulePeriodicWork
import
com.base.appzxhy.ui.splash.SplashActivity
class
MyApplication
:
Application
()
{
class
MyApplication
:
Application
()
{
...
@@ -55,7 +56,7 @@ class MyApplication : Application() {
...
@@ -55,7 +56,7 @@ class MyApplication : Application() {
"adActivity"
,
"adActivity"
,
"AdActivity"
,
"AdActivity"
,
"AppLovinFullscreenActivity"
,
"AppLovinFullscreenActivity"
,
// Start
Activity::class.java.simpleName,
Splash
Activity
::
class
.
java
.
simpleName
,
// 返回前台时不跳转启动页的 activity
// 返回前台时不跳转启动页的 activity
)
)
}
}
...
@@ -170,7 +171,6 @@ class MyApplication : Application() {
...
@@ -170,7 +171,6 @@ class MyApplication : Application() {
}.
start
()
}.
start
()
}
}
private
var
lastTimePause
=
0L
private
var
lastTimePause
=
0L
private
var
lastTimeResume
=
0L
private
var
lastTimeResume
=
0L
private
fun
isHotLaunch
():
Boolean
{
private
fun
isHotLaunch
():
Boolean
{
...
...
app/src/main/java/com/base/appzxhy/SpConstObject.kt
View file @
7bce9429
...
@@ -6,6 +6,7 @@ import java.util.Locale
...
@@ -6,6 +6,7 @@ import java.util.Locale
object
SpConstObject
{
object
SpConstObject
{
//是否已经点击start
var
ifAgreePrivacy
=
false
var
ifAgreePrivacy
=
false
get
()
{
get
()
{
return
AppPreferences
.
getInstance
().
getBoolean
(
"ifAgreePrivacy"
,
field
)
return
AppPreferences
.
getInstance
().
getBoolean
(
"ifAgreePrivacy"
,
field
)
...
@@ -15,10 +16,12 @@ object SpConstObject {
...
@@ -15,10 +16,12 @@ object SpConstObject {
AppPreferences
.
getInstance
().
put
(
"ifAgreePrivacy"
,
value
,
true
)
AppPreferences
.
getInstance
().
put
(
"ifAgreePrivacy"
,
value
,
true
)
}
}
//是否已经走过引导页
var
isGuided
var
isGuided
get
()
=
AppPreferences
.
getInstance
().
getBoolean
(
"isGuided"
,
false
)
get
()
=
AppPreferences
.
getInstance
().
getBoolean
(
"isGuided"
,
false
)
set
(
value
)
=
AppPreferences
.
getInstance
().
putBoolean
(
"isGuided"
,
value
)
set
(
value
)
=
AppPreferences
.
getInstance
().
putBoolean
(
"isGuided"
,
value
)
var
appLanguageSp
:
String
=
Locale
.
getDefault
().
language
var
appLanguageSp
:
String
=
Locale
.
getDefault
().
language
get
()
{
get
()
{
return
AppPreferences
.
getInstance
().
getString
(
"languageSp"
,
field
)
return
AppPreferences
.
getInstance
().
getString
(
"languageSp"
,
field
)
...
@@ -37,6 +40,7 @@ object SpConstObject {
...
@@ -37,6 +40,7 @@ object SpConstObject {
AppPreferences
.
getInstance
().
put
(
"languageCountrySp"
,
value
,
true
)
AppPreferences
.
getInstance
().
put
(
"languageCountrySp"
,
value
,
true
)
}
}
//清理过的文件大小
var
cleanedSize
=
0L
var
cleanedSize
=
0L
get
()
{
get
()
{
return
AppPreferences
.
getInstance
().
getLong
(
"cleanedSize"
,
field
)
return
AppPreferences
.
getInstance
().
getLong
(
"cleanedSize"
,
field
)
...
@@ -46,5 +50,35 @@ object SpConstObject {
...
@@ -46,5 +50,35 @@ object SpConstObject {
AppPreferences
.
getInstance
().
put
(
"cleanedSize"
,
value
,
true
)
AppPreferences
.
getInstance
().
put
(
"cleanedSize"
,
value
,
true
)
}
}
//是否已经评价过
var
isScoreRated
=
false
get
()
{
return
AppPreferences
.
getInstance
().
getBoolean
(
"isScoreRated"
,
field
)
}
set
(
value
)
{
field
=
value
AppPreferences
.
getInstance
().
put
(
"isScoreRated"
,
value
,
true
)
}
//平均分数
var
scoreRate
=
0
get
()
{
return
AppPreferences
.
getInstance
().
getInt
(
"scoreRate"
,
field
)
}
set
(
value
)
{
field
=
value
AppPreferences
.
getInstance
().
put
(
"scoreRate"
,
value
,
true
)
}
//回到主页的次数
var
mainPageCount
=
0L
get
()
{
return
AppPreferences
.
getInstance
().
getLong
(
"mainPageCount"
,
field
)
}
set
(
value
)
{
field
=
value
AppPreferences
.
getInstance
().
put
(
"mainPageCount"
,
value
,
true
)
}
}
}
\ No newline at end of file
app/src/main/java/com/base/appzxhy/bean/push/NotificationSendBean.kt
View file @
7bce9429
...
@@ -16,7 +16,7 @@ class NotificationSendBean(
...
@@ -16,7 +16,7 @@ class NotificationSendBean(
var
bigRemoteViews
:
RemoteViews
?
=
null
var
bigRemoteViews
:
RemoteViews
?
=
null
var
smallRemoteViews
:
RemoteViews
?
=
null
var
smallRemoteViews
:
RemoteViews
?
=
null
var
intent
:
Intent
?
=
null
var
intent
:
Intent
?
=
null
var
notificationId
:
Int
=
1999
var
notificationId
:
Int
=
2025
companion
object
{
companion
object
{
...
...
app/src/main/java/com/base/appzxhy/business/push/fcm/FcmReceiver.kt
View file @
7bce9429
...
@@ -5,8 +5,8 @@ import android.content.Context
...
@@ -5,8 +5,8 @@ import android.content.Context
import
android.content.Intent
import
android.content.Intent
import
com.base.appzxhy.bean.push.NotificationSendBean
import
com.base.appzxhy.bean.push.NotificationSendBean
import
com.base.appzxhy.bean.push.NotificationSendBean.Companion.POPUP_WHERE_FCM
import
com.base.appzxhy.bean.push.NotificationSendBean.Companion.POPUP_WHERE_FCM
import
com.base.appzxhy.push.notification.MyNotificationManager
import
com.base.appzxhy.business.helper.EventUtils.event
import
com.base.appzxhy.business.helper.EventUtils.event
import
com.base.appzxhy.business.push.notification.MyNotificationManager
class
FcmReceiver
:
BroadcastReceiver
()
{
class
FcmReceiver
:
BroadcastReceiver
()
{
...
...
app/src/main/java/com/base/appzxhy/business/push/fcm/MessagingService.kt
View file @
7bce9429
...
@@ -3,8 +3,8 @@ package com.base.appzxhy.business.push.fcm
...
@@ -3,8 +3,8 @@ package com.base.appzxhy.business.push.fcm
import
android.annotation.SuppressLint
import
android.annotation.SuppressLint
import
com.base.appzxhy.bean.push.NotificationSendBean
import
com.base.appzxhy.bean.push.NotificationSendBean
import
com.base.appzxhy.bean.push.NotificationSendBean.Companion.POPUP_WHERE_FCM
import
com.base.appzxhy.bean.push.NotificationSendBean.Companion.POPUP_WHERE_FCM
import
com.base.appzxhy.push.notification.MyNotificationManager
import
com.base.appzxhy.business.helper.EventUtils.event
import
com.base.appzxhy.business.helper.EventUtils.event
import
com.base.appzxhy.business.push.notification.MyNotificationManager
import
com.google.firebase.messaging.FirebaseMessagingService
import
com.google.firebase.messaging.FirebaseMessagingService
import
com.google.firebase.messaging.RemoteMessage
import
com.google.firebase.messaging.RemoteMessage
import
org.json.JSONObject
import
org.json.JSONObject
...
...
app/src/main/java/com/base/appzxhy/business/push/notification/MyNotificationManager.kt
View file @
7bce9429
package
com.base.appzxhy.push.notification
package
com.base.appzxhy.
business.
push.notification
import
android.content.Context
import
android.content.Context
import
com.base.appzxhy.BuildConfig
import
com.base.appzxhy.BuildConfig
import
com.base.appzxhy.MyApplication
import
com.base.appzxhy.MyApplication
import
com.base.appzxhy.bean.FeatureBean.Companion.BATTERY_INFO
import
com.base.appzxhy.bean.FeatureBean.Companion.JUNK_CLEAN
import
com.base.appzxhy.bean.FeatureBean.Companion.LARGE_FILE_CLEAN
import
com.base.appzxhy.bean.FeatureBean.Companion.PHOTO_COMPRESSION
import
com.base.appzxhy.bean.FeatureBean.Companion.SCREENSHOT_CLEAN
import
com.base.appzxhy.bean.FeatureBean.Companion.SIMILAR_PHOTOS
import
com.base.appzxhy.bean.push.NotificationSendBean
import
com.base.appzxhy.bean.push.NotificationSendBean
import
com.base.appzxhy.bean.push.NotificationSendBean.Companion.ACTION_ID_TEST
import
com.base.appzxhy.bean.push.NotificationSendBean.Companion.POPUP_WHERE_WORK_MANAGER
import
com.base.appzxhy.bean.push.NotificationSendBean.Companion.POPUP_WHERE_WORK_MANAGER
import
com.base.appzxhy.bean.config.PopupConfigBean.Companion.popupConfigBean
import
com.base.appzxhy.bean.config.PopupConfigBean.Companion.popupConfigBean
import
com.base.appzxhy.bean.push.NotificationSendBean.Companion.POPUP_WHERE_ALARM
import
com.base.appzxhy.bean.push.NotificationSendBean.Companion.POPUP_WHERE_LOCK
import
com.base.appzxhy.bean.push.NotificationSendBean.Companion.POPUP_WHERE_TIMER
import
com.base.appzxhy.business.helper.EventUtils
import
com.base.appzxhy.business.helper.EventUtils
import
com.base.appzxhy.utils.AppPreferences
import
com.base.appzxhy.utils.AppPreferences
import
com.base.appzxhy.utils.KotlinExt.currentDate
import
com.base.appzxhy.utils.KotlinExt.currentDate
...
@@ -50,7 +58,7 @@ object MyNotificationManager {
...
@@ -50,7 +58,7 @@ object MyNotificationManager {
private
var
isStartSendQueue
=
AtomicBoolean
(
false
)
private
var
isStartSendQueue
=
AtomicBoolean
(
false
)
private
var
isUnLimit
:
Boolean
=
if
(
BuildConfig
.
DEBUG
)
tru
e
else
false
private
var
isUnLimit
:
Boolean
=
if
(
BuildConfig
.
DEBUG
)
fals
e
else
false
fun
startNotificationQueue
()
{
fun
startNotificationQueue
()
{
if
(
isStartSendQueue
.
get
())
return
if
(
isStartSendQueue
.
get
())
return
...
@@ -81,7 +89,7 @@ object MyNotificationManager {
...
@@ -81,7 +89,7 @@ object MyNotificationManager {
}
}
//提前准备数据
//提前准备数据
when
(
bean
.
actionId
)
{
when
(
bean
.
actionId
)
{
}
}
...
@@ -180,20 +188,26 @@ object MyNotificationManager {
...
@@ -180,20 +188,26 @@ object MyNotificationManager {
* 值测某些类型
* 值测某些类型
*/
*/
private
var
testWhere
=
listOf
(
private
var
testWhere
=
listOf
(
//
POPUP_WHERE_TIMER,
POPUP_WHERE_TIMER
,
//
POPUP_WHERE_LOCK,
POPUP_WHERE_LOCK
,
//
POPUP_WHERE_ALARM,
POPUP_WHERE_ALARM
,
POPUP_WHERE_WORK_MANAGER
POPUP_WHERE_WORK_MANAGER
)
)
private
val
looper_actionId
=
listOf
(
private
val
looper_actionId
=
listOf
(
ACTION_ID_TEST
,
// ACTION_ID_TEST,
JUNK_CLEAN
,
BATTERY_INFO
,
SCREENSHOT_CLEAN
,
LARGE_FILE_CLEAN
,
PHOTO_COMPRESSION
,
SIMILAR_PHOTOS
,
)
)
private
var
actionIdList
=
arrayListOf
<
String
>()
private
var
actionIdList
=
arrayListOf
<
String
>()
private
fun
getNextActionId
():
String
{
private
fun
getNextActionId
():
String
{
if
(
BuildConfig
.
DEBUG
)
{
//
if (BuildConfig.DEBUG) {
return
ACTION_ID_TEST
// return JUNK_CLEAN
}
//
}
if
(
actionIdList
.
isEmpty
())
{
if
(
actionIdList
.
isEmpty
())
{
actionIdList
.
addAll
(
looper_actionId
)
actionIdList
.
addAll
(
looper_actionId
)
...
...
app/src/main/java/com/base/appzxhy/business/push/notification/NotificationBeanUtils.kt
View file @
7bce9429
package
com.base.appzxhy.push.notification
package
com.base.appzxhy.
business.
push.notification
import
android.graphics.Bitmap
import
android.graphics.Bitmap
import
android.graphics.BitmapFactory
import
android.graphics.BitmapFactory
...
...
app/src/main/java/com/base/appzxhy/business/push/notification/NotificationHoverUtils.kt
View file @
7bce9429
package
com.base.appzxhy.push.notification
package
com.base.appzxhy.
business.
push.notification
import
android.os.Handler
import
android.os.Handler
import
android.os.HandlerThread
import
android.os.HandlerThread
...
...
app/src/main/java/com/base/appzxhy/business/push/notification/NotificationUiUtil.kt
View file @
7bce9429
package
com.base.appzxhy.push.notification
package
com.base.appzxhy.
business.
push.notification
import
android.app.NotificationChannel
import
android.app.NotificationChannel
import
android.app.NotificationManager
import
android.app.NotificationManager
...
@@ -11,8 +11,12 @@ import android.widget.RemoteViews
...
@@ -11,8 +11,12 @@ import android.widget.RemoteViews
import
androidx.core.app.NotificationCompat
import
androidx.core.app.NotificationCompat
import
androidx.core.graphics.drawable.IconCompat
import
androidx.core.graphics.drawable.IconCompat
import
com.base.appzxhy.R
import
com.base.appzxhy.R
import
com.base.appzxhy.bean.FeatureBean.Companion.BATTERY_INFO
import
com.base.appzxhy.bean.FeatureBean.Companion.JUNK_CLEAN
import
com.base.appzxhy.bean.FeatureBean.Companion.LARGE_FILE_CLEAN
import
com.base.appzxhy.bean.FeatureBean.Companion.SCREENSHOT_CLEAN
import
com.base.appzxhy.bean.FeatureBean.Companion.SIMILAR_PHOTOS
import
com.base.appzxhy.bean.push.NotificationSendBean
import
com.base.appzxhy.bean.push.NotificationSendBean
import
com.base.appzxhy.bean.push.NotificationSendBean.Companion.ACTION_ID_TEST
import
com.base.appzxhy.bean.config.PopupConfigBean
import
com.base.appzxhy.bean.config.PopupConfigBean
import
com.base.appzxhy.ui.splash.SplashActivity
import
com.base.appzxhy.ui.splash.SplashActivity
import
kotlin.random.Random
import
kotlin.random.Random
...
@@ -22,8 +26,8 @@ import kotlin.random.Random
...
@@ -22,8 +26,8 @@ import kotlin.random.Random
*/
*/
object
NotificationUiUtil
{
object
NotificationUiUtil
{
private
val
CHANNEL_ID
=
"
video downloader sav
er Channel"
private
val
CHANNEL_ID
=
"
dumpster clean
er Channel"
private
val
CHANNEL_NAME
=
"
video downloader sav
er Channel NAME"
private
val
CHANNEL_NAME
=
"
dumpster clean
er Channel NAME"
/**
/**
* 这部分准备UI的代码不能放入IO
* 这部分准备UI的代码不能放入IO
...
@@ -31,8 +35,60 @@ object NotificationUiUtil {
...
@@ -31,8 +35,60 @@ object NotificationUiUtil {
fun
setNotification
(
sendBean
:
NotificationSendBean
):
NotificationSendBean
{
fun
setNotification
(
sendBean
:
NotificationSendBean
):
NotificationSendBean
{
val
context
=
sendBean
.
context
val
context
=
sendBean
.
context
when
(
sendBean
.
actionId
)
{
when
(
sendBean
.
actionId
)
{
ACTION_ID_TEST
->
{
JUNK_CLEAN
->
{
val
text
=
"Clean up the junk files on your phone now!"
sendBean
.
smallRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_small
).
apply
{
setTextViewText
(
R
.
id
.
tv1
,
text
)
}
sendBean
.
bigRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_large
).
apply
{
setTextViewText
(
R
.
id
.
tv1
,
text
)
setImageViewResource
(
R
.
id
.
ivIcon
,
R
.
drawable
.
icon_clean
)
}
}
BATTERY_INFO
->
{
val
text
=
"Check your phone battery consumption recently!"
sendBean
.
smallRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_small
).
apply
{
setTextViewText
(
R
.
id
.
tv1
,
text
)
}
sendBean
.
bigRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_large
).
apply
{
setTextViewText
(
R
.
id
.
tv1
,
text
)
setImageViewResource
(
R
.
id
.
ivIcon
,
R
.
drawable
.
icon_battery
)
}
}
LARGE_FILE_CLEAN
->
{
val
text
=
"Clear out large files to free up your storage space!"
sendBean
.
smallRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_small
).
apply
{
setTextViewText
(
R
.
id
.
tv1
,
text
)
}
sendBean
.
bigRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_large
).
apply
{
setTextViewText
(
R
.
id
.
tv1
,
text
)
setImageViewResource
(
R
.
id
.
ivIcon
,
R
.
drawable
.
icon_large_file_cleanner
)
}
}
SIMILAR_PHOTOS
->
{
val
text
=
"Clean Up Similar Photos – Save Space!"
sendBean
.
smallRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_small
).
apply
{
setTextViewText
(
R
.
id
.
tv1
,
text
)
}
sendBean
.
bigRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_large
).
apply
{
setTextViewText
(
R
.
id
.
tv1
,
text
)
setImageViewResource
(
R
.
id
.
ivIcon
,
R
.
drawable
.
icon_duplicate_photos
)
}
}
SCREENSHOT_CLEAN
->
{
val
text
=
"Free up space by clearing screenshot clutter!"
sendBean
.
smallRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_small
).
apply
{
setTextViewText
(
R
.
id
.
tv1
,
text
)
}
sendBean
.
bigRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_large
).
apply
{
setTextViewText
(
R
.
id
.
tv1
,
text
)
setImageViewResource
(
R
.
id
.
ivIcon
,
R
.
drawable
.
icon_screenshot_cleaner
)
}
}
}
}
}
...
@@ -43,7 +99,7 @@ object NotificationUiUtil {
...
@@ -43,7 +99,7 @@ object NotificationUiUtil {
// val bean = sendBean.valueMap["bean"] as NotificationInfoBean
// val bean = sendBean.valueMap["bean"] as NotificationInfoBean
intent
.
putExtra
(
"actionId"
,
sendBean
.
actionId
)
intent
.
putExtra
(
"actionId"
,
sendBean
.
actionId
)
// intent.putExtra("linkUrl", bean.linkUrl)
// intent.putExtra("linkUrl", bean.linkUrl)
//
intent.putExtra("notificationId", sendBean.notificationId)
intent
.
putExtra
(
"notificationId"
,
sendBean
.
notificationId
)
sendBean
.
intent
=
intent
sendBean
.
intent
=
intent
sendCustomNotification
(
sendBean
)
sendCustomNotification
(
sendBean
)
return
sendBean
return
sendBean
...
...
app/src/main/java/com/base/appzxhy/business/push/receiver/AlarmReceiver.kt
View file @
7bce9429
...
@@ -11,7 +11,7 @@ import com.base.appzxhy.BuildConfig
...
@@ -11,7 +11,7 @@ import com.base.appzxhy.BuildConfig
import
com.base.appzxhy.bean.push.NotificationSendBean
import
com.base.appzxhy.bean.push.NotificationSendBean
import
com.base.appzxhy.bean.config.PopupConfigBean
import
com.base.appzxhy.bean.config.PopupConfigBean
import
com.base.appzxhy.business.helper.EventUtils
import
com.base.appzxhy.business.helper.EventUtils
import
com.base.appzxhy.push.notification.MyNotificationManager
import
com.base.appzxhy.
business.
push.notification.MyNotificationManager
import
com.base.appzxhy.push.work.RepeatingWorker
import
com.base.appzxhy.push.work.RepeatingWorker
import
com.base.appzxhy.utils.LogEx
import
com.base.appzxhy.utils.LogEx
import
java.util.Calendar
import
java.util.Calendar
...
...
app/src/main/java/com/base/appzxhy/business/push/receiver/ScreenStatusReceiver.kt
View file @
7bce9429
...
@@ -8,7 +8,7 @@ import android.os.Build
...
@@ -8,7 +8,7 @@ import android.os.Build
import
com.base.appzxhy.bean.push.NotificationSendBean
import
com.base.appzxhy.bean.push.NotificationSendBean
import
com.base.appzxhy.bean.push.NotificationSendBean.Companion.POPUP_WHERE_LOCK
import
com.base.appzxhy.bean.push.NotificationSendBean.Companion.POPUP_WHERE_LOCK
import
com.base.appzxhy.bean.config.PopupConfigBean.Companion.popupConfigBean
import
com.base.appzxhy.bean.config.PopupConfigBean.Companion.popupConfigBean
import
com.base.appzxhy.push.notification.MyNotificationManager
import
com.base.appzxhy.
business.
push.notification.MyNotificationManager
import
java.util.Objects
import
java.util.Objects
class
ScreenStatusReceiver
:
BroadcastReceiver
()
{
class
ScreenStatusReceiver
:
BroadcastReceiver
()
{
...
...
app/src/main/java/com/base/appzxhy/business/push/timer/TimerManager.kt
View file @
7bce9429
...
@@ -5,7 +5,7 @@ import com.base.appzxhy.MyApplication
...
@@ -5,7 +5,7 @@ import com.base.appzxhy.MyApplication
import
com.base.appzxhy.bean.push.NotificationSendBean
import
com.base.appzxhy.bean.push.NotificationSendBean
import
com.base.appzxhy.bean.push.NotificationSendBean.Companion.POPUP_WHERE_TIMER
import
com.base.appzxhy.bean.push.NotificationSendBean.Companion.POPUP_WHERE_TIMER
import
com.base.appzxhy.bean.config.PopupConfigBean.Companion.popupConfigBean
import
com.base.appzxhy.bean.config.PopupConfigBean.Companion.popupConfigBean
import
com.base.appzxhy.push.notification.MyNotificationManager
import
com.base.appzxhy.
business.
push.notification.MyNotificationManager
import
com.base.appzxhy.push.receiver.ScreenStatusReceiver
import
com.base.appzxhy.push.receiver.ScreenStatusReceiver
import
java.util.Timer
import
java.util.Timer
import
java.util.TimerTask
import
java.util.TimerTask
...
...
app/src/main/java/com/base/appzxhy/business/push/work/RepeatingWorker.kt
View file @
7bce9429
...
@@ -11,8 +11,8 @@ import androidx.work.WorkerParameters
...
@@ -11,8 +11,8 @@ import androidx.work.WorkerParameters
import
com.base.appzxhy.bean.push.NotificationSendBean
import
com.base.appzxhy.bean.push.NotificationSendBean
import
com.base.appzxhy.bean.push.NotificationSendBean.Companion.POPUP_WHERE_WORK_MANAGER
import
com.base.appzxhy.bean.push.NotificationSendBean.Companion.POPUP_WHERE_WORK_MANAGER
import
com.base.appzxhy.bean.config.PopupConfigBean
import
com.base.appzxhy.bean.config.PopupConfigBean
import
com.base.appzxhy.push.notification.MyNotificationManager
import
com.base.appzxhy.business.helper.EventUtils
import
com.base.appzxhy.business.helper.EventUtils
import
com.base.appzxhy.business.push.notification.MyNotificationManager
import
java.util.concurrent.TimeUnit
import
java.util.concurrent.TimeUnit
class
RepeatingWorker
(
val
appContext
:
Context
,
workerParams
:
WorkerParameters
)
:
Worker
(
appContext
,
workerParams
)
{
class
RepeatingWorker
(
val
appContext
:
Context
,
workerParams
:
WorkerParameters
)
:
Worker
(
appContext
,
workerParams
)
{
...
...
app/src/main/java/com/base/appzxhy/ui/dialog/RateDialog.kt
View file @
7bce9429
package
com.base.appzxhy.ui.dialog
package
com.base.appzxhy.ui.dialog
import
android.app.Activity
import
android.app.Activity
import
android.content.Intent
import
android.view.LayoutInflater
import
androidx.appcompat.app.AlertDialog
import
com.base.appzxhy.R
import
com.base.appzxhy.SpConstObject.scoreRate
import
com.base.appzxhy.databinding.DialogRateBinding
import
androidx.core.net.toUri
import
com.base.appzxhy.SpConstObject.isScoreRated
class
RateDialog
(
class
RateDialog
(
val
activity
:
Activity
val
activity
:
Activity
)
{
)
{
val
dialog
=
AlertDialog
.
Builder
(
activity
).
create
()
val
binding
=
DialogRateBinding
.
inflate
(
LayoutInflater
.
from
(
activity
))
var
action
:
(()
->
Unit
)?
=
null
fun
showDialog
(
isMust
:
Boolean
)
{
if
(!
isMust
)
{
if
(
isScoreRated
&&
scoreRate
==
5
)
return
}
dialog
.
setView
(
binding
.
root
)
dialog
.
setCanceledOnTouchOutside
(
true
)
val
params
=
dialog
.
window
?.
attributes
// params?.width = activity.resources.getDimensionPixelSize(R.dimen.dp_300)
// params?.width = FrameLayout.LayoutParams.WRAP_CONTENT
// params?.height = FrameLayout.LayoutParams.WRAP_CONTENT
// params?.gravity = Gravity.CENTER
dialog
.
window
?.
attributes
=
params
dialog
.
window
?.
setBackgroundDrawableResource
(
android
.
R
.
color
.
transparent
)
dialog
.
show
()
val
appName
=
activity
.
getString
(
R
.
string
.
app_name
)
val
thankTip
=
activity
.
getString
(
R
.
string
.
thank_you_for_using_app
,
appName
)
binding
.
tvThank
.
text
=
thankTip
binding
.
ivClose
.
setOnClickListener
{
dialog
.
dismiss
()
}
var
score
=
0
val
starList
=
listOf
(
binding
.
star1
,
binding
.
star2
,
binding
.
star3
,
binding
.
star4
,
binding
.
star5
,
)
starList
.
forEachIndexed
{
index
,
view
->
view
.
setOnClickListener
{
starList
.
forEachIndexed
{
index2
,
view2
->
view2
.
setImageResource
(
if
(
index2
<=
index
)
R
.
drawable
.
icon_star_s
else
R
.
drawable
.
icon_star_n
)
}
score
=
index
+
1
}
}
binding
.
tvSubmit
.
setOnClickListener
{
if
(
score
==
5
)
{
scoreRate
=
score
}
try
{
val
url
=
"https://play.google.com/store/apps/details?id=${activity.packageName}"
activity
.
startActivity
(
Intent
(
Intent
.
ACTION_VIEW
,
url
.
toUri
()))
isScoreRated
=
true
}
catch
(
_
:
Exception
)
{
}
dialog
.
dismiss
()
}
binding
.
star1
.
callOnClick
()
}
}
}
\ No newline at end of file
app/src/main/java/com/base/appzxhy/ui/main/Home2Fragment.kt
View file @
7bce9429
...
@@ -14,6 +14,7 @@ import com.base.appzxhy.bean.FeatureBean.Companion.SIMILAR_PHOTOS
...
@@ -14,6 +14,7 @@ import com.base.appzxhy.bean.FeatureBean.Companion.SIMILAR_PHOTOS
import
com.base.appzxhy.business.ads.AdsMgr
import
com.base.appzxhy.business.ads.AdsMgr
import
com.base.appzxhy.databinding.FragmentHome2Binding
import
com.base.appzxhy.databinding.FragmentHome2Binding
import
com.base.appzxhy.ui.dialog.permissionStorageJump
import
com.base.appzxhy.ui.dialog.permissionStorageJump
import
com.base.appzxhy.ui.set.SettingActivity
import
com.base.appzxhy.utils.Utils
import
com.base.appzxhy.utils.Utils
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.async
import
kotlinx.coroutines.async
...
@@ -46,7 +47,7 @@ class Home2Fragment : BaseFragment<FragmentHome2Binding>(FragmentHome2Binding::i
...
@@ -46,7 +47,7 @@ class Home2Fragment : BaseFragment<FragmentHome2Binding>(FragmentHome2Binding::i
(
requireActivity
()
as
MainActivity
).
jumpAction
(
BATTERY_INFO
)
(
requireActivity
()
as
MainActivity
).
jumpAction
(
BATTERY_INFO
)
}
}
binding
.
llLarge
.
setOnClickListener
{
binding
.
llLarge
.
setOnClickListener
{
(
requireActivity
()
as
MainActivity
).
jumpAction
(
LARGE_FILE_CLEAN
)
(
requireActivity
()
as
MainActivity
).
permissionStorageJump
(
LARGE_FILE_CLEAN
)
}
}
binding
.
llDuplicate
.
setOnClickListener
{
binding
.
llDuplicate
.
setOnClickListener
{
(
requireActivity
()
as
MainActivity
).
permissionStorageJump
(
SIMILAR_PHOTOS
)
(
requireActivity
()
as
MainActivity
).
permissionStorageJump
(
SIMILAR_PHOTOS
)
...
...
app/src/main/java/com/base/appzxhy/ui/main/MainActivity.kt
View file @
7bce9429
...
@@ -6,19 +6,28 @@ import android.view.View
...
@@ -6,19 +6,28 @@ import android.view.View
import
android.widget.TextView
import
android.widget.TextView
import
androidx.core.content.ContextCompat
import
androidx.core.content.ContextCompat
import
androidx.fragment.app.Fragment
import
androidx.fragment.app.Fragment
import
androidx.lifecycle.ViewModelProvider
import
androidx.lifecycle.lifecycleScope
import
androidx.viewpager2.adapter.FragmentStateAdapter
import
androidx.viewpager2.adapter.FragmentStateAdapter
import
androidx.viewpager2.widget.ViewPager2
import
androidx.viewpager2.widget.ViewPager2
import
com.base.appzxhy.R
import
com.base.appzxhy.R
import
com.base.appzxhy.SpConstObject.mainPageCount
import
com.base.appzxhy.base.BaseActivity
import
com.base.appzxhy.base.BaseActivity
import
com.base.appzxhy.bean.HomeTabUIBean
import
com.base.appzxhy.bean.HomeTabUIBean
import
com.base.appzxhy.business.ads.AdsMgr
import
com.base.appzxhy.business.ads.AdsMgr
import
com.base.appzxhy.databinding.ActivityMainBinding
import
com.base.appzxhy.databinding.ActivityMainBinding
import
com.base.appzxhy.databinding.ItemHomeTabBinding
import
com.base.appzxhy.databinding.ItemHomeTabBinding
import
com.base.appzxhy.ui.recyclebin.RecycleBinFragment
import
com.base.appzxhy.utils.PermissionUtils.requestStoragePermission
import
com.google.android.material.tabs.TabLayout
import
com.google.android.material.tabs.TabLayout
import
com.google.android.material.tabs.TabLayout.OnTabSelectedListener
import
com.google.android.material.tabs.TabLayout.OnTabSelectedListener
import
kotlinx.coroutines.flow.collectLatest
import
kotlinx.coroutines.launch
class
MainActivity
:
BaseActivity
<
ActivityMainBinding
>(
ActivityMainBinding
::
inflate
)
{
class
MainActivity
:
BaseActivity
<
ActivityMainBinding
>(
ActivityMainBinding
::
inflate
)
{
val
viewModel
by
lazy
{
ViewModelProvider
(
this
)[
MainViewModel
::
class
.
java
]
}
private
val
fragmentList
=
listOf
(
private
val
fragmentList
=
listOf
(
Home2Fragment
(),
Home2Fragment
(),
RecoveryFragment
(),
RecoveryFragment
(),
...
@@ -38,9 +47,26 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
...
@@ -38,9 +47,26 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
initTab
()
initTab
()
initViewPager2
()
initViewPager2
()
initDialogFlow
()
AdsMgr
.
showBanner
(
binding
.
flBanner
,
false
)
AdsMgr
.
showBanner
(
binding
.
flBanner
,
false
)
}
}
private
fun
initDialogFlow
()
{
lifecycleScope
.
launch
{
viewModel
.
dialogFlow
.
collectLatest
{
dialogType
->
when
(
dialogType
)
{
"StoreDialog"
->
{
requestStoragePermission
(
launcher
)
{}
}
"NotificationDialog"
->{
}
}
}
}
}
private
fun
initViewPager2
()
{
private
fun
initViewPager2
()
{
binding
.
viewPager2
.
adapter
=
viewPagerAdapter
binding
.
viewPager2
.
adapter
=
viewPagerAdapter
binding
.
viewPager2
.
registerOnPageChangeCallback
(
object
:
ViewPager2
.
OnPageChangeCallback
()
{
binding
.
viewPager2
.
registerOnPageChangeCallback
(
object
:
ViewPager2
.
OnPageChangeCallback
()
{
...
@@ -103,4 +129,11 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
...
@@ -103,4 +129,11 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
textView
?.
setTextColor
(
Color
.
parseColor
(
"#999999"
))
textView
?.
setTextColor
(
Color
.
parseColor
(
"#999999"
))
}
}
override
fun
onResumeOneShoot
()
{
super
.
onResumeOneShoot
()
mainPageCount
=
mainPageCount
+
1
viewModel
.
checkDialog
(
this
)
}
}
}
\ No newline at end of file
app/src/main/java/com/base/appzxhy/ui/main/MainViewModel.kt
View file @
7bce9429
package
com.base.appzxhy.ui.main
package
com.base.appzxhy.ui.main
import
android.content.Context
import
androidx.lifecycle.ViewModel
import
androidx.lifecycle.ViewModel
import
com.base.appzxhy.utils.PermissionUtils.checkStorePermission
import
kotlinx.coroutines.flow.MutableStateFlow
import
kotlinx.coroutines.flow.update
class
MainViewModel
:
ViewModel
()
{
class
MainViewModel
:
ViewModel
()
{
var
dialogFlow
:
MutableStateFlow
<
String
>
=
MutableStateFlow
(
""
)
var
nextShowDialog
:
Boolean
=
true
fun
checkDialog
(
context
:
Context
)
{
if
(!
context
.
checkStorePermission
())
{
dialogFlow
.
update
{
"StoreDialog"
}
return
}
// if (!context.checkNotificationPermission()) {
// dialogFlow.update { "NotificationDialog" }
// return
// }
}
}
}
\ No newline at end of file
app/src/main/java/com/base/appzxhy/ui/
ma
in/RecycleBinFragment.kt
→
app/src/main/java/com/base/appzxhy/ui/
recycleb
in/RecycleBinFragment.kt
View file @
7bce9429
package
com.base.appzxhy.ui.
ma
in
package
com.base.appzxhy.ui.
recycleb
in
import
com.base.appzxhy.R
import
com.base.appzxhy.R
import
com.base.appzxhy.base.BaseFragment
import
com.base.appzxhy.base.BaseFragment
import
com.base.appzxhy.business.ads.AdsMgr
import
com.base.appzxhy.business.ads.AdsMgr
import
com.base.appzxhy.databinding.FragmentRecycleBinBinding
import
com.base.appzxhy.databinding.FragmentRecycleBinBinding
class
RecycleBinFragment
:
BaseFragment
<
FragmentRecycleBinBinding
>(
FragmentRecycleBinBinding
::
inflate
)
{
class
RecycleBinFragment
:
BaseFragment
<
FragmentRecycleBinBinding
>(
FragmentRecycleBinBinding
::
inflate
)
{
override
fun
initView
()
{
override
fun
initView
()
{
...
@@ -16,4 +15,5 @@ class RecycleBinFragment : BaseFragment<FragmentRecycleBinBinding>(FragmentRecyc
...
@@ -16,4 +15,5 @@ class RecycleBinFragment : BaseFragment<FragmentRecycleBinBinding>(FragmentRecyc
override
fun
initListener
()
{
override
fun
initListener
()
{
super
.
initListener
()
super
.
initListener
()
}
}
}
}
\ No newline at end of file
app/src/main/java/com/base/appzxhy/ui/recyclebin/RecycleBinUtils.kt
0 → 100644
View file @
7bce9429
package
com.base.appzxhy.ui.recyclebin
import
com.base.appzxhy.MyApplication
import
java.io.File
object
RecycleBinUtils
{
val
mImageStr
:
Set
<
String
>
=
HashSet
(
mutableListOf
(
".jpg"
,
".jpeg"
,
".png"
,
".gif"
,
".bmp"
)
)
val
mVideoStr
:
Set
<
String
>
=
HashSet
(
mutableListOf
(
".mp4"
,
".avi"
,
".mov"
,
".mkv"
)
)
val
mAudioStr
:
Set
<
String
>
=
HashSet
(
mutableListOf
(
".mp3"
,
".flac"
,
".wav"
)
)
val
mDocumentStr
:
Set
<
String
>
=
HashSet
(
mutableListOf
(
".doc"
,
".docx"
,
".xls"
,
".xlsx"
,
".ppt"
,
".pptx"
,
".pdf"
))
fun
getRecycleBinData
():
List
<
File
>
{
val
file
=
File
(
MyApplication
.
Companion
.
appContext
.
filesDir
,
"recycleBin"
)
if
(
file
.
exists
())
{
val
arrayList
=
arrayListOf
<
File
>()
arrayList
.
addAll
(
arrayList
)
return
arrayList
}
else
{
return
listOf
()
}
}
fun
addRecycleBinFile
(
file
:
File
)
{
val
recycleBinDir
=
File
(
MyApplication
.
Companion
.
appContext
.
filesDir
,
"recycleBin"
)
if
(!
recycleBinDir
.
exists
())
{
recycleBinDir
.
mkdirs
()
}
val
recycleBinFile
=
File
(
recycleBinDir
,
"."
+
file
.
name
)
file
.
copyTo
(
recycleBinFile
,
true
)
}
}
\ No newline at end of file
app/src/main/java/com/base/appzxhy/ui/
main
/SettingActivity.kt
→
app/src/main/java/com/base/appzxhy/ui/
set
/SettingActivity.kt
View file @
7bce9429
package
com.base.appzxhy.ui.
main
package
com.base.appzxhy.ui.
set
import
androidx.core.graphics.Insets
import
androidx.core.graphics.Insets
import
androidx.core.view.ViewCompat
import
androidx.core.view.ViewCompat
...
...
app/src/main/java/com/base/appzxhy/ui/
main
/SettingsFragment.kt
→
app/src/main/java/com/base/appzxhy/ui/
set
/SettingsFragment.kt
View file @
7bce9429
package
com.base.appzxhy.ui.
main
package
com.base.appzxhy.ui.
set
import
android.annotation.SuppressLint
import
android.annotation.SuppressLint
import
android.content.Intent
import
android.content.Intent
import
android.net.Uri
import
android.os.Bundle
import
android.os.Bundle
import
com.base.appzxhy.BuildConfig
import
com.base.appzxhy.BuildConfig
import
com.base.appzxhy.GlobalConfig.URL_PRIVACY
import
com.base.appzxhy.GlobalConfig.URL_PRIVACY
...
@@ -14,6 +13,7 @@ import androidx.core.net.toUri
...
@@ -14,6 +13,7 @@ import androidx.core.net.toUri
import
androidx.core.view.updatePadding
import
androidx.core.view.updatePadding
import
com.base.appzxhy.R
import
com.base.appzxhy.R
import
com.base.appzxhy.business.ads.AdsMgr
import
com.base.appzxhy.business.ads.AdsMgr
import
com.base.appzxhy.ui.dialog.RateDialog
import
com.base.appzxhy.utils.MyAnimationUtils
import
com.base.appzxhy.utils.MyAnimationUtils
...
@@ -46,7 +46,8 @@ class SettingsFragment : BaseFragment<FragmentSettingsBinding>(FragmentSettingsB
...
@@ -46,7 +46,8 @@ class SettingsFragment : BaseFragment<FragmentSettingsBinding>(FragmentSettingsB
startActivity
(
Intent
(
Intent
.
ACTION_VIEW
,
URL_PRIVACY
.
toUri
()))
startActivity
(
Intent
(
Intent
.
ACTION_VIEW
,
URL_PRIVACY
.
toUri
()))
}
}
binding
.
clRateUs
.
setOnClickListener
{
binding
.
clRateUs
.
setOnClickListener
{
val
dialog
=
RateDialog
(
requireActivity
())
dialog
.
showDialog
(
true
)
}
}
}
}
...
...
app/src/main/res/drawable-xxhdpi/icon_star_n.png
0 → 100644
View file @
7bce9429
7.73 KB
app/src/main/res/drawable-xxhdpi/icon_star_s.png
0 → 100644
View file @
7bce9429
12.9 KB
app/src/main/res/drawable-xxhdpi/img_pingjia.png
0 → 100644
View file @
7bce9429
70 KB
app/src/main/res/layout/activity_setting.xml
View file @
7bce9429
...
@@ -5,11 +5,11 @@
...
@@ -5,11 +5,11 @@
android:id=
"@+id/main"
android:id=
"@+id/main"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
".ui.
main
.SettingActivity"
>
tools:context=
".ui.
set
.SettingActivity"
>
<fragment
<fragment
android:id=
"@+id/fragment"
android:id=
"@+id/fragment"
android:name=
"com.base.appzxhy.ui.
main
.SettingsFragment"
android:name=
"com.base.appzxhy.ui.
set
.SettingsFragment"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
android:layout_height=
"match_parent"
/>
...
...
app/src/main/res/layout/dialog_rate.xml
0 → 100644
View file @
7bce9429
<?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"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"@color/transparent"
>
<FrameLayout
android:layout_width=
"@dimen/dp_320"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_45"
android:background=
"@drawable/bg_ffffff_8"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
>
<androidx.appcompat.widget.AppCompatImageView
android:id=
"@+id/ivClose"
android:layout_width=
"@dimen/dp_30"
android:layout_height=
"@dimen/dp_30"
android:layout_gravity=
"end|top"
android:layout_margin=
"@dimen/dp_10"
app:srcCompat=
"@drawable/icon_close"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"@dimen/dp_60"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
>
<TextView
android:id=
"@+id/tvThank"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"@dimen/dp_40"
android:text=
"@string/thank_you_for_using_app"
android:textColor=
"#1A1A1A"
android:textSize=
"@dimen/sp_18"
/>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"@dimen/dp_20"
android:layout_marginTop=
"@dimen/dp_10"
android:gravity=
"center"
android:text=
"@string/thank_you_very_much_for_taking_the_time_to_rate_us"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginHorizontal=
"@dimen/dp_15"
android:layout_marginTop=
"@dimen/dp_20"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<androidx.appcompat.widget.AppCompatImageView
android:id=
"@+id/star1"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"@dimen/dp_10"
app:srcCompat=
"@drawable/icon_star_s"
/>
<androidx.appcompat.widget.AppCompatImageView
android:id=
"@+id/star2"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"@dimen/dp_10"
app:srcCompat=
"@drawable/icon_star_s"
/>
<androidx.appcompat.widget.AppCompatImageView
android:id=
"@+id/star3"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"@dimen/dp_10"
app:srcCompat=
"@drawable/icon_star_s"
/>
<androidx.appcompat.widget.AppCompatImageView
android:id=
"@+id/star4"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"@dimen/dp_10"
app:srcCompat=
"@drawable/icon_star_s"
/>
<androidx.appcompat.widget.AppCompatImageView
android:id=
"@+id/star5"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"@dimen/dp_10"
app:srcCompat=
"@drawable/icon_star_s"
/>
</LinearLayout>
<TextView
android:id=
"@+id/tvSubmit"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/dp_50"
android:layout_marginHorizontal=
"@dimen/dp_20"
android:layout_marginTop=
"@dimen/dp_30"
android:layout_marginBottom=
"@dimen/dp_30"
android:background=
"@drawable/bg_enable_4"
android:gravity=
"center"
android:text=
"@string/submit"
android:textColor=
"@color/white"
android:textSize=
"@dimen/sp_17"
/>
</LinearLayout>
</FrameLayout>
<androidx.appcompat.widget.AppCompatImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:srcCompat=
"@drawable/img_pingjia"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/fragment_home2.xml
View file @
7bce9429
...
@@ -320,7 +320,7 @@
...
@@ -320,7 +320,7 @@
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"@dimen/dp_10"
android:layout_marginStart=
"@dimen/dp_10"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:text=
"@string/
duplicate_photos
"
android:text=
"@string/
screenshot_cleaner
"
android:textColor=
"#1A1A1A"
android:textColor=
"#1A1A1A"
android:textSize=
"@dimen/sp_14"
/>
android:textSize=
"@dimen/sp_14"
/>
...
...
app/src/main/res/layout/fragment_recycle_bin.xml
View file @
7bce9429
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"#F4F5F9"
android:background=
"#F4F5F9"
tools:context=
".ui.
ma
in.RecycleBinFragment"
>
tools:context=
".ui.
recycleb
in.RecycleBinFragment"
>
<FrameLayout
<FrameLayout
android:id=
"@+id/flTop"
android:id=
"@+id/flTop"
...
...
app/src/main/res/layout/notification_common_large.xml
0 → 100644
View file @
7bce9429
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"200dp"
android:background=
"@drawable/white_background"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_marginStart=
"16dp"
android:layout_marginTop=
"24dp"
android:layout_marginEnd=
"16dp"
android:layout_weight=
"1"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<ImageView
android:id=
"@+id/ivIcon"
android:layout_width=
"@dimen/dp_40"
android:layout_height=
"@dimen/dp_40"
android:src=
"@mipmap/logo"
tools:ignore=
"ContentDescription"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"6dp"
android:layout_marginEnd=
"6dp"
android:orientation=
"vertical"
>
<TextView
android:id=
"@+id/tv1"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:ellipsize=
"end"
android:maxLines=
"2"
android:text=
"notification_junk_clean"
android:textColor=
"@color/color_181b1f"
android:textSize=
"16sp"
android:textStyle=
"bold"
tools:ignore=
"HardcodedText"
/>
<TextView
android:id=
"@+id/tv2"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"2dp"
android:ellipsize=
"end"
android:maxLines=
"2"
android:textColor=
"@color/color_999999"
android:textSize=
"12sp"
android:visibility=
"gone"
tools:text=
"Are you sure you want to quit without trying to clean up the garbage again?"
/>
</LinearLayout>
</LinearLayout>
<RelativeLayout
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_weight=
"1"
android:gravity=
"center"
>
<TextView
android:id=
"@+id/tv_btn"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"16dp"
android:layout_marginEnd=
"16dp"
android:background=
"@drawable/bg_btn_50"
android:gravity=
"center"
android:paddingVertical=
"8dp"
android:text=
"@string/clean_now"
android:textColor=
"@color/white"
android:textSize=
"18sp"
android:textStyle=
"bold"
/>
</RelativeLayout>
</LinearLayout>
<TextView
android:id=
"@+id/tv_mark"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
""
android:textColor=
"@color/colorPrimary"
android:textSize=
"16sp"
/>
</RelativeLayout>
\ No newline at end of file
app/src/main/res/layout/notification_common_small.xml
0 → 100644
View file @
7bce9429
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"60dp"
android:gravity=
"center"
android:orientation=
"horizontal"
android:paddingStart=
"8dp"
android:paddingTop=
"4dp"
android:paddingEnd=
"12dp"
android:paddingBottom=
"4dp"
>
<LinearLayout
android:id=
"@+id/ll_content"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:gravity=
"center"
android:orientation=
"horizontal"
tools:ignore=
"UselessParent"
>
<LinearLayout
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"8dp"
android:layout_weight=
"1"
android:orientation=
"vertical"
>
<TextView
android:id=
"@+id/tv1"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:ellipsize=
"end"
android:maxLines=
"1"
android:text=
"notification_junk_clean"
android:textColor=
"@color/color_181b1f"
android:textSize=
"14sp"
android:textStyle=
"bold"
tools:ignore=
"HardcodedText"
/>
<TextView
android:id=
"@+id/tv2"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:ellipsize=
"end"
android:maxLines=
"2"
android:textColor=
"@color/color_999999"
android:textSize=
"12sp"
android:visibility=
"gone"
tools:text=
"Are you sure you want to quit without trying to clean up the garbage again?"
/>
</LinearLayout>
<TextView
android:id=
"@+id/tv_btn"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"@drawable/bg_btn_50"
android:paddingHorizontal=
"14dp"
android:paddingVertical=
"6dp"
android:text=
"@string/clean_now"
android:textColor=
"@color/white"
android:textSize=
"12sp"
android:textStyle=
"bold"
/>
</LinearLayout>
</RelativeLayout>
\ No newline at end of file
app/src/main/res/mipmap-xxhdpi/logo.png
View replaced file @
c3593211
View file @
7bce9429
This diff is collapsed.
Click to expand it.
app/src/main/res/values/dimens.xml
View file @
7bce9429
...
@@ -32,4 +32,6 @@
...
@@ -32,4 +32,6 @@
<dimen
name=
"sp_20"
>
20sp
</dimen>
<dimen
name=
"sp_20"
>
20sp
</dimen>
<dimen
name=
"dp_70"
>
70dp
</dimen>
<dimen
name=
"dp_70"
>
70dp
</dimen>
<dimen
name=
"dp_38"
>
38dp
</dimen>
<dimen
name=
"dp_38"
>
38dp
</dimen>
<dimen
name=
"dp_320"
>
320dp
</dimen>
<dimen
name=
"dp_330"
>
330dp
</dimen>
</resources>
</resources>
\ No newline at end of file
app/src/main/res/values/strings.xml
View file @
7bce9429
...
@@ -120,6 +120,10 @@ Please rest assured that we will handle your information in strict accordance wi
...
@@ -120,6 +120,10 @@ Please rest assured that we will handle your information in strict accordance wi
<string
name=
"recycle_bin"
>
Recycle Bin
</string>
<string
name=
"recycle_bin"
>
Recycle Bin
</string>
<string
name=
"recyclebin_tip"
>
<![CDATA[Mobispeedy is protecting your photos, videos, files & App files from being deleted]]>
</string>
<string
name=
"recyclebin_tip"
>
<![CDATA[Mobispeedy is protecting your photos, videos, files & App files from being deleted]]>
</string>
<string
name=
"recyclebin"
>
Recycle Bin
</string>
<string
name=
"recyclebin"
>
Recycle Bin
</string>
<string
name=
"thank_you_for_using_app"
>
Thank you for using %s!
</string>
<string
name=
"thank_you_very_much_for_taking_the_time_to_rate_us"
>
Thank you very much for taking the time to rate us.
</string>
<string
name=
"submit"
>
SUBMIT
</string>
<string
name=
"screenshot_cleaner"
>
Screenshot Cleaner
</string>
</resources>
</resources>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment