diff --git a/SPOTeam_android/app/src/main/java/com/example/spoteam_android/checklist/CheckListLocationActivity.kt b/SPOTeam_android/app/src/main/java/com/example/spoteam_android/checklist/CheckListLocationActivity.kt index bcef9629..9885cf09 100644 --- a/SPOTeam_android/app/src/main/java/com/example/spoteam_android/checklist/CheckListLocationActivity.kt +++ b/SPOTeam_android/app/src/main/java/com/example/spoteam_android/checklist/CheckListLocationActivity.kt @@ -50,7 +50,7 @@ class CheckListLocationActivity : AppCompatActivity() { binding.checklistspotLocationPlusBt.setOnClickListener { - if (selectedLocations.size < 5) { + if (selectedLocations.size < 10) { val intent = Intent(this, LocationSearchActivity::class.java) startForResult.launch(intent) } else { @@ -104,7 +104,7 @@ class CheckListLocationActivity : AppCompatActivity() { } private fun updateButtonStates() { - binding.checklistspotLocationPlusBt.isEnabled = selectedLocations.size < 5 + binding.checklistspotLocationPlusBt.isEnabled = selectedLocations.size < 10 binding.checklistspotLocationFinishBt.isEnabled = selectedLocations.isNotEmpty() } } diff --git a/SPOTeam_android/app/src/main/java/com/example/spoteam_android/login/LocationSearchActivity.kt b/SPOTeam_android/app/src/main/java/com/example/spoteam_android/login/LocationSearchActivity.kt index 690f3f24..551e1847 100644 --- a/SPOTeam_android/app/src/main/java/com/example/spoteam_android/login/LocationSearchActivity.kt +++ b/SPOTeam_android/app/src/main/java/com/example/spoteam_android/login/LocationSearchActivity.kt @@ -1,12 +1,15 @@ package com.example.spoteam_android.login import LocationSearchAdapter +import android.content.Context import android.content.Intent import android.os.Bundle import android.text.Editable import android.text.TextWatcher import android.view.MotionEvent import android.view.View +import android.view.inputmethod.EditorInfo +import android.view.inputmethod.InputMethodManager import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager @@ -24,7 +27,7 @@ class LocationSearchActivity : AppCompatActivity() { private lateinit var binding: ActivityLocationSearchBinding private lateinit var locationSearchAdapter: LocationSearchAdapter private val locationItemList = mutableListOf() - private var searchTimer: Timer? = null // 디바운스 타이머 + private var searchTimer: Timer? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -41,14 +44,14 @@ class LocationSearchActivity : AppCompatActivity() { setupRecyclerView() setupSearchFunctionality() - // TSV 데이터를 백그라운드에서 파싱 lifecycleScope.launch(Dispatchers.IO) { val data = parseTsvDataFromAssets() withContext(Dispatchers.Main) { locationItemList.clear() locationItemList.addAll(data) locationSearchAdapter.notifyDataSetChanged() - binding.activityLocationRv.visibility = if (locationSearchAdapter.itemCount > 0) View.VISIBLE else View.GONE + binding.activityLocationRv.visibility = + if (locationSearchAdapter.itemCount > 0) View.VISIBLE else View.GONE } } } @@ -71,27 +74,40 @@ class LocationSearchActivity : AppCompatActivity() { } private fun setupSearchFunctionality() { - binding.activityLocationSearchEt.setOnTouchListener { v, event -> + binding.activityLocationSearchEt.setOnTouchListener { _, event -> if (event.action == MotionEvent.ACTION_UP) { val drawableEnd = binding.activityLocationSearchEt.compoundDrawables[2] - if (drawableEnd != null && event.rawX >= (binding.activityLocationSearchEt.right - drawableEnd.bounds.width())) { + if (drawableEnd != null && + event.rawX >= (binding.activityLocationSearchEt.right - drawableEnd.bounds.width()) + ) { performSearch() + hideKeyboard() return@setOnTouchListener true } } false } + binding.activityLocationSearchEt.setOnEditorActionListener { _, actionId, _ -> + if (actionId == EditorInfo.IME_ACTION_SEARCH) { + performSearch() + hideKeyboard() + true + } else { + false + } + } binding.activityLocationSearchEt.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { - // 디바운스: 일정 시간 지난 후 검색 실행 searchTimer?.cancel() searchTimer = Timer().apply { schedule(object : TimerTask() { override fun run() { - runOnUiThread { performSearch() } + runOnUiThread { + performSearch() + } } - }, 300) // 300ms 후에 검색 + }, 300) } } @@ -100,9 +116,6 @@ class LocationSearchActivity : AppCompatActivity() { }) } - /** - * Assets에서 TSV 데이터를 읽어 리스트로 반환 - */ private suspend fun parseTsvDataFromAssets(): List { return withContext(Dispatchers.IO) { val inputStream = assets.open("region_data_processed.tsv") @@ -129,9 +142,6 @@ class LocationSearchActivity : AppCompatActivity() { } } - /** - * 현재 쿼리를 기준으로 데이터를 필터링 - */ private fun performSearch() { val query = binding.activityLocationSearchEt.text.toString().trim() @@ -149,8 +159,14 @@ class LocationSearchActivity : AppCompatActivity() { withContext(Dispatchers.Main) { locationSearchAdapter.updateList(filteredList) - binding.activityLocationRv.visibility = if (filteredList.isNotEmpty()) View.VISIBLE else View.GONE + binding.activityLocationRv.visibility = + if (filteredList.isNotEmpty()) View.VISIBLE else View.GONE } } } + + private fun hideKeyboard() { + val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager + imm.hideSoftInputFromWindow(binding.activityLocationSearchEt.windowToken, 0) + } } diff --git a/SPOTeam_android/app/src/main/res/drawable/onboarding_logo.png b/SPOTeam_android/app/src/main/res/drawable/onboarding_logo.png new file mode 100644 index 00000000..803b6fd5 Binary files /dev/null and b/SPOTeam_android/app/src/main/res/drawable/onboarding_logo.png differ diff --git a/SPOTeam_android/app/src/main/res/layout/activity_check_list_location.xml b/SPOTeam_android/app/src/main/res/layout/activity_check_list_location.xml index 730aaec1..f078dfda 100644 --- a/SPOTeam_android/app/src/main/res/layout/activity_check_list_location.xml +++ b/SPOTeam_android/app/src/main/res/layout/activity_check_list_location.xml @@ -43,26 +43,43 @@ android:id="@+id/checklist_bottom_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginStart="20dp" android:layout_marginTop="13dp" android:fontFamily="@font/suit_variable_font" android:text="지역은 10개까지 설정 가능합니다." android:textColor="@color/g400" android:textFontWeight="600" android:textSize="13.8dp" - android:layout_marginStart="20dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/checklist_tv" /> - + app:layout_constraintEnd_toEndOf="parent"> + + + + + diff --git a/SPOTeam_android/app/src/main/res/layout/activity_location_search.xml b/SPOTeam_android/app/src/main/res/layout/activity_location_search.xml index 2a9e3579..875ba20e 100644 --- a/SPOTeam_android/app/src/main/res/layout/activity_location_search.xml +++ b/SPOTeam_android/app/src/main/res/layout/activity_location_search.xml @@ -50,6 +50,8 @@ android:drawableEnd="@drawable/location_search_resize" android:hint="○○시, ○○구,○○동" android:maxLines="1" + android:imeOptions="actionSearch" + android:inputType="text" android:textSize="14.4dp" android:fontFamily="@font/suit_variable" android:textFontWeight="600" diff --git a/SPOTeam_android/app/src/main/res/layout/activity_nic_name.xml b/SPOTeam_android/app/src/main/res/layout/activity_nic_name.xml index 99abdd8b..78405ec3 100644 --- a/SPOTeam_android/app/src/main/res/layout/activity_nic_name.xml +++ b/SPOTeam_android/app/src/main/res/layout/activity_nic_name.xml @@ -35,7 +35,7 @@ android:layout_marginTop="90.72dp" android:fontFamily="@font/suit_bold" android:lineSpacingExtra="8dp" - android:text="스팟에 활동할\n내 닉네임을 정해볼까요?" + android:text="스팟에서 활동할\n내 닉네임을 정해볼까요?" android:textColor="@color/b500" android:textSize="18dp" app:layout_constraintStart_toStartOf="parent" diff --git a/SPOTeam_android/app/src/main/res/layout/activity_splash.xml b/SPOTeam_android/app/src/main/res/layout/activity_splash.xml index 7d02efc5..ccdb7b15 100644 --- a/SPOTeam_android/app/src/main/res/layout/activity_splash.xml +++ b/SPOTeam_android/app/src/main/res/layout/activity_splash.xml @@ -4,7 +4,6 @@ android:layout_height="match_parent" android:background="@color/white"> - diff --git a/SPOTeam_android/app/src/main/res/values/strings.xml b/SPOTeam_android/app/src/main/res/values/strings.xml index 9dc7b732..2a720329 100644 --- a/SPOTeam_android/app/src/main/res/values/strings.xml +++ b/SPOTeam_android/app/src/main/res/values/strings.xml @@ -1,5 +1,5 @@ - Spot + 스팟 Interest_Study Home Dashboard