Skip to content

Commit c22c8bb

Browse files
committed
feat: implement edge-to-edge layout and system bar padding, upgrade to Android 15
1 parent f63a22f commit c22c8bb

File tree

6 files changed

+46
-6
lines changed

6 files changed

+46
-6
lines changed

app/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ plugins {
55
}
66

77
android {
8-
compileSdk 34
8+
compileSdk 35
99

1010
defaultConfig {
1111
applicationId "com.coderGtm.yantra"
1212
minSdk 21
13-
targetSdk 34
14-
versionCode 119
15-
versionName "10.2.0"
13+
targetSdk 35
14+
versionCode 120
15+
versionName "10.3.0"
1616

1717
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1818
}

app/src/main/java/com/coderGtm/yantra/activities/MainActivity.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import androidx.appcompat.app.AppCompatActivity
1616
import androidx.appcompat.content.res.AppCompatResources
1717
import androidx.core.content.edit
1818
import androidx.core.graphics.drawable.DrawableCompat
19+
import androidx.core.view.WindowCompat
1920
import androidx.localbroadcastmanager.content.LocalBroadcastManager
2021
import com.canhub.cropper.CropImageContract
2122
import com.canhub.cropper.CropImageContractOptions
@@ -32,6 +33,7 @@ import com.coderGtm.yantra.getInit
3233
import com.coderGtm.yantra.informOfProVersionIfOldUser
3334
import com.coderGtm.yantra.isPro
3435
import com.coderGtm.yantra.listeners.TermuxCommandResultReceiver
36+
import com.coderGtm.yantra.misc.applySystemBarsPadding
3537
import com.coderGtm.yantra.requestCmdInputFocusAndShowKeyboard
3638
import com.coderGtm.yantra.requestUpdateIfAvailable
3739
import com.coderGtm.yantra.runInitTasks
@@ -65,6 +67,10 @@ class MainActivity : AppCompatActivity(), TextToSpeech.OnInitListener, TerminalG
6567
binding = ActivityMainBinding.inflate(layoutInflater)
6668
setContentView(binding.root)
6769

70+
// Enable edge-to-edge and manage insets manually
71+
WindowCompat.setDecorFitsSystemWindows(window, false)
72+
binding.rootLayout.applySystemBarsPadding()
73+
6874
app = application as YantraLauncher
6975
app.preferenceObject = applicationContext.getSharedPreferences(SHARED_PREFS_FILE_NAME,0)
7076
setProStatus(this, app.preferenceObject)

app/src/main/java/com/coderGtm/yantra/activities/SettingsActivity.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import androidx.appcompat.app.AppCompatDelegate
1818
import androidx.core.os.LocaleListCompat
1919
import androidx.core.provider.FontRequest
2020
import androidx.core.provider.FontsContractCompat
21+
import androidx.core.view.WindowCompat
2122
import androidx.core.widget.addTextChangedListener
2223
import com.android.volley.NoConnectionError
2324
import com.android.volley.Request
@@ -32,6 +33,7 @@ import com.coderGtm.yantra.databinding.ActivitySettingsBinding
3233
import com.coderGtm.yantra.getFullName
3334
import com.coderGtm.yantra.getUserNamePrefix
3435
import com.coderGtm.yantra.isPro
36+
import com.coderGtm.yantra.misc.applySystemBarsPadding
3537
import com.coderGtm.yantra.misc.changedSettingsCallback
3638
import com.coderGtm.yantra.misc.getSoundEffects
3739
import com.coderGtm.yantra.misc.openAiApiKeySetter
@@ -140,6 +142,10 @@ class SettingsActivity : AppCompatActivity() {
140142
binding = ActivitySettingsBinding.inflate(layoutInflater)
141143
setContentView(binding.root)
142144

145+
// Enable edge-to-edge and manage insets manually
146+
WindowCompat.setDecorFitsSystemWindows(window, false)
147+
binding.rootLayout.applySystemBarsPadding()
148+
143149
hideProForNonProUsers()
144150

145151
splitInstallManager = SplitInstallManagerFactory.create(this)

app/src/main/java/com/coderGtm/yantra/activities/WebViewActivity.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,28 @@ import android.webkit.WebViewClient
2020
import android.widget.ProgressBar
2121
import android.widget.TextView
2222
import androidx.appcompat.app.AppCompatActivity
23+
import androidx.core.view.WindowCompat
2324
import com.coderGtm.yantra.R
2425
import com.coderGtm.yantra.SHARED_PREFS_FILE_NAME
26+
import com.coderGtm.yantra.databinding.ActivityWebViewBinding
27+
import com.coderGtm.yantra.misc.applySystemBarsPadding
2528
import com.google.android.material.button.MaterialButton
2629

2730

2831
class WebViewActivity : AppCompatActivity() {
2932
private lateinit var webView: IncognitoWebView
3033
private lateinit var titleBar: TextView
34+
private lateinit var binding: ActivityWebViewBinding
3135

3236
@SuppressLint("SetJavaScriptEnabled")
3337
override fun onCreate(savedInstanceState: Bundle?) {
3438
super.onCreate(savedInstanceState)
35-
setContentView(R.layout.activity_web_view)
39+
binding = ActivityWebViewBinding.inflate(layoutInflater)
40+
setContentView(binding.root)
41+
42+
// Enable edge-to-edge and manage insets manually
43+
WindowCompat.setDecorFitsSystemWindows(window, false)
44+
binding.rootLayout.applySystemBarsPadding()
3645

3746
var urlPassed = intent.getStringExtra("url")
3847
if (urlPassed == null) {
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.coderGtm.yantra.misc
2+
3+
import androidx.core.view.ViewCompat
4+
import androidx.core.view.WindowInsetsCompat
5+
6+
fun android.view.View.applySystemBarsPadding(includeSides: Boolean = true) {
7+
val startP = paddingStart
8+
val topP = paddingTop
9+
val endP = paddingEnd
10+
val bottomP = paddingBottom
11+
ViewCompat.setOnApplyWindowInsetsListener(this) { v, insets ->
12+
val sb = insets.getInsets(WindowInsetsCompat.Type.systemBars())
13+
val left = if (includeSides) sb.left else 0
14+
val right = if (includeSides) sb.right else 0
15+
v.setPaddingRelative(startP + left, topP + sb.top, endP + right, bottomP + sb.bottom)
16+
insets
17+
}
18+
requestApplyInsets()
19+
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3-
xmlns:app="http://schemas.android.com/apk/res-auto"
3+
android:id="@+id/rootLayout"
44
xmlns:tools="http://schemas.android.com/tools"
55
android:layout_width="match_parent"
66
android:layout_height="match_parent"

0 commit comments

Comments
 (0)