improve layout of LoginActivity when keyboard is extended and animate changes
This commit is contained in:
parent
5101dead24
commit
08d3438dde
|
@ -35,7 +35,8 @@
|
||||||
</activity>
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
android:name=".components.login.LoginActivity"
|
android:name=".components.login.LoginActivity"
|
||||||
android:theme="@style/AppTheme.Fullscreen">
|
android:theme="@style/AppTheme.Fullscreen"
|
||||||
|
android:windowSoftInputMode="adjustResize">
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
package at.connyduck.pixelcat.components.login
|
package at.connyduck.pixelcat.components.login
|
||||||
|
|
||||||
|
import android.animation.ValueAnimator
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
@ -29,7 +30,9 @@ import android.view.ViewGroup
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import androidx.core.view.ViewCompat
|
import androidx.core.view.ViewCompat
|
||||||
import androidx.core.view.WindowInsetsCompat
|
import androidx.core.view.WindowInsetsCompat
|
||||||
|
import androidx.core.view.WindowInsetsCompat.Type.ime
|
||||||
import androidx.core.view.WindowInsetsCompat.Type.systemBars
|
import androidx.core.view.WindowInsetsCompat.Type.systemBars
|
||||||
|
import androidx.core.view.updatePadding
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import at.connyduck.pixelcat.R
|
import at.connyduck.pixelcat.R
|
||||||
import at.connyduck.pixelcat.components.about.AboutActivity
|
import at.connyduck.pixelcat.components.about.AboutActivity
|
||||||
|
@ -63,9 +66,23 @@ class LoginActivity : BaseActivity() {
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, insets ->
|
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, insets ->
|
||||||
val top = insets.getInsets(systemBars()).top
|
val insetTop = insets.getInsets(systemBars()).top
|
||||||
val toolbarParams = binding.loginToolbar.layoutParams as ViewGroup.MarginLayoutParams
|
val toolbarParams = binding.loginToolbar.layoutParams as ViewGroup.MarginLayoutParams
|
||||||
toolbarParams.topMargin = top
|
toolbarParams.topMargin = insetTop
|
||||||
|
|
||||||
|
val insetBottom = insets.getInsets(ime()).bottom
|
||||||
|
val paddingBottom = binding.root.paddingBottom
|
||||||
|
|
||||||
|
if (paddingBottom != insetBottom) {
|
||||||
|
// animate the bottom padding when the soft keyboard visibility changed
|
||||||
|
val animator = ValueAnimator.ofInt(paddingBottom, insetBottom)
|
||||||
|
animator.addUpdateListener { valueAnimator ->
|
||||||
|
binding.root.updatePadding(bottom = valueAnimator.animatedValue as Int)
|
||||||
|
}
|
||||||
|
animator.duration = 200
|
||||||
|
animator.start()
|
||||||
|
}
|
||||||
|
|
||||||
WindowInsetsCompat.CONSUMED
|
WindowInsetsCompat.CONSUMED
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -155,7 +172,15 @@ class LoginActivity : BaseActivity() {
|
||||||
}
|
}
|
||||||
LoginState.SUCCESS -> {
|
LoginState.SUCCESS -> {
|
||||||
setLoading(true)
|
setLoading(true)
|
||||||
startActivityForResult(LoginWebViewActivity.newIntent(loginModel.domain!!, loginModel.clientId!!, loginModel.clientSecret!!, this), REQUEST_CODE)
|
startActivityForResult(
|
||||||
|
LoginWebViewActivity.newIntent(
|
||||||
|
loginModel.domain!!,
|
||||||
|
loginModel.clientId!!,
|
||||||
|
loginModel.clientSecret!!,
|
||||||
|
this
|
||||||
|
),
|
||||||
|
REQUEST_CODE
|
||||||
|
)
|
||||||
}
|
}
|
||||||
LoginState.SUCCESS_FINAL -> {
|
LoginState.SUCCESS_FINAL -> {
|
||||||
setLoading(true)
|
setLoading(true)
|
||||||
|
|
Loading…
Reference in New Issue