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 + + - - - 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