Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 72432a7

Browse files
committedJul 16, 2024·
feat:Added a bottom nav bar
1 parent cde269e commit 72432a7

17 files changed

+362
-12
lines changed
 

‎app/build.gradle

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ if (keystorePropertiesFile.exists()) {
1010
}
1111

1212
android {
13-
compileSdk 31
13+
compileSdk 34
1414

1515
defaultConfig {
1616
applicationId "org.scribe"
@@ -77,6 +77,7 @@ dependencies {
7777
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
7878
implementation "androidx.exifinterface:exifinterface:1.3.3"
7979
implementation "androidx.biometric:biometric-ktx:1.2.0-alpha03"
80+
implementation 'com.google.android.material:material:1.12.0'
8081

8182
api 'joda-time:joda-time:2.10.13'
8283
api 'com.github.tibbi:RecyclerView-FastScroller:e7d3e150c4'

‎app/src/main/kotlin/org/scribe/activities/AboutActivity.kt

+86-1
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,19 @@ import android.content.Intent
55
import android.content.Intent.*
66
import android.os.Build
77
import android.os.Bundle
8+
import android.view.GestureDetector
89
import android.view.Menu
10+
import android.view.MotionEvent
911
import androidx.core.net.toUri
12+
import com.google.android.material.bottomnavigation.BottomNavigationView
1013
import kotlinx.android.synthetic.main.activity_about.*
1114
import org.scribe.R
1215
import org.scribe.dialogs.ConfirmationAdvancedDialog
1316
import org.scribe.extensions.*
1417
import org.scribe.helpers.*
18+
import kotlin.math.abs
1519

16-
class AboutActivity : BaseSimpleActivity() {
20+
class AboutActivity : BaseSimpleActivity(), GestureDetector.OnGestureListener{
1721
private var appName = ""
1822
private var primaryColor = 0
1923

@@ -22,17 +26,46 @@ class AboutActivity : BaseSimpleActivity() {
2226
private val EASTER_EGG_TIME_LIMIT = 3000L
2327
private val EASTER_EGG_REQUIRED_CLICKS = 7
2428

29+
private lateinit var gestureDetector: GestureDetector
30+
private val swipeThreshold = 100
31+
private val swipeVelocityThreshold = 100
32+
2533
override fun getAppIconIDs() = intent.getIntegerArrayListExtra(APP_ICON_IDS) ?: ArrayList()
2634

2735
override fun getAppLauncherName() = intent.getStringExtra(APP_LAUNCHER_NAME) ?: ""
2836

2937
override fun onCreate(savedInstanceState: Bundle?) {
3038
super.onCreate(savedInstanceState)
3139
setContentView(R.layout.activity_about)
40+
gestureDetector = GestureDetector(this)
3241
appName = intent.getStringExtra(APP_NAME) ?: ""
3342
val textColor = getProperTextColor()
3443
val backgroundColor = getProperBackgroundColor()
3544
primaryColor = getProperPrimaryColor()
45+
supportActionBar?.setDisplayHomeAsUpEnabled(false)
46+
val bottomNavigationView = findViewById<BottomNavigationView>(R.id.bottom_navigation)
47+
48+
bottomNavigationView.selectedItemId = R.id.info
49+
50+
bottomNavigationView.setOnNavigationItemSelectedListener(BottomNavigationView.OnNavigationItemSelectedListener { item ->
51+
when (item.itemId) {
52+
R.id.settings -> {
53+
startActivity(Intent(applicationContext, SettingsActivity::class.java))
54+
overridePendingTransition(0, 0)
55+
return@OnNavigationItemSelectedListener true
56+
}
57+
58+
R.id.about -> {
59+
return@OnNavigationItemSelectedListener true }
60+
R.id.installation -> {
61+
startActivity(Intent(applicationContext, MainActivity::class.java))
62+
overridePendingTransition(0, 0)
63+
return@OnNavigationItemSelectedListener true
64+
}
65+
}
66+
false
67+
})
68+
bottomNavigationView.selectedItemId = R.id.about
3669

3770
arrayOf(
3871
about_invite_icon,
@@ -50,6 +83,15 @@ class AboutActivity : BaseSimpleActivity() {
5083
}
5184
}
5285

86+
override fun onTouchEvent(event: MotionEvent): Boolean {
87+
return if (gestureDetector.onTouchEvent(event)) {
88+
true
89+
}
90+
else {
91+
super.onTouchEvent(event)
92+
}
93+
}
94+
5395
override fun onResume() {
5496
super.onResume()
5597
updateTextColors(about_scrollview)
@@ -121,4 +163,47 @@ class AboutActivity : BaseSimpleActivity() {
121163
}
122164
}
123165
}
166+
167+
override fun onDown(e: MotionEvent): Boolean {
168+
return false
169+
}
170+
171+
override fun onShowPress(e: MotionEvent) {
172+
return
173+
}
174+
175+
override fun onSingleTapUp(e: MotionEvent): Boolean {
176+
return false
177+
}
178+
179+
override fun onScroll(e1: MotionEvent?, e2: MotionEvent, distanceX: Float, distanceY: Float): Boolean {
180+
return false
181+
}
182+
183+
override fun onLongPress(e: MotionEvent) {
184+
return
185+
}
186+
187+
override fun onFling(e1: MotionEvent?, e2: MotionEvent, velocityX: Float, velocityY: Float): Boolean {
188+
try {
189+
val diffY = e2.y - e1!!.y
190+
val diffX = e2.x - e1.x
191+
if (abs(diffX) > abs(diffY)) {
192+
if (abs(diffX) > swipeThreshold && abs(velocityX) > swipeVelocityThreshold) {
193+
if (diffX > 0) {
194+
startActivity(Intent(applicationContext, SettingsActivity::class.java))
195+
}
196+
else {
197+
return false
198+
}
199+
}
200+
}
201+
}
202+
catch (exception: Exception) {
203+
exception.printStackTrace()
204+
}
205+
return true
206+
}
124207
}
208+
209+

‎app/src/main/kotlin/org/scribe/activities/MainActivity.kt

+87-1
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,58 @@ import android.graphics.drawable.LayerDrawable
77
import android.graphics.drawable.RippleDrawable
88
import android.os.Bundle
99
import android.provider.Settings
10+
import android.view.GestureDetector
1011
import android.view.Menu
1112
import android.view.MenuItem
13+
import android.view.MotionEvent
1214
import android.view.inputmethod.InputMethodManager
15+
import android.widget.Toast
1316
import androidx.appcompat.app.AppCompatDelegate
17+
import com.google.android.material.bottomnavigation.BottomNavigationView
1418
import kotlinx.android.synthetic.main.activity_main.*
1519
import org.scribe.BuildConfig
1620
import org.scribe.R
1721
import org.scribe.dialogs.ConfirmationAdvancedDialog
1822
import org.scribe.extensions.*
1923
import org.scribe.helpers.LICENSE_GSON
24+
import kotlin.math.abs
2025

21-
class MainActivity : SimpleActivity() {
26+
27+
class MainActivity : SimpleActivity(), GestureDetector.OnGestureListener {
28+
29+
private lateinit var gestureDetector: GestureDetector
30+
private val swipeThreshold = 100
31+
private val swipeVelocityThreshold = 100
2232
override fun onCreate(savedInstanceState: Bundle?) {
2333
applyUserDarkModePreference()
2434
super.onCreate(savedInstanceState)
2535
setContentView(R.layout.activity_main)
2636
appLaunched(BuildConfig.APPLICATION_ID)
37+
gestureDetector = GestureDetector(this)
38+
39+
val bottomNavigationView = findViewById<BottomNavigationView>(R.id.bottom_navigation)
40+
41+
bottomNavigationView.selectedItemId = R.id.installation
42+
43+
bottomNavigationView.setOnNavigationItemSelectedListener(BottomNavigationView.OnNavigationItemSelectedListener { item ->
44+
when (item.itemId) {
45+
R.id.settings -> {
46+
startActivity(Intent(applicationContext, SettingsActivity::class.java))
47+
overridePendingTransition(0, 0)
48+
return@OnNavigationItemSelectedListener true
49+
}
50+
51+
R.id.installation -> {
52+
return@OnNavigationItemSelectedListener true
53+
}
54+
R.id.info -> {
55+
startActivity(Intent(applicationContext, AboutActivity::class.java))
56+
overridePendingTransition(0, 0)
57+
return@OnNavigationItemSelectedListener true
58+
}
59+
}
60+
false
61+
})
2762
scribe_key.setOnClickListener {
2863
(getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager).showInputMethodPicker()
2964
}
@@ -41,6 +76,15 @@ class MainActivity : SimpleActivity() {
4176
else AppCompatDelegate.MODE_NIGHT_NO
4277
)
4378
}
79+
80+
override fun onTouchEvent(event: MotionEvent): Boolean {
81+
return if (gestureDetector.onTouchEvent(event)) {
82+
true
83+
}
84+
else {
85+
super.onTouchEvent(event)
86+
}
87+
}
4488
override fun onResume() {
4589
super.onResume()
4690
if (!isKeyboardEnabled()) {
@@ -101,4 +145,46 @@ class MainActivity : SimpleActivity() {
101145
it.settingsActivity == SettingsActivity::class.java.canonicalName
102146
}
103147
}
148+
149+
override fun onDown(e: MotionEvent): Boolean {
150+
return false
151+
}
152+
153+
override fun onShowPress(e: MotionEvent) {
154+
return
155+
}
156+
157+
override fun onSingleTapUp(e: MotionEvent): Boolean {
158+
return false
159+
}
160+
161+
override fun onScroll(e1: MotionEvent?, e2: MotionEvent, distanceX: Float, distanceY: Float): Boolean {
162+
return false
163+
}
164+
165+
override fun onLongPress(e: MotionEvent) {
166+
return
167+
}
168+
169+
override fun onFling(e1: MotionEvent?, e2: MotionEvent, velocityX: Float, velocityY: Float): Boolean {
170+
try {
171+
val diffY = e2.y - e1!!.y
172+
val diffX = e2.x - e1.x
173+
if (abs(diffX) > abs(diffY)) {
174+
if (abs(diffX) > swipeThreshold && abs(velocityX) > swipeVelocityThreshold) {
175+
if (diffX > 0) {
176+
return false
177+
}
178+
else {
179+
startActivity(Intent(applicationContext, SettingsActivity::class.java))
180+
}
181+
}
182+
}
183+
}
184+
catch (exception: Exception) {
185+
exception.printStackTrace()
186+
}
187+
return true
188+
}
104189
}
190+

‎app/src/main/kotlin/org/scribe/activities/SettingsActivity.kt

+85-2
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,55 @@
11
package org.scribe.activities
22

33
import android.content.Context
4+
import android.content.Intent
45
import android.content.res.Configuration
56
import android.os.Bundle
7+
import android.view.GestureDetector
68
import android.view.Menu
9+
import android.view.MotionEvent
710
import androidx.appcompat.app.AppCompatDelegate
11+
import com.google.android.material.bottomnavigation.BottomNavigationView
812
import kotlinx.android.synthetic.main.activity_settings.*
913
import org.scribe.R
1014
import org.scribe.dialogs.RadioGroupDialog
1115
import org.scribe.extensions.config
1216
import org.scribe.extensions.updateTextColors
1317
import org.scribe.helpers.*
1418
import org.scribe.models.RadioItem
19+
import kotlin.math.abs
1520

16-
class SettingsActivity : SimpleActivity() {
21+
class SettingsActivity : SimpleActivity(), GestureDetector.OnGestureListener {
1722

23+
private lateinit var gestureDetector: GestureDetector
24+
private val swipeThreshold = 100
25+
private val swipeVelocityThreshold = 100
1826
override fun onCreate(savedInstanceState: Bundle?) {
1927
super.onCreate(savedInstanceState)
28+
2029
setContentView(R.layout.activity_settings)
30+
supportActionBar?.setDisplayHomeAsUpEnabled(false)
31+
gestureDetector = GestureDetector(this)
32+
val bottomNavigationView = findViewById<BottomNavigationView>(R.id.bottom_navigation)
33+
if (bottomNavigationView != null) {
34+
bottomNavigationView.selectedItemId = R.id.settings
35+
36+
bottomNavigationView.setOnNavigationItemSelectedListener { item ->
37+
when (item.itemId) {
38+
R.id.installation -> {
39+
startActivity(Intent(applicationContext, MainActivity::class.java))
40+
overridePendingTransition(0, 0)
41+
true
42+
}
43+
R.id.settings -> true
44+
R.id.info -> {
45+
startActivity(Intent(applicationContext, AboutActivity::class.java))
46+
overridePendingTransition(0, 0)
47+
true
48+
}
49+
else -> false
50+
}
51+
}
52+
}
2153
}
2254

2355
override fun onResume() {
@@ -120,4 +152,55 @@ class SettingsActivity : SimpleActivity() {
120152
else -> getString(R.string.translation_english)
121153
}
122154
}
123-
}
155+
156+
override fun onTouchEvent(event: MotionEvent): Boolean {
157+
return if (gestureDetector.onTouchEvent(event)) {
158+
true
159+
}
160+
else {
161+
super.onTouchEvent(event)
162+
}
163+
}
164+
165+
override fun onDown(e: MotionEvent): Boolean {
166+
return false
167+
}
168+
169+
override fun onShowPress(e: MotionEvent) {
170+
return
171+
}
172+
173+
override fun onSingleTapUp(e: MotionEvent): Boolean {
174+
return false
175+
}
176+
177+
override fun onScroll(e1: MotionEvent?, e2: MotionEvent, distanceX: Float, distanceY: Float): Boolean {
178+
return false
179+
}
180+
181+
override fun onLongPress(e: MotionEvent) {
182+
return
183+
}
184+
185+
override fun onFling(e1: MotionEvent?, e2: MotionEvent, velocityX: Float, velocityY: Float): Boolean {
186+
try {
187+
val diffY = e2.y - e1!!.y
188+
val diffX = e2.x - e1.x
189+
if (abs(diffX) > abs(diffY)) {
190+
if (abs(diffX) > swipeThreshold && abs(velocityX) > swipeVelocityThreshold) {
191+
if (diffX > 0) {
192+
startActivity(Intent(applicationContext, MainActivity::class.java))
193+
}
194+
else {
195+
startActivity(Intent(applicationContext, AboutActivity::class.java))
196+
}
197+
}
198+
}
199+
}
200+
catch (exception: Exception) {
201+
exception.printStackTrace()
202+
}
203+
return true
204+
}
205+
}
206+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="40dp"
3+
android:height="40dp"
4+
android:viewportWidth="960"
5+
android:viewportHeight="960">
6+
<path
7+
android:pathData="M448.67,680h66.66v-240h-66.66v240ZM479.99,364q15.01,0 25.18,-9.97 10.16,-9.96 10.16,-24.7 0,-15.3 -10.15,-25.65 -10.16,-10.35 -25.17,-10.35 -15.01,0 -25.18,10.35 -10.16,10.35 -10.16,25.65 0,14.74 10.15,24.7 10.16,9.97 25.17,9.97ZM480.18,880q-82.83,0 -155.67,-31.5 -72.84,-31.5 -127.18,-85.83Q143,708.33 111.5,635.44T80,479.67q0,-82.88 31.5,-155.78Q143,251 197.33,197q54.34,-54 127.23,-85.5T480.33,80q82.88,0 155.78,31.5Q709,143 763,197t85.5,127Q880,397 880,479.82q0,82.83 -31.5,155.67Q817,708.33 763,762.54q-54,54.21 -127,85.84Q563,880 480.18,880ZM480.33,813.33q139,0 236,-97.33t97,-236.33q0,-139 -96.87,-236 -96.88,-97 -236.46,-97 -138.67,0 -236,96.87 -97.33,96.88 -97.33,236.46 0,138.67 97.33,236 97.33,97.33 236.33,97.33ZM480,480Z"
8+
android:fillColor="#e8eaed"/>
9+
</vector>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="40dp"
3+
android:height="40dp"
4+
android:viewportWidth="960"
5+
android:viewportHeight="960">
6+
<path
7+
android:pathData="M106.67,840q-27,0 -46.84,-19.83Q40,800.33 40,773.33v-546.66q0,-27 19.83,-46.84Q79.67,160 106.67,160h746.66q27,0 46.84,19.83Q920,199.67 920,226.67v546.66q0,27 -19.83,46.84Q880.33,840 853.33,840L106.67,840ZM106.67,773.33h746.66v-546.66L106.67,226.67v546.66ZM306.67,692h346.66v-56L306.67,636v56ZM188,555.33h84.67v-84L188,471.33v84ZM354.67,555.33h84.66v-84h-84.66v84ZM520.67,555.33h84.66v-84h-84.66v84ZM687.33,555.33L772,555.33v-84h-84.67v84ZM188,390.67h84.67v-83.34L188,307.33v83.34ZM354.67,390.67h84.66v-83.34h-84.66v83.34ZM520.67,390.67h84.66v-83.34h-84.66v83.34ZM687.33,390.67L772,390.67v-83.34h-84.67v83.34ZM106.67,773.33v-546.66,546.66Z"
8+
android:fillColor="#e8eaed"/>
9+
</vector>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="40dp"
3+
android:height="40dp"
4+
android:viewportWidth="960"
5+
android:viewportHeight="960">
6+
<path
7+
android:pathData="m382,880 l-18.67,-126.67q-17,-6.33 -34.83,-16.66 -17.83,-10.34 -32.17,-21.67L178,767.67 79.33,595l106.34,-78.67q-1.67,-8.33 -2,-18.16 -0.34,-9.84 -0.34,-18.17 0,-8.33 0.34,-18.17 0.33,-9.83 2,-18.16L79.33,365 178,192.33 296.33,245q14.34,-11.33 32.34,-21.67 18,-10.33 34.66,-16L382,80h196l18.67,126.67q17,6.33 35.16,16.33 18.17,10 31.84,22L782,192.33 880.67,365l-106.34,77.33q1.67,9 2,18.84 0.34,9.83 0.34,18.83 0,9 -0.34,18.5Q776,508 774,517l106.33,78 -98.66,172.67 -118,-52.67q-14.34,11.33 -32,22 -17.67,10.67 -35,16.33L578,880L382,880ZM437.33,813.33h85l14,-110q32.34,-8 60.84,-24.5T649,639l103.67,44.33 39.66,-70.66L701,545q4.33,-16 6.67,-32.17Q710,496.67 710,480q0,-16.67 -2,-32.83 -2,-16.17 -7,-32.17l91.33,-67.67 -39.66,-70.66L649,321.33q-22.67,-25 -50.83,-41.83 -28.17,-16.83 -61.84,-22.83l-13.66,-110h-85l-14,110q-33,7.33 -61.5,23.83T311,321l-103.67,-44.33 -39.66,70.66L259,414.67Q254.67,431 252.33,447 250,463 250,480q0,16.67 2.33,32.67 2.34,16 6.67,32.33l-91.33,67.67 39.66,70.66L311,638.67q23.33,23.66 51.83,40.16 28.5,16.5 60.84,24.5l13.66,110ZM480.67,613.33q55.33,0 94.33,-39T614,480q0,-55.33 -39,-94.33t-94.33,-39q-55.67,0 -94.5,39 -38.84,39 -38.84,94.33t38.84,94.33q38.83,39 94.5,39ZM480,480Z"
8+
android:fillColor="#e8eaed"/>
9+
</vector>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<selector xmlns:android="http://schemas.android.com/apk/res/android">
3+
4+
<item
5+
android:state_selected="true"
6+
android:color="@color/nav_bar_selected_color"/>
7+
<item
8+
android:state_selected="false"
9+
android:color="@color/nav_bar_focus_color"/>
10+
11+
</selector>

‎app/src/main/res/layout/activity_about.xml

+14-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
2+
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
34
android:id="@+id/about_scrollview"
45
android:layout_width="match_parent"
56
android:layout_height="match_parent"
@@ -12,7 +13,7 @@
1213
<LinearLayout
1314
android:id="@+id/about_holder"
1415
android:layout_width="match_parent"
15-
android:layout_height="wrap_content"
16+
android:layout_height="669dp"
1617
android:background="@color/you_background_color"
1718
android:backgroundTint="@color/you_background_color"
1819
android:orientation="vertical">
@@ -137,7 +138,16 @@
137138
</RelativeLayout>
138139

139140
</LinearLayout>
140-
141141
</LinearLayout>
142142

143-
</ScrollView>
143+
<com.google.android.material.bottomnavigation.BottomNavigationView
144+
android:id="@+id/bottom_navigation"
145+
android:layout_width="match_parent"
146+
android:layout_height="60dp"
147+
android:layout_alignParentBottom="true"
148+
app:itemBackground="@color/nav_bar_color"
149+
app:itemIconTint="@drawable/nav_bar_selector"
150+
app:itemTextColor="@drawable/nav_bar_selector"
151+
app:menu="@menu/menu_navigation_bottom" />
152+
153+
</RelativeLayout>

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

+11
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
34
android:id="@+id/main_holder"
45
android:layout_width="match_parent"
56
android:layout_height="match_parent"
@@ -21,4 +22,14 @@
2122

2223
</RelativeLayout>
2324

25+
<com.google.android.material.bottomnavigation.BottomNavigationView
26+
android:id="@+id/bottom_navigation"
27+
android:layout_width="match_parent"
28+
android:layout_height="60dp"
29+
android:layout_alignParentBottom="true"
30+
app:itemBackground="@color/nav_bar_color"
31+
app:itemIconTint="@drawable/nav_bar_selector"
32+
app:itemTextColor="@drawable/nav_bar_selector"
33+
app:menu="@menu/menu_navigation_bottom" />
34+
2435
</RelativeLayout>

‎app/src/main/res/layout/activity_settings.xml

+13-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
2+
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
33
xmlns:tools="http://schemas.android.com/tools"
4+
xmlns:app="http://schemas.android.com/apk/res-auto"
45
android:id="@+id/settings_scrollview"
56
android:layout_width="match_parent"
67
android:layout_height="match_parent"
@@ -112,4 +113,14 @@
112113

113114
</LinearLayout>
114115
</LinearLayout>
115-
</ScrollView>
116+
<com.google.android.material.bottomnavigation.BottomNavigationView
117+
android:id="@+id/bottom_navigation"
118+
android:layout_width="match_parent"
119+
android:layout_height="60dp"
120+
android:layout_alignParentBottom="true"
121+
app:itemBackground="@color/nav_bar_color"
122+
app:itemIconTint="@drawable/nav_bar_selector"
123+
app:itemTextColor="@drawable/nav_bar_selector"
124+
app:menu="@menu/menu_navigation_bottom" />
125+
126+
</RelativeLayout>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<menu xmlns:android="http://schemas.android.com/apk/res/android">
3+
<item
4+
android:id="@+id/installation"
5+
android:title="Installation"
6+
android:icon="@drawable/material_keyboard"/>
7+
<item
8+
android:id="@+id/settings"
9+
android:title="Settings"
10+
android:icon="@drawable/material_settings"/>
11+
12+
<item
13+
android:id="@+id/info"
14+
android:title="About"
15+
android:icon="@drawable/material_info"/>
16+
17+
</menu>

‎app/src/main/res/values-night-v31/colors.xml

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
<color name="you_keyboard_background_color">@android:color/system_neutral1_900</color>
44
<color name="you_keyboard_toolbar_color">@color/you_background_color</color>
55
<color name="app_text_color">#FFFFFFFF</color>
6-
6+
<color name="nav_bar_color">#000</color>">
7+
<color name="nav_bar_focus_color">#FFF</color>
8+
<color name="nav_bar_selected_color">@color/dark_scribe_blue</color>
79
<!-- Commons colors -->
810
<color name="you_status_bar_color">@android:color/system_accent2_800</color>
911
<color name="you_contextual_status_bar_color">@android:color/system_accent1_700</color>

‎app/src/main/res/values-v31/colors.xml

+3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
<color name="you_keyboard_background_color">#99FFFFFF</color>
44
<color name="you_keyboard_toolbar_color">@color/you_background_color</color>
55
<color name="app_text_color">#95000000</color>
6+
<color name="nav_bar_color">#FFFFFFFF</color>">
7+
<color name="nav_bar_focus_color">#000</color>
8+
<color name="nav_bar_selected_color">@color/light_scribe_blue</color>
69
<!-- Commons colors -->
710
<color name="you_status_bar_color">@android:color/system_accent2_50</color>
811
<color name="you_contextual_status_bar_color">@android:color/system_accent1_400</color>

‎icons/material_info.svg

+1
Loading

‎icons/material_keyboard.svg

+1
Loading

‎icons/material_settings.svg

+1
Loading

0 commit comments

Comments
 (0)
Please sign in to comment.