fix(login): 키보드 높이에 따라 화면을 위로 미는 로직이 BaseActivity, LoginActivity 두 군데에 있어서 2중으로 적용되는 버그 수정

- LoginActivity에 있는 키보드 높이에 따른 화면 Resize로직 제거
This commit is contained in:
2025-11-10 18:51:21 +09:00
parent 26f8d3dc45
commit c35b267658

View File

@@ -2,18 +2,13 @@ package kr.co.vividnext.sodalive.user.login
import android.app.Service import android.app.Service
import android.content.Intent import android.content.Intent
import android.graphics.Rect
import android.os.Bundle import android.os.Bundle
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
import android.transition.TransitionManager
import android.view.inputmethod.EditorInfo import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodManager import android.view.inputmethod.InputMethodManager
import android.widget.LinearLayout
import android.widget.Toast import android.widget.Toast
import androidx.annotation.OptIn import androidx.annotation.OptIn
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.ConstraintSet
import androidx.credentials.Credential import androidx.credentials.Credential
import androidx.credentials.CredentialManager import androidx.credentials.CredentialManager
import androidx.credentials.CustomCredential import androidx.credentials.CustomCredential
@@ -38,7 +33,6 @@ import kr.co.vividnext.sodalive.base.BaseActivity
import kr.co.vividnext.sodalive.common.Constants import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.databinding.ActivityLoginBinding import kr.co.vividnext.sodalive.databinding.ActivityLoginBinding
import kr.co.vividnext.sodalive.extensions.dpToPx
import kr.co.vividnext.sodalive.main.MainActivity import kr.co.vividnext.sodalive.main.MainActivity
import kr.co.vividnext.sodalive.user.find_password.FindPasswordActivity import kr.co.vividnext.sodalive.user.find_password.FindPasswordActivity
import kr.co.vividnext.sodalive.user.signup.SignUpActivity import kr.co.vividnext.sodalive.user.signup.SignUpActivity
@@ -62,21 +56,6 @@ class LoginActivity : BaseActivity<ActivityLoginBinding>(ActivityLoginBinding::i
} }
override fun setupView() { override fun setupView() {
binding.root.viewTreeObserver.addOnGlobalLayoutListener {
val rect = Rect()
binding.root.getWindowVisibleDisplayFrame(rect)
val keypadHeight = screenHeight - rect.bottom
if (keypadHeight > screenHeight * 0.15) {
updateMarginWithAnimation(
binding.llLoginContainer,
-100f.dpToPx().toInt()
)
} else {
updateMarginWithAnimation(binding.llLoginContainer, 0)
}
}
binding.toolbar.tvBack.text = "로그인" binding.toolbar.tvBack.text = "로그인"
binding.toolbar.tvBack.setOnClickListener { finish() } binding.toolbar.tvBack.setOnClickListener { finish() }
loadingDialog = LoadingDialog(this, layoutInflater) loadingDialog = LoadingDialog(this, layoutInflater)
@@ -223,25 +202,6 @@ class LoginActivity : BaseActivity<ActivityLoginBinding>(ActivityLoginBinding::i
} }
} }
private fun updateMarginWithAnimation(view: LinearLayout, newMargin: Int) {
val constraintLayout = view.parent as ConstraintLayout
val constraintSet = ConstraintSet()
constraintSet.clone(constraintLayout)
// 변경할 Constraint 적용 (margin 변경)
constraintSet.connect(
view.id,
ConstraintSet.TOP,
ConstraintSet.PARENT_ID,
ConstraintSet.TOP,
newMargin
)
// 애니메이션 적용
TransitionManager.beginDelayedTransition(constraintLayout)
constraintSet.applyTo(constraintLayout)
}
private fun hideKeyboard() { private fun hideKeyboard() {
handler.postDelayed({ handler.postDelayed({
imm.hideSoftInputFromWindow( imm.hideSoftInputFromWindow(