diff --git a/.gitignore b/.gitignore
index 6842b843..0610a7c3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,6 +32,9 @@ local.properties
.idea/deploymentTargetDropDown.xml
.idea/appInsightsSettings.xml
.idea/deploymentTargetSelector.xml
+.idea/AndroidProjectSystem.xml
+.idea/runConfigurations.xml
+.idea/deviceManager.xml
*.iml
# OS-specific files
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index dfbfb5ed..967058c3 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -4,6 +4,7 @@
-
diff --git a/app/build.gradle b/app/build.gradle
index dc395fc5..8fd6b6bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,11 +1,11 @@
apply plugin: 'com.android.application'
android {
- compileSdk 35
+ compileSdk=36
defaultConfig {
applicationId "com.samsung.microbit"
- minSdkVersion 21
- targetSdk 35
+ minSdkVersion 23
+ targetSdk 36
// When target SDK version is 30+,
// requestLegacyExternalStorage will continue to work for 29 Android 10
}
@@ -20,7 +20,7 @@ android {
buildTypes {
release {
minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
@@ -30,19 +30,23 @@ android {
lint {
abortOnError false
}
+ buildFeatures {
+ buildConfig true
+ }
}
dependencies {
- implementation 'androidx.lifecycle:lifecycle-process:2.9.2'
+ implementation 'androidx.core:core:1.17.0'
+ implementation 'androidx.lifecycle:lifecycle-process:2.10.0'
testImplementation 'junit:junit:4.13.2'
implementation 'androidx.appcompat:appcompat:1.7.1'
- implementation 'com.google.android.material:material:1.12.0'
+ implementation 'com.google.android.material:material:1.13.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.4.0'
- implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.29'
+ implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.30'
implementation 'no.nordicsemi.android:dfu:2.4.1'
implementation project(':pfLibrary')
implementation 'com.google.android.gms:play-services-analytics:18.1.1'
- implementation 'com.google.code.gson:gson:2.13.1'
+ implementation 'com.google.code.gson:gson:2.13.2'
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c4944d86..62612f8b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -62,10 +62,15 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar"
- android:requestLegacyExternalStorage="true">
+ android:requestLegacyExternalStorage="true"
+ android:enableOnBackInvokedCallback="false">
+
@@ -73,6 +78,7 @@
{
+ LinearLayout root = (LinearLayout) v;
+ int childCount = root.getChildCount();
+ for (int index = 0; index < childCount; ++index) {
+ ViewCompat.dispatchApplyWindowInsets( root.getChildAt(index), windowInsets);
+ }
+ return windowInsets;
+ });
+
displayHtmlDelete();
displayInit();
}
public void displayConfigurationChanged(Configuration newConfig) {
setContentView(R.layout.fetch_main);
+
+ // Pass insets to children
+ ViewCompat.setOnApplyWindowInsetsListener( findViewById(R.id.fetchMain), (v, windowInsets) -> {
+ LinearLayout root = (LinearLayout) v;
+ int childCount = root.getChildCount();
+ for (int index = 0; index < childCount; ++index) {
+ ViewCompat.dispatchApplyWindowInsets( root.getChildAt(index), windowInsets);
+ }
+ return windowInsets;
+ });
+
displayInit();
}
diff --git a/app/src/main/java/com/samsung/microbit/ui/activity/HelpWebView.java b/app/src/main/java/com/samsung/microbit/ui/activity/HelpWebView.java
index 7a7f5683..ca25d16c 100644
--- a/app/src/main/java/com/samsung/microbit/ui/activity/HelpWebView.java
+++ b/app/src/main/java/com/samsung/microbit/ui/activity/HelpWebView.java
@@ -8,6 +8,8 @@
import android.webkit.WebView;
import android.webkit.WebViewClient;
+import androidx.core.view.WindowCompat;
+
import com.samsung.microbit.R;
/**
@@ -30,11 +32,8 @@ protected void onStop() {
@Override
protected void onCreate(Bundle savedInstanceState) {
- // TODO: EdgeToEdge - Remove once activities handle insets.
- // Call before the DecorView is accessed in setContentView
- getTheme().applyStyle(R.style.OptOutEdgeToEdgeEnforcement, /* force */ false);
-
super.onCreate(savedInstanceState);
+ WindowCompat.enableEdgeToEdge(getWindow());
setContentView(R.layout.activity_help_web_view);
webView = (WebView) findViewById(R.id.generalView);
diff --git a/app/src/main/java/com/samsung/microbit/ui/activity/HomeActivity.java b/app/src/main/java/com/samsung/microbit/ui/activity/HomeActivity.java
index a3fe9754..3843a94d 100644
--- a/app/src/main/java/com/samsung/microbit/ui/activity/HomeActivity.java
+++ b/app/src/main/java/com/samsung/microbit/ui/activity/HomeActivity.java
@@ -33,6 +33,8 @@
import androidx.core.content.ContextCompat;
import androidx.core.content.PermissionChecker;
import androidx.core.view.GravityCompat;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import com.samsung.microbit.MBApp;
@@ -124,11 +126,8 @@ protected void onStop() {
protected void onCreate(Bundle savedInstanceState) {
logi("onCreate() :: ");
- // TODO: EdgeToEdge - Remove once activities handle insets.
- // Call before the DecorView is accessed in setContentView
- getTheme().applyStyle(R.style.OptOutEdgeToEdgeEnforcement, /* force */ false);
-
super.onCreate(savedInstanceState);
+ WindowCompat.enableEdgeToEdge(getWindow());
setContentView(R.layout.activity_home);
@@ -171,6 +170,12 @@ private void setupButtonsFontStyle() {
*/
private void setupDrawer() {
+ // DrawLayout passes insets to children
+ // Allow left side menu (custom_nav_header_main, nav_view) to pass insets to child ScrollView
+ ViewCompat.setOnApplyWindowInsetsListener( findViewById(R.id.nav_view), (v, windowInsets) -> {
+ return windowInsets;
+ });
+
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setNavigationContentDescription(R.string.content_description_toolbar_home);
ImageView imgToolbarLogo = (ImageView) findViewById(R.id.img_toolbar_logo);
diff --git a/app/src/main/java/com/samsung/microbit/ui/activity/MakeCodeWebView.java b/app/src/main/java/com/samsung/microbit/ui/activity/MakeCodeWebView.java
index 6782ca8c..929c2daa 100644
--- a/app/src/main/java/com/samsung/microbit/ui/activity/MakeCodeWebView.java
+++ b/app/src/main/java/com/samsung/microbit/ui/activity/MakeCodeWebView.java
@@ -2,13 +2,20 @@
import android.app.Activity;
import android.content.Intent;
+import android.content.res.Configuration;
+import android.graphics.Rect;
import android.net.Uri;
+import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.util.Base64;
import android.util.Log;
import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewTreeObserver;
+import android.view.Window;
+import android.view.WindowInsets;
import android.webkit.DownloadListener;
import android.webkit.JavascriptInterface;
import android.webkit.ValueCallback;
@@ -17,6 +24,7 @@
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
+import android.widget.LinearLayout;
import android.widget.Toast;
import com.samsung.microbit.BuildConfig;
@@ -31,6 +39,13 @@
import static android.content.ContentValues.TAG;
+import androidx.annotation.NonNull;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowCompat;
+import androidx.core.view.WindowInsetsCompat;
+import androidx.core.view.WindowInsetsControllerCompat;
+
/**
* Displays MakeCode
*/
@@ -51,35 +66,88 @@ public class MakeCodeWebView extends Activity implements View.OnClickListener {
private boolean mRelaunchOnFinishNavigation = false;
private String mRelaunchURL = makecodeUrl;
-
+ private int mKeypadHeight = -1;
public static void setMakecodeUrl(String url) {
makecodeUrl = url;
}
+ protected void showSystemBars( boolean show) {
+ WindowInsetsControllerCompat wIC =
+ WindowCompat.getInsetsController(getWindow(), getWindow().getDecorView());
+ if (wIC == null) {
+ return;
+ }
+
+ int type = WindowInsetsCompat.Type.statusBars();
+ if (show) {
+ wIC.show(type);
+ } else {
+ wIC.hide(type);
+ }
+ }
+
@Override
protected void onStart() {
super.onStart();
+ showSystemBars( false);
}
@Override
protected void onStop() {
super.onStop();
+ showSystemBars( true);
}
@Override
- protected void onCreate(Bundle savedInstanceState) {
+ public void onConfigurationChanged(@NonNull Configuration newConfig) {
+ super.onConfigurationChanged(newConfig);
+ ViewCompat.requestApplyInsets( findViewById(R.id.MakeCode));
+ }
- // TODO: EdgeToEdge - Remove once activities handle insets.
- // Call before the DecorView is accessed in setContentView
- getTheme().applyStyle(R.style.OptOutEdgeToEdgeEnforcement, /* force */ false);
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ WindowCompat.enableEdgeToEdge(getWindow());
activityHandle = this;
- setContentView(R.layout.activity_help_web_view);
- webView = (WebView) findViewById(R.id.generalView);
+ setContentView(R.layout.activity_makecode);
+
+ ViewCompat.setOnApplyWindowInsetsListener( findViewById(R.id.MakeCode), (v, windowInsets) -> {
+ Insets insets = windowInsets.getInsets(
+ WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.displayCutout() | WindowInsetsCompat.Type.ime());
+ ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
+ mlp.leftMargin = insets.left;
+ mlp.bottomMargin = insets.bottom;
+ mlp.rightMargin = insets.right;
+ mlp.topMargin = insets.top;
+ v.setLayoutParams(mlp);
+ return WindowInsetsCompat.CONSUMED;
+ });
+
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
+ findViewById(R.id.MakeCode).getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
+ @Override
+ public void onGlobalLayout() {
+ Rect r = new Rect();
+
+ View rootView = findViewById(R.id.MakeCode);
+ rootView.getWindowVisibleDisplayFrame(r);
+ int screenHeight = rootView.getRootView().getHeight();
+ int keypadHeight = screenHeight - r.bottom;
+
+ if ( mKeypadHeight != keypadHeight) {
+ Log.v(TAG, "onGlobalLayout keypad changed");
+ mKeypadHeight = keypadHeight;
+ ViewCompat.requestApplyInsets(findViewById(R.id.MakeCode));
+ }
+ }
+ });
+ }
+
+ webView = (WebView) findViewById(R.id.MakeCodeWebView);
webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
@@ -265,7 +333,6 @@ else if ( !hexName.isEmpty()) {
MBApp.getAppState().eventPairMakeCodeBegin();
} // onCreate
-
private boolean showFileChooser(WebView webView, ValueCallback filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) {
onShowFileChooser_filePathCallback = filePathCallback;
try {
diff --git a/app/src/main/java/com/samsung/microbit/ui/activity/NotificationActivity.java b/app/src/main/java/com/samsung/microbit/ui/activity/NotificationActivity.java
index c8a88a78..794aefe9 100644
--- a/app/src/main/java/com/samsung/microbit/ui/activity/NotificationActivity.java
+++ b/app/src/main/java/com/samsung/microbit/ui/activity/NotificationActivity.java
@@ -5,6 +5,8 @@
import android.content.res.Configuration;
import android.os.Bundle;
+import androidx.core.view.WindowCompat;
+
import com.samsung.microbit.R;
public class NotificationActivity extends Activity {
@@ -12,11 +14,8 @@ public class NotificationActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
- // TODO: EdgeToEdge - Remove once activities handle insets.
- // Call before the DecorView is accessed in setContentView
- getTheme().applyStyle(R.style.OptOutEdgeToEdgeEnforcement, /* force */ false);
-
super.onCreate(savedInstanceState);
+ WindowCompat.enableEdgeToEdge(getWindow());
// If this activity is the root activity of the task, the app is not running
if(isTaskRoot()) {
diff --git a/app/src/main/java/com/samsung/microbit/ui/activity/PairingActivity.java b/app/src/main/java/com/samsung/microbit/ui/activity/PairingActivity.java
index b30ef4f6..3890345c 100644
--- a/app/src/main/java/com/samsung/microbit/ui/activity/PairingActivity.java
+++ b/app/src/main/java/com/samsung/microbit/ui/activity/PairingActivity.java
@@ -36,6 +36,8 @@
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.core.content.PermissionChecker;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowCompat;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.samsung.microbit.MBApp;
@@ -848,11 +850,8 @@ public void onPause() {
protected void onCreate(Bundle savedInstanceState) {
logi("onCreate() ::");
- // TODO: EdgeToEdge - Remove once activities handle insets.
- // Call before the DecorView is accessed in setContentView
- getTheme().applyStyle(R.style.OptOutEdgeToEdgeEnforcement, /* force */ false);
-
super.onCreate(savedInstanceState);
+ WindowCompat.enableEdgeToEdge(getWindow());
MBApp application = MBApp.getApp();
@@ -880,6 +879,16 @@ protected void onCreate(Bundle savedInstanceState) {
// setContentView takes just over 2s
setContentView(R.layout.activity_connect);
+ // Pass insets to children
+ ViewCompat.setOnApplyWindowInsetsListener( findViewById(R.id.ll_pairing_activity_screen), (v, windowInsets) -> {
+ LinearLayout root = (LinearLayout) v;
+ int childCount = root.getChildCount();
+ for (int index = 0; index < childCount; ++index) {
+ ViewCompat.dispatchApplyWindowInsets( root.getChildAt(index), windowInsets);
+ }
+ return windowInsets;
+ });
+
initViews();
updatePairedDeviceCard();
diff --git a/app/src/main/java/com/samsung/microbit/ui/activity/PopUpActivity.java b/app/src/main/java/com/samsung/microbit/ui/activity/PopUpActivity.java
index 1e264bc0..78647e88 100644
--- a/app/src/main/java/com/samsung/microbit/ui/activity/PopUpActivity.java
+++ b/app/src/main/java/com/samsung/microbit/ui/activity/PopUpActivity.java
@@ -16,6 +16,7 @@
import android.widget.ProgressBar;
import android.widget.TextView;
+import androidx.core.view.WindowCompat;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.samsung.microbit.MBApp;
@@ -190,11 +191,8 @@ private void releaseViews() {
@Override
protected void onCreate(Bundle savedInstanceState) {
- // TODO: EdgeToEdge - Remove once activities handle insets.
- // Call before the DecorView is accessed in setContentView
- getTheme().applyStyle(R.style.OptOutEdgeToEdgeEnforcement, /* force */ false);
-
super.onCreate(savedInstanceState);
+ WindowCompat.enableEdgeToEdge(getWindow());
Log.d("PopUpActivity", "onCreate() popuptype = " + getIntent().getIntExtra(INTENT_EXTRA_TYPE, PopUp.TYPE_NONE));
setContentView(R.layout.activity_popup);
diff --git a/app/src/main/java/com/samsung/microbit/ui/activity/ProjectActivity.java b/app/src/main/java/com/samsung/microbit/ui/activity/ProjectActivity.java
index f6ae1d74..134b6a2e 100644
--- a/app/src/main/java/com/samsung/microbit/ui/activity/ProjectActivity.java
+++ b/app/src/main/java/com/samsung/microbit/ui/activity/ProjectActivity.java
@@ -21,6 +21,7 @@
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
+import android.view.ViewGroup;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;
@@ -34,6 +35,10 @@
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.core.content.PermissionChecker;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowCompat;
+import androidx.core.view.WindowInsetsCompat;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.samsung.microbit.MBApp;
@@ -624,11 +629,8 @@ private void releaseViews() {
@Override
protected void onCreate(Bundle savedInstanceState) {
- // TODO: EdgeToEdge - Remove once activities handle insets.
- // Call before the DecorView is accessed in setContentView
- getTheme().applyStyle(R.style.OptOutEdgeToEdgeEnforcement, /* force */ false);
-
super.onCreate(savedInstanceState);
+ WindowCompat.enableEdgeToEdge(getWindow());
MBApp application = MBApp.getApp();
@@ -647,6 +649,17 @@ protected void onCreate(Bundle savedInstanceState) {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_projects);
+
+ // Pass insets to children
+ ViewCompat.setOnApplyWindowInsetsListener( findViewById(R.id.layout), (v, windowInsets) -> {
+ LinearLayout root = (LinearLayout) v;
+ int childCount = root.getChildCount();
+ for (int index = 0; index < childCount; ++index) {
+ ViewCompat.dispatchApplyWindowInsets( root.getChildAt(index), windowInsets);
+ }
+ return windowInsets;
+ });
+
initViews();
setupFontStyle();
diff --git a/app/src/main/java/com/samsung/microbit/ui/activity/SplashScreenActivity.java b/app/src/main/java/com/samsung/microbit/ui/activity/SplashScreenActivity.java
index 7ad3a036..696e8b62 100644
--- a/app/src/main/java/com/samsung/microbit/ui/activity/SplashScreenActivity.java
+++ b/app/src/main/java/com/samsung/microbit/ui/activity/SplashScreenActivity.java
@@ -12,6 +12,8 @@
import android.widget.TextView;
+import androidx.core.view.WindowCompat;
+
import com.samsung.microbit.R;
import pl.droidsonroids.gif.GifDrawable;
@@ -45,11 +47,8 @@ public class SplashScreenActivity extends Activity implements View.OnClickListen
@Override
protected void onCreate(Bundle savedInstanceState) {
- // TODO: EdgeToEdge - Remove once activities handle insets.
- // Call before the DecorView is accessed in setContentView
- getTheme().applyStyle(R.style.OptOutEdgeToEdgeEnforcement, /* force */ false);
-
super.onCreate(savedInstanceState);
+ WindowCompat.enableEdgeToEdge(getWindow());
setContentView(R.layout.activity_splash_screen);
initViews();
diff --git a/app/src/main/res/layout-land/view_connect_microbit.xml b/app/src/main/res/layout-land/view_connect_microbit.xml
index 1b485515..a782fe7c 100644
--- a/app/src/main/res/layout-land/view_connect_microbit.xml
+++ b/app/src/main/res/layout-land/view_connect_microbit.xml
@@ -3,40 +3,49 @@
android:id="@+id/connectDeviceView"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:orientation="vertical">
-
-
-
+ android:orientation="vertical"
+ android:fitsSystemWindows="true">
-
-
-
-
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:background="@drawable/bg">
-
-
-
+
+
-
-
+ android:paddingTop="?attr/actionBarSize">
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-land/view_enter_pin_if_needed.xml b/app/src/main/res/layout-land/view_enter_pin_if_needed.xml
index 324b4dc1..d0b478b9 100644
--- a/app/src/main/res/layout-land/view_enter_pin_if_needed.xml
+++ b/app/src/main/res/layout-land/view_enter_pin_if_needed.xml
@@ -1,9 +1,10 @@
+ android:id="@+id/enterPinIfNeededView"
+ style="@style/pairing_step_layout_style"
+ android:orientation="horizontal"
+ android:keepScreenOn="true"
+ android:fitsSystemWindows="true">
+ android:id="@+id/pairSearchView"
+ style="@style/pairing_step_layout_style"
+ android:orientation="horizontal"
+ android:keepScreenOn="true"
+ android:fitsSystemWindows="true">
+ android:orientation="horizontal"
+ android:fitsSystemWindows="true">
+ android:gravity="center_vertical"
+ android:fitsSystemWindows="true">
+ android:weightSum="100"
+ android:fitsSystemWindows="true">
+ android:weightSum="100"
+ android:fitsSystemWindows="true">
+ android:keepScreenOn="true"
+ android:layout_margin="@dimen/pairing_step_gif_image_margin"
+ android:fitsSystemWindows="true">
+ android:id="@+id/layout"
+ android:fitsSystemWindows="true">
+ android:background="@color/main_gray_color"
+ android:fitsSystemWindows="false">
diff --git a/app/src/main/res/layout/activity_help_web_view.xml b/app/src/main/res/layout/activity_help_web_view.xml
index 78418d80..d51026d3 100644
--- a/app/src/main/res/layout/activity_help_web_view.xml
+++ b/app/src/main/res/layout/activity_help_web_view.xml
@@ -1,9 +1,11 @@
+ tools:context="com.samsung.microbit.ui.activity.HelpWebView"
+ android:background="@color/main_gray_color"
+ android:fitsSystemWindows="true">
-
\ No newline at end of file
+
diff --git a/app/src/main/res/layout/activity_makecode.xml b/app/src/main/res/layout/activity_makecode.xml
new file mode 100644
index 00000000..a3e7994d
--- /dev/null
+++ b/app/src/main/res/layout/activity_makecode.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_popup.xml b/app/src/main/res/layout/activity_popup.xml
index a9ec8005..959aff97 100644
--- a/app/src/main/res/layout/activity_popup.xml
+++ b/app/src/main/res/layout/activity_popup.xml
@@ -1,7 +1,8 @@
+ style="@style/popup_layout_style"
+ android:fitsSystemWindows="true">
+ android:background="@drawable/bg"
+ android:fitsSystemWindows="false">
@@ -199,4 +200,4 @@
android:textColor="@color/white_color" />
-
\ No newline at end of file
+
diff --git a/app/src/main/res/layout/fetch_main.xml b/app/src/main/res/layout/fetch_main.xml
index 942758a6..d2366494 100644
--- a/app/src/main/res/layout/fetch_main.xml
+++ b/app/src/main/res/layout/fetch_main.xml
@@ -6,7 +6,8 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black_color"
- android:orientation="vertical">
+ android:orientation="vertical"
+ android:fitsSystemWindows="true">
diff --git a/app/src/main/res/layout/fetch_web.xml b/app/src/main/res/layout/fetch_web.xml
index 08cfb67c..7669f9da 100644
--- a/app/src/main/res/layout/fetch_web.xml
+++ b/app/src/main/res/layout/fetch_web.xml
@@ -4,7 +4,9 @@
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="0dp"
- android:orientation="vertical">
+ android:background="@color/main_gray_color"
+ android:orientation="vertical"
+ android:fitsSystemWindows="true">
+ android:orientation="vertical"
+ android:fitsSystemWindows="true">
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/view_enter_pin_if_needed.xml b/app/src/main/res/layout/view_enter_pin_if_needed.xml
index 50988f44..e1fa4ef8 100644
--- a/app/src/main/res/layout/view_enter_pin_if_needed.xml
+++ b/app/src/main/res/layout/view_enter_pin_if_needed.xml
@@ -3,7 +3,8 @@
android:id="@+id/enterPinIfNeededView"
style="@style/pairing_step_layout_style"
android:gravity="center_horizontal"
- android:keepScreenOn="true">
+ android:keepScreenOn="true"
+ android:fitsSystemWindows="true">
+ android:keepScreenOn="true"
+ android:fitsSystemWindows="true">
+ style="@style/pairing_step_layout_style"
+ android:fitsSystemWindows="true">
+ style="@style/pairing_step_layout_style"
+ android:fitsSystemWindows="true">
+ android:weightSum="100"
+ android:fitsSystemWindows="true">
+ android:background="@color/main_gray_color"
+ android:orientation="vertical"
+ android:fitsSystemWindows="true">
-
-
-
-
+
+ android:layout_height="0dp"
+ android:layout_marginTop="@dimen/project_items_layout_margin_top"
+ android:layout_weight="1"
+ android:orientation="vertical">
-
+
-
+
-
-
+
+
+
-
+
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@color/main_gray_transparent_60_opacity_color"
+ android:gravity="center_horizontal"
+ android:weightSum="2">
-
+
+
-
+
+
+
+
diff --git a/app/src/main/res/layout/view_projects_searching.xml b/app/src/main/res/layout/view_projects_searching.xml
index 9f92aca4..408810da 100644
--- a/app/src/main/res/layout/view_projects_searching.xml
+++ b/app/src/main/res/layout/view_projects_searching.xml
@@ -9,7 +9,8 @@
android:gravity="center"
android:padding="16dp"
android:orientation="vertical"
- android:weightSum="100">
+ android:weightSum="100"
+ android:fitsSystemWindows="true">
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 8a62a62e..1b5d5710 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -10,6 +10,10 @@
- true
+
+
@@ -324,11 +328,4 @@
-
-
-
diff --git a/build.gradle b/build.gradle
index bf170ac3..39dd7a13 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,7 +5,7 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:8.6.1'
+ classpath 'com.android.tools.build:gradle:9.0.0'
classpath 'com.google.gms:google-services:4.4.3'
}
}
diff --git a/gradle.properties b/gradle.properties
index 61c499e0..e6ff7d35 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -16,6 +16,15 @@
android.useAndroidX=true
android.enableJetifier=true
-android.defaults.buildfeatures.buildconfig=true
android.nonTransitiveRClass=false
android.nonFinalResIds=false
+android.defaults.buildfeatures.resvalues=true
+android.sdk.defaultTargetSdkToCompileSdkIfUnset=false
+android.enableAppCompileTimeRClass=false
+android.usesSdkInManifest.disallowed=false
+android.uniquePackageNames=false
+android.dependency.useConstraints=true
+android.r8.strictFullModeForKeepRules=false
+android.r8.optimizedResourceShrinking=false
+android.builtInKotlin=false
+android.newDsl=false
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 48c0a02c..d706aba6 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/pfLibrary b/pfLibrary
index 075e8e84..5c430387 160000
--- a/pfLibrary
+++ b/pfLibrary
@@ -1 +1 @@
-Subproject commit 075e8e844873f8443dcbe7fca64bb4aa18b0aced
+Subproject commit 5c4303871fbd0d6fc5ce7b106eb377b7672de6e3