From 21c8f54e476dd625adf8589970105e266067a910 Mon Sep 17 00:00:00 2001 From: JunH1004 Date: Fri, 31 May 2024 15:46:50 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=ED=95=84=ED=84=B0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/moti/ui/map/MapFragment.kt | 36 +++++++++++++++++++ moti/app/src/main/res/layout/fragment_map.xml | 11 ++++-- moti/app/src/main/res/values/strings.xml | 11 ++++++ 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/moti/app/src/main/java/com/example/moti/ui/map/MapFragment.kt b/moti/app/src/main/java/com/example/moti/ui/map/MapFragment.kt index 4f2aa93..6088fa3 100644 --- a/moti/app/src/main/java/com/example/moti/ui/map/MapFragment.kt +++ b/moti/app/src/main/java/com/example/moti/ui/map/MapFragment.kt @@ -16,7 +16,10 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.AdapterView +import android.widget.ArrayAdapter import android.widget.ImageButton +import android.widget.Spinner import android.widget.TextView import androidx.activity.result.contract.ActivityResultContracts import androidx.core.app.ActivityCompat @@ -55,6 +58,10 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext class MapFragment : Fragment(), OnMapReadyCallback, GoogleMap.OnMarkerClickListener { + + private lateinit var colorFilterSpinner: Spinner + private var selectedTagColor: TagColor? = null + private val radioButtonViewModel: RadioButtonViewModel by activityViewModels() private lateinit var googleMap: GoogleMap private lateinit var fusedLocationProviderClient: FusedLocationProviderClient @@ -128,6 +135,35 @@ class MapFragment : Fragment(), OnMapReadyCallback, GoogleMap.OnMarkerClickListe tagColorViewModel.selectedTagColor.observe(viewLifecycleOwner) { tagColor -> updateMarkerColor(tagColor) } + colorFilterSpinner = view.findViewById(R.id.spinner_color_filter) + val adapter = ArrayAdapter.createFromResource( + requireContext(), + R.array.tag_colors_array, + android.R.layout.simple_spinner_item + ) + adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) + colorFilterSpinner.adapter = adapter + + colorFilterSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected(parent: AdapterView<*>, view: View?, position: Int, id: Long) { + selectedTagColor = when (position) { + 1 -> TagColor.RD + 2 -> TagColor.OG + 3 -> TagColor.YE + 4 -> TagColor.GN + 5 -> TagColor.BU + 6 -> TagColor.PU + 7 -> TagColor.BK + else -> null + } + updateMarkers() + } + + override fun onNothingSelected(parent: AdapterView<*>) { + selectedTagColor = null + updateMarkers() + } + } } private fun updateMarkerColor(tagColor: TagColor) { diff --git a/moti/app/src/main/res/layout/fragment_map.xml b/moti/app/src/main/res/layout/fragment_map.xml index b0fc269..6b8427a 100644 --- a/moti/app/src/main/res/layout/fragment_map.xml +++ b/moti/app/src/main/res/layout/fragment_map.xml @@ -1,9 +1,9 @@ - \ No newline at end of file + + diff --git a/moti/app/src/main/res/values/strings.xml b/moti/app/src/main/res/values/strings.xml index 3cce942..7b4bab4 100644 --- a/moti/app/src/main/res/values/strings.xml +++ b/moti/app/src/main/res/values/strings.xml @@ -16,4 +16,15 @@ silent alarm 공유 취소 완료 + + 모든 색상 + 빨강 + 주황 + 노랑 + 초록 + 파랑 + 보라 + 검정 + + \ No newline at end of file From 9590e2ed4e5f58c8e10efa81da3b6df1412bc48a Mon Sep 17 00:00:00 2001 From: JunH1004 Date: Fri, 31 May 2024 15:51:20 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=ED=95=84=ED=84=B0=EB=A7=81=20=EB=B0=A9?= =?UTF-8?q?=EC=8B=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 아니 근데 왜 메인화면엔 안 뜨냐? --- .../java/com/example/moti/ui/map/MapFragment.kt | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/moti/app/src/main/java/com/example/moti/ui/map/MapFragment.kt b/moti/app/src/main/java/com/example/moti/ui/map/MapFragment.kt index 6088fa3..b0e57ac 100644 --- a/moti/app/src/main/java/com/example/moti/ui/map/MapFragment.kt +++ b/moti/app/src/main/java/com/example/moti/ui/map/MapFragment.kt @@ -141,9 +141,13 @@ class MapFragment : Fragment(), OnMapReadyCallback, GoogleMap.OnMarkerClickListe R.array.tag_colors_array, android.R.layout.simple_spinner_item ) + + filteringMarkers() + adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) colorFilterSpinner.adapter = adapter + colorFilterSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { override fun onItemSelected(parent: AdapterView<*>, view: View?, position: Int, id: Long) { selectedTagColor = when (position) { @@ -156,12 +160,12 @@ class MapFragment : Fragment(), OnMapReadyCallback, GoogleMap.OnMarkerClickListe 7 -> TagColor.BK else -> null } - updateMarkers() + filteringMarkers() } override fun onNothingSelected(parent: AdapterView<*>) { selectedTagColor = null - updateMarkers() + filteringMarkers() } } } @@ -319,6 +323,13 @@ class MapFragment : Fragment(), OnMapReadyCallback, GoogleMap.OnMarkerClickListe TagColor.BK to R.drawable.black_pin_marker ) + private fun filteringMarkers() { + markers.forEach { marker -> + val place = places.find { it.alarmId.toString() == marker.snippet } + marker.isVisible = selectedTagColor == null || place?.tagColor == selectedTagColor + } + } + private fun updateMarkers() { markers.forEach { marker -> // 마커 아이콘을 변경하는 애니메이션 From 3b3133e8a1cc496c955623ddad795e6cc9934fc7 Mon Sep 17 00:00:00 2001 From: JunH1004 Date: Fri, 31 May 2024 16:02:29 +0900 Subject: [PATCH 3/3] =?UTF-8?q?Snipper=20=EB=B0=B0=EA=B2=BD=20=ED=9D=B0?= =?UTF-8?q?=EC=83=89=EC=9C=BC=EB=A1=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/example/moti/ui/map/MapFragment.kt | 10 ++++------ moti/app/src/main/res/drawable/spinner_background.xml | 5 +++++ .../main/res/layout/custom_spinner_dropdown_item.xml | 10 ++++++++++ moti/app/src/main/res/layout/custom_spinner_item.xml | 10 ++++++++++ moti/app/src/main/res/layout/fragment_map.xml | 5 +++-- 5 files changed, 32 insertions(+), 8 deletions(-) create mode 100644 moti/app/src/main/res/drawable/spinner_background.xml create mode 100644 moti/app/src/main/res/layout/custom_spinner_dropdown_item.xml create mode 100644 moti/app/src/main/res/layout/custom_spinner_item.xml diff --git a/moti/app/src/main/java/com/example/moti/ui/map/MapFragment.kt b/moti/app/src/main/java/com/example/moti/ui/map/MapFragment.kt index b0e57ac..bbb2fd0 100644 --- a/moti/app/src/main/java/com/example/moti/ui/map/MapFragment.kt +++ b/moti/app/src/main/java/com/example/moti/ui/map/MapFragment.kt @@ -135,19 +135,17 @@ class MapFragment : Fragment(), OnMapReadyCallback, GoogleMap.OnMarkerClickListe tagColorViewModel.selectedTagColor.observe(viewLifecycleOwner) { tagColor -> updateMarkerColor(tagColor) } + + colorFilterSpinner = view.findViewById(R.id.spinner_color_filter) val adapter = ArrayAdapter.createFromResource( requireContext(), R.array.tag_colors_array, - android.R.layout.simple_spinner_item + R.layout.custom_spinner_item ) - - filteringMarkers() - - adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) + adapter.setDropDownViewResource(R.layout.custom_spinner_dropdown_item) colorFilterSpinner.adapter = adapter - colorFilterSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { override fun onItemSelected(parent: AdapterView<*>, view: View?, position: Int, id: Long) { selectedTagColor = when (position) { diff --git a/moti/app/src/main/res/drawable/spinner_background.xml b/moti/app/src/main/res/drawable/spinner_background.xml new file mode 100644 index 0000000..535b5fa --- /dev/null +++ b/moti/app/src/main/res/drawable/spinner_background.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/moti/app/src/main/res/layout/custom_spinner_dropdown_item.xml b/moti/app/src/main/res/layout/custom_spinner_dropdown_item.xml new file mode 100644 index 0000000..7b24473 --- /dev/null +++ b/moti/app/src/main/res/layout/custom_spinner_dropdown_item.xml @@ -0,0 +1,10 @@ + + diff --git a/moti/app/src/main/res/layout/custom_spinner_item.xml b/moti/app/src/main/res/layout/custom_spinner_item.xml new file mode 100644 index 0000000..45eac3c --- /dev/null +++ b/moti/app/src/main/res/layout/custom_spinner_item.xml @@ -0,0 +1,10 @@ + + diff --git a/moti/app/src/main/res/layout/fragment_map.xml b/moti/app/src/main/res/layout/fragment_map.xml index 6b8427a..db1cedf 100644 --- a/moti/app/src/main/res/layout/fragment_map.xml +++ b/moti/app/src/main/res/layout/fragment_map.xml @@ -40,6 +40,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="16dp" - android:layout_gravity="top|end" - android:entries="@array/tag_colors_array" /> + android:layout_gravity="top|start" + android:entries="@array/tag_colors_array" + android:background="@drawable/spinner_background" />