2020-10-31 19:45:39 +00:00
|
|
|
package com.vanced.manager.ui
|
|
|
|
|
2021-02-17 19:00:35 +00:00
|
|
|
import android.animation.Animator
|
|
|
|
import android.animation.ValueAnimator
|
2020-10-31 19:45:39 +00:00
|
|
|
import android.os.Bundle
|
2021-02-17 19:00:35 +00:00
|
|
|
import android.view.animation.AccelerateDecelerateInterpolator
|
2020-10-31 19:45:39 +00:00
|
|
|
import androidx.appcompat.app.AppCompatActivity
|
2021-02-17 19:00:35 +00:00
|
|
|
import androidx.viewpager2.widget.ViewPager2
|
|
|
|
import com.vanced.manager.adapter.WelcomePageAdapter
|
|
|
|
import com.vanced.manager.databinding.ActivityWelcomeBinding
|
|
|
|
import kotlin.math.abs
|
2020-10-31 19:45:39 +00:00
|
|
|
|
|
|
|
class WelcomeActivity : AppCompatActivity() {
|
|
|
|
|
2021-02-17 19:00:35 +00:00
|
|
|
private lateinit var viewPager2: ViewPager2
|
|
|
|
private lateinit var binding: ActivityWelcomeBinding
|
2020-10-31 19:45:39 +00:00
|
|
|
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
|
super.onCreate(savedInstanceState)
|
2021-02-17 19:00:35 +00:00
|
|
|
binding = ActivityWelcomeBinding.inflate(layoutInflater)
|
|
|
|
setContentView(binding.root)
|
|
|
|
|
|
|
|
viewPager2 = binding.welcomeViewpager
|
|
|
|
viewPager2.apply {
|
|
|
|
adapter = WelcomePageAdapter(this@WelcomeActivity)
|
|
|
|
isUserInputEnabled = false
|
|
|
|
setPageTransformer { page, position ->
|
|
|
|
page.apply {
|
|
|
|
val pageWidth = width
|
|
|
|
//Thank you, fragula dev!
|
|
|
|
when {
|
|
|
|
position > 0 && position < 1 -> {
|
|
|
|
alpha = 1f
|
|
|
|
translationX = 0f
|
|
|
|
}
|
|
|
|
position > -1 && position <= 0 -> {
|
|
|
|
alpha = 1.0f - abs(position * 0.7f)
|
|
|
|
translationX = -pageWidth * position / 1.3F
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2020-10-31 19:45:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
override fun onBackPressed() {
|
2021-02-17 19:00:35 +00:00
|
|
|
if (viewPager2.currentItem == 0) {
|
|
|
|
super.onBackPressed()
|
|
|
|
} else {
|
|
|
|
navigateTo(viewPager2.currentItem - 1)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fun navigateTo(position: Int) {
|
|
|
|
viewPager2.currentPosition = position
|
2020-10-31 19:45:39 +00:00
|
|
|
}
|
2021-02-17 19:00:35 +00:00
|
|
|
|
|
|
|
//Shit way to implement animation duration, but at least it works
|
|
|
|
private var ViewPager2.currentPosition: Int
|
|
|
|
get() = currentItem
|
|
|
|
set(value) {
|
|
|
|
val pixelsToDrag: Int = width * (value - currentItem)
|
|
|
|
val animator = ValueAnimator.ofInt(0, pixelsToDrag)
|
|
|
|
var previousValue = 0
|
|
|
|
animator.apply {
|
|
|
|
addUpdateListener { valueAnimator ->
|
|
|
|
val currentValue = valueAnimator.animatedValue as Int
|
|
|
|
val currentPxToDrag = (currentValue - previousValue).toFloat()
|
|
|
|
fakeDragBy(-currentPxToDrag)
|
|
|
|
previousValue = currentValue
|
|
|
|
}
|
|
|
|
addListener(object : Animator.AnimatorListener {
|
|
|
|
override fun onAnimationStart(animation: Animator?) { beginFakeDrag() }
|
|
|
|
override fun onAnimationEnd(animation: Animator?) { endFakeDrag() }
|
|
|
|
override fun onAnimationCancel(animation: Animator?) {}
|
|
|
|
override fun onAnimationRepeat(animation: Animator?) {}
|
|
|
|
})
|
|
|
|
interpolator = AccelerateDecelerateInterpolator()
|
|
|
|
duration = 500
|
|
|
|
start()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-10-31 19:45:39 +00:00
|
|
|
}
|