Skip to content

Commit 7a2434b

Browse files
authored
Merge pull request #287 from TeamDMU/refactor/navigation-bar
Refactor: ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ ์ƒ๋‹จ๋ฐ” ๋””์ž์ธ ๋ฐ ๊ธฐ๋Šฅ ์ˆ˜์ •
2 parents f5b07a2 + 17ebc44 commit 7a2434b

File tree

17 files changed

+112
-64
lines changed

17 files changed

+112
-64
lines changed

โ€Žapp/src/main/AndroidManifest.xmlโ€Ž

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@
2020
android:supportsRtl="true"
2121
android:theme="@style/Theme.YouDongKnowMe"
2222
android:usesCleartextTraffic="true">
23+
<activity
24+
android:name=".ui.view.search.SearchActivity"
25+
android:exported="false" />
2326
<activity
2427
android:name=".ui.view.setting.OnboardingPermissionActivity"
2528
android:exported="false" />

โ€Žapp/src/main/java/com/dongyang/android/youdongknowme/ui/view/notice/NoticeFragment.ktโ€Ž

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package com.dongyang.android.youdongknowme.ui.view.notice
22

3+
import android.content.Intent
4+
import androidx.navigation.fragment.findNavController
35
import androidx.recyclerview.widget.LinearLayoutManager
46
import androidx.recyclerview.widget.RecyclerView
57
import com.dongyang.android.youdongknowme.R
68
import com.dongyang.android.youdongknowme.databinding.FragmentNoticeBinding
79
import com.dongyang.android.youdongknowme.standard.base.BaseFragment
810
import com.dongyang.android.youdongknowme.ui.adapter.NoticeAdapter
911
import com.dongyang.android.youdongknowme.ui.view.detail.DetailActivity
12+
import com.dongyang.android.youdongknowme.ui.view.search.SearchActivity
1013
import com.dongyang.android.youdongknowme.ui.view.util.EventObserver
1114
import com.google.android.material.tabs.TabLayout
1215
import org.koin.androidx.viewmodel.ext.android.viewModel
@@ -28,6 +31,11 @@ class NoticeFragment : BaseFragment<FragmentNoticeBinding, NoticeViewModel>() {
2831
}
2932
setupTabLayout()
3033
setupInfinityScroll()
34+
35+
binding.btnSearch.setOnClickListener {
36+
val intent = Intent(requireContext(), SearchActivity::class.java)
37+
startActivity(intent)
38+
}
3139
}
3240

3341
override fun initDataBinding() {
Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,11 @@ import android.text.TextWatcher
66
import android.view.View
77
import android.view.ViewGroup
88
import android.view.inputmethod.EditorInfo
9-
import androidx.recyclerview.widget.DividerItemDecoration
109
import androidx.recyclerview.widget.LinearLayoutManager
1110
import androidx.recyclerview.widget.RecyclerView
1211
import com.dongyang.android.youdongknowme.R
13-
import com.dongyang.android.youdongknowme.databinding.FragmentSearchBinding
14-
import com.dongyang.android.youdongknowme.standard.base.BaseFragment
12+
import com.dongyang.android.youdongknowme.databinding.ActivitySearchBinding
13+
import com.dongyang.android.youdongknowme.standard.base.BaseActivity
1514
import com.dongyang.android.youdongknowme.standard.util.dpToPx
1615
import com.dongyang.android.youdongknowme.ui.adapter.NoticeAdapter
1716
import com.dongyang.android.youdongknowme.ui.view.detail.DetailActivity
@@ -20,9 +19,9 @@ import com.dongyang.android.youdongknowme.ui.view.util.hideKeyboard
2019
import com.dongyang.android.youdongknowme.ui.view.util.showKeyboard
2120
import org.koin.androidx.viewmodel.ext.android.viewModel
2221

23-
class SearchFragment : BaseFragment<FragmentSearchBinding, SearchViewModel>() {
22+
class SearchActivity : BaseActivity<ActivitySearchBinding, SearchViewModel>() {
2423

25-
override val layoutResourceId: Int = R.layout.fragment_search
24+
override val layoutResourceId: Int = R.layout.activity_search
2625
override val viewModel: SearchViewModel by viewModel()
2726

2827
private lateinit var adapter: NoticeAdapter
@@ -40,12 +39,12 @@ class SearchFragment : BaseFragment<FragmentSearchBinding, SearchViewModel>() {
4039
}
4140

4241
override fun initDataBinding() {
43-
viewModel.isLoading.observe(viewLifecycleOwner) {
42+
viewModel.isLoading.observe(this) {
4443
if (it) showLoading()
4544
else dismissLoading()
4645
}
4746

48-
viewModel.searchNotices.observe(viewLifecycleOwner) { searchNotices ->
47+
viewModel.searchNotices.observe(this) { searchNotices ->
4948
if (searchNotices.isNotEmpty()) {
5049
setupRecyclerViewMargin()
5150
adapter.submitList(searchNotices)
@@ -56,15 +55,15 @@ class SearchFragment : BaseFragment<FragmentSearchBinding, SearchViewModel>() {
5655
}
5756
}
5857

59-
viewModel.searchContent.observe(viewLifecycleOwner) { content ->
58+
viewModel.searchContent.observe(this) { content ->
6059
searchContent = content
6160
}
6261

63-
viewModel.errorState.observe(viewLifecycleOwner, EventObserver { resId ->
62+
viewModel.errorState.observe(this, EventObserver { resId ->
6463
showToast(getString(resId))
6564
})
6665

67-
viewModel.noSearchResult.observe(viewLifecycleOwner) { noSearchResult ->
66+
viewModel.noSearchResult.observe(this) { noSearchResult ->
6867
if (noSearchResult) {
6968
binding.clSearchEmpty.visibility = View.VISIBLE
7069
} else {
@@ -73,18 +72,20 @@ class SearchFragment : BaseFragment<FragmentSearchBinding, SearchViewModel>() {
7372
}
7473
}
7574

76-
override fun initAfterBinding() = Unit
75+
override fun initAfterBinding() {
76+
binding.toolbarSearch.btnToolbarExit.setOnClickListener { finish() }
77+
}
7778

7879
private fun setupRecyclerViewMargin() {
7980
if (::adapter.isInitialized.not()) {
8081
val marginDp = SEARCH_RESULT_RECYCLERVIEW_MARGIN_TOP_FOR_TOUCH
81-
val marginPx = marginDp.dpToPx(requireContext())
82+
val marginPx = marginDp.dpToPx(this)
8283
val layoutParams = binding.rvSearchResult.layoutParams as ViewGroup.MarginLayoutParams
8384
layoutParams.topMargin = marginPx
8485
binding.rvSearchResult.layoutParams = layoutParams
8586
} else {
8687
val marginDp = SEARCH_RESULT_RECYCLERVIEW_MARGIN_TOP_DEFAULT
87-
val marginPx = marginDp.dpToPx(requireContext())
88+
val marginPx = marginDp.dpToPx(this)
8889
val layoutParams = binding.rvSearchResult.layoutParams as ViewGroup.MarginLayoutParams
8990
layoutParams.topMargin = marginPx
9091
binding.rvSearchResult.layoutParams = layoutParams
@@ -94,22 +95,22 @@ class SearchFragment : BaseFragment<FragmentSearchBinding, SearchViewModel>() {
9495
private fun setupRecyclerview() {
9596
adapter = NoticeAdapter(onItemClick = { url -> navigateToDetail(url) })
9697
binding.rvSearchResult.apply {
97-
this.adapter = this@SearchFragment.adapter
98-
layoutManager = LinearLayoutManager(requireActivity())
98+
this.adapter = this@SearchActivity.adapter
99+
layoutManager = LinearLayoutManager(this@SearchActivity)
99100
itemAnimator = null
100101
setHasFixedSize(true)
101102
}
102103
}
103104

104105
private fun showKeyboardOnEditTextFocus() {
105106
binding.etSearchBar.requestFocus()
106-
requireContext().showKeyboard(binding.etSearchBar)
107+
showKeyboard(binding.etSearchBar)
107108
}
108109

109110
@SuppressLint("ClickableViewAccessibility")
110111
private fun setupHideKeyboardOnOutsideTouch() {
111112
binding.root.setOnTouchListener { _, _ ->
112-
requireContext().hideKeyboard(binding.root)
113+
hideKeyboard(binding.root)
113114
false
114115
}
115116
}
@@ -127,7 +128,7 @@ class SearchFragment : BaseFragment<FragmentSearchBinding, SearchViewModel>() {
127128
}
128129
})
129130

130-
viewModel.searchClearVisibility.observe(viewLifecycleOwner) { isValid ->
131+
viewModel.searchClearVisibility.observe(this) { isValid ->
131132
binding.ivSearchClear.visibility = if (isValid) View.VISIBLE else View.GONE
132133
}
133134
}
@@ -139,7 +140,7 @@ class SearchFragment : BaseFragment<FragmentSearchBinding, SearchViewModel>() {
139140
}
140141

141142
private fun onSearchBtnClickListener() {
142-
binding.etSearchBar.setOnEditorActionListener { v, actionId, event ->
143+
binding.etSearchBar.setOnEditorActionListener { _, actionId, _ ->
143144
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
144145
if (validateSearchContentLength()) {
145146
viewModel.fetchSearchNotices()
@@ -148,7 +149,7 @@ class SearchFragment : BaseFragment<FragmentSearchBinding, SearchViewModel>() {
148149
binding.etSearchBar.text.clear()
149150
showToast(getString(R.string.search_minimum))
150151
}
151-
requireContext().hideKeyboard(binding.root)
152+
hideKeyboard(binding.root)
152153
true
153154
} else {
154155
false
@@ -161,7 +162,7 @@ class SearchFragment : BaseFragment<FragmentSearchBinding, SearchViewModel>() {
161162
}
162163

163164
private fun navigateToDetail(url: String) {
164-
val intent = DetailActivity.newIntent(requireContext(), url)
165+
val intent = DetailActivity.newIntent(this, url)
165166
startActivity(intent)
166167
}
167168

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
<vector android:height="10.240964dp" android:viewportHeight="85"
2-
android:viewportWidth="83" android:width="10dp" xmlns:android="http://schemas.android.com/apk/res/android">
3-
<path android:fillColor="#7F8295" android:pathData="M0,21.483a19,21.483 0,1 0,38 0a19,21.483 0,1 0,-38 0z"/>
4-
<path android:fillColor="#7F8295" android:pathData="M18.405,28.636L18.845,28.636A5,5 0,0 1,23.845 33.636L23.845,79.119A5,5 0,0 1,18.845 84.119L18.405,84.119A5,5 0,0 1,13.405 79.119L13.405,33.636A5,5 0,0 1,18.405 28.636z"/>
5-
<path android:fillColor="#7F8295" android:pathData="M57.703,0.398L57.703,0.398A4.945,4.945 0,0 1,62.648 5.343L62.648,79.572A4.945,4.945 0,0 1,57.703 84.517L57.703,84.517A4.945,4.945 0,0 1,52.758 79.572L52.758,5.343A4.945,4.945 0,0 1,57.703 0.398z"/>
6-
<path android:fillColor="#7F8295" android:pathData="M77.484,0.398L77.484,0.398A4.945,4.945 0,0 1,82.429 5.343L82.429,79.572A4.945,4.945 0,0 1,77.484 84.517L77.484,84.517A4.945,4.945 0,0 1,72.539 79.572L72.539,5.343A4.945,4.945 0,0 1,77.484 0.398z"/>
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="25dp"
3+
android:height="24dp"
4+
android:viewportWidth="25"
5+
android:viewportHeight="24">
6+
<path
7+
android:pathData="M9.645,21.021C8.947,21.021 8.524,20.631 8.532,19.951L8.69,10.629C8.69,10.338 8.565,10.123 8.308,10.006C7.212,9.525 6.739,9.019 6.806,7.566L7.03,2.469C7.046,2.104 7.262,1.896 7.603,1.896C7.935,1.896 8.125,2.112 8.125,2.486L8.067,7.441C8.067,7.732 8.258,7.915 8.532,7.915C8.814,7.915 9.014,7.74 9.014,7.466L9.097,2.336C9.105,1.979 9.304,1.772 9.645,1.772C9.985,1.772 10.192,1.979 10.201,2.336L10.284,7.466C10.284,7.74 10.483,7.915 10.765,7.915C11.039,7.915 11.222,7.732 11.222,7.441L11.164,2.486C11.164,2.112 11.363,1.896 11.686,1.896C12.027,1.896 12.243,2.104 12.259,2.469L12.492,7.566C12.55,9.019 12.077,9.525 10.981,10.006C10.724,10.123 10.599,10.338 10.599,10.629L10.765,19.951C10.773,20.631 10.342,21.021 9.645,21.021ZM16.136,13.783C16.152,13.484 16.02,13.252 15.721,13.044L15.231,12.712C14.816,12.439 14.608,12.015 14.608,11.442V11.036C14.608,7.715 15.488,4.204 16.825,2.328C17.09,1.938 17.298,1.772 17.613,1.772C17.912,1.772 18.203,1.971 18.203,2.395V20C18.203,20.665 17.771,21.021 17.065,21.021C16.376,21.021 15.936,20.631 15.961,19.909L16.136,13.783Z"
8+
android:fillColor="#7F8295"/>
79
</vector>
Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1-
<vector android:height="24dp" android:tint="#7F8295"
2-
android:viewportHeight="24" android:viewportWidth="24"
3-
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
4-
<path android:fillColor="@android:color/white" android:pathData="M20,3h-1L19,1h-2v2L7,3L7,1L5,1v2L4,3c-1.1,0 -2,0.9 -2,2v16c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,5c0,-1.1 -0.9,-2 -2,-2zM20,21L4,21L4,8h16v13z"/>
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="25dp"
3+
android:height="24dp"
4+
android:viewportWidth="25"
5+
android:viewportHeight="24">
6+
<path
7+
android:pathData="M6.831,19.66C5.096,19.66 4.224,18.805 4.224,17.087V6.952C4.224,5.233 5.096,4.378 6.831,4.378H18.169C19.904,4.378 20.768,5.242 20.768,6.952V17.087C20.768,18.797 19.904,19.66 18.169,19.66H6.831ZM6.706,18.324H18.277C19.016,18.324 19.431,17.934 19.431,17.162V9.334C19.431,8.57 19.016,8.172 18.277,8.172H6.706C5.967,8.172 5.561,8.57 5.561,9.334V17.162C5.561,17.934 5.967,18.324 6.706,18.324ZM10.881,11.152C10.591,11.152 10.491,11.069 10.491,10.778V10.289C10.491,9.998 10.591,9.907 10.881,9.907H11.371C11.662,9.907 11.753,9.998 11.753,10.289V10.778C11.753,11.069 11.662,11.152 11.371,11.152H10.881ZM13.637,11.152C13.347,11.152 13.247,11.069 13.247,10.778V10.289C13.247,9.998 13.347,9.907 13.637,9.907H14.127C14.417,9.907 14.517,9.998 14.517,10.289V10.778C14.517,11.069 14.417,11.152 14.127,11.152H13.637ZM16.393,11.152C16.103,11.152 16.011,11.069 16.011,10.778V10.289C16.011,9.998 16.103,9.907 16.393,9.907H16.883C17.173,9.907 17.273,9.998 17.273,10.289V10.778C17.273,11.069 17.173,11.152 16.883,11.152H16.393ZM8.125,13.866C7.827,13.866 7.735,13.783 7.735,13.493V13.003C7.735,12.712 7.827,12.629 8.125,12.629H8.607C8.906,12.629 8.997,12.712 8.997,13.003V13.493C8.997,13.783 8.906,13.866 8.607,13.866H8.125ZM10.881,13.866C10.591,13.866 10.491,13.783 10.491,13.493V13.003C10.491,12.712 10.591,12.629 10.881,12.629H11.371C11.662,12.629 11.753,12.712 11.753,13.003V13.493C11.753,13.783 11.662,13.866 11.371,13.866H10.881ZM13.637,13.866C13.347,13.866 13.247,13.783 13.247,13.493V13.003C13.247,12.712 13.347,12.629 13.637,12.629H14.127C14.417,12.629 14.517,12.712 14.517,13.003V13.493C14.517,13.783 14.417,13.866 14.127,13.866H13.637ZM16.393,13.866C16.103,13.866 16.011,13.783 16.011,13.493V13.003C16.011,12.712 16.103,12.629 16.393,12.629H16.883C17.173,12.629 17.273,12.712 17.273,13.003V13.493C17.273,13.783 17.173,13.866 16.883,13.866H16.393ZM8.125,16.589C7.827,16.589 7.735,16.498 7.735,16.207V15.717C7.735,15.427 7.827,15.344 8.125,15.344H8.607C8.906,15.344 8.997,15.427 8.997,15.717V16.207C8.997,16.498 8.906,16.589 8.607,16.589H8.125ZM10.881,16.589C10.591,16.589 10.491,16.498 10.491,16.207V15.717C10.491,15.427 10.591,15.344 10.881,15.344H11.371C11.662,15.344 11.753,15.427 11.753,15.717V16.207C11.753,16.498 11.662,16.589 11.371,16.589H10.881ZM13.637,16.589C13.347,16.589 13.247,16.498 13.247,16.207V15.717C13.247,15.427 13.347,15.344 13.637,15.344H14.127C14.417,15.344 14.517,15.427 14.517,15.717V16.207C14.517,16.498 14.417,16.589 14.127,16.589H13.637Z"
8+
android:fillColor="#7F8295"/>
59
</vector>
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2-
android:width="24dp"
2+
android:width="25dp"
33
android:height="24dp"
4-
android:viewportWidth="24"
4+
android:viewportWidth="25"
55
android:viewportHeight="24">
66
<path
7-
android:pathData="M10.359,0.996C10.824,0.623 11.403,0.42 11.999,0.42C12.596,0.42 13.174,0.623 13.639,0.996L21.514,7.296C22.137,7.794 22.5,8.548 22.5,9.346V19.875C22.5,20.571 22.223,21.239 21.731,21.731C21.239,22.223 20.571,22.5 19.875,22.5H14.625C14.327,22.5 14.04,22.381 13.83,22.17C13.618,21.959 13.5,21.673 13.5,21.375V13.5H10.5V21.375C10.5,21.673 10.382,21.959 10.17,22.17C9.96,22.381 9.673,22.5 9.375,22.5H4.125C3.429,22.5 2.761,22.223 2.269,21.731C1.777,21.239 1.5,20.571 1.5,19.875V9.345C1.5,8.548 1.863,7.794 2.486,7.296L10.359,0.996ZM12.234,2.752C12.168,2.699 12.085,2.67 12,2.67C11.915,2.67 11.832,2.699 11.766,2.752L3.891,9.052C3.847,9.088 3.811,9.132 3.787,9.183C3.762,9.234 3.75,9.29 3.75,9.346V19.875C3.75,20.082 3.918,20.25 4.125,20.25H8.25V12.375C8.25,12.076 8.369,11.79 8.58,11.579C8.79,11.368 9.077,11.25 9.375,11.25H14.625C14.923,11.25 15.21,11.368 15.42,11.579C15.632,11.79 15.75,12.076 15.75,12.375V20.25H19.875C19.975,20.25 20.07,20.21 20.14,20.14C20.211,20.07 20.25,19.974 20.25,19.875V9.345C20.25,9.289 20.237,9.233 20.213,9.183C20.188,9.132 20.153,9.087 20.109,9.052L12.234,2.752Z"
7+
android:pathData="M20.045,19.345C19.049,19.345 18.36,18.656 18.36,17.66V4.843C18.36,3.839 19.049,3.15 20.045,3.15C21.058,3.15 21.739,3.839 21.739,4.843V17.66C21.739,18.656 21.058,19.345 20.045,19.345ZM9.653,15.252V7.309C11.794,7.076 14.915,6.362 17.223,5.233V17.319C14.94,16.199 12.002,15.51 9.653,15.252ZM6.731,15.244C4.465,15.244 3.253,14.057 3.253,11.882V10.67C3.253,8.487 4.465,7.309 6.731,7.309H8.516V15.244H6.731ZM10.035,20.864C9.072,20.864 8.557,20.324 8.142,19.419L6.748,16.373C7.013,16.373 7.271,16.39 7.42,16.39C9.52,16.448 10.458,16.522 11.089,16.63L11.554,18.863C11.819,20.142 11.064,20.864 10.035,20.864Z"
88
android:fillColor="#7F8295"/>
99
</vector>

โ€Žapp/src/main/res/drawable/ic_menu_search.xmlโ€Ž

Lines changed: 0 additions & 9 deletions
This file was deleted.

0 commit comments

Comments
ย (0)