diff --git a/app/build.gradle b/app/build.gradle index ea34434..379b009 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,13 +3,13 @@ plugins { } android { - compileSdk 34 + compileSdk 35 defaultConfig { applicationId "com.sjapps.jsonlist" minSdk 23 - targetSdk 34 - versionCode 23 + targetSdk 35 + versionCode 24 versionName "1.6" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -28,7 +28,7 @@ android { } debug { applicationIdSuffix '.debug' - versionNameSuffix ' dev 3' + versionNameSuffix ' dev 4' } } compileOptions { diff --git a/app/src/main/java/com/sjapps/about/AboutActivity.java b/app/src/main/java/com/sjapps/about/AboutActivity.java index acfaf39..61b6f0b 100644 --- a/app/src/main/java/com/sjapps/about/AboutActivity.java +++ b/app/src/main/java/com/sjapps/about/AboutActivity.java @@ -10,13 +10,18 @@ import android.os.Build; import android.os.Bundle; import android.view.View; +import android.view.ViewGroup; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageView; +import androidx.activity.EdgeToEdge; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.content.res.AppCompatResources; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; import androidx.core.widget.NestedScrollView; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -50,8 +55,10 @@ public class AboutActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + EdgeToEdge.enable(this); setContentView(R.layout.activity_about); initialize(); + setLayoutBounds(); Animation animation = AnimationUtils.loadAnimation(this, R.anim.slide_from_bottom); nestedScrollView.startAnimation(animation); PackageManager manager = getPackageManager(); @@ -74,6 +81,23 @@ protected void onCreate(Bundle savedInstanceState) { } + private void setLayoutBounds() { + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.rootView), (v, windowInsets) -> { + Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()); + Insets insetsN = windowInsets.getInsets(WindowInsetsCompat.Type.displayCutout()); + + ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) v.getLayoutParams(); + + layoutParams.leftMargin = insets.left + insetsN.left; + layoutParams.topMargin = insets.top; + layoutParams.rightMargin = insets.right + insetsN.right; + View scrollRL = findViewById(R.id.scrollRL); + scrollRL.setPadding(scrollRL.getPaddingLeft(),scrollRL.getPaddingTop(),scrollRL.getPaddingRight(),insets.bottom + insetsN.bottom); + v.setLayoutParams(layoutParams); + return WindowInsetsCompat.CONSUMED; + }); + } + private void setupList(ArrayList items, @NonNull RecyclerView view) { AboutListAdapter adapter = new AboutListAdapter(items); view.setNestedScrollingEnabled(false); diff --git a/app/src/main/java/com/sjapps/jsonlist/MainActivity.java b/app/src/main/java/com/sjapps/jsonlist/MainActivity.java index 16a3cbe..0917dd5 100644 --- a/app/src/main/java/com/sjapps/jsonlist/MainActivity.java +++ b/app/src/main/java/com/sjapps/jsonlist/MainActivity.java @@ -8,6 +8,9 @@ import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -127,6 +130,7 @@ protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_main); initialize(); + setLayoutBounds(); if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){ isVertical = false; @@ -271,6 +275,22 @@ protected void onCreate(Bundle savedInstanceState) { }); } + private void setLayoutBounds() { + ViewCompat.setOnApplyWindowInsetsListener(viewGroup, (v, windowInsets) -> { + Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()); + Insets insetsN = windowInsets.getInsets(WindowInsetsCompat.Type.displayCutout()); + + ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) v.getLayoutParams(); + + layoutParams.leftMargin = insets.left + insetsN.left; + layoutParams.topMargin = insets.top; + layoutParams.rightMargin = insets.right + insetsN.right; + layoutParams.bottomMargin = insets.bottom; + v.setLayoutParams(layoutParams); + return WindowInsetsCompat.CONSUMED; + }); + } + private void LoadStateData() { boolean prevSH = state != null && state.isSyntaxHighlighting(); diff --git a/app/src/main/java/com/sjapps/jsonlist/SettingsActivity.java b/app/src/main/java/com/sjapps/jsonlist/SettingsActivity.java index d8c2732..1f11145 100644 --- a/app/src/main/java/com/sjapps/jsonlist/SettingsActivity.java +++ b/app/src/main/java/com/sjapps/jsonlist/SettingsActivity.java @@ -3,6 +3,7 @@ import android.annotation.SuppressLint; import android.os.Bundle; import android.view.View; +import android.view.ViewGroup; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.AdapterView; @@ -10,6 +11,9 @@ import android.widget.Spinner; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatDelegate; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; import com.google.android.material.materialswitch.MaterialSwitch; @@ -28,6 +32,7 @@ protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_settings); initialize(); + setLayoutBounds(); LoadData(); @@ -83,6 +88,22 @@ public void onNothingSelected(AdapterView parent) { } + private void setLayoutBounds() { + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.rootView), (v, windowInsets) -> { + Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()); + Insets insetsN = windowInsets.getInsets(WindowInsetsCompat.Type.displayCutout()); + + ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) v.getLayoutParams(); + + layoutParams.leftMargin = insets.left + insetsN.left; + layoutParams.topMargin = insets.top; + layoutParams.rightMargin = insets.right + insetsN.right; + layoutParams.bottomMargin = insets.bottom; + v.setLayoutParams(layoutParams); + return WindowInsetsCompat.CONSUMED; + }); + } + private void LoadData() { state = FileSystem.loadStateData(this); } diff --git a/app/src/main/java/com/sjapps/logs/LogActivity.java b/app/src/main/java/com/sjapps/logs/LogActivity.java index 10bad74..151c406 100644 --- a/app/src/main/java/com/sjapps/logs/LogActivity.java +++ b/app/src/main/java/com/sjapps/logs/LogActivity.java @@ -10,11 +10,16 @@ import android.os.Bundle; import android.util.DisplayMetrics; import android.view.View; +import android.view.ViewGroup; import android.widget.TextView; import android.widget.Toast; +import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; import androidx.core.content.FileProvider; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; import com.google.gson.Gson; import com.sjapps.jsonlist.AppState; @@ -38,8 +43,9 @@ public class LogActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_log); - + EdgeToEdge.enable(this); logTxt = findViewById(R.id.logTxt); + setLayoutBounds(); update(); AppState state = FileSystem.loadStateData(this); @@ -51,6 +57,22 @@ protected void onCreate(Bundle savedInstanceState) { } + private void setLayoutBounds() { + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.rootView), (v, windowInsets) -> { + Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()); + Insets insetsN = windowInsets.getInsets(WindowInsetsCompat.Type.displayCutout()); + + ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) v.getLayoutParams(); + + layoutParams.leftMargin = insets.left + insetsN.left; + layoutParams.topMargin = insets.top; + layoutParams.rightMargin = insets.right + insetsN.right; + logTxt.setPadding(logTxt.getPaddingLeft(),logTxt.getPaddingTop(),logTxt.getPaddingRight(),insets.bottom + insetsN.bottom); + v.setLayoutParams(layoutParams); + return WindowInsetsCompat.CONSUMED; + }); + } + @Override protected void onResume() { super.onResume(); diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml index b5677b4..be9b027 100644 --- a/app/src/main/res/layout/activity_about.xml +++ b/app/src/main/res/layout/activity_about.xml @@ -4,41 +4,53 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context="com.sjapps.about.AboutActivity"> - - - - + + + android:layout_marginTop="10dp" + android:gravity="center_vertical" + > + + + + + + + + tools:context="com.sjapps.logs.LogActivity" + android:id="@+id/rootView"> - - + - - - - + + + + android:layout_marginTop="10dp" + android:gravity="center_vertical" + > + + + + + + diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml index d2ed08c..77b73e9 100644 --- a/app/src/main/res/values-night/themes.xml +++ b/app/src/main/res/values-night/themes.xml @@ -31,12 +31,14 @@ @style/ButtonColor ?android:windowBackgroundFallback - ?android:windowBackgroundFallback + ?android:backdropColor shortEdges #000000 #000000 @style/SnackbarStyle @style/SnackbarStyle + +