Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Hilt로 DI 라이브러리 전환 후, 홈 화면 네비게이션 이동 로직 구현. #10 #31

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity android:name=".presenter.main.MainActivity"
android:exported="true"
android:screenOrientation="portrait" />
</application>

</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import androidx.fragment.app.viewModels
import com.owori.android.core.BaseFragment
import com.owori.android.R
import com.owori.android.databinding.FragmentLoginBinding
import com.owori.android.core.navigateTo
import com.owori.android.presenter.main.MainActivity
import dagger.hilt.android.AndroidEntryPoint


Expand All @@ -26,11 +26,16 @@ class LoginFragment : BaseFragment<FragmentLoginBinding, LoginViewModel>(R.layou
with(viewModel) {
// TODO : PolicyFragment를 위해 작성한 부분이라 수정 필요.
callKakaoLogin.observe(viewLifecycleOwner) {
navigateTo(R.id.action_loginFragment_to_PolicyFragment)
// navigateTo(R.id.action_loginFragment_to_PolicyFragment)
// TEST : MainActivity로 이동.
MainActivity.startActivity(requireActivity())
requireActivity().finish()
}

callGoogleLogin.observe(viewLifecycleOwner) {
navigateTo(R.id.action_loginFragment_to_PolicyFragment)
// navigateTo(R.id.action_loginFragment_to_PolicyFragment)
MainActivity.startActivity(requireActivity())
requireActivity().finish()
}
}
}
Expand Down
91 changes: 91 additions & 0 deletions app/src/main/java/com/owori/android/presenter/main/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
package com.owori.android.presenter.main

import android.content.Context
import android.content.Intent
import androidx.activity.viewModels
import androidx.fragment.app.Fragment
import com.owori.android.R
import com.owori.android.core.BaseActivity
import com.owori.android.databinding.ActivityMainBinding
import com.owori.android.presenter.main.calendar.CalendarFragment
import com.owori.android.presenter.main.chat.ChatFragment
import com.owori.android.presenter.main.home.HomeFragment
import com.owori.android.presenter.main.story.StoryFragment
import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
class MainActivity : BaseActivity<ActivityMainBinding, MainViewModel>(R.layout.activity_main) {
override val viewModel : MainViewModel by viewModels()
private val homeFragment by lazy { HomeFragment() }
private val calendarFragment by lazy { CalendarFragment() }
private val storyFragment by lazy { StoryFragment() }
private val chatFragment by lazy { ChatFragment() }

override fun initView() {
initBottomNavigation()
}

private fun initBottomNavigation() {
binding.bottomNavigation.apply {
itemIconTintList = null
setOnItemSelectedListener { _menuItem ->
with(binding.bottomNavigation) {
when (_menuItem.itemId) {
R.id.home -> {
setNotSelectedIcon()
_menuItem.setIcon(R.drawable.icon_home_selected)
changeFragment(homeFragment)
}

R.id.calendar -> {
setNotSelectedIcon()
_menuItem.setIcon(R.drawable.icon_calendar_selected)
changeFragment(calendarFragment)
}

R.id.story -> {
setNotSelectedIcon()
_menuItem.setIcon(R.drawable.icon_story_selected)
changeFragment(storyFragment)
}

else -> {
setNotSelectedIcon()
_menuItem.setIcon(R.drawable.icon_chat_selected)
changeFragment(chatFragment)
}
}
}
true
}
selectedItemId = R.id.home
}
}

private fun setNotSelectedIcon() {
with (binding.bottomNavigation) {
menu.findItem(R.id.chat).setIcon(R.drawable.icon_chat)
menu.findItem(R.id.story).setIcon(R.drawable.icon_story)
menu.findItem(R.id.home).setIcon(R.drawable.icon_home)
menu.findItem(R.id.calendar).setIcon(R.drawable.icon_calendar)
}
}

private fun changeFragment(fragment: Fragment) {
supportFragmentManager
.beginTransaction()
.replace(R.id.frame_layout, fragment)
.commit()
}

override fun initObserver() {}

override fun setBindingVariables(binding: ActivityMainBinding) {}
companion object {
fun startActivity(context: Context) {
Intent(context, MainActivity::class.java).apply {
context.startActivity(this)
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.owori.android.presenter.main

import com.owori.android.core.BaseViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject

@HiltViewModel
class MainViewModel @Inject constructor() : BaseViewModel() {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.owori.android.presenter.main.calendar

import androidx.fragment.app.viewModels
import com.owori.android.R
import com.owori.android.core.BaseFragment
import com.owori.android.databinding.FragmentCalendarBinding
import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
class CalendarFragment :
BaseFragment<FragmentCalendarBinding, CalendarViewModel>(R.layout.fragment_calendar) {
override val viewModel: CalendarViewModel by viewModels()
override fun setBindingVariables() {}

override fun initView() {}

override fun initObserver() {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.owori.android.presenter.main.calendar

import com.owori.android.core.BaseViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject

@HiltViewModel
class CalendarViewModel @Inject constructor() : BaseViewModel() {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.owori.android.presenter.main.chat

import androidx.fragment.app.viewModels
import com.owori.android.R
import com.owori.android.core.BaseFragment
import com.owori.android.databinding.FragmentChatBinding
import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
class ChatFragment :
BaseFragment<FragmentChatBinding, ChatViewModel>(R.layout.fragment_chat) {
override val viewModel: ChatViewModel by viewModels()
override fun setBindingVariables() {}

override fun initView() {}

override fun initObserver() {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.owori.android.presenter.main.chat

import com.owori.android.core.BaseViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject

@HiltViewModel
class ChatViewModel @Inject constructor() : BaseViewModel() {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.owori.android.presenter.main.home

import androidx.fragment.app.viewModels
import com.owori.android.R
import com.owori.android.core.BaseFragment
import com.owori.android.databinding.FragmentHomeBinding
import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
class HomeFragment : BaseFragment<FragmentHomeBinding, HomeViewModel>(R.layout.fragment_home) {
override val viewModel: HomeViewModel by viewModels()
override fun setBindingVariables() {}

override fun initObserver() {}

override fun initView() {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.owori.android.presenter.main.home

import com.owori.android.core.BaseViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject

@HiltViewModel
class HomeViewModel @Inject constructor() : BaseViewModel() {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.owori.android.presenter.main.story

import androidx.fragment.app.viewModels
import com.owori.android.R
import com.owori.android.core.BaseFragment
import com.owori.android.databinding.FragmentStoryBinding
import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
class StoryFragment : BaseFragment<FragmentStoryBinding, StoryViewModel>(R.layout.fragment_story) {
override val viewModel: StoryViewModel by viewModels()
override fun setBindingVariables() {}

override fun initObserver() {}

override fun initView() {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.owori.android.presenter.main.story

import com.owori.android.core.BaseViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject

@HiltViewModel
class StoryViewModel @Inject constructor() : BaseViewModel() {}
25 changes: 25 additions & 0 deletions app/src/main/res/drawable/icon_calendar.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="25dp"
android:height="25dp"
android:viewportWidth="25"
android:viewportHeight="25">
<path
android:pathData="M3.611,10.467H21.111"
android:strokeLineJoin="round"
android:strokeWidth="2"
android:fillColor="#00000000"
android:strokeColor="#C6C6C6"
android:strokeLineCap="round"/>
<path
android:pathData="M7.611,2.467V6.467M18.111,2.467V6.467"
android:strokeLineJoin="round"
android:strokeWidth="2"
android:fillColor="#00000000"
android:strokeColor="#C6C6C6"
android:strokeLineCap="round"/>
<path
android:pathData="M18.611,4.467H6.611C4.954,4.467 3.611,5.811 3.611,7.467V19.468C3.611,21.124 4.954,22.468 6.611,22.468H18.611C20.268,22.468 21.611,21.124 21.611,19.468V7.467C21.611,5.811 20.268,4.467 18.611,4.467Z"
android:strokeWidth="2"
android:fillColor="#00000000"
android:strokeColor="#C6C6C6"/>
</vector>
29 changes: 29 additions & 0 deletions app/src/main/res/drawable/icon_calendar_selected.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="25dp"
android:height="25dp"
android:viewportWidth="25"
android:viewportHeight="25">
<path
android:pathData="M10.611,10.967m-10,0a10,10 0,1 1,20 0a10,10 0,1 1,-20 0"
android:fillColor="#FA7B53"
android:fillAlpha="0.89"/>
<path
android:pathData="M3.385,10.467H20.885"
android:strokeLineJoin="round"
android:strokeWidth="2"
android:fillColor="#00000000"
android:strokeColor="#212121"
android:strokeLineCap="round"/>
<path
android:pathData="M7.385,2.467V6.467M17.885,2.467V6.467"
android:strokeLineJoin="round"
android:strokeWidth="2"
android:fillColor="#00000000"
android:strokeColor="#212121"
android:strokeLineCap="round"/>
<path
android:pathData="M18.385,4.467H6.385C4.728,4.467 3.385,5.811 3.385,7.467V19.468C3.385,21.124 4.728,22.468 6.385,22.468H18.385C20.041,22.468 21.385,21.124 21.385,19.468V7.467C21.385,5.811 20.041,4.467 18.385,4.467Z"
android:strokeWidth="2"
android:fillColor="#00000000"
android:strokeColor="#212121"/>
</vector>
17 changes: 17 additions & 0 deletions app/src/main/res/drawable/icon_chat.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="25dp"
android:height="25dp"
android:viewportWidth="25"
android:viewportHeight="25">
<group>
<clip-path
android:pathData="M0.611,0.467h24v24h-24z"/>
<path
android:pathData="M16.189,16.045V18.332C16.189,18.636 16.069,18.926 15.854,19.141C15.64,19.355 15.349,19.476 15.046,19.476H7.249C7.116,19.476 6.989,19.528 6.895,19.622L4.465,22.053C4.15,22.368 3.611,22.145 3.611,21.699V11.472C3.611,11.168 3.732,10.877 3.946,10.663C4.16,10.449 4.451,10.328 4.755,10.328H7.041M11.615,12.615H19.412C19.545,12.615 19.672,12.668 19.766,12.762L22.196,15.192C22.511,15.507 23.05,15.284 23.05,14.838V4.611C23.05,4.308 22.929,4.017 22.715,3.802C22.5,3.588 22.21,3.467 21.906,3.467H11.615C11.312,3.467 11.021,3.588 10.807,3.802C10.592,4.017 10.472,4.308 10.472,4.611V11.472C10.472,11.775 10.592,12.066 10.807,12.28C11.021,12.495 11.312,12.615 11.615,12.615Z"
android:strokeLineJoin="round"
android:strokeWidth="2"
android:fillColor="#00000000"
android:strokeColor="#C6C6C6"
android:strokeLineCap="round"/>
</group>
</vector>
21 changes: 21 additions & 0 deletions app/src/main/res/drawable/icon_chat_selected.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="25dp"
android:height="25dp"
android:viewportWidth="25"
android:viewportHeight="25">
<group>
<clip-path
android:pathData="M0.931,0.467h24v24h-24z"/>
<path
android:pathData="M1.552,11.578a10.582,10.582 0,1 0,21.164 0a10.582,10.582 0,1 0,-21.164 0z"
android:fillColor="#FA7B53"
android:fillAlpha="0.89"/>
<path
android:pathData="M16.509,16.045V18.332C16.509,18.636 16.389,18.926 16.174,19.141C15.96,19.355 15.669,19.476 15.366,19.476H7.569C7.436,19.476 7.309,19.528 7.215,19.622L4.785,22.053C4.47,22.368 3.931,22.145 3.931,21.699V11.472C3.931,11.168 4.052,10.877 4.266,10.663C4.481,10.449 4.771,10.328 5.075,10.328H7.362M11.935,12.615H19.732C19.865,12.615 19.992,12.668 20.086,12.762L22.516,15.192C22.831,15.507 23.37,15.284 23.37,14.838V4.611C23.37,4.308 23.249,4.017 23.035,3.802C22.82,3.588 22.53,3.467 22.226,3.467H11.935C11.632,3.467 11.341,3.588 11.127,3.802C10.912,4.017 10.792,4.308 10.792,4.611V11.472C10.792,11.775 10.912,12.066 11.127,12.28C11.341,12.495 11.632,12.615 11.935,12.615Z"
android:strokeLineJoin="round"
android:strokeWidth="2"
android:fillColor="#00000000"
android:strokeColor="#212121"
android:strokeLineCap="round"/>
</group>
</vector>
13 changes: 13 additions & 0 deletions app/src/main/res/drawable/icon_home.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="21dp"
android:height="22dp"
android:viewportWidth="21"
android:viewportHeight="22">
<path
android:pathData="M1.611,8.935C1.611,8.009 2.039,7.135 2.769,6.567L8.769,1.9C9.853,1.057 11.37,1.057 12.453,1.9L18.453,6.567C19.184,7.135 19.611,8.009 19.611,8.935V18.468C19.611,18.998 19.4,19.507 19.025,19.882C18.65,20.257 18.142,20.468 17.611,20.468H3.611C3.081,20.468 2.572,20.257 2.197,19.882C1.822,19.507 1.611,18.998 1.611,18.468V8.935Z"
android:strokeLineJoin="round"
android:strokeWidth="2"
android:fillColor="#00000000"
android:strokeColor="#C6C6C6"
android:strokeLineCap="round"/>
</vector>
Loading