325일차 - IT 영단어 앱 : Bottom Navigation

2021. 11. 19. 23:44Diary/300~400

 

< 소스 코드 >

https://github.com/KwonGeneral/it_word.git

 

GitHub - KwonGeneral/it_word: IT영단어

IT영단어. Contribute to KwonGeneral/it_word development by creating an account on GitHub.

github.com

 

< activity_main.xml >

 

< MainActivity.kt >

class MainActivity : BaseActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val bottomNavList: ArrayList<ImageView> = arrayListOf(bottom_nav_home, bottom_nav_note, bottom_nav_quiz, bottom_nav_mypage)

        FireBaseVM(this).let { fm ->
            fm.createFcm()
            fm.fcmStatusMessage.observe(this, { ob ->
                Toast.makeText(applicationContext, ob, Toast.LENGTH_SHORT).show()
            })
        }

        ScreenVM.getInstance(this).screenStatus.observe(this, { fragment_name ->
            for(k in bottomNavList) {
                k.backgroundTintList = ColorStateList.valueOf(Color.parseColor(ColorDefine.BOTTOM_NAV_DIS_ACTIVE.color))
            }
            when(fragment_name) {
                HOME_FRAGMENT -> { bottom_nav_home.backgroundTintList = ColorStateList.valueOf(Color.parseColor(ColorDefine.BOTTOM_NAV_ACTIVE.color)) }
                NOTE_FRAGMENT -> { bottom_nav_note.backgroundTintList = ColorStateList.valueOf(Color.parseColor(ColorDefine.BOTTOM_NAV_ACTIVE.color)) }
                QUIZ_FRAGMENT -> { bottom_nav_quiz.backgroundTintList = ColorStateList.valueOf(Color.parseColor(ColorDefine.BOTTOM_NAV_ACTIVE.color)) }
                MYPAGE_FRAGMENT -> { bottom_nav_mypage.backgroundTintList = ColorStateList.valueOf(Color.parseColor(ColorDefine.BOTTOM_NAV_ACTIVE.color)) }
            }
            changeFragment(fragment_name)
        })

        bottom_nav_home_layout.setOnClickListener { ScreenVM.getInstance(this).screenStatus.value = HOME_FRAGMENT }
        bottom_nav_note_layout.setOnClickListener { ScreenVM.getInstance(this).screenStatus.value = NOTE_FRAGMENT }
        bottom_nav_quiz_layout.setOnClickListener { ScreenVM.getInstance(this).screenStatus.value = QUIZ_FRAGMENT }
        bottom_nav_mypage_layout.setOnClickListener { ScreenVM.getInstance(this).screenStatus.value = MYPAGE_FRAGMENT }
    }

    private fun changeFragment(fragment_type:String) {
        supportFragmentManager.beginTransaction().let { ft ->
            fragment_type.let { ty ->
                when (ty) {
                    HOME_FRAGMENT -> HomeFragment().apply { ft.replace(R.id.main_frag, this).commit() }
                    QUIZ_FRAGMENT -> QuizFragment().apply { ft.replace(R.id.main_frag, this).commit() }
                    CHAT_FRAGMENT -> ChatFragment().apply { ft.replace(R.id.main_frag, this).commit() }
                    NOTE_FRAGMENT -> NoteFragment().apply { ft.replace(R.id.main_frag, this).commit() }
                    MYPAGE_FRAGMENT -> MypageFragment().apply { ft.replace(R.id.main_frag, this).commit() }
                    SETTING_FRAGMENT -> SettingFragment().apply { ft.replace(R.id.main_frag, this).commit() }
                    else -> QuizFragment().apply { ft.replace(R.id.main_frag, this).commit() }
                }
            }
        }
    }
}