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
75de19e4
Commit
75de19e4
authored
Jan 22, 2025
by
周文华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【调整】调整清理首页加载与动画生命周期。
parent
c6258642
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
69 additions
and
24 deletions
+69
-24
HomeFragment.kt
app/src/main/java/com/base/scanqrclear/luma/HomeFragment.kt
+69
-24
No files found.
app/src/main/java/com/base/scanqrclear/luma/HomeFragment.kt
View file @
75de19e4
...
...
@@ -4,20 +4,23 @@ package com.base.scanqrclear.luma
import
android.animation.AnimatorSet
import
android.animation.ObjectAnimator
import
android.animation.ValueAnimator
import
android.annotation.SuppressLint
import
android.os.Bundle
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
android.view.animation.LinearInterpolator
import
androidx.core.animation.doOnEnd
import
androidx.core.view.updatePadding
import
androidx.lifecycle.DefaultLifecycleObserver
import
androidx.lifecycle.LifecycleOwner
import
androidx.lifecycle.lifecycleScope
import
androidx.recyclerview.widget.GridLayoutManager
import
androidx.recyclerview.widget.LinearLayoutManager
import
com.base.scanqrclear.R
import
com.base.scanqrclear.base.BaseFragment
import
com.base.scanqrclear.databinding.FragmentHomeBinding
import
com.base.scanqrclear.luma.AdmobHelps.KEY_INSTALL_TIME
import
com.base.scanqrclear.luma.AppHelps.dpToPx
import
com.base.scanqrclear.utils.ActivityLauncher
import
com.base.scanqrclear.utils.BarUtils
import
com.gyf.immersionbar.ktx.immersionBar
import
kotlinx.coroutines.Dispatchers
...
...
@@ -26,21 +29,18 @@ import kotlinx.coroutines.launch
import
kotlinx.coroutines.withContext
import
java.util.concurrent.TimeUnit
class
HomeFragment
:
BaseFragment
(
)
{
class
HomeFragment
:
BaseFragment
<
FragmentHomeBinding
>(
FragmentHomeBinding
::
inflate
)
{
private
val
binding
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
FragmentHomeBinding
.
inflate
(
layoutInflater
)
}
private
lateinit
var
launcher
:
ActivityLauncher
override
fun
onCreateView
(
inflater
:
LayoutInflater
,
container
:
ViewGroup
?,
savedInstanceState
:
Bundle
?
):
View
{
binding
.
tvAppName
.
updatePadding
(
top
=
BarUtils
.
getStatusBarHeight
())
return
binding
.
root
private
val
animatorClean
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
AnimatorSet
()
}
private
var
animator1
:
ValueAnimator
?
=
null
private
var
animator2
:
ValueAnimator
?
=
null
override
fun
onResume
()
{
super
.
onResume
()
immersionBar
{
...
...
@@ -48,9 +48,51 @@ class HomeFragment : BaseFragment() {
statusBarDarkFont
(
true
)
}
}
override
fun
onResumeOneShoot
()
{
startAnimation
()
initData
()
showDay
()
lifecycle
.
addObserver
(
object
:
DefaultLifecycleObserver
{
override
fun
onResume
(
owner
:
LifecycleOwner
)
{
if
(
animatorClean
.
isRunning
&&
animatorClean
.
isPaused
)
{
animatorClean
.
resume
()
}
val
lottieAnim
=
binding
.
lottieAnimation
if
(!
lottieAnim
.
isAnimating
)
{
binding
.
lottieAnimation
.
resumeAnimation
()
}
if
(
animator1
?.
isRunning
==
true
&&
animator1
?.
isPaused
==
true
)
{
animator1
?.
resume
()
}
if
(
animator2
?.
isRunning
==
true
&&
animator2
?.
isPaused
==
true
)
{
animator2
?.
resume
()
}
}
override
fun
onPause
(
owner
:
LifecycleOwner
)
{
if
(
animatorClean
.
isRunning
)
{
animatorClean
.
pause
()
}
val
lottieAnim
=
binding
.
lottieAnimation
if
(
lottieAnim
.
isAnimating
)
{
binding
.
lottieAnimation
.
pauseAnimation
()
}
if
(
animator1
?.
isRunning
==
true
)
{
animator1
?.
pause
()
}
if
(
animator2
?.
isRunning
==
true
)
{
animator2
?.
pause
()
}
}
})
}
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
super
.
onViewCreated
(
view
,
savedInstanceState
)
launcher
=
ActivityLauncher
(
this
)
binding
.
tvAppName
.
updatePadding
(
top
=
BarUtils
.
getStatusBarHeight
())
val
functionAdapter
=
FunctionAdapter
(
getData
(),
true
)
functionAdapter
.
callback
=
object
:
BaseAdapter
.
OnClickCallback
<
FunctionBean
>
{
override
fun
onClicked
(
view
:
View
,
position
:
Int
,
item
:
FunctionBean
)
{
...
...
@@ -79,9 +121,6 @@ class HomeFragment : BaseFragment() {
val
targetY
=
binding
.
svNested
.
getChildAt
(
0
).
measuredHeight
binding
.
svNested
.
smoothScrollTo
(
0
,
targetY
)
}
startAnimation
()
initData
()
showDay
()
}
private
fun
initData
()
{
...
...
@@ -148,10 +187,13 @@ class HomeFragment : BaseFragment() {
}
}
@SuppressLint
(
"ObjectAnimatorBinding"
)
private
fun
startAnimation
()
{
binding
.
ivCircleBorder
.
visibility
=
View
.
GONE
val
delay
:
Long
=
1200
ValueAnimator
.
ofFloat
(
0f
,
360f
).
apply
{
animator1
?.
cancel
()
animator2
?.
cancel
()
animator1
=
ValueAnimator
.
ofFloat
(
0f
,
360f
).
apply
{
duration
=
delay
interpolator
=
LinearInterpolator
()
addUpdateListener
{
animation
->
...
...
@@ -161,11 +203,12 @@ class HomeFragment : BaseFragment() {
doOnEnd
{
binding
.
ivCircleBorder
.
visibility
=
View
.
VISIBLE
AnimationHelps
.
rotation
(
binding
.
ivShan
,
2000
)
animator1
=
null
}
}.
start
()
start
()
}
binding
.
tvJunkFiles
.
alpha
=
0f
ValueAnimator
.
ofFloat
(
0f
,
1f
).
apply
{
animator2
=
ValueAnimator
.
ofFloat
(
0f
,
1f
).
apply
{
this
.
duration
=
1000
this
.
startDelay
=
delay
addUpdateListener
{
animation
->
...
...
@@ -173,6 +216,9 @@ class HomeFragment : BaseFragment() {
binding
.
tvJunkFiles
.
alpha
=
value
binding
.
tvJunkFiles
.
translationY
=
(
binding
.
tvClean
.
height
*
(
1
-
value
))
}
doOnEnd
{
animator2
=
null
}
start
()
}
...
...
@@ -208,9 +254,8 @@ class HomeFragment : BaseFragment() {
}
}
val
animatorSet
=
AnimatorSet
()
animatorSet
.
playTogether
(
scaleXAnim
,
scaleYAnim
,
alphaAnim
,
widthAnim
)
animatorSet
.
start
()
animatorClean
.
playTogether
(
scaleXAnim
,
scaleYAnim
,
alphaAnim
,
widthAnim
)
animatorClean
.
start
()
val
top
=
requireContext
().
dpToPx
(
5
)
ObjectAnimator
.
ofFloat
(
binding
.
ivUpward
,
"translationY"
,
0f
,
top
).
apply
{
...
...
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