Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
F
File Recovery RecycleBin
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
File Recovery RecycleBin
Commits
63404314
Commit
63404314
authored
Jan 23, 2025
by
周文华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【新增&修复】1.新增首次清理引导弹窗逻辑。2.尝试修复广告加载失败或者太久之后的跳转问题。
parent
eda17d5e
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
269 additions
and
9 deletions
+269
-9
MainActivity.kt
.../com/base/filerecoveryrecyclebin/activity/MainActivity.kt
+2
-1
ScanJunkActivity.kt
...recoveryrecyclebin/activity/junkclean/ScanJunkActivity.kt
+3
-0
Splash2Activity.kt
...filerecoveryrecyclebin/activity/splash/Splash2Activity.kt
+3
-1
ConstObject.kt
.../java/com/base/filerecoveryrecyclebin/bean/ConstObject.kt
+8
-0
HomeFragment.kt
.../com/base/filerecoveryrecyclebin/fragment/HomeFragment.kt
+18
-7
CleanGuideDialog.kt
.../com/base/filerecoveryrecyclebin/view/CleanGuideDialog.kt
+83
-0
dialog_clean_guide.xml
app/src/main/res/layout/dialog_clean_guide.xml
+152
-0
No files found.
app/src/main/java/com/base/filerecoveryrecyclebin/activity/MainActivity.kt
View file @
63404314
...
...
@@ -14,6 +14,7 @@ import com.base.filerecoveryrecyclebin.activity.repeat.RepeatActivity
import
com.base.filerecoveryrecyclebin.activity.repeat.RepeatActivity.Companion.similarPhotoDeleted
import
com.base.filerecoveryrecyclebin.activity.screenshot.ScreenShotActivity.Companion.screenPhotoDeleted
import
com.base.filerecoveryrecyclebin.ads.admob.AdmobBannerUtils
import
com.base.filerecoveryrecyclebin.bean.ConstObject
import
com.base.filerecoveryrecyclebin.bean.MediaBean
import
com.base.filerecoveryrecyclebin.databinding.ActivityMainBinding
import
com.base.filerecoveryrecyclebin.fragment.HomeFragment
...
...
@@ -68,7 +69,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
// System.loadLibrary("opencv_java4")
if
(!
checkStorePermission
())
{
if
(!
checkStorePermission
()
&&
ConstObject
.
hasCleaned
)
{
if
(
dialog
==
null
)
{
dialog
=
showPermissionBottomSheet
(
launcher
)
{
binding
.
flBanner
.
visibility
=
View
.
VISIBLE
...
...
app/src/main/java/com/base/filerecoveryrecyclebin/activity/junkclean/ScanJunkActivity.kt
View file @
63404314
...
...
@@ -12,6 +12,7 @@ import androidx.core.view.updatePadding
import
androidx.lifecycle.lifecycleScope
import
com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import
com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper.admobMaxShowInterstitialAd
import
com.base.filerecoveryrecyclebin.bean.ConstObject
import
com.base.filerecoveryrecyclebin.databinding.ActivityLayoutScanJunkBinding
import
com.base.filerecoveryrecyclebin.help.BaseActivity
import
com.base.filerecoveryrecyclebin.help.PermissionHelp.checkStorePermission
...
...
@@ -50,6 +51,8 @@ class ScanJunkActivity : BaseActivity<ActivityLayoutScanJunkBinding>() {
}
})
})
}
else
{
ConstObject
.
hasCleaned
=
true
}
}
...
...
app/src/main/java/com/base/filerecoveryrecyclebin/activity/splash/Splash2Activity.kt
View file @
63404314
...
...
@@ -87,8 +87,10 @@ class Splash2Activity : BaseActivity<ActivitySplashBinding>(),
loadAd
()
}
private
var
isMaxComplete
=
false
override
fun
onProgressMax
()
{
if
(
isMaxComplete
)
return
isMaxComplete
=
true
Handler
().
postDelayed
({
StartUtils
.
jumpNextPage
(
this
)
},
500
)
...
...
app/src/main/java/com/base/filerecoveryrecyclebin/bean/ConstObject.kt
View file @
63404314
...
...
@@ -124,4 +124,12 @@ object ConstObject {
AppPreferences
.
getInstance
().
put
(
"fcmNotification"
,
value
,
true
)
}
var
hasCleaned
=
false
get
()
{
return
AppPreferences
.
getInstance
().
getBoolean
(
"hasCleaned"
,
field
)
}
set
(
value
)
{
field
=
value
AppPreferences
.
getInstance
().
put
(
"hasCleaned"
,
value
,
true
)
}
}
\ No newline at end of file
app/src/main/java/com/base/filerecoveryrecyclebin/fragment/HomeFragment.kt
View file @
63404314
...
...
@@ -28,12 +28,14 @@ import com.base.filerecoveryrecyclebin.activity.repeat.RepeatAnimationActivity
import
com.base.filerecoveryrecyclebin.activity.screenshot.ScreenShotAnimationActivity
import
com.base.filerecoveryrecyclebin.activity.whatsapp.WhatsAppCleanerAnimationActivity
import
com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import
com.base.filerecoveryrecyclebin.bean.ConstObject
import
com.base.filerecoveryrecyclebin.databinding.FragmentHome3Binding
import
com.base.filerecoveryrecyclebin.help.BaseFragment
import
com.base.filerecoveryrecyclebin.help.KotlinExt.toFormatSize
import
com.base.filerecoveryrecyclebin.help.PermissionHelp.checkStorePermission
import
com.base.filerecoveryrecyclebin.help.WeatherUtils
import
com.base.filerecoveryrecyclebin.utils.AppPreferences
import
com.base.filerecoveryrecyclebin.view.CleanGuideDialog
import
com.base.filerecoveryrecyclebin.view.WeatherInterface
import
kotlinx.coroutines.flow.collectLatest
import
kotlinx.coroutines.launch
...
...
@@ -74,14 +76,19 @@ class HomeFragment : BaseFragment<FragmentHome3Binding>() {
}
}
showStorage
()
AdmobMaxHelper
.
admobMaxShowNativeAd
(
requireActivity
(),
binding
.
idFlNative
)
AdmobMaxHelper
.
admobMaxShowNativeAd
(
requireActivity
(),
binding
.
idFlNative
)
if
(!
ConstObject
.
hasCleaned
)
{
//没有清理过就弹dialog引导
CleanGuideDialog
.
Builder
(
requireContext
()).
build
(
this
).
show
()
}
}
var
i
=
0
var
lastClickTime
=
0L
override
fun
setListener
()
{
binding
.
flScan
.
setOnClickListener
{
val
jumpJunkFirstAd
=
AppPreferences
.
getInstance
().
getString
(
"isjunkPlayAd"
,
"0"
).
toInt
()
val
jumpJunkFirstAd
=
AppPreferences
.
getInstance
().
getString
(
"isjunkPlayAd"
,
"0"
).
toInt
()
if
(
jumpJunkFirstAd
==
1
)
{
startActivity
(
Intent
(
requireContext
(),
ScanJunk2Activity
::
class
.
java
))
}
else
{
...
...
@@ -178,13 +185,16 @@ class HomeFragment : BaseFragment<FragmentHome3Binding>() {
binding
.
llStorage
.
visibility
=
View
.
VISIBLE
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
R
)
{
val
storageStatsManager
=
requireContext
().
getSystemService
(
STORAGE_STATS_SERVICE
)
as
StorageStatsManager
val
storageStatsManager
=
requireContext
().
getSystemService
(
STORAGE_STATS_SERVICE
)
as
StorageStatsManager
Thread
{
val
totalBytes
=
storageStatsManager
.
getTotalBytes
(
StorageManager
.
UUID_DEFAULT
)
val
usedBytes
=
totalBytes
-
storageStatsManager
.
getFreeBytes
(
StorageManager
.
UUID_DEFAULT
)
val
usedBytes
=
totalBytes
-
storageStatsManager
.
getFreeBytes
(
StorageManager
.
UUID_DEFAULT
)
binding
.
root
.
post
{
binding
.
tvStorage
.
text
=
"${usedBytes.toFormatSize()} / ${totalBytes.toFormatSize()}"
binding
.
tvStorage
.
text
=
"${usedBytes.toFormatSize()} / ${totalBytes.toFormatSize()}"
}
}.
start
()
...
...
@@ -194,7 +204,8 @@ class HomeFragment : BaseFragment<FragmentHome3Binding>() {
val
path2
:
File
=
Environment
.
getExternalStorageDirectory
()
val
stat2
=
StatFs
(
path2
.
path
)
val
totalSize
=
(
stat1
.
totalBytes
+
stat2
.
totalBytes
).
toFormatSize
()
val
usedSize
=
((
stat1
.
totalBytes
+
stat2
.
totalBytes
)
-
(
stat1
.
availableBytes
+
stat2
.
availableBytes
)).
toFormatSize
()
val
usedSize
=
((
stat1
.
totalBytes
+
stat2
.
totalBytes
)
-
(
stat1
.
availableBytes
+
stat2
.
availableBytes
)).
toFormatSize
()
binding
.
tvStorage
.
text
=
"$usedSize / $totalSize"
}
}
...
...
app/src/main/java/com/base/filerecoveryrecyclebin/view/CleanGuideDialog.kt
0 → 100644
View file @
63404314
package
com.base.filerecoveryrecyclebin.view
import
android.animation.ValueAnimator
import
android.app.Dialog
import
android.content.Context
import
android.content.Intent
import
android.graphics.drawable.ColorDrawable
import
android.os.Bundle
import
android.view.Gravity
import
android.view.LayoutInflater
import
android.view.View.OnClickListener
import
android.view.WindowManager
import
androidx.lifecycle.DefaultLifecycleObserver
import
androidx.lifecycle.LifecycleOwner
import
com.base.filerecoveryrecyclebin.activity.junkclean.ScanJunk2Activity
import
com.base.filerecoveryrecyclebin.activity.junkclean.ScanJunkActivity
import
com.base.filerecoveryrecyclebin.databinding.DialogCleanGuideBinding
import
com.base.filerecoveryrecyclebin.utils.AppPreferences
class
CleanGuideDialog
(
context
:
Context
,
private
val
binding
:
DialogCleanGuideBinding
)
:
Dialog
(
context
),
DefaultLifecycleObserver
{
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
<
Dialog
>.
onCreate
(
savedInstanceState
)
init
()
}
override
fun
onDestroy
(
owner
:
LifecycleOwner
)
{
cancel
()
super
.
onDestroy
(
owner
)
}
private
fun
gotoScan
(){
val
jumpJunkFirstAd
=
AppPreferences
.
getInstance
().
getString
(
"isjunkPlayAd"
,
"0"
).
toInt
()
if
(
jumpJunkFirstAd
==
1
)
{
context
.
startActivity
(
Intent
(
context
,
ScanJunk2Activity
::
class
.
java
))
}
else
{
context
.
startActivity
(
Intent
(
context
,
ScanJunkActivity
::
class
.
java
))
}
cancel
()
}
private
fun
init
()
{
binding
.
tvBtn
.
setOnClickListener
{
gotoScan
()
}
binding
.
lottie
.
repeatCount
=
ValueAnimator
.
INFINITE
binding
.
lottie
.
setOnClickListener
{
gotoScan
()
}
setCancelable
(
false
)
setCanceledOnTouchOutside
(
false
)
setContentView
(
binding
.
root
)
window
?.
run
{
setBackgroundDrawable
(
ColorDrawable
())
setDimAmount
(
0.7f
)
setGravity
(
Gravity
.
TOP
)
val
layoutParams
=
attributes
//设置dialog可以穿透并且有蒙层
layoutParams
.
flags
=
// WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or
WindowManager
.
LayoutParams
.
FLAG_DIM_BEHIND
layoutParams
.
width
=
WindowManager
.
LayoutParams
.
MATCH_PARENT
// layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT
// layoutParams.verticalMargin = 0.06f
attributes
=
layoutParams
decorView
.
setPadding
(
0
,
0
,
0
,
0
)
}
}
class
Builder
(
private
val
context
:
Context
)
{
private
lateinit
var
dialog
:
CleanGuideDialog
private
val
binding
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
DialogCleanGuideBinding
.
inflate
(
LayoutInflater
.
from
(
context
))
}
fun
build
(
lifecycleOwner
:
LifecycleOwner
?
=
null
):
CleanGuideDialog
=
CleanGuideDialog
(
context
,
binding
).
also
{
dialog
=
it
lifecycleOwner
?.
lifecycle
?.
addObserver
(
it
)
}
}
}
\ No newline at end of file
app/src/main/res/layout/dialog_clean_guide.xml
0 → 100644
View file @
63404314
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:paddingVertical=
"14dp"
android:visibility=
"invisible"
>
<LinearLayout
android:id=
"@+id/ll_weather"
android:layout_width=
"wrap_content"
android:layout_height=
"36dp"
android:layout_gravity=
"center_vertical"
android:layout_marginStart=
"14dp"
android:orientation=
"horizontal"
android:visibility=
"invisible"
>
<TextView
android:id=
"@+id/tv_wendu"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginStart=
"15dp"
android:layout_marginEnd=
"2dp"
android:includeFontPadding=
"false"
android:textColor=
"@color/black"
android:textSize=
"18sp"
tools:text=
"20"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginEnd=
"4dp"
android:includeFontPadding=
"false"
android:text=
"℃"
android:textColor=
"@color/black"
tools:ignore=
"HardcodedText"
/>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginEnd=
"9dp"
android:src=
"@mipmap/duoyun"
tools:ignore=
"ContentDescription"
/>
</LinearLayout>
<ImageView
android:id=
"@+id/fl_setting"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"end|center_vertical"
android:layout_marginEnd=
"14dp"
android:src=
"@mipmap/shezhi"
android:visibility=
"invisible"
tools:ignore=
"ContentDescription"
/>
<androidx.appcompat.widget.AppCompatImageView
android:id=
"@+id/id_tv_xz"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"end|center_vertical"
android:layout_marginEnd=
"58dp"
android:src=
"@mipmap/horoscope"
android:visibility=
"invisible"
/>
</FrameLayout>
<FrameLayout
android:layout_width=
"wrap_content"
android:layout_height=
"280dp"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"-20dp"
>
<View
android:layout_width=
"240dp"
android:layout_height=
"230dp"
android:layout_marginStart=
"35dp"
android:layout_marginTop=
"25dp"
android:background=
"@color/white"
/>
<com.base.filerecoveryrecyclebin.view.XmlLottieAnimationView
android:id=
"@+id/lottie"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:adjustViewBounds=
"true"
app:lottie_autoPlay=
"true"
app:lottie_rawRes=
"@raw/memosj"
/>
<LinearLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:orientation=
"vertical"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:text=
"Clean"
android:textColor=
"@color/white"
android:textSize=
"30sp"
android:textStyle=
"bold"
tools:ignore=
"HardcodedText"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"10dp"
android:text=
"Junk File"
android:textColor=
"@color/white"
android:textSize=
"15sp"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"bottom|center_horizontal"
android:text=
"Click the button to clean the phone"
android:textColor=
"@color/white"
android:textSize=
"16sp"
android:textStyle=
"bold"
/>
</FrameLayout>
<TextView
android:id=
"@+id/tv_btn"
android:layout_width=
"wrap_content"
android:text=
"clean junk"
android:layout_marginTop=
"15dp"
android:includeFontPadding=
"false"
android:textSize=
"16sp"
android:paddingVertical=
"10dp"
android:paddingHorizontal=
"16dp"
android:textColor=
"@color/black"
android:layout_gravity=
"center_horizontal"
android:background=
"@drawable/bg_ffffff_15"
android:layout_height=
"wrap_content"
/>
</LinearLayout>
\ No newline at end of file
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