11package com.teambeme.beme.answer.view
22
33import android.animation.ValueAnimator
4+ import android.content.Context
45import android.graphics.Color
56import android.os.Bundle
67import android.text.Spannable
78import android.text.SpannableStringBuilder
89import android.text.style.ForegroundColorSpan
910import android.text.style.UnderlineSpan
1011import android.util.Log
12+ import android.view.ViewGroup
13+ import android.view.inputmethod.InputMethodManager
1114import androidx.activity.viewModels
1215import androidx.constraintlayout.widget.ConstraintLayout
1316import androidx.lifecycle.lifecycleScope
@@ -18,6 +21,7 @@ import com.teambeme.beme.answer.viewmodel.AnswerViewModel
1821import com.teambeme.beme.base.BindingActivity
1922import com.teambeme.beme.data.local.entity.AnswerData
2023import com.teambeme.beme.databinding.ActivityAnswerBinding
24+ import com.teambeme.beme.util.KeyboardVisibilityUtils
2125import com.teambeme.beme.util.StatusBarUtil
2226import com.teambeme.beme.util.dp
2327import com.teambeme.beme.util.recordClickEvent
@@ -28,6 +32,7 @@ import kotlinx.coroutines.launch
2832@AndroidEntryPoint
2933class AnswerActivity : BindingActivity <ActivityAnswerBinding >(R .layout.activity_answer) {
3034 private val answerViewModel: AnswerViewModel by viewModels()
35+ private lateinit var keyboardVisibilityUtils: KeyboardVisibilityUtils
3136 override fun onCreate (savedInstanceState : Bundle ? ) {
3237 super .onCreate(savedInstanceState)
3338 binding.lifecycleOwner = this
@@ -38,8 +43,6 @@ class AnswerActivity : BindingActivity<ActivityAnswerBinding>(R.layout.activity_
3843 val intentAnswerData = intent.getParcelableExtra<IntentAnswerData >(" intentAnswerData" )!!
3944 val isChange = intent.getIntExtra(IS_CHANGE , IS_WRITE_VALUE )
4045 answerViewModel.setIntentAnswerData(intentAnswerData)
41- Log .d(" answer" , intentAnswerData.toString())
42- Log .d(" answer" , " isChange == IS_CHANGE_VALUE is ${isChange == IS_CHANGE_VALUE } " )
4346 binding.txtAnswerData.text = intentAnswerData.createdAt
4447 if (isChange != IS_CHANGE_VALUE ) {
4548 answerViewModel.checkStored(intentAnswerData.questionId)
@@ -48,19 +51,44 @@ class AnswerActivity : BindingActivity<ActivityAnswerBinding>(R.layout.activity_
4851 }
4952 answerViewModel.answerData.observe(this ) {
5053 if (it != null ) {
51- Log .d(" answer" , " it is not null" )
5254 answerViewModel.initEditText()
5355 setTitleText(it)
5456 } else {
55- Log .d(" answer" , " it is null" )
5657 answerViewModel.initAnswerData(intentAnswerData)
5758 }
5859 }
59- binding.txtAnswerComplete.setOnClickListener {
60- submitAnswer(isChange)
61- }
60+ binding.txtAnswerComplete.setOnClickListener { submitAnswer(isChange) }
6261 setSwitchListener()
6362 observePublicSwitch()
63+ setHideKeyboard()
64+ setEditTextWhenOpenKeyboard()
65+ }
66+
67+ private fun setHideKeyboard () {
68+ binding.constraintAnswer.setOnClickListener {
69+ val keyboard = getSystemService(Context .INPUT_METHOD_SERVICE ) as InputMethodManager
70+ keyboard.hideSoftInputFromWindow(binding.txtAnswerAnswer.windowToken, 0 )
71+ }
72+ }
73+
74+ private fun setEditTextWhenOpenKeyboard () {
75+ val param = binding.txtAnswerAnswer.layoutParams as ViewGroup .MarginLayoutParams
76+ keyboardVisibilityUtils = KeyboardVisibilityUtils (window,
77+ onShowKeyboard = { keyboardHeight, _ ->
78+ param.setMargins(
79+ param.leftMargin,
80+ param.topMargin,
81+ param.rightMargin,
82+ keyboardHeight - 300
83+ )
84+ binding.txtAnswerAnswer.layoutParams = param
85+ Log .d(" keyboard" , keyboardHeight.toString())
86+ },
87+ onHideKeyboard = {
88+ param.setMargins(param.leftMargin, param.topMargin, param.rightMargin, 30 )
89+ binding.txtAnswerAnswer.layoutParams = param
90+ }
91+ )
6492 }
6593
6694 private fun setTitleText (answerData : AnswerData ) {
@@ -97,6 +125,10 @@ class AnswerActivity : BindingActivity<ActivityAnswerBinding>(R.layout.activity_
97125 lifecycleScope.launch {
98126 answerViewModel.registerAnswer(requestAnswerData)
99127 delay(500 )
128+ recordClickEvent(
129+ " BUTTON" ,
130+ " CLICK_ANSWER_SUBMIT"
131+ )
100132 val position = intent.getIntExtra(" position" , - 1 )
101133 intent.putExtra(" position" , position)
102134 intent.putExtra(" content" , answerViewModel.answer.value)
@@ -106,6 +138,10 @@ class AnswerActivity : BindingActivity<ActivityAnswerBinding>(R.layout.activity_
106138 } else if (status == IS_CHANGE_VALUE ) {
107139 lifecycleScope.launch {
108140 answerViewModel.modifyAnswer(requestAnswerData)
141+ recordClickEvent(
142+ " BUTTON" ,
143+ " CLICK_ANSWER_MODIFY"
144+ )
109145 delay(500 )
110146 finish()
111147 }
0 commit comments