Skip to content

Commit 8e6ec1c

Browse files
authored
Merge pull request #11 from armancodv/bottom-nav
Bottom Navigation
2 parents 3c9c26a + b989797 commit 8e6ec1c

File tree

33 files changed

+100
-107
lines changed

33 files changed

+100
-107
lines changed

app/src/main/java/com/armanco/integral/MainActivity.kt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package com.armanco.integral
22

33
import android.os.Bundle
4+
import android.util.Log
5+
import android.view.MenuItem
46
import androidx.activity.viewModels
57
import androidx.appcompat.app.AppCompatActivity
8+
import androidx.navigation.findNavController
69
import androidx.navigation.fragment.NavHostFragment
710
import androidx.navigation.ui.AppBarConfiguration
811
import androidx.navigation.ui.setupWithNavController
@@ -14,6 +17,7 @@ import com.google.android.gms.ads.AdRequest
1417
import com.google.android.gms.ads.AdSize
1518
import com.google.android.gms.ads.AdView
1619
import com.google.android.gms.ads.MobileAds
20+
import com.google.android.material.bottomnavigation.BottomNavigationView
1721
import dagger.hilt.android.AndroidEntryPoint
1822
import kotlinx.android.synthetic.main.activity_main.*
1923
import java.util.*
@@ -34,8 +38,7 @@ class MainActivity: AppCompatActivity() {
3438
model.remoteConfig.fetchAndActivate().addOnCompleteListener(this) {
3539
model.configAds.postValue(model.remoteConfig.configAds)
3640
}
37-
38-
initToolbar()
41+
initBottomNavigation()
3942
}
4043

4144
override fun onResume() {
@@ -62,11 +65,10 @@ class MainActivity: AppCompatActivity() {
6265
adContainer?.removeAllViews()
6366
}
6467

65-
private fun initToolbar() {
68+
private fun initBottomNavigation() {
6669
val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as? NavHostFragment
6770
navHostFragment?.navController?.let { navController ->
68-
val appBarConfiguration = AppBarConfiguration(navController.graph)
69-
toolbar?.setupWithNavController(navController, appBarConfiguration)
71+
bottomNavigationView?.setupWithNavController(navController)
7072
}
7173
}
7274
}

app/src/main/java/com/armanco/integral/navigation/category/CategoryFragment.kt

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,6 @@ class CategoryFragment: Fragment(R.layout.fragment_category) {
2222
categoryListView?.onCardClick = {
2323
navigateToItem(it)
2424
}
25-
solver?.setOnClickListener {
26-
navigateToSolver()
27-
}
28-
settings?.setOnClickListener {
29-
navigateToSettings()
30-
}
3125
model.load()
3226
model.categories.observe(viewLifecycleOwner) { categories ->
3327
categoryListView?.with(categories)
@@ -44,12 +38,4 @@ class CategoryFragment: Fragment(R.layout.fragment_category) {
4438
})
4539
}
4640

47-
private fun navigateToSolver() {
48-
findNavController().navigate(R.id.action_to_solverFragment)
49-
}
50-
51-
private fun navigateToSettings() {
52-
findNavController().navigate(R.id.action_to_settingsFragment)
53-
}
54-
5541
}

app/src/main/java/com/armanco/integral/navigation/formula/FormulaFragment.kt

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,6 @@ class FormulaFragment: Fragment(R.layout.fragment_formula) {
2222
formulaListView?.onCardClick = {
2323
navigateToImage(it)
2424
}
25-
solver?.setOnClickListener {
26-
navigateToSolver()
27-
}
2825
model.load(arguments?.getInt(ID_KEY))
2926
model.formulas.observe(viewLifecycleOwner) { formulas ->
3027
Log.d("formula", formulas.toString())
@@ -41,10 +38,6 @@ class FormulaFragment: Fragment(R.layout.fragment_formula) {
4138
})
4239
}
4340

44-
private fun navigateToSolver() {
45-
findNavController().navigate(R.id.action_to_solverFragment)
46-
}
47-
4841
companion object {
4942
const val ID_KEY = "id"
5043
const val TITLE_KEY = "title"

app/src/main/java/com/armanco/integral/navigation/settings/SettingsFragment.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import com.armanco.integral.utils.extensions.isPro
1212
import com.armanco.integral.utils.facade.ReviewFacade
1313
import dagger.hilt.android.AndroidEntryPoint
1414
import kotlinx.android.synthetic.main.fragment_settings.*
15+
import me.everything.android.ui.overscroll.OverScrollDecoratorHelper
1516

1617
@AndroidEntryPoint
1718
class SettingsFragment: Fragment(R.layout.fragment_settings) {
@@ -25,6 +26,9 @@ class SettingsFragment: Fragment(R.layout.fragment_settings) {
2526
model.load()
2627
reviewFacade.init(context)
2728
proVersion?.visibility = if(isPro) View.GONE else View.VISIBLE
29+
scrollView?.let {
30+
OverScrollDecoratorHelper.setUpOverScroll(it)
31+
}
2832
proVersion?.onClick = {
2933
model.selectProVersion()
3034
activity?.goToGooglePlay(model.configLinks.value?.proPackageName ?: ConfigLinks.PRO_PACKAGE_NAME_DEFAULT)

app/src/main/java/com/armanco/integral/navigation/solver/SolverFragment.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import androidx.fragment.app.viewModels
88
import com.armanco.integral.R
99
import dagger.hilt.android.AndroidEntryPoint
1010
import kotlinx.android.synthetic.main.fragment_solver.*
11+
import me.everything.android.ui.overscroll.OverScrollDecoratorHelper
1112

1213
@AndroidEntryPoint
1314
class SolverFragment: Fragment(R.layout.fragment_solver) {
@@ -20,6 +21,9 @@ class SolverFragment: Fragment(R.layout.fragment_solver) {
2021
calculate?.setOnClickListener {
2122
model.calculate()
2223
}
24+
scrollView?.let {
25+
OverScrollDecoratorHelper.setUpOverScroll(it)
26+
}
2327
function?.addTextChangedListener {
2428
model.function.value = it?.toString()
2529
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<selector xmlns:android="http://schemas.android.com/apk/res/android">
3+
<item android:state_checked="true" android:color="@color/white" />
4+
<item android:color="@color/primaryDarker" />
5+
</selector>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<vector android:height="24dp" android:tint="#FFFFFF"
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="M4,14h4v-4L4,10v4zM4,19h4v-4L4,15v4zM4,9h4L8,5L4,5v4zM9,14h12v-4L9,10v4zM9,19h12v-4L9,15v4zM9,5v4h12L21,5L9,5z"/>
5+
</vector>

app/src/main/res/layout/activity_main.xml

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,15 @@
66
xmlns:tools="http://schemas.android.com/tools"
77
tools:context=".MainActivity">
88

9-
<androidx.appcompat.widget.Toolbar
10-
android:layout_width="match_parent"
11-
android:layout_height="wrap_content"
12-
app:layout_constraintTop_toTopOf="parent"
13-
style="@style/ToolbarStyle"
14-
android:id="@+id/toolbar" />
15-
169
<androidx.fragment.app.FragmentContainerView
1710
android:id="@+id/nav_host_fragment"
1811
android:name="androidx.navigation.fragment.NavHostFragment"
1912
android:layout_width="0dp"
2013
android:layout_height="0dp"
2114
app:layout_constraintLeft_toLeftOf="parent"
2215
app:layout_constraintRight_toRightOf="parent"
23-
app:layout_constraintTop_toBottomOf="@id/toolbar"
24-
app:layout_constraintBottom_toTopOf="@id/adContainer"
16+
app:layout_constraintTop_toBottomOf="@id/adContainer"
17+
app:layout_constraintBottom_toTopOf="@id/bottomNavigationView"
2518
app:defaultNavHost="true"
2619
app:navGraph="@navigation/nav_graph" />
2720

@@ -31,6 +24,19 @@
3124
android:layout_height="wrap_content"
3225
android:orientation="vertical"
3326
android:gravity="center"
34-
app:layout_constraintBottom_toBottomOf="parent" />
27+
app:layout_constraintTop_toTopOf="parent" />
28+
29+
30+
<com.google.android.material.bottomnavigation.BottomNavigationView
31+
android:id="@+id/bottomNavigationView"
32+
android:layout_width="match_parent"
33+
android:layout_height="wrap_content"
34+
app:layout_constraintBottom_toBottomOf="parent"
35+
app:itemIconSize="32dp"
36+
app:itemIconTint="@color/bottom_nav_item_color"
37+
app:itemTextColor="@color/bottom_nav_item_color"
38+
app:labelVisibilityMode="labeled"
39+
android:background="@color/primary"
40+
app:menu="@menu/bottom_nav_menu" />
3541

3642
</androidx.constraintlayout.widget.ConstraintLayout>

app/src/main/res/layout/fragment_category.xml

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -12,35 +12,4 @@
1212
android:layout_width="match_parent"
1313
android:layout_height="match_parent"/>
1414

15-
<com.google.android.material.button.MaterialButton
16-
android:id="@+id/settings"
17-
android:layout_width="44dp"
18-
android:layout_height="44dp"
19-
android:backgroundTint="@color/primary"
20-
android:elevation="0dp"
21-
android:stateListAnimator="@null"
22-
app:cornerRadius="26dp"
23-
app:elevation="0dp"
24-
app:icon="@drawable/ic_baseline_settings_24"
25-
app:iconGravity="textStart"
26-
app:iconPadding="0dp"
27-
app:iconSize="24dp"
28-
android:insetTop="0dp"
29-
android:insetBottom="0dp"
30-
android:layout_marginEnd="16dp"
31-
android:layout_marginBottom="4dp"
32-
app:layout_constraintBottom_toTopOf="@id/solver"
33-
app:layout_constraintEnd_toEndOf="parent"/>
34-
35-
<com.google.android.material.button.MaterialButton
36-
android:id="@+id/solver"
37-
android:layout_width="wrap_content"
38-
android:layout_height="wrap_content"
39-
app:layout_constraintBottom_toBottomOf="parent"
40-
app:layout_constraintEnd_toEndOf="parent"
41-
app:icon="@drawable/ic_baseline_calculate_24"
42-
android:layout_marginEnd="16dp"
43-
android:layout_marginBottom="4dp"
44-
android:text="@string/solver" />
45-
4615
</androidx.constraintlayout.widget.ConstraintLayout>

app/src/main/res/layout/fragment_formula.xml

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,4 @@
1212
android:layout_width="match_parent"
1313
android:layout_height="match_parent"/>
1414

15-
<com.google.android.material.button.MaterialButton
16-
android:id="@+id/solver"
17-
android:layout_width="wrap_content"
18-
android:layout_height="wrap_content"
19-
app:layout_constraintBottom_toBottomOf="parent"
20-
app:layout_constraintEnd_toEndOf="parent"
21-
app:icon="@drawable/ic_baseline_calculate_24"
22-
android:layout_marginEnd="16dp"
23-
android:layout_marginBottom="4dp"
24-
android:text="@string/solver" />
25-
2615
</androidx.constraintlayout.widget.ConstraintLayout>

0 commit comments

Comments
 (0)