diff --git a/android/festago/app/src/main/AndroidManifest.xml b/android/festago/app/src/main/AndroidManifest.xml index 106bd5e0d..01e09ec2f 100644 --- a/android/festago/app/src/main/AndroidManifest.xml +++ b/android/festago/app/src/main/AndroidManifest.xml @@ -3,6 +3,7 @@ xmlns:tools="http://schemas.android.com/tools"> + - @@ -26,6 +24,12 @@ + + diff --git a/android/festago/app/src/main/java/com/festago/festago/presentation/ui/MainViewModel.kt b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/MainViewModel.kt index 0e2ec5e97..13d11cd9b 100644 --- a/android/festago/app/src/main/java/com/festago/festago/presentation/ui/MainViewModel.kt +++ b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/MainViewModel.kt @@ -37,7 +37,7 @@ class MainViewModel( fun loadTicket() { viewModelScope.launch(exceptionHandler) { - _ticket.postValue(ticketRepository.loadTicket(0L).toPresentation()) + _ticket.postValue(ticketRepository.loadTicket(9L).toPresentation()) } } diff --git a/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/HomeActivity.kt b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/HomeActivity.kt new file mode 100644 index 000000000..584534f85 --- /dev/null +++ b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/HomeActivity.kt @@ -0,0 +1,59 @@ +package com.festago.festago.presentation.ui.home + +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.Fragment +import com.festago.festago.R +import com.festago.festago.databinding.ActivityHomeBinding +import com.festago.festago.presentation.ui.home.festivallist.FestivalListFragment +import com.festago.festago.presentation.ui.home.mypage.MyPageFragment +import com.festago.festago.presentation.ui.home.ticketlist.TicketListFragment + +class HomeActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + val binding = ActivityHomeBinding.inflate(layoutInflater) + setContentView(binding.root) + + binding.bnvHome.setOnItemSelectedListener { + when (getItemType(it.itemId)) { + HomeItemType.FESTIVAL_LIST -> changeFragment() + HomeItemType.TICKET_LIST -> changeFragment() + HomeItemType.MY_PAGE -> changeFragment() + } + true + } + + changeFragment() + } + + private fun getItemType(menuItemId: Int): HomeItemType { + return when (menuItemId) { + R.id.item_festival -> HomeItemType.FESTIVAL_LIST + R.id.item_mypage -> HomeItemType.MY_PAGE + R.id.item_ticket -> HomeItemType.TICKET_LIST + else -> throw IllegalArgumentException("menu item id not found") + } + } + + private inline fun changeFragment() { + val tag = T::class.java.name + val fragmentTransaction = supportFragmentManager.beginTransaction() + + supportFragmentManager.fragments.forEach { fragment -> + fragmentTransaction.hide(fragment) + } + + var targetFragment = supportFragmentManager.findFragmentByTag(tag) + + if (targetFragment == null) { + targetFragment = T::class.java.newInstance() + fragmentTransaction.add(R.id.fcv_home_container, targetFragment, tag) + } else { + fragmentTransaction.show(targetFragment) + } + + fragmentTransaction.commit() + } +} diff --git a/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/HomeItemType.kt b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/HomeItemType.kt new file mode 100644 index 000000000..4c4ff6d7b --- /dev/null +++ b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/HomeItemType.kt @@ -0,0 +1,7 @@ +package com.festago.festago.presentation.ui.home + +enum class HomeItemType { + FESTIVAL_LIST, + TICKET_LIST, + MY_PAGE, +} diff --git a/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/festivallist/FestivalListFragment.kt b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/festivallist/FestivalListFragment.kt new file mode 100644 index 000000000..9e4642002 --- /dev/null +++ b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/festivallist/FestivalListFragment.kt @@ -0,0 +1,29 @@ +package com.festago.festago.presentation.ui.home.festivallist + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.festago.festago.R +import com.festago.festago.databinding.FragmentFestivalListBinding + +class FestivalListFragment : Fragment(R.layout.fragment_festival_list) { + + private var _binding: FragmentFestivalListBinding? = null + private val binding get() = _binding!! + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle?, + ): View { + _binding = FragmentFestivalListBinding.inflate(inflater) + return binding.root + } + + override fun onDestroyView() { + _binding = null + super.onDestroyView() + } +} diff --git a/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/mypage/MyPageFragment.kt b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/mypage/MyPageFragment.kt new file mode 100644 index 000000000..11df5d621 --- /dev/null +++ b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/mypage/MyPageFragment.kt @@ -0,0 +1,29 @@ +package com.festago.festago.presentation.ui.home.mypage + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.festago.festago.R +import com.festago.festago.databinding.FragmentMyPageBinding + +class MyPageFragment : Fragment(R.layout.fragment_my_page) { + + private var _binding: FragmentMyPageBinding? = null + private val binding get() = _binding!! + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle?, + ): View { + _binding = FragmentMyPageBinding.inflate(inflater) + return binding.root + } + + override fun onDestroyView() { + _binding = null + super.onDestroyView() + } +} diff --git a/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/ticketlist/TicketListFragment.kt b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/ticketlist/TicketListFragment.kt new file mode 100644 index 000000000..903ed145c --- /dev/null +++ b/android/festago/app/src/main/java/com/festago/festago/presentation/ui/home/ticketlist/TicketListFragment.kt @@ -0,0 +1,29 @@ +package com.festago.festago.presentation.ui.home.ticketlist + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.festago.festago.R +import com.festago.festago.databinding.FragmentTicketListBinding + +class TicketListFragment : Fragment(R.layout.fragment_ticket_list) { + + private var _binding: FragmentTicketListBinding? = null + private val binding get() = _binding!! + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle?, + ): View { + _binding = FragmentTicketListBinding.inflate(inflater) + return binding.root + } + + override fun onDestroyView() { + _binding = null + super.onDestroyView() + } +} diff --git a/android/festago/app/src/main/res/drawable/ic_bottom_navigation_festival.xml b/android/festago/app/src/main/res/drawable/ic_bottom_navigation_festival.xml new file mode 100644 index 000000000..9edf2ad7c --- /dev/null +++ b/android/festago/app/src/main/res/drawable/ic_bottom_navigation_festival.xml @@ -0,0 +1,5 @@ + + + diff --git a/android/festago/app/src/main/res/drawable/ic_bottom_navigation_user.xml b/android/festago/app/src/main/res/drawable/ic_bottom_navigation_user.xml new file mode 100644 index 000000000..bd8dc808f --- /dev/null +++ b/android/festago/app/src/main/res/drawable/ic_bottom_navigation_user.xml @@ -0,0 +1,5 @@ + + + diff --git a/android/festago/app/src/main/res/layout/activity_home.xml b/android/festago/app/src/main/res/layout/activity_home.xml new file mode 100644 index 000000000..45ad4cb2d --- /dev/null +++ b/android/festago/app/src/main/res/layout/activity_home.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + diff --git a/android/festago/app/src/main/res/layout/fragment_festival_list.xml b/android/festago/app/src/main/res/layout/fragment_festival_list.xml new file mode 100644 index 000000000..b803ce0d0 --- /dev/null +++ b/android/festago/app/src/main/res/layout/fragment_festival_list.xml @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/android/festago/app/src/main/res/layout/fragment_my_page.xml b/android/festago/app/src/main/res/layout/fragment_my_page.xml new file mode 100644 index 000000000..b05c9947a --- /dev/null +++ b/android/festago/app/src/main/res/layout/fragment_my_page.xml @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/android/festago/app/src/main/res/layout/fragment_ticket_list.xml b/android/festago/app/src/main/res/layout/fragment_ticket_list.xml new file mode 100644 index 000000000..06f9b8d17 --- /dev/null +++ b/android/festago/app/src/main/res/layout/fragment_ticket_list.xml @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/android/festago/app/src/main/res/menu/menu_bottom_navigation.xml b/android/festago/app/src/main/res/menu/menu_bottom_navigation.xml new file mode 100644 index 000000000..6689bfc70 --- /dev/null +++ b/android/festago/app/src/main/res/menu/menu_bottom_navigation.xml @@ -0,0 +1,21 @@ + + + + + + diff --git a/android/festago/app/src/main/res/values/strings.xml b/android/festago/app/src/main/res/values/strings.xml index c147dabdb..fcc73bde3 100644 --- a/android/festago/app/src/main/res/values/strings.xml +++ b/android/festago/app/src/main/res/values/strings.xml @@ -21,4 +21,9 @@ 입장 전 입장 완료 외출중 + + + 축제 목록 + 티켓 목록 + 마이페이지