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
eaee9777
Commit
eaee9777
authored
Jun 27, 2025
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[优化]installReferrer上报
parent
d8fce1b1
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
407 additions
and
122 deletions
+407
-122
battery_info.json
app/src/main/assets/scan/battery_info.json
+1
-0
MyApplication.kt
app/src/main/java/com/dumpster/cleaner/MyApplication.kt
+8
-5
SpConstObject.kt
app/src/main/java/com/dumpster/cleaner/SpConstObject.kt
+18
-0
FeatureBean.kt
app/src/main/java/com/dumpster/cleaner/bean/FeatureBean.kt
+4
-3
EventUtils.kt
...n/java/com/dumpster/cleaner/business/helper/EventUtils.kt
+7
-3
InstallHelper.kt
...ava/com/dumpster/cleaner/business/helper/InstallHelper.kt
+51
-18
MyNotificationManager.kt
...eaner/business/push/notification/MyNotificationManager.kt
+6
-4
NotificationUiUtil.kt
.../cleaner/business/push/notification/NotificationUiUtil.kt
+8
-1
PackageReceiver.kt
...umpster/cleaner/business/push/receiver/PackageReceiver.kt
+33
-0
CleanGuideActivity.kt
.../java/com/dumpster/cleaner/ui/guide/CleanGuideActivity.kt
+5
-1
sl3fku.xml
app/src/main/res/drawable-xxhdpi/sl3fku.xml
+10
-0
b2x.xml
app/src/main/res/drawable/b2x.xml
+36
-0
gvv81.xml
app/src/main/res/drawable/gvv81.xml
+10
-0
ny.xml
app/src/main/res/drawable/ny.xml
+26
-0
okaq.xml
app/src/main/res/drawable/okaq.xml
+21
-0
pvxq.xml
app/src/main/res/drawable/pvxq.xml
+21
-0
r3yb.xml
app/src/main/res/drawable/r3yb.xml
+21
-0
tjkg.xml
app/src/main/res/drawable/tjkg.xml
+21
-0
notification_common_large.xml
app/src/main/res/layout/notification_common_large.xml
+69
-77
notification_common_small.xml
app/src/main/res/layout/notification_common_small.xml
+31
-10
No files found.
app/src/main/assets/scan/battery_info.json
0 → 100644
View file @
eaee9777
This diff is collapsed.
Click to expand it.
app/src/main/java/com/dumpster/cleaner/MyApplication.kt
View file @
eaee9777
...
@@ -25,11 +25,13 @@ import java.util.Locale
...
@@ -25,11 +25,13 @@ import java.util.Locale
import
java.util.UUID
import
java.util.UUID
import
com.dumpster.cleaner.SpConstObject.appLanguageSp
import
com.dumpster.cleaner.SpConstObject.appLanguageSp
import
com.dumpster.cleaner.SpConstObject.appLanguageCountrySp
import
com.dumpster.cleaner.SpConstObject.appLanguageCountrySp
import
com.dumpster.cleaner.SpConstObject.appUuid
import
com.dumpster.cleaner.business.ads.AdsMgr
import
com.dumpster.cleaner.business.ads.AdsMgr
import
com.dumpster.cleaner.business.helper.NewComUtils.spConfig
import
com.dumpster.cleaner.business.helper.NewComUtils.spConfig
import
com.dumpster.cleaner.business.push.fcm.FCMManager
import
com.dumpster.cleaner.business.push.fcm.FCMManager
import
com.dumpster.cleaner.business.push.notification.MyNotificationManager
import
com.dumpster.cleaner.business.push.notification.MyNotificationManager
import
com.dumpster.cleaner.business.push.receiver.AlarmReceiver.Companion.startAlarm
import
com.dumpster.cleaner.business.push.receiver.AlarmReceiver.Companion.startAlarm
import
com.dumpster.cleaner.business.push.receiver.PackageReceiver
import
com.dumpster.cleaner.business.push.receiver.ScreenStatusReceiver
import
com.dumpster.cleaner.business.push.receiver.ScreenStatusReceiver
import
com.dumpster.cleaner.business.push.timer.TimerManager.Companion.changeTimer
import
com.dumpster.cleaner.business.push.timer.TimerManager.Companion.changeTimer
import
com.dumpster.cleaner.business.push.work.RepeatingWorker.Companion.schedulePeriodicWork
import
com.dumpster.cleaner.business.push.work.RepeatingWorker.Companion.schedulePeriodicWork
...
@@ -100,8 +102,8 @@ class MyApplication : Application() {
...
@@ -100,8 +102,8 @@ class MyApplication : Application() {
private
fun
initGid
()
=
MainScope
().
launch
(
Dispatchers
.
IO
)
{
private
fun
initGid
()
=
MainScope
().
launch
(
Dispatchers
.
IO
)
{
try
{
try
{
val
info
:
AdvertisingIdClient
.
Info
=
AdvertisingIdClient
.
getAdvertisingIdInfo
(
applicationContext
)
val
info
:
AdvertisingIdClient
.
Info
=
AdvertisingIdClient
.
getAdvertisingIdInfo
(
applicationContext
)
val
advertisingId
=
info
.
id
val
advertisingId
=
info
.
id
?:
"null"
AppPreferences
.
getInstance
().
put
(
"gid"
,
advertisingId
)
SpConstObject
.
gid
=
advertisingId
}
catch
(
e
:
Exception
)
{
}
catch
(
e
:
Exception
)
{
EventUtils
.
event
(
"gid_exception"
)
EventUtils
.
event
(
"gid_exception"
)
}
}
...
@@ -113,10 +115,10 @@ class MyApplication : Application() {
...
@@ -113,10 +115,10 @@ class MyApplication : Application() {
}
}
private
fun
initUUid
()
{
private
fun
initUUid
()
{
uuid
=
AppPreferences
.
getInstance
().
getString
(
"uuid"
,
""
)
uuid
=
appUuid
if
(
TextUtils
.
isEmpty
(
uuid
))
{
if
(
TextUtils
.
isEmpty
(
uuid
))
{
uuid
=
UUID
.
randomUUID
().
toString
()
+
System
.
currentTimeMillis
()
uuid
=
UUID
.
randomUUID
().
toString
()
+
System
.
currentTimeMillis
()
AppPreferences
.
getInstance
().
put
(
"uuid"
,
uuid
)
appUuid
=
uuid
LogEx
.
logDebug
(
TAG
,
"uuid=$uuid"
)
LogEx
.
logDebug
(
TAG
,
"uuid=$uuid"
)
}
}
LogEx
.
logDebug
(
TAG
,
"uuid=${AppPreferences.getInstance().getString("
uuid
", "")}"
)
LogEx
.
logDebug
(
TAG
,
"uuid=${AppPreferences.getInstance().getString("
uuid
", "")}"
)
...
@@ -164,6 +166,7 @@ class MyApplication : Application() {
...
@@ -164,6 +166,7 @@ class MyApplication : Application() {
ScreenStatusReceiver
.
registerScreenStatusReceiver
(
this
)
ScreenStatusReceiver
.
registerScreenStatusReceiver
(
this
)
// PackageStatusReceiver.registerPackageStatusReceiver(this)
// PackageStatusReceiver.registerPackageStatusReceiver(this)
registerBatteryReceiver
(
this
)
registerBatteryReceiver
(
this
)
PackageReceiver
.
register
(
this
)
//workManager
//workManager
schedulePeriodicWork
(
appContext
)
schedulePeriodicWork
(
appContext
)
...
@@ -194,7 +197,7 @@ class MyApplication : Application() {
...
@@ -194,7 +197,7 @@ class MyApplication : Application() {
private
var
lastTimePause
=
0L
private
var
lastTimePause
=
0L
private
var
lastTimeResume
=
0L
private
var
lastTimeResume
=
0L
private
fun
isHotLaunch
():
Boolean
{
private
fun
isHotLaunch
():
Boolean
{
if
((
lastTimeResume
-
lastTimePause
)
>
50
00
)
{
if
((
lastTimeResume
-
lastTimePause
)
>
35
00
)
{
return
true
return
true
}
}
return
false
return
false
...
...
app/src/main/java/com/dumpster/cleaner/SpConstObject.kt
View file @
eaee9777
...
@@ -5,6 +5,24 @@ import java.util.Locale
...
@@ -5,6 +5,24 @@ import java.util.Locale
object
SpConstObject
{
object
SpConstObject
{
var
appUuid
=
""
get
()
{
return
AppPreferences
.
getInstance
().
getString
(
"uuid_app"
,
field
)
}
set
(
value
)
{
field
=
value
AppPreferences
.
getInstance
().
put
(
"uuid_app"
,
value
,
true
)
}
var
gid
=
""
get
()
{
return
AppPreferences
.
getInstance
().
getString
(
"gid"
,
field
)
}
set
(
value
)
{
field
=
value
AppPreferences
.
getInstance
().
put
(
"gid"
,
value
,
true
)
}
//是否已经点击start
//是否已经点击start
var
ifAgreePrivacy
=
false
var
ifAgreePrivacy
=
false
...
...
app/src/main/java/com/dumpster/cleaner/bean/FeatureBean.kt
View file @
eaee9777
...
@@ -26,9 +26,9 @@ class FeatureBean(
...
@@ -26,9 +26,9 @@ class FeatureBean(
fun
isTodayUsedFunction
():
Boolean
{
fun
isTodayUsedFunction
():
Boolean
{
return
listOf
(
val
flag1
=
getFunctionTodayUsed
(
BATTERY_INFO
)
val
flag2
=
listOf
(
JUNK_CLEAN
,
JUNK_CLEAN
,
BATTERY_INFO
,
SCREENSHOT_CLEAN
,
SCREENSHOT_CLEAN
,
LARGE_FILE_CLEAN
,
LARGE_FILE_CLEAN
,
PHOTO_COMPRESSION
,
PHOTO_COMPRESSION
,
...
@@ -37,7 +37,8 @@ class FeatureBean(
...
@@ -37,7 +37,8 @@ class FeatureBean(
RECOVERY_VIDEOS
,
RECOVERY_VIDEOS
,
RECOVERY_AUDIOS
,
RECOVERY_AUDIOS
,
RECOVERY_DOCUMENTS
RECOVERY_DOCUMENTS
).
any
{
getFunctionTodayUsed
(
it
)
}
).
filter
{
getFunctionTodayUsed
(
it
)
}.
size
<
2
return
flag1
&&
flag2
}
}
/**
/**
...
...
app/src/main/java/com/dumpster/cleaner/business/helper/EventUtils.kt
View file @
eaee9777
...
@@ -4,8 +4,9 @@ import android.os.Build
...
@@ -4,8 +4,9 @@ import android.os.Build
import
com.dumpster.cleaner.BuildConfig
import
com.dumpster.cleaner.BuildConfig
import
com.dumpster.cleaner.SpConstObject.ifAgreePrivacy
import
com.dumpster.cleaner.SpConstObject.ifAgreePrivacy
import
com.dumpster.cleaner.GlobalConfig
import
com.dumpster.cleaner.GlobalConfig
import
com.dumpster.cleaner.SpConstObject
import
com.dumpster.cleaner.bean.config.ConfigBean
import
com.dumpster.cleaner.bean.config.ConfigBean
import
com.dumpster.cleaner.
utils.AppPreferences
import
com.dumpster.cleaner.
business.helper.InstallHelps.installEvent
import
com.dumpster.cleaner.utils.LogEx
import
com.dumpster.cleaner.utils.LogEx
import
okhttp3.Call
import
okhttp3.Call
import
okhttp3.Callback
import
okhttp3.Callback
...
@@ -49,8 +50,8 @@ object EventUtils {
...
@@ -49,8 +50,8 @@ object EventUtils {
jsonObject
.
put
(
"${packageName}_4"
,
Build
.
MANUFACTURER
)
// 手机厂商
jsonObject
.
put
(
"${packageName}_4"
,
Build
.
MANUFACTURER
)
// 手机厂商
jsonObject
.
put
(
"${packageName}_5"
,
Build
.
VERSION
.
SDK_INT
)
// android系统版本号
jsonObject
.
put
(
"${packageName}_5"
,
Build
.
VERSION
.
SDK_INT
)
// android系统版本号
jsonObject
.
put
(
"${packageName}_8"
,
BuildConfig
.
VERSION_NAME
)
// APP版本号,如:1.1.2
jsonObject
.
put
(
"${packageName}_8"
,
BuildConfig
.
VERSION_NAME
)
// APP版本号,如:1.1.2
jsonObject
.
put
(
"${packageName}_9"
,
AppPreferences
.
getInstance
().
getString
(
"uuid"
,
""
)
)
// Android id
jsonObject
.
put
(
"${packageName}_9"
,
SpConstObject
.
appUuid
)
// Android id
jsonObject
.
put
(
"${packageName}_10"
,
AppPreferences
.
getInstance
().
getString
(
"gid"
,
""
)
)
// Google advertiser id
jsonObject
.
put
(
"${packageName}_10"
,
SpConstObject
.
gid
)
// Google advertiser id
jsonObject
.
put
(
"${packageName}_13"
,
"android"
)
// platform 默认android
jsonObject
.
put
(
"${packageName}_13"
,
"android"
)
// platform 默认android
jsonObject
.
put
(
"${packageName}_14"
,
BuildConfig
.
VERSION_CODE
)
// android版本,如:13
jsonObject
.
put
(
"${packageName}_14"
,
BuildConfig
.
VERSION_CODE
)
// android版本,如:13
jsonObject
.
put
(
"${packageName}_15"
,
"google"
)
// 渠道标识
jsonObject
.
put
(
"${packageName}_15"
,
"google"
)
// 渠道标识
...
@@ -96,6 +97,9 @@ object EventUtils {
...
@@ -96,6 +97,9 @@ object EventUtils {
override
fun
onResponse
(
call
:
Call
,
response
:
Response
)
{
override
fun
onResponse
(
call
:
Call
,
response
:
Response
)
{
if
(
response
.
code
==
200
&&
response
.
isSuccessful
)
{
if
(
response
.
code
==
200
&&
response
.
isSuccessful
)
{
LogEx
.
logDebug
(
TAG
,
"onResponse 200"
)
LogEx
.
logDebug
(
TAG
,
"onResponse 200"
)
if
(
key
==
"install_referrer"
)
{
installEvent
=
true
}
}
}
}
}
})
})
...
...
app/src/main/java/com/dumpster/cleaner/business/helper/InstallHelper.kt
View file @
eaee9777
...
@@ -2,10 +2,10 @@ package com.dumpster.cleaner.business.helper
...
@@ -2,10 +2,10 @@ package com.dumpster.cleaner.business.helper
import
com.android.installreferrer.api.InstallReferrerClient
import
com.android.installreferrer.api.InstallReferrerClient
import
com.android.installreferrer.api.InstallReferrerStateListener
import
com.android.installreferrer.api.InstallReferrerStateListener
import
com.android.installreferrer.api.ReferrerDetails
import
com.dumpster.cleaner.BuildConfig
import
com.dumpster.cleaner.BuildConfig
import
com.dumpster.cleaner.MyApplication
import
com.dumpster.cleaner.MyApplication
import
com.dumpster.cleaner.utils.AppPreferences
import
com.dumpster.cleaner.utils.AppPreferences
import
com.dumpster.cleaner.utils.LogEx
import
org.json.JSONObject
import
org.json.JSONObject
/**
/**
...
@@ -15,10 +15,48 @@ object InstallHelps {
...
@@ -15,10 +15,48 @@ object InstallHelps {
private
val
TAG
=
"InstallHelps"
private
val
TAG
=
"InstallHelps"
var
installReferrer
=
""
get
()
{
return
AppPreferences
.
getInstance
().
getString
(
"install_referrer"
,
field
)
}
set
(
value
)
{
field
=
value
AppPreferences
.
getInstance
().
put
(
"install_referrer"
,
value
,
true
)
}
//用户来源
var
installSource
=
""
get
()
{
return
AppPreferences
.
getInstance
().
getString
(
"install_source"
,
field
)
}
set
(
value
)
{
field
=
value
AppPreferences
.
getInstance
().
put
(
"install_source"
,
value
,
true
)
}
//用户是否上报过
var
installEvent
=
false
get
()
{
return
AppPreferences
.
getInstance
().
getBoolean
(
"installEvent"
,
field
)
}
set
(
value
)
{
field
=
value
AppPreferences
.
getInstance
().
put
(
"installEvent"
,
value
,
true
)
}
fun
eventInstallReferrer
(
response
:
ReferrerDetails
)
{
val
obj
=
JSONObject
()
obj
.
put
(
"referrerUrl"
,
response
.
installReferrer
)
obj
.
put
(
"referrerClickTime"
,
response
.
referrerClickTimestampSeconds
)
obj
.
put
(
"appInstallTime"
,
response
.
installBeginTimestampSeconds
)
obj
.
put
(
"instantExperienceLaunched"
,
response
.
installReferrer
.
toString
())
EventUtils
.
event
(
"install_referrer"
,
ext
=
obj
)
}
fun
init
(
requestCfg
:
()
->
Unit
)
{
fun
init
(
requestCfg
:
()
->
Unit
)
{
val
installReferrer
=
AppPreferences
.
getInstance
().
getString
(
"install_referrer"
,
""
)
if
(
installEvent
)
{
if
(
installReferrer
.
isNotEmpty
())
{
requestCfg
.
invoke
()
requestCfg
.
invoke
()
return
return
}
}
...
@@ -31,31 +69,26 @@ object InstallHelps {
...
@@ -31,31 +69,26 @@ object InstallHelps {
when
(
responseCode
)
{
when
(
responseCode
)
{
InstallReferrerClient
.
InstallReferrerResponse
.
OK
->
{
InstallReferrerClient
.
InstallReferrerResponse
.
OK
->
{
val
response
=
referrerClient
.
installReferrer
val
response
=
referrerClient
.
installReferrer
val
installInfo
=
response
.
installReferrer
val
obj
=
JSONObject
()
installReferrer
=
response
.
installReferrer
obj
.
put
(
"referrerUrl"
,
response
.
installReferrer
)
eventInstallReferrer
(
response
)
obj
.
put
(
"referrerClickTime"
,
response
.
referrerClickTimestampSeconds
)
obj
.
put
(
"appInstallTime"
,
response
.
installBeginTimestampSeconds
)
installSource
=
if
(
listOf
(
obj
.
put
(
"instantExperienceLaunched"
,
installInfo
.
toString
())
EventUtils
.
event
(
"install_referrer"
,
ext
=
obj
)
LogEx
.
logDebug
(
TAG
,
"referrerUrl=${response.installReferrer}"
)
AppPreferences
.
getInstance
().
put
(
"install_referrer"
,
response
.
installReferrer
)
if
(
listOf
(
"gclid"
,
"gclid"
,
"facebook"
,
"facebook"
,
"instagram"
"instagram"
).
all
{
!
installInfo
.
contains
(
it
,
true
)
}
).
all
{
!
response
.
installReferrer
.
contains
(
it
,
true
)
}
)
{
)
{
//自然用户
//自然用户
if
(
BuildConfig
.
DEBUG
)
{
if
(
BuildConfig
.
DEBUG
)
{
AppPreferences
.
getInstance
().
put
(
"install_source"
,
"channel"
)
"channel"
}
else
{
}
else
{
AppPreferences
.
getInstance
().
put
(
"install_source"
,
"origin"
)
"origin"
}
}
}
else
{
}
else
{
//渠道用户
"channel"
AppPreferences
.
getInstance
().
put
(
"install_source"
,
"channel"
)
}
}
requestCfg
()
requestCfg
()
}
}
...
...
app/src/main/java/com/dumpster/cleaner/business/push/notification/MyNotificationManager.kt
View file @
eaee9777
...
@@ -11,6 +11,7 @@ import com.dumpster.cleaner.bean.FeatureBean.Companion.SCREENSHOT_CLEAN
...
@@ -11,6 +11,7 @@ import com.dumpster.cleaner.bean.FeatureBean.Companion.SCREENSHOT_CLEAN
import
com.dumpster.cleaner.bean.FeatureBean.Companion.SIMILAR_PHOTOS
import
com.dumpster.cleaner.bean.FeatureBean.Companion.SIMILAR_PHOTOS
import
com.dumpster.cleaner.bean.push.NotificationSendBean
import
com.dumpster.cleaner.bean.push.NotificationSendBean
import
com.dumpster.cleaner.bean.push.NotificationSendBean.Companion.POPUP_WHERE_WORK_MANAGER
import
com.dumpster.cleaner.bean.push.NotificationSendBean.Companion.POPUP_WHERE_WORK_MANAGER
import
com.dumpster.cleaner.bean.push.NotificationSendBean.Companion.POPUP_WHERE_PACKAGE
import
com.dumpster.cleaner.bean.config.PopupConfigBean.Companion.popupConfigBean
import
com.dumpster.cleaner.bean.config.PopupConfigBean.Companion.popupConfigBean
import
com.dumpster.cleaner.bean.push.NotificationSendBean.Companion.POPUP_WHERE_ALARM
import
com.dumpster.cleaner.bean.push.NotificationSendBean.Companion.POPUP_WHERE_ALARM
import
com.dumpster.cleaner.bean.push.NotificationSendBean.Companion.POPUP_WHERE_LOCK
import
com.dumpster.cleaner.bean.push.NotificationSendBean.Companion.POPUP_WHERE_LOCK
...
@@ -193,10 +194,11 @@ object MyNotificationManager {
...
@@ -193,10 +194,11 @@ 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,
POPUP_WHERE_PACKAGE
,
)
)
private
val
looper_actionId
=
listOf
(
private
val
looper_actionId
=
listOf
(
// ACTION_ID_TEST,
// ACTION_ID_TEST,
...
...
app/src/main/java/com/dumpster/cleaner/business/push/notification/NotificationUiUtil.kt
View file @
eaee9777
...
@@ -47,7 +47,8 @@ object NotificationUiUtil {
...
@@ -47,7 +47,8 @@ object NotificationUiUtil {
intent
.
putExtra
(
"notificationId"
,
sendBean
.
notificationId
)
intent
.
putExtra
(
"notificationId"
,
sendBean
.
notificationId
)
sendBean
.
intent
=
intent
sendBean
.
intent
=
intent
val
testNotificationId
=
if
(
BuildConfig
.
DEBUG
)
"${sendBean.notificationId}_${sendBean.actionId}_"
else
""
// val testNotificationId = if (BuildConfig.DEBUG) "${sendBean.notificationId}_${sendBean.actionId}_" else ""
val
testNotificationId
=
""
var
debugAction
:
(
remoteViews
:
RemoteViews
)
->
Unit
=
{
remoteViews
->
var
debugAction
:
(
remoteViews
:
RemoteViews
)
->
Unit
=
{
remoteViews
->
if
(
BuildConfig
.
DEBUG
)
{
if
(
BuildConfig
.
DEBUG
)
{
remoteViews
.
setTextViewText
(
R
.
id
.
tv_btn
,
sendBean
.
where
)
remoteViews
.
setTextViewText
(
R
.
id
.
tv_btn
,
sendBean
.
where
)
...
@@ -59,6 +60,7 @@ object NotificationUiUtil {
...
@@ -59,6 +60,7 @@ object NotificationUiUtil {
val
text
=
testNotificationId
+
"Clean up the junk files on your phone now!"
val
text
=
testNotificationId
+
"Clean up the junk files on your phone now!"
sendBean
.
smallRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_small
).
apply
{
sendBean
.
smallRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_small
).
apply
{
setTextViewText
(
R
.
id
.
tv1
,
text
)
setTextViewText
(
R
.
id
.
tv1
,
text
)
setImageViewResource
(
R
.
id
.
ivIcon
,
R
.
drawable
.
icon_clean_push
)
debugAction
.
invoke
(
this
)
debugAction
.
invoke
(
this
)
}
}
sendBean
.
bigRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_large
).
apply
{
sendBean
.
bigRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_large
).
apply
{
...
@@ -72,6 +74,7 @@ object NotificationUiUtil {
...
@@ -72,6 +74,7 @@ object NotificationUiUtil {
val
text
=
testNotificationId
+
"Check your phone battery consumption recently!"
val
text
=
testNotificationId
+
"Check your phone battery consumption recently!"
sendBean
.
smallRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_small
).
apply
{
sendBean
.
smallRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_small
).
apply
{
setTextViewText
(
R
.
id
.
tv1
,
text
)
setTextViewText
(
R
.
id
.
tv1
,
text
)
setImageViewResource
(
R
.
id
.
ivIcon
,
R
.
drawable
.
icon_battery_info_push
)
debugAction
.
invoke
(
this
)
debugAction
.
invoke
(
this
)
}
}
sendBean
.
bigRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_large
).
apply
{
sendBean
.
bigRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_large
).
apply
{
...
@@ -85,6 +88,7 @@ object NotificationUiUtil {
...
@@ -85,6 +88,7 @@ object NotificationUiUtil {
val
text
=
testNotificationId
+
"Clear out large files to free up your storage space!"
val
text
=
testNotificationId
+
"Clear out large files to free up your storage space!"
sendBean
.
smallRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_small
).
apply
{
sendBean
.
smallRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_small
).
apply
{
setTextViewText
(
R
.
id
.
tv1
,
text
)
setTextViewText
(
R
.
id
.
tv1
,
text
)
setImageViewResource
(
R
.
id
.
ivIcon
,
R
.
drawable
.
icon_large_file_cleaner_push
)
debugAction
.
invoke
(
this
)
debugAction
.
invoke
(
this
)
}
}
sendBean
.
bigRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_large
).
apply
{
sendBean
.
bigRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_large
).
apply
{
...
@@ -98,6 +102,7 @@ object NotificationUiUtil {
...
@@ -98,6 +102,7 @@ object NotificationUiUtil {
val
text
=
testNotificationId
+
"Clean Up Similar Photos – Save Space!"
val
text
=
testNotificationId
+
"Clean Up Similar Photos – Save Space!"
sendBean
.
smallRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_small
).
apply
{
sendBean
.
smallRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_small
).
apply
{
setTextViewText
(
R
.
id
.
tv1
,
text
)
setTextViewText
(
R
.
id
.
tv1
,
text
)
setImageViewResource
(
R
.
id
.
ivIcon
,
R
.
drawable
.
icon_similar_pictures_push
)
debugAction
.
invoke
(
this
)
debugAction
.
invoke
(
this
)
}
}
sendBean
.
bigRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_large
).
apply
{
sendBean
.
bigRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_large
).
apply
{
...
@@ -111,6 +116,7 @@ object NotificationUiUtil {
...
@@ -111,6 +116,7 @@ object NotificationUiUtil {
val
text
=
testNotificationId
+
"Free up space by clearing screenshot clutter!"
val
text
=
testNotificationId
+
"Free up space by clearing screenshot clutter!"
sendBean
.
smallRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_small
).
apply
{
sendBean
.
smallRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_small
).
apply
{
setTextViewText
(
R
.
id
.
tv1
,
text
)
setTextViewText
(
R
.
id
.
tv1
,
text
)
setImageViewResource
(
R
.
id
.
ivIcon
,
R
.
drawable
.
icon_screenshot_clean_push
)
debugAction
.
invoke
(
this
)
debugAction
.
invoke
(
this
)
}
}
sendBean
.
bigRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_large
).
apply
{
sendBean
.
bigRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_large
).
apply
{
...
@@ -124,6 +130,7 @@ object NotificationUiUtil {
...
@@ -124,6 +130,7 @@ object NotificationUiUtil {
val
text
=
testNotificationId
+
"Free up your phone storage space by compressing photos."
val
text
=
testNotificationId
+
"Free up your phone storage space by compressing photos."
sendBean
.
smallRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_small
).
apply
{
sendBean
.
smallRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_small
).
apply
{
setTextViewText
(
R
.
id
.
tv1
,
text
)
setTextViewText
(
R
.
id
.
tv1
,
text
)
setImageViewResource
(
R
.
id
.
ivIcon
,
R
.
drawable
.
icon_compression_push
)
debugAction
.
invoke
(
this
)
debugAction
.
invoke
(
this
)
}
}
sendBean
.
bigRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_large
).
apply
{
sendBean
.
bigRemoteViews
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
notification_common_large
).
apply
{
...
...
app/src/main/java/com/dumpster/cleaner/business/push/receiver/PackageReceiver.kt
0 → 100644
View file @
eaee9777
package
com.dumpster.cleaner.business.push.receiver
import
android.app.NotificationManager
import
android.content.BroadcastReceiver
import
android.content.Context
import
android.content.Intent
import
android.content.IntentFilter
import
android.os.Build
import
com.dumpster.cleaner.bean.push.NotificationSendBean
import
com.dumpster.cleaner.bean.push.NotificationSendBean.Companion.POPUP_WHERE_PACKAGE
import
com.dumpster.cleaner.business.push.notification.MyNotificationManager
class
PackageReceiver
:
BroadcastReceiver
()
{
companion
object
{
fun
register
(
context
:
Context
)
{
val
intentFilter
=
IntentFilter
().
apply
{
addAction
(
Intent
.
ACTION_PACKAGE_REMOVED
)
addAction
(
Intent
.
ACTION_PACKAGE_ADDED
)
addDataScheme
(
"package"
)
}
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
TIRAMISU
)
{
context
.
registerReceiver
(
PackageReceiver
(),
intentFilter
,
Context
.
RECEIVER_EXPORTED
)
}
else
{
context
.
registerReceiver
(
PackageReceiver
(),
intentFilter
)
}
}
}
override
fun
onReceive
(
context
:
Context
,
intent
:
Intent
?)
{
MyNotificationManager
.
submitSendBean
(
NotificationSendBean
(
context
,
POPUP_WHERE_PACKAGE
))
}
}
\ No newline at end of file
app/src/main/java/com/dumpster/cleaner/ui/guide/CleanGuideActivity.kt
View file @
eaee9777
...
@@ -9,11 +9,13 @@ import com.dumpster.cleaner.R
...
@@ -9,11 +9,13 @@ import com.dumpster.cleaner.R
import
com.dumpster.cleaner.base.BaseActivity
import
com.dumpster.cleaner.base.BaseActivity
import
com.dumpster.cleaner.base.jumpAction
import
com.dumpster.cleaner.base.jumpAction
import
com.dumpster.cleaner.bean.FeatureBean.Companion.JUNK_CLEAN
import
com.dumpster.cleaner.bean.FeatureBean.Companion.JUNK_CLEAN
import
com.dumpster.cleaner.business.ads.AdEvent
import
com.dumpster.cleaner.business.ads.AdsMgr
import
com.dumpster.cleaner.business.ads.AdsMgr
import
com.dumpster.cleaner.business.ads.AdsShowCallBack
import
com.dumpster.cleaner.business.ads.AdsShowCallBack
import
com.dumpster.cleaner.business.ads.LimitUtils
import
com.dumpster.cleaner.business.ads.admob.AdmobEvent
import
com.dumpster.cleaner.databinding.ActivityLayoutCleanGuideBinding
import
com.dumpster.cleaner.databinding.ActivityLayoutCleanGuideBinding
import
com.dumpster.cleaner.ui.dialog.StoragePermissionDialog
import
com.dumpster.cleaner.ui.dialog.StoragePermissionDialog
import
com.dumpster.cleaner.ui.dialog.permissionStorageJump
import
com.dumpster.cleaner.ui.main.MainActivity
import
com.dumpster.cleaner.ui.main.MainActivity
import
com.dumpster.cleaner.utils.BarUtils
import
com.dumpster.cleaner.utils.BarUtils
import
com.dumpster.cleaner.utils.PermissionUtils.checkStorePermission
import
com.dumpster.cleaner.utils.PermissionUtils.checkStorePermission
...
@@ -60,6 +62,8 @@ class CleanGuideActivity : BaseActivity<ActivityLayoutCleanGuideBinding>(Activit
...
@@ -60,6 +62,8 @@ class CleanGuideActivity : BaseActivity<ActivityLayoutCleanGuideBinding>(Activit
requestStoragePermission
(
launcher
)
{
requestStoragePermission
(
launcher
)
{
if
(
it
)
{
if
(
it
)
{
jump
.
invoke
()
jump
.
invoke
()
}
else
{
binding
.
idSkip
.
callOnClick
()
}
}
}
}
}
}
...
...
app/src/main/res/drawable-xxhdpi/sl3fku.xml
0 → 100644
View file @
eaee9777
<?xml version="1.0" encoding="utf-8"?>
<animated-vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:drawable=
"@drawable/ny"
>
<target
android:name=
"button"
android:animation=
"@drawable/pvxq"
/>
<target
android:name=
"circle"
android:animation=
"@drawable/okaq"
/>
</animated-vector>
\ No newline at end of file
app/src/main/res/drawable/b2x.xml
0 → 100644
View file @
eaee9777
<?xml version="1.0" encoding="utf-8"?>
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:height=
"40dp"
android:width=
"327dp"
android:viewportWidth=
"327"
android:viewportHeight=
"44"
>
<group
android:name=
"button"
android:pivotX=
"163.5"
android:pivotY=
"20"
>
<path
android:fillColor=
"@color/colorPrimary"
android:pathData=
"M24,0L303,0A24,22 0,0 1,327 22L327,22A24,22 0,0 1,303 44L24,44A24,22 0,0 1,0 22L0,22A24,22 0,0 1,24 0z"
/>
<!-- <path-->
<!-- android:fillColor="#ffffff"-->
<!-- android:pathData="M305,22m-18,0a18,18 0,1 1,36 0a18,18 0,1 1,-36 0"/>-->
<!-- <path-->
<!-- android:fillColor="#00000000"-->
<!-- android:pathData="M302.5,16L308.5,22L302.5,28"-->
<!-- android:strokeColor="@color/colorPrimary"-->
<!-- android:strokeWidth="2"-->
<!-- android:strokeLineCap="round"-->
<!-- android:strokeLineJoin="round"/>-->
<group
android:name=
"foreground_button"
>
<clip-path
android:pathData=
"M24,0L303,0A24,22 0,0 1,327 22L327,22A24,22 0,0 1,303 44L24,44A24,22 0,0 1,0 22L0,22A24,22 0,0 1,24 0z"
/>
<group
android:name=
"circle"
android:pivotX=
"163.5"
android:pivotY=
"22"
>
<path
android:fillColor=
"#33ffffff"
android:pathData=
" M0,0 A164.973483,164.973483 0 1,1 327,44 A164.973483,164.973483 0 1,1 0,0 Z"
/>
</group>
</group>
</group>
</vector>
app/src/main/res/drawable/gvv81.xml
0 → 100644
View file @
eaee9777
<?xml version="1.0" encoding="utf-8"?>
<animated-vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:drawable=
"@drawable/b2x"
>
<target
android:name=
"button"
android:animation=
"@drawable/tjkg"
/>
<target
android:name=
"circle"
android:animation=
"@drawable/r3yb"
/>
</animated-vector>
app/src/main/res/drawable/ny.xml
0 → 100644
View file @
eaee9777
<?xml version="1.0" encoding="utf-8"?>
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:height=
"36dp"
android:width=
"80dp"
android:viewportWidth=
"80"
android:viewportHeight=
"36"
>
<group
android:name=
"button"
android:pivotX=
"40"
android:pivotY=
"18"
>
<path
android:fillColor=
"@color/colorPrimary"
android:pathData=
"M10,0L70,0A10,10 0,0 1,80 10L80,26A10,10 0,0 1,70 36L10,36A10,10 0,0 1,0 26L0,10A10,10 0,0 1,10 0z"
/>
<group
android:name=
"foreground_button"
>
<clip-path
android:pathData=
"M10,0L70,0A10,10 0,0 1,80 10L80,26A10,10 0,0 1,70 36L10,36A10,10 0,0 1,0 26L0,10A10,10 0,0 1,10 0z"
/>
<group
android:name=
"circle"
android:pivotX=
"40"
android:pivotY=
"18"
>
<path
android:fillColor=
"#33ffffff"
android:pathData=
" M0,0 A43.863425,43.863425 0 1,1 80,36 A43.863425,43.863425 0 1,1 0,0 Z"
/>
</group>
</group>
</group>
</vector>
app/src/main/res/drawable/okaq.xml
0 → 100644
View file @
eaee9777
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:ordering=
"together"
>
<objectAnimator
android:duration=
"1000"
android:startOffset=
"0"
android:repeatCount=
"infinite"
android:repeatMode=
"restart"
android:valueFrom=
"0"
android:valueTo=
"1"
android:valueType=
"floatType"
android:propertyName=
"scaleX"
/>
<objectAnimator
android:duration=
"1000"
android:startOffset=
"0"
android:repeatCount=
"infinite"
android:repeatMode=
"restart"
android:valueFrom=
"0"
android:valueTo=
"1"
android:valueType=
"floatType"
android:propertyName=
"scaleY"
/>
</set>
app/src/main/res/drawable/pvxq.xml
0 → 100644
View file @
eaee9777
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:ordering=
"together"
>
<objectAnimator
android:duration=
"500"
android:startOffset=
"0"
android:repeatCount=
"infinite"
android:repeatMode=
"reverse"
android:valueFrom=
"0.92"
android:valueTo=
"1"
android:valueType=
"floatType"
android:propertyName=
"scaleX"
/>
<objectAnimator
android:duration=
"500"
android:startOffset=
"0"
android:repeatCount=
"infinite"
android:repeatMode=
"reverse"
android:valueFrom=
"0.92"
android:valueTo=
"1"
android:valueType=
"floatType"
android:propertyName=
"scaleY"
/>
</set>
\ No newline at end of file
app/src/main/res/drawable/r3yb.xml
0 → 100644
View file @
eaee9777
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:ordering=
"together"
>
<objectAnimator
android:duration=
"1000"
android:startOffset=
"0"
android:repeatCount=
"infinite"
android:repeatMode=
"restart"
android:valueFrom=
"0"
android:valueTo=
"1"
android:valueType=
"floatType"
android:propertyName=
"scaleX"
/>
<objectAnimator
android:duration=
"1000"
android:startOffset=
"0"
android:repeatCount=
"infinite"
android:repeatMode=
"restart"
android:valueFrom=
"0"
android:valueTo=
"1"
android:valueType=
"floatType"
android:propertyName=
"scaleY"
/>
</set>
app/src/main/res/drawable/tjkg.xml
0 → 100644
View file @
eaee9777
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:ordering=
"together"
>
<objectAnimator
android:duration=
"500"
android:startOffset=
"0"
android:repeatCount=
"infinite"
android:repeatMode=
"reverse"
android:valueFrom=
"0.98"
android:valueTo=
"1"
android:valueType=
"floatType"
android:propertyName=
"scaleX"
/>
<objectAnimator
android:duration=
"500"
android:startOffset=
"0"
android:repeatCount=
"infinite"
android:repeatMode=
"reverse"
android:valueFrom=
"0.98"
android:valueTo=
"1"
android:valueType=
"floatType"
android:propertyName=
"scaleY"
/>
</set>
app/src/main/res/layout/notification_common_large.xml
View file @
eaee9777
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<
Relative
Layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<
Linear
Layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
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=
"200dp"
android:layout_height=
"wrap_content"
android:background=
"@drawable/white_background"
>
android:background=
"@drawable/bg_ffffff_8"
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
>
android:orientation=
"vertical"
>
<LinearLayout
<LinearLayout
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"16dp"
android:layout_marginTop=
"8dp"
android:layout_marginTop=
"24dp"
android:layout_marginEnd=
"16dp"
android:layout_weight=
"1"
android:gravity=
"center_vertical"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
tools:ignore=
"UseCompoundDrawables"
>
<ImageView
android:layout_width=
"26dp"
android:layout_height=
"26dp"
android:layout_marginStart=
"12dp"
android:layout_marginEnd=
"8dp"
android:src=
"@mipmap/logo"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@string/app_name"
android:textColor=
"#000000"
android:textSize=
"12sp"
/>
</LinearLayout>
<ImageView
<ImageView
android:id=
"@+id/ivIcon"
android:id=
"@+id/ivIcon"
android:layout_width=
"@dimen/dp_40"
android:layout_width=
"@dimen/dp_40"
android:layout_height=
"@dimen/dp_40"
android:layout_height=
"@dimen/dp_40"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"@dimen/dp_6"
android:src=
"@mipmap/logo"
android:src=
"@mipmap/logo"
tools:ignore=
"ContentDescription"
/>
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
<TextView
android:id=
"@+id/tv1"
android:id=
"@+id/tv1"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_10"
android:ellipsize=
"end"
android:ellipsize=
"end"
android:gravity=
"center_horizontal"
android:maxLines=
"2"
android:maxLines=
"2"
android:text=
"notification_junk_clean"
android:text=
"notification_junk_clean"
android:textColor=
"@color/color_181b1f"
android:textColor=
"@color/color_181b1f"
...
@@ -46,48 +53,33 @@
...
@@ -46,48 +53,33 @@
android:textStyle=
"bold"
android:textStyle=
"bold"
tools:ignore=
"HardcodedText"
/>
tools:ignore=
"HardcodedText"
/>
<TextView
<FrameLayout
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_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_height=
"0dp"
android:layout_marginTop=
"20dp"
android:layout_marginBottom=
"@dimen/dp_8"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:gravity=
"center"
>
android:gravity=
"center"
>
<ProgressBar
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:indeterminate=
"true"
android:indeterminateDrawable=
"@drawable/gvv81"
/>
<TextView
<TextView
android:id=
"@+id/tv_btn"
android:id=
"@+id/tv_btn"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_marginStart=
"16dp"
android:layout_marginStart=
"16dp"
android:layout_marginEnd=
"16dp"
android:layout_marginEnd=
"16dp"
android:background=
"@drawable/bg_btn_50"
android:gravity=
"center"
android:gravity=
"center"
android:paddingVertical=
"8dp"
android:paddingVertical=
"8dp"
android:text=
"@string/clean_now"
android:text=
"@string/clean_now"
android:textColor=
"@color/white"
android:textColor=
"@color/white"
android:textSize=
"18sp"
android:textSize=
"18sp"
android:textStyle=
"bold"
/>
android:textStyle=
"bold"
/>
</RelativeLayout>
</FrameLayout>
</LinearLayout>
<TextView
</LinearLayout>
android:id=
"@+id/tv_mark"
\ No newline at end of file
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
View file @
eaee9777
...
@@ -18,9 +18,19 @@
...
@@ -18,9 +18,19 @@
android:orientation=
"horizontal"
android:orientation=
"horizontal"
tools:ignore=
"UselessParent"
>
tools:ignore=
"UselessParent"
>
<ImageView
android:id=
"@+id/ivIcon"
android:layout_width=
"@dimen/dp_30"
android:layout_height=
"@dimen/dp_30"
android:src=
"@mipmap/logo"
tools:ignore=
"ContentDescription"
/>
<LinearLayout
<LinearLayout
android:layout_width=
"0dp"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"@dimen/dp_6"
android:layout_marginEnd=
"8dp"
android:layout_marginEnd=
"8dp"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:orientation=
"vertical"
>
android:orientation=
"vertical"
>
...
@@ -49,17 +59,28 @@
...
@@ -49,17 +59,28 @@
tools:text=
"Are you sure you want to quit without trying to clean up the garbage again?"
/>
tools:text=
"Are you sure you want to quit without trying to clean up the garbage again?"
/>
</LinearLayout>
</LinearLayout>
<FrameLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
>
<ProgressBar
android:layout_width=
"68dp"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:indeterminate=
"true"
android:indeterminateDrawable=
"@drawable/sl3fku"
/>
<TextView
<TextView
android:id=
"@+id/tv_btn"
android:id=
"@+id/tv_btn"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"@drawable/bg_btn_50"
android:layout_gravity=
"center"
android:paddingHorizontal=
"14dp"
android:paddingVertical=
"6dp"
android:text=
"@string/clean_now"
android:text=
"@string/clean_now"
android:textColor=
"@color/white"
android:textColor=
"@color/white"
android:textSize=
"12sp"
android:textSize=
"12sp"
android:textStyle=
"bold"
/>
android:textStyle=
"bold"
/>
</FrameLayout>
</LinearLayout>
</LinearLayout>
...
...
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