From dabfa6994bf8ef423d45a3d4cf89aad0630b490d Mon Sep 17 00:00:00 2001 From: Jokwanhee Date: Wed, 24 Jan 2024 18:31:12 +0900 Subject: [PATCH 1/2] [add] #143 background touch event hide IME --- .../main/java/com/jjbaksa/jjbaksa/ui/login/LoginActivity.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/java/com/jjbaksa/jjbaksa/ui/login/LoginActivity.kt b/app/src/main/java/com/jjbaksa/jjbaksa/ui/login/LoginActivity.kt index 52f6b383..328b0e8f 100644 --- a/app/src/main/java/com/jjbaksa/jjbaksa/ui/login/LoginActivity.kt +++ b/app/src/main/java/com/jjbaksa/jjbaksa/ui/login/LoginActivity.kt @@ -3,6 +3,7 @@ package com.jjbaksa.jjbaksa.ui.login import android.content.Intent import android.text.method.HideReturnsTransformationMethod import android.text.method.PasswordTransformationMethod +import android.view.MotionEvent import androidx.activity.viewModels import androidx.core.content.ContextCompat import androidx.core.widget.addTextChangedListener @@ -137,4 +138,9 @@ class LoginActivity : BaseActivity() { private fun goToActivity(classActivity: Class<*>) { Intent(this, classActivity).also { startActivity(it) } } + + override fun dispatchTouchEvent(ev: MotionEvent?): Boolean { + controlSoftKeyboard(binding.root, false) + return super.dispatchTouchEvent(ev) + } } From 40de10aa9cf56f009ec24b3158b0379291b48c31 Mon Sep 17 00:00:00 2001 From: Jokwanhee Date: Wed, 24 Jan 2024 18:31:48 +0900 Subject: [PATCH 2/2] [add] #143 home back key --- .../jjbaksa/ui/mainpage/MainPageActivity.kt | 3 +++ .../ui/mainpage/home/NaviHomeFragment.kt | 15 +++++++++++ .../ui/mainpage/mypage/NaviMyPageFragment.kt | 21 ++++++++++++--- .../ui/mainpage/write/NaviWriteFragment.kt | 26 ++++++++++++++++--- app/src/main/res/values/strings.xml | 1 + 5 files changed, 58 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/jjbaksa/jjbaksa/ui/mainpage/MainPageActivity.kt b/app/src/main/java/com/jjbaksa/jjbaksa/ui/mainpage/MainPageActivity.kt index 98e7650b..f64f48e1 100644 --- a/app/src/main/java/com/jjbaksa/jjbaksa/ui/mainpage/MainPageActivity.kt +++ b/app/src/main/java/com/jjbaksa/jjbaksa/ui/mainpage/MainPageActivity.kt @@ -87,6 +87,8 @@ class MainPageActivity : BaseActivity() { } } fun showHomeFragment() { + showFragment(naviHomeFragment, NaviHomeFragment.TAG) + binding.navigationView.visibility = View.VISIBLE binding.ivBottomHome.isSelected = true binding.tvBottomHome.isSelected = true binding.bottomHome.performClick() @@ -101,6 +103,7 @@ class MainPageActivity : BaseActivity() { tvBottomMypage.isSelected = false } val findFragment = supportFragmentManager.findFragmentByTag(tag) + supportFragmentManager.fragments.forEach { fm -> supportFragmentManager.beginTransaction().hide(fm).commitAllowingStateLoss() } diff --git a/app/src/main/java/com/jjbaksa/jjbaksa/ui/mainpage/home/NaviHomeFragment.kt b/app/src/main/java/com/jjbaksa/jjbaksa/ui/mainpage/home/NaviHomeFragment.kt index 083c5083..b0ec1b82 100644 --- a/app/src/main/java/com/jjbaksa/jjbaksa/ui/mainpage/home/NaviHomeFragment.kt +++ b/app/src/main/java/com/jjbaksa/jjbaksa/ui/mainpage/home/NaviHomeFragment.kt @@ -6,6 +6,7 @@ import android.content.Intent import android.net.Uri import android.provider.Settings import android.widget.TextView +import androidx.activity.OnBackPressedCallback import androidx.activity.result.contract.ActivityResultContracts import androidx.core.content.ContextCompat import androidx.core.view.isVisible @@ -48,6 +49,20 @@ class NaviHomeFragment : BaseFragment(), OnMapReadyCall private lateinit var tedNaverClusteringBuilder: TedNaverClustering + private var backClickTime = 0L + + override var onBackPressedCallBack: OnBackPressedCallback? = + object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + if (System.currentTimeMillis() - backClickTime >= 2000L) { + backClickTime = System.currentTimeMillis() + showSnackBar(getString(R.string.back_finish)) + } else { + requireActivity().finish() + } + } + } + private val fusedLocationUtil: FusedLocationUtil by lazy { FusedLocationUtil( requireContext(), diff --git a/app/src/main/java/com/jjbaksa/jjbaksa/ui/mainpage/mypage/NaviMyPageFragment.kt b/app/src/main/java/com/jjbaksa/jjbaksa/ui/mainpage/mypage/NaviMyPageFragment.kt index 4a63fda3..8cb32832 100644 --- a/app/src/main/java/com/jjbaksa/jjbaksa/ui/mainpage/mypage/NaviMyPageFragment.kt +++ b/app/src/main/java/com/jjbaksa/jjbaksa/ui/mainpage/mypage/NaviMyPageFragment.kt @@ -12,6 +12,7 @@ import com.jjbaksa.jjbaksa.base.BaseFragment import com.jjbaksa.jjbaksa.databinding.FragmentNaviMyPageBinding import com.jjbaksa.jjbaksa.dialog.MyPageBottomSheetDialog import com.jjbaksa.jjbaksa.ui.mainpage.MainPageActivity +import com.jjbaksa.jjbaksa.ui.mainpage.home.NaviHomeFragment import com.jjbaksa.jjbaksa.ui.mainpage.mypage.adapter.MyPageAdapter import com.jjbaksa.jjbaksa.ui.mainpage.mypage.viewmodel.MyPageViewModel import com.jjbaksa.jjbaksa.ui.setting.SettingActivity @@ -24,15 +25,27 @@ class NaviMyPageFragment : BaseFragment() { get() = R.layout.fragment_navi_my_page private val viewModel: MyPageViewModel by activityViewModels() + private var backClickTime = 0L + private val settingResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { // Handle SettingActivity result } - override var onBackPressedCallBack: OnBackPressedCallback? = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - (requireActivity() as MainPageActivity).showHomeFragment() + override var onBackPressedCallBack: OnBackPressedCallback? = + object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + (requireActivity() as MainPageActivity).showHomeFragment() + + if (parentFragmentManager.findFragmentByTag(NaviHomeFragment.TAG)?.isVisible == true) { + if (System.currentTimeMillis() - backClickTime >= 2000L) { + backClickTime = System.currentTimeMillis() + showSnackBar(getString(R.string.back_finish)) + } else { + requireActivity().finish() + } + } + } } - } override fun initView() { requireActivity().setExtendView(binding.myPageConstraintLayout) diff --git a/app/src/main/java/com/jjbaksa/jjbaksa/ui/mainpage/write/NaviWriteFragment.kt b/app/src/main/java/com/jjbaksa/jjbaksa/ui/mainpage/write/NaviWriteFragment.kt index 86e5e069..79632202 100644 --- a/app/src/main/java/com/jjbaksa/jjbaksa/ui/mainpage/write/NaviWriteFragment.kt +++ b/app/src/main/java/com/jjbaksa/jjbaksa/ui/mainpage/write/NaviWriteFragment.kt @@ -15,6 +15,7 @@ import com.jjbaksa.jjbaksa.databinding.FragmentNaviWriteBinding import com.jjbaksa.jjbaksa.listener.OnClickShopListener import com.jjbaksa.jjbaksa.listener.PaginationScrollListener import com.jjbaksa.jjbaksa.ui.mainpage.MainPageActivity +import com.jjbaksa.jjbaksa.ui.mainpage.home.NaviHomeFragment import com.jjbaksa.jjbaksa.ui.search.AutoCompleteKeywordAdapter import com.jjbaksa.jjbaksa.ui.search.SearchShopAdapter import com.jjbaksa.jjbaksa.ui.search.TrendTextAdapter @@ -24,13 +25,24 @@ import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint class NaviWriteFragment : BaseFragment() { + private var backClickTime = 0L + override val layoutId: Int get() = R.layout.fragment_navi_write - override var onBackPressedCallBack: OnBackPressedCallback? = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - (requireActivity() as MainPageActivity).showHomeFragment() + override var onBackPressedCallBack: OnBackPressedCallback? = + object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + if (parentFragmentManager.findFragmentByTag(NaviHomeFragment.TAG)?.isVisible == true) { + if (System.currentTimeMillis() - backClickTime >= 2000L) { + backClickTime = System.currentTimeMillis() + showSnackBar(getString(R.string.back_finish)) + } else { + requireActivity().finish() + } + } + (requireActivity() as MainPageActivity).showHomeFragment() + } } - } private val keyboardProvider: KeyboardProvider by lazy { KeyboardProvider(requireContext()) } private val naviWriteViewModel: NaviWriteViewModel by viewModels() private val trendTextAdapter: TrendTextAdapter by lazy { TrendTextAdapter(this::onClickTrendKeyword) } @@ -144,26 +156,32 @@ class NaviWriteFragment : BaseFragment() { } } } + private fun locationCallback(latitude: Double, longitude: Double) { naviWriteViewModel.setLocation(latitude, longitude) } + private fun onClickTrendKeyword(trendText: String) { binding.etSearch.setText(trendText) } + private fun onClickKeyword(keyword: String) { binding.etSearch.setText(keyword) autoCompleteKeywordAdapter.submitList(listOf()) autoCompleteKeywordAdapter.notifyDataSetChanged() binding.rvKeyword.visibility = View.GONE } + override fun onStart() { fusedLocationUtil.startLocationUpdate() super.onStart() } + override fun onStop() { fusedLocationUtil.stopLocationUpdates() super.onStop() } + companion object { fun newInstance() = NaviWriteFragment() val TAG = "NaviWriteFragment" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cda297cb..13a49865 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -29,6 +29,7 @@ 잠시만 기다려주세요. 가입되지 않은 정보입니다. 가입하기 + \'뒤로\'버튼 한번 더 누르시면 종료됩니다. 약관 동의 개인정보 이용약관(필수)