Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
S
scanqrwhitecopy
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
scanqrwhitecopy
Commits
50c34e87
Commit
50c34e87
authored
Jan 20, 2025
by
周文华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【新增】新增清理相关资源
parent
b4eb4a7a
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
600 additions
and
8 deletions
+600
-8
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+6
-0
ActivityJumpHelps.kt
.../main/java/com/base/scanqrclear/luma/ActivityJumpHelps.kt
+7
-5
CleanJunkActivity.kt
.../main/java/com/base/scanqrclear/luma/CleanJunkActivity.kt
+163
-0
CleanJunkAdapter.kt
...c/main/java/com/base/scanqrclear/luma/CleanJunkAdapter.kt
+126
-0
HomeFragment.kt
app/src/main/java/com/base/scanqrclear/luma/HomeFragment.kt
+1
-2
activity_clean_junk.xml
app/src/main/res/layout/activity_clean_junk.xml
+167
-0
fragment_home.xml
app/src/main/res/layout/fragment_home.xml
+2
-1
item_child_clean_junk.xml
app/src/main/res/layout/item_child_clean_junk.xml
+57
-0
item_group_clean_junk.xml
app/src/main/res/layout/item_group_clean_junk.xml
+71
-0
icon_apk_junk_nor.png
app/src/main/res/mipmap-xxxhdpi/icon_apk_junk_nor.png
+0
-0
icon_audio_junk_nor.png
app/src/main/res/mipmap-xxxhdpi/icon_audio_junk_nor.png
+0
-0
icon_down_setting.png
app/src/main/res/mipmap-xxxhdpi/icon_down_setting.png
+0
-0
icon_empty_junk_nor.png
app/src/main/res/mipmap-xxxhdpi/icon_empty_junk_nor.png
+0
-0
icon_logs_junk_nor.png
app/src/main/res/mipmap-xxxhdpi/icon_logs_junk_nor.png
+0
-0
icon_temp_junk_nor.png
app/src/main/res/mipmap-xxxhdpi/icon_temp_junk_nor.png
+0
-0
icon_up_setting.png
app/src/main/res/mipmap-xxxhdpi/icon_up_setting.png
+0
-0
icon_weixuan_junk.png
app/src/main/res/mipmap-xxxhdpi/icon_weixuan_junk.png
+0
-0
icon_yixuan_n.png
app/src/main/res/mipmap-xxxhdpi/icon_yixuan_n.png
+0
-0
icon_yixuan_s.png
app/src/main/res/mipmap-xxxhdpi/icon_yixuan_s.png
+0
-0
No files found.
app/src/main/AndroidManifest.xml
View file @
50c34e87
...
@@ -163,6 +163,12 @@
...
@@ -163,6 +163,12 @@
android:screenOrientation=
"portrait"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
android:name=
".luma.CleanJunkActivity"
android:exported=
"false"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<provider
<provider
android:name=
"androidx.core.content.FileProvider"
android:name=
"androidx.core.content.FileProvider"
android:authorities=
"${applicationId}.provider"
android:authorities=
"${applicationId}.provider"
...
...
app/src/main/java/com/base/scanqrclear/luma/ActivityJumpHelps.kt
View file @
50c34e87
...
@@ -2,6 +2,8 @@ package com.base.scanqrclear.luma
...
@@ -2,6 +2,8 @@ package com.base.scanqrclear.luma
import
android.app.Activity
import
android.app.Activity
import
android.content.Context
import
android.content.Context
import
android.content.Intent
import
com.base.scanqrclear.R
import
com.base.scanqrclear.luma.AdmobHelps.ID_CLEAN_JUNK
import
com.base.scanqrclear.luma.AdmobHelps.ID_CLEAN_JUNK
import
com.base.scanqrclear.luma.AdmobHelps.ID_LARGE_FILE_CLEANER
import
com.base.scanqrclear.luma.AdmobHelps.ID_LARGE_FILE_CLEANER
import
com.base.scanqrclear.luma.AdmobHelps.ID_PHOTO_COMPRESSION
import
com.base.scanqrclear.luma.AdmobHelps.ID_PHOTO_COMPRESSION
...
@@ -19,11 +21,11 @@ object ActivityJumpHelps {
...
@@ -19,11 +21,11 @@ object ActivityJumpHelps {
nameId
:
Int
nameId
:
Int
)
{
)
{
when
(
nameId
)
{
when
(
nameId
)
{
//
R.string.junk_scan -> requestPermission(context, launcher) { CleanJunkActivity.start(context) }
R
.
string
.
junk_scan
->
requestPermission
(
context
,
launcher
)
{
CleanJunkActivity
.
start
(
context
)
}
// R.string.battery_info -> BatteryInfoActivity.start(context)
// R.string.battery_info -> BatteryInfoActivity.start(context)
// R.string.app_process ->
com.base.scanqrclear.luma.
AppProcessActivity.start(context)
// R.string.app_process -> AppProcessActivity.start(context)
// R.string.whatsapp_clean -> requestPermission(context, launcher) { com.base.scanqrclear.luma.WhatsappCleanActivity.start(context) }
// R.string.whatsapp_clean -> requestPermission(context, launcher) { com.base.scanqrclear.luma.WhatsappCleanActivity.start(context) }
// R.string.screenshot_clean -> requestPermission(context, launcher) {
com.base.scanqrclear.luma.
ScreenshotCleanActivity.start(context) }
// R.string.screenshot_clean -> requestPermission(context, launcher) { ScreenshotCleanActivity.start(context) }
// R.string.app_manager -> AppManagerActivity.start(context)
// R.string.app_manager -> AppManagerActivity.start(context)
// R.string.large_files -> requestPermission(context, launcher) { LargeFileCleanActivity.start(context) }
// R.string.large_files -> requestPermission(context, launcher) { LargeFileCleanActivity.start(context) }
// R.string.image_compressor -> requestPermission(context, launcher) { PhotoCompressionActivity.start(context) }
// R.string.image_compressor -> requestPermission(context, launcher) { PhotoCompressionActivity.start(context) }
...
@@ -41,7 +43,7 @@ object ActivityJumpHelps {
...
@@ -41,7 +43,7 @@ object ActivityJumpHelps {
// ID_WHATSAPP -> requestPermission(context, launcher) { com.base.scanqrclear.luma.WhatsappCleanActivity.start(context) }
// ID_WHATSAPP -> requestPermission(context, launcher) { com.base.scanqrclear.luma.WhatsappCleanActivity.start(context) }
// ID_LARGE_FILE_CLEANER -> requestPermission(context, launcher) { LargeFileCleanActivity.start(context) }
// ID_LARGE_FILE_CLEANER -> requestPermission(context, launcher) { LargeFileCleanActivity.start(context) }
// ID_PHOTO_COMPRESSION -> requestPermission(context, launcher) { PhotoCompressionActivity.start(context) }
// ID_PHOTO_COMPRESSION -> requestPermission(context, launcher) { PhotoCompressionActivity.start(context) }
// ID_SCREENSHOT_CLEAN -> requestPermission(context, launcher) {
com.base.scanqrclear.luma.
ScreenshotCleanActivity.start(context) }
// ID_SCREENSHOT_CLEAN -> requestPermission(context, launcher) { ScreenshotCleanActivity.start(context) }
}
}
}
}
...
@@ -62,7 +64,7 @@ object ActivityJumpHelps {
...
@@ -62,7 +64,7 @@ object ActivityJumpHelps {
// ID_BATTERY_INFO -> BatteryInfoActivity.start(context)
// ID_BATTERY_INFO -> BatteryInfoActivity.start(context)
// ID_LARGE_FILE_CLEANER -> LargeFileCleanActivity.start(context)
// ID_LARGE_FILE_CLEANER -> LargeFileCleanActivity.start(context)
// ID_PHOTO_COMPRESSION -> PhotoCompressionActivity.start(context)
// ID_PHOTO_COMPRESSION -> PhotoCompressionActivity.start(context)
// ID_SCREENSHOT_CLEAN ->
com.base.scanqrclear.luma.
ScreenshotCleanActivity.start(context)
// ID_SCREENSHOT_CLEAN -> ScreenshotCleanActivity.start(context)
// ID_APP_INSTALL -> AppManagerActivity.start(context)
// ID_APP_INSTALL -> AppManagerActivity.start(context)
// ID_APP_UNINSTALL -> AppManagerActivity.start(context)
// ID_APP_UNINSTALL -> AppManagerActivity.start(context)
// ID_NOT_CLEANED -> CleanJunkActivity.start(context)
// ID_NOT_CLEANED -> CleanJunkActivity.start(context)
...
...
app/src/main/java/com/base/scanqrclear/luma/CleanJunkActivity.kt
0 → 100644
View file @
50c34e87
package
com.base.scanqrclear.luma
import
android.animation.ValueAnimator
import
android.content.Context
import
android.content.Intent
import
android.os.Bundle
import
android.view.View
import
android.view.animation.LinearInterpolator
import
androidx.lifecycle.lifecycleScope
import
androidx.recyclerview.widget.LinearLayoutManager
import
com.base.scanqrclear.R
import
com.base.scanqrclear.databinding.ActivityCleanJunkBinding
import
com.base.scanqrclear.luma.AdmobHelps.KEY_CLEANUP_SIZE
import
com.base.scanqrclear.luma.AdmobHelps.KEY_CLEAN_LAST_TIME
import
com.base.scanqrclear.luma.Utils.toDate
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.async
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.withContext
import
pokercc.android.expandablerecyclerview.ExpandableItemAnimator
import
java.util.Locale
import
kotlin.random.Random
class
CleanJunkActivity
:
BaseActivity2
()
{
companion
object
{
fun
start
(
context
:
Context
)
{
val
intent
=
Intent
(
context
,
CleanJunkActivity
::
class
.
java
)
context
.
startActivity
(
intent
)
}
}
private
val
binding
by
lazy
{
ActivityCleanJunkBinding
.
inflate
(
layoutInflater
)
}
private
lateinit
var
adapter
:
CleanJunkAdapter
private
var
total
:
Long
=
0
private
var
groupData
=
mutableListOf
<
FileBean
>()
private
var
childData
=
mutableListOf
<
List
<
FileBean
>>()
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
setContentView
(
binding
.
root
)
initView
()
showAdInterstitial
(
AdmobHelps
.
isShowAdInter
())
{
initData
()
}
}
private
fun
initView
()
{
adapter
=
CleanJunkAdapter
()
adapter
.
selectionData
.
observe
(
this
)
{
list
->
total
=
list
.
filter
{
it
.
isSelected
}.
sumOf
{
it
.
length
}
setClean
()
}
binding
.
expandableFiles
.
adapter
=
adapter
binding
.
expandableFiles
.
layoutManager
=
LinearLayoutManager
(
this
)
binding
.
expandableFiles
.
itemAnimator
=
ExpandableItemAnimator
(
binding
.
expandableFiles
)
binding
.
flBack
.
setOnClickListener
{
backPressed
()
}
binding
.
tvClean
.
setOnClickListener
{
if
(
isDisableBack
)
return
@setOnClickListener
showAnimationAd
(
LottieType
.
CLEAN
,
total
>
0
)
{
if
(
total
>
0
)
SpUtils
.
getInstance
().
putInt
(
"${KEY_CLEANUP_SIZE}_${toDate()}"
,
1
)
SpUtils
.
getInstance
().
putLong
(
KEY_CLEAN_LAST_TIME
,
System
.
currentTimeMillis
())
toCleanResult
(
total
,
getString
(
R
.
string
.
junk_scan
))
}
cleanFiles
(
adapter
.
child
.
flatten
())
}
}
private
fun
initData
()
{
binding
.
tvPath
.
text
=
""
binding
.
tvClean
.
visibility
=
View
.
GONE
isDisableBack
=
true
lifecycleScope
.
launch
(
Dispatchers
.
IO
)
{
val
emptyFoldersDeferred
=
async
{
FileHelps
.
findEmptyFolders
()
}
val
filesDeferred
=
async
{
MediaHelps
.
findSpecifiedFiles
(
this
@CleanJunkActivity
)
}
val
emptyFolder
=
emptyFoldersDeferred
.
await
()
val
files
=
filesDeferred
.
await
()
emptyFolder
.
forEach
{
it
.
isSelected
=
true
}
files
.
forEach
{
it
.
isSelected
=
true
}
val
apkFiles
=
files
.
filter
{
it
.
name
.
lowercase
(
Locale
.
ROOT
).
endsWith
(
".apk"
)
||
it
.
name
.
lowercase
(
Locale
.
ROOT
).
endsWith
(
".aab"
)
}
val
tempFiles
=
files
.
filter
{
it
.
name
.
lowercase
(
Locale
.
ROOT
).
endsWith
(
".temp"
)
}
val
logsFiles
=
files
.
filter
{
it
.
name
.
lowercase
(
Locale
.
ROOT
).
endsWith
(
".log"
)
}
groupData
=
getGroupData
()
groupData
[
0
].
length
=
emptyFolder
.
sumOf
{
it
.
length
}
groupData
[
1
].
length
=
apkFiles
.
sumOf
{
it
.
length
}
groupData
[
2
].
length
=
tempFiles
.
sumOf
{
it
.
length
}
groupData
[
3
].
length
=
logsFiles
.
sumOf
{
it
.
length
}
total
=
groupData
.
sumOf
{
it
.
length
}
childData
=
mutableListOf
<
List
<
FileBean
>>().
apply
{
add
(
emptyFolder
)
add
(
apkFiles
)
add
(
tempFiles
)
add
(
logsFiles
)
}
showScan
()
}
}
private
fun
showScan
()
{
lifecycleScope
.
launch
(
Dispatchers
.
IO
)
{
val
list
=
childData
.
flatten
().
sortedByDescending
{
it
.
length
}
val
totalSize
=
list
.
sumOf
{
it
.
length
}
val
random
=
Random
.
nextLong
(
2500
,
3000
)
withContext
(
Dispatchers
.
Main
)
{
AnimationHelps
.
progress
(
binding
.
pbProgress
,
0
,
100
,
random
)
ValueAnimator
.
ofFloat
(
0f
,
totalSize
.
toFloat
()).
apply
{
duration
=
random
interpolator
=
LinearInterpolator
()
addUpdateListener
{
animation
->
val
value
=
animation
.
animatedValue
as
Float
setSize
(
value
.
toLong
())
}
}.
start
()
}
for
(
index
in
list
.
indices
)
{
if
(
binding
.
pbProgress
.
progress
==
100
)
break
withContext
(
Dispatchers
.
Main
)
{
if
(
list
.
size
>
index
)
{
binding
.
tvPath
.
text
=
list
[
index
].
path
}
}
}
delay
(
random
)
withContext
(
Dispatchers
.
Main
)
{
scanComplete
()
adapter
.
setData
(
groupData
,
childData
)
}
}
}
private
fun
setSize
(
size
:
Long
)
{
val
values
=
Utils
.
getSizeArray
(
size
)
binding
.
tvLength
.
text
=
values
[
0
]
binding
.
tvUnit
.
text
=
values
[
1
]
}
private
fun
scanComplete
()
{
isDisableBack
=
false
binding
.
expandableFiles
.
visibility
=
View
.
VISIBLE
binding
.
tvClean
.
visibility
=
View
.
VISIBLE
binding
.
tvPath
.
text
=
getString
(
R
.
string
.
clean_tips
)
setClean
()
}
private
fun
setClean
()
{
binding
.
tvClean
.
text
=
if
(
total
>
0
)
"${getString(R.string.clean)} (${Utils.getSize(total)})"
else
getString
(
R
.
string
.
go_it
)
binding
.
tvClean
.
setBackgroundResource
(
if
(
total
>
0
)
R
.
drawable
.
gradient
else
R
.
drawable
.
gradient_unselected
)
}
private
fun
getGroupData
():
MutableList
<
FileBean
>
{
return
mutableListOf
<
FileBean
>().
apply
{
add
(
FileBean
(
getString
(
R
.
string
.
empty_folder
),
icon
=
R
.
mipmap
.
icon_empty_junk_nor
,
isSelected
=
true
))
add
(
FileBean
(
getString
(
R
.
string
.
apk_files
),
icon
=
R
.
mipmap
.
icon_apk_junk_nor
,
isSelected
=
true
))
add
(
FileBean
(
getString
(
R
.
string
.
temp_files
),
icon
=
R
.
mipmap
.
icon_temp_junk_nor
,
isSelected
=
true
))
add
(
FileBean
(
getString
(
R
.
string
.
logs_files
),
icon
=
R
.
mipmap
.
icon_logs_junk_nor
,
isSelected
=
true
))
}
}
}
\ No newline at end of file
app/src/main/java/com/base/scanqrclear/luma/CleanJunkAdapter.kt
0 → 100644
View file @
50c34e87
package
com.base.scanqrclear.luma
import
android.animation.ObjectAnimator
import
android.view.LayoutInflater
import
android.view.ViewGroup
import
androidx.lifecycle.LiveData
import
androidx.lifecycle.MutableLiveData
import
com.base.scanqrclear.R
import
com.base.scanqrclear.databinding.ItemChildCleanJunkBinding
import
com.base.scanqrclear.databinding.ItemGroupCleanJunkBinding
import
pokercc.android.expandablerecyclerview.ExpandableAdapter
class
CleanJunkAdapter
(
var
group
:
List
<
FileBean
>,
var
child
:
List
<
List
<
FileBean
>>
)
:
ExpandableAdapter
<
ExpandableAdapter
.
ViewHolder
>()
{
constructor
()
:
this
(
emptyList
(),
emptyList
())
private
val
_selectionData
=
MutableLiveData
<
List
<
FileBean
>>()
val
selectionData
:
LiveData
<
List
<
FileBean
>>
=
_selectionData
private
var
isInit
=
true
fun
setData
(
group
:
List
<
FileBean
>,
child
:
List
<
List
<
FileBean
>>)
{
this
.
group
=
group
this
.
child
=
child
notifyDataSetChanged
()
}
override
fun
getChildCount
(
groupPosition
:
Int
):
Int
{
return
child
[
groupPosition
].
size
}
override
fun
getGroupCount
():
Int
{
return
group
.
size
}
override
fun
onCreateChildViewHolder
(
viewGroup
:
ViewGroup
,
viewType
:
Int
):
ViewHolder
{
val
inflater
=
LayoutInflater
.
from
(
viewGroup
.
context
)
val
view
=
ItemChildCleanJunkBinding
.
inflate
(
inflater
,
viewGroup
,
false
)
return
ChildViewHolder
(
view
)
}
override
fun
onCreateGroupViewHolder
(
viewGroup
:
ViewGroup
,
viewType
:
Int
):
ViewHolder
{
val
inflater
=
LayoutInflater
.
from
(
viewGroup
.
context
)
val
view
=
ItemGroupCleanJunkBinding
.
inflate
(
inflater
,
viewGroup
,
false
)
return
GroupViewHolder
(
view
)
}
override
fun
onGroupViewHolderExpandChange
(
holder
:
ViewHolder
,
groupPosition
:
Int
,
animDuration
:
Long
,
expand
:
Boolean
)
{
}
override
fun
onBindGroupViewHolder
(
holder
:
ViewHolder
,
groupPosition
:
Int
,
expand
:
Boolean
,
payloads
:
List
<
Any
>
)
{
holder
as
GroupViewHolder
val
data
=
group
[
groupPosition
]
holder
.
binding
.
tvName
.
text
=
data
.
name
holder
.
binding
.
tvLength
.
text
=
Utils
.
getSize
(
data
.
length
)
holder
.
binding
.
ivIcon
.
setImageResource
(
data
.
icon
)
holder
.
binding
.
ivIndicator
.
setImageResource
(
if
(
expand
)
R
.
mipmap
.
icon_up_setting
else
R
.
mipmap
.
icon_down_setting
)
holder
.
binding
.
ivSelect
.
setImageResource
(
if
(
data
.
isSelected
)
R
.
mipmap
.
icon_yixuan_s
else
R
.
mipmap
.
icon_yixuan_n
)
holder
.
binding
.
clItem
.
setBackgroundResource
(
if
(
expand
&&
child
[
groupPosition
].
isNotEmpty
())
R
.
drawable
.
white_background_top
else
R
.
drawable
.
white_background
)
holder
.
binding
.
ivSelect
.
setOnClickListener
{
data
.
isSelected
=
!
data
.
isSelected
child
[
groupPosition
].
forEach
{
it
.
isSelected
=
data
.
isSelected
}
_selectionData
.
value
=
child
.
flatten
()
notifyGroupChange
(
groupPosition
)
for
(
childPosition
in
0
until
child
[
groupPosition
].
size
)
{
notifyChildChange
(
groupPosition
,
childPosition
)
}
}
if
(
isInit
)
{
val
translationX
=
holder
.
itemView
.
context
.
resources
.
displayMetrics
.
widthPixels
.
toFloat
()
holder
.
itemView
.
translationX
=
-
translationX
ObjectAnimator
.
ofFloat
(
holder
.
itemView
,
"translationX"
,
-
translationX
,
0f
).
apply
{
duration
=
1000
startDelay
=
(
groupPosition
+
1
)
*
300L
start
()
}
}
if
(
groupPosition
==
group
.
size
-
1
)
isInit
=
false
}
override
fun
onBindChildViewHolder
(
holder
:
ViewHolder
,
groupPosition
:
Int
,
childPosition
:
Int
,
payloads
:
List
<
Any
>
)
{
holder
as
ChildViewHolder
val
data
=
child
[
groupPosition
][
childPosition
]
val
groupData
=
group
[
groupPosition
]
holder
.
binding
.
tvName
.
text
=
data
.
name
holder
.
binding
.
tvLength
.
text
=
Utils
.
getSize
(
data
.
length
)
holder
.
binding
.
ivSelect
.
setImageResource
(
if
(
data
.
isSelected
)
R
.
mipmap
.
icon_yuan_junk_s
else
R
.
mipmap
.
icon_yuan_n
)
holder
.
itemView
.
setBackgroundResource
(
if
(
childPosition
==
child
[
groupPosition
].
size
-
1
)
R
.
drawable
.
white_background_bottom
else
R
.
color
.
white
)
holder
.
itemView
.
setOnClickListener
{
data
.
isSelected
=
!
data
.
isSelected
notifyChildChange
(
groupPosition
,
childPosition
)
val
isSelected
=
child
[
groupPosition
].
stream
().
allMatch
(
FileBean
::
isSelected
)
if
(
groupData
.
isSelected
!=
isSelected
)
{
groupData
.
isSelected
=
isSelected
notifyGroupChange
(
groupPosition
)
}
_selectionData
.
value
=
child
.
flatten
()
}
}
}
private
class
ChildViewHolder
(
val
binding
:
ItemChildCleanJunkBinding
)
:
ExpandableAdapter
.
ViewHolder
(
binding
.
root
)
private
class
GroupViewHolder
(
val
binding
:
ItemGroupCleanJunkBinding
)
:
ExpandableAdapter
.
ViewHolder
(
binding
.
root
)
\ No newline at end of file
app/src/main/java/com/base/scanqrclear/luma/HomeFragment.kt
View file @
50c34e87
package
com.base.scanqrclear.luma
package
com.base.scanqrclear.luma
import
android.animation.AnimatorSet
import
android.animation.AnimatorSet
import
android.animation.ObjectAnimator
import
android.animation.ObjectAnimator
import
android.animation.ValueAnimator
import
android.animation.ValueAnimator
...
@@ -16,8 +17,6 @@ import com.base.scanqrclear.R
...
@@ -16,8 +17,6 @@ import com.base.scanqrclear.R
import
com.base.scanqrclear.databinding.FragmentHomeBinding
import
com.base.scanqrclear.databinding.FragmentHomeBinding
import
com.base.scanqrclear.luma.AdmobHelps.KEY_INSTALL_TIME
import
com.base.scanqrclear.luma.AdmobHelps.KEY_INSTALL_TIME
import
com.base.scanqrclear.luma.AppHelps.dpToPx
import
com.base.scanqrclear.luma.AppHelps.dpToPx
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.async
import
kotlinx.coroutines.async
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.launch
...
...
app/src/main/res/layout/activity_clean_junk.xml
0 → 100644
View file @
50c34e87
<?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=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/color_f7fafa"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/cl_top"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@drawable/gradient_background"
app:layout_constraintTop_toTopOf=
"parent"
>
<androidx.appcompat.widget.LinearLayoutCompat
android:id=
"@+id/ll_title"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:paddingTop=
"6dp"
android:paddingBottom=
"6dp"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
app:layout_constraintTop_toTopOf=
"parent"
>
<FrameLayout
android:id=
"@+id/fl_back"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"11dp"
android:padding=
"4dp"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
>
<androidx.appcompat.widget.AppCompatImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:src=
"@mipmap/icon_return_bar_nor"
/>
</FrameLayout>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@string/junk_scan"
android:textColor=
"@color/white"
android:textSize=
"20sp"
android:textStyle=
"bold"
app:layout_constraintTop_toTopOf=
"@id/fl_back"
app:layout_constraintBottom_toBottomOf=
"@id/fl_back"
app:layout_constraintStart_toEndOf=
"@id/fl_back"
/>
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:id=
"@+id/ll_size"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"36dp"
android:gravity=
"center"
android:orientation=
"vertical"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/ll_title"
>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:orientation=
"horizontal"
>
<androidx.appcompat.widget.AppCompatTextView
android:id=
"@+id/tv_length"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"0"
android:textColor=
"@color/white"
android:textSize=
"32sp"
android:textStyle=
"bold"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id=
"@+id/tv_unit"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"6dp"
android:text=
"B"
android:textColor=
"@color/white"
android:textSize=
"17sp"
android:textStyle=
"bold"
/>
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@string/found"
android:textColor=
"@color/white"
android:textSize=
"16sp"
android:textStyle=
"bold"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/ll_size"
/>
</androidx.appcompat.widget.LinearLayoutCompat>
<com.airbnb.lottie.LottieAnimationView
android:id=
"@+id/lottie_scan"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"36dp"
android:layout_marginEnd=
"50dp"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/ll_title"
/>
<ProgressBar
android:id=
"@+id/pb_progress"
style=
"?android:attr/progressBarStyleHorizontal"
android:layout_width=
"match_parent"
android:layout_height=
"2dp"
android:layout_marginTop=
"32dp"
android:progress=
"0"
android:max=
"100"
android:progressDrawable=
"@drawable/clean_junk_progress"
app:layout_constraintTop_toBottomOf=
"@id/ll_size"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id=
"@+id/tv_path"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"15dp"
android:ellipsize=
"end"
android:maxLines=
"1"
android:paddingTop=
"6dp"
android:paddingBottom=
"6dp"
android:text=
"@string/clean_tips"
android:textColor=
"@color/white"
android:textSize=
"14sp"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/pb_progress"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<pokercc.android.expandablerecyclerview.ExpandableRecyclerView
android:id=
"@+id/expandable_files"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_marginTop=
"12dp"
android:layout_marginBottom=
"12dp"
android:paddingStart=
"15dp"
android:paddingEnd=
"15dp"
android:scrollbars=
"none"
android:visibility=
"gone"
app:layout_constraintTop_toBottomOf=
"@id/cl_top"
app:layout_constraintBottom_toTopOf=
"@id/tv_clean"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id=
"@+id/tv_clean"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"30dp"
android:layout_marginStart=
"30dp"
android:layout_marginEnd=
"30dp"
android:paddingTop=
"12dp"
android:paddingBottom=
"12dp"
android:gravity=
"center"
android:background=
"@drawable/gradient"
android:text=
"@string/clean"
android:textColor=
"@color/white"
android:textSize=
"18sp"
android:textStyle=
"bold"
app:layout_constraintBottom_toBottomOf=
"parent"
/>
<include
android:id=
"@+id/animation"
android:visibility=
"gone"
layout=
"@layout/custom_animation"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/fragment_home.xml
View file @
50c34e87
...
@@ -4,6 +4,7 @@
...
@@ -4,6 +4,7 @@
android:id=
"@+id/cl_container"
android:id=
"@+id/cl_container"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:fitsSystemWindows=
"true"
android:background=
"#ef7246"
>
android:background=
"#ef7246"
>
<androidx.appcompat.widget.AppCompatTextView
<androidx.appcompat.widget.AppCompatTextView
...
@@ -174,7 +175,7 @@
...
@@ -174,7 +175,7 @@
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@string/junk_files"
android:text=
"@string/junk_files"
android:textColor=
"@color/
colorPrimary
"
android:textColor=
"@color/
white
"
android:textSize=
"20sp"
android:textSize=
"20sp"
android:textStyle=
"bold"
android:textStyle=
"bold"
app:layout_constraintBottom_toBottomOf=
"@id/iv_shan"
app:layout_constraintBottom_toBottomOf=
"@id/iv_shan"
...
...
app/src/main/res/layout/item_child_clean_junk.xml
0 → 100644
View file @
50c34e87
<?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=
"match_parent"
android:layout_height=
"wrap_content"
android:paddingTop=
"12dp"
android:paddingBottom=
"12dp"
android:paddingStart=
"16dp"
android:paddingEnd=
"16dp"
android:background=
"@color/white"
>
<androidx.appcompat.widget.AppCompatImageView
android:id=
"@+id/iv_icon"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:src=
"@mipmap/icon_empty_junk_nor"
android:visibility=
"invisible"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id=
"@+id/tv_name"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"4dp"
android:layout_marginEnd=
"4dp"
android:text=
"@string/app_name"
android:textColor=
"@color/color_666666"
android:textSize=
"14sp"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintStart_toEndOf=
"@id/iv_icon"
app:layout_constraintEnd_toStartOf=
"@id/tv_length"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id=
"@+id/tv_length"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"8dp"
android:text=
"67.4MB"
android:textSize=
"12sp"
android:textColor=
"@color/color_aeb4bd"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toStartOf=
"@id/iv_select"
/>
<androidx.appcompat.widget.AppCompatImageView
android:id=
"@+id/iv_select"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:src=
"@mipmap/icon_all_photo_off"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/item_group_clean_junk.xml
0 → 100644
View file @
50c34e87
<?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=
"match_parent"
android:layout_height=
"wrap_content"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/cl_item"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"12dp"
android:paddingVertical=
"16dp"
android:paddingHorizontal=
"16dp"
android:background=
"@drawable/white_background"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
>
<androidx.appcompat.widget.AppCompatImageView
android:id=
"@+id/iv_icon"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:src=
"@mipmap/icon_empty_junk_nor"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id=
"@+id/tv_name"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"4dp"
android:text=
"@string/app_name"
android:textColor=
"@color/color_181b1f"
android:textSize=
"16sp"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintStart_toEndOf=
"@id/iv_icon"
/>
<androidx.appcompat.widget.AppCompatImageView
android:id=
"@+id/iv_indicator"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"4dp"
android:src=
"@mipmap/icon_down_setting"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintStart_toEndOf=
"@id/tv_name"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id=
"@+id/tv_length"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"8dp"
android:text=
"67.4MB"
android:textSize=
"12sp"
android:textColor=
"@color/color_aeb4bd"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toStartOf=
"@id/iv_select"
/>
<androidx.appcompat.widget.AppCompatImageView
android:id=
"@+id/iv_select"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:src=
"@mipmap/icon_weixuan_junk"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/mipmap-xxxhdpi/icon_apk_junk_nor.png
0 → 100644
View file @
50c34e87
2.09 KB
app/src/main/res/mipmap-xxxhdpi/icon_audio_junk_nor.png
0 → 100644
View file @
50c34e87
4.54 KB
app/src/main/res/mipmap-xxxhdpi/icon_down_setting.png
0 → 100644
View file @
50c34e87
1.01 KB
app/src/main/res/mipmap-xxxhdpi/icon_empty_junk_nor.png
0 → 100644
View file @
50c34e87
1.79 KB
app/src/main/res/mipmap-xxxhdpi/icon_logs_junk_nor.png
0 → 100644
View file @
50c34e87
1.19 KB
app/src/main/res/mipmap-xxxhdpi/icon_temp_junk_nor.png
0 → 100644
View file @
50c34e87
1.78 KB
app/src/main/res/mipmap-xxxhdpi/icon_up_setting.png
0 → 100644
View file @
50c34e87
998 Bytes
app/src/main/res/mipmap-xxxhdpi/icon_weixuan_junk.png
0 → 100644
View file @
50c34e87
1.42 KB
app/src/main/res/mipmap-xxxhdpi/icon_yixuan_n.png
0 → 100644
View file @
50c34e87
1.42 KB
app/src/main/res/mipmap-xxxhdpi/icon_yixuan_s.png
0 → 100644
View file @
50c34e87
5.9 KB
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