From a7c18c2a1ae32a02d96fd04c97bff140554b9d68 Mon Sep 17 00:00:00 2001 From: Dayona Joseph Date: Fri, 3 Apr 2020 01:06:10 +0530 Subject: [PATCH 1/2] Fix 'Crash when exiting app while changing screen orientation' --- app/src/main/AndroidManifest.xml | 3 +- .../core/blur/ShaderBlurDrawable.kt | 47 ++++++++++++------- .../customviews/InsettableScrollLayout.java | 14 ++++-- .../blisslauncher/core/events/EventRelay.java | 10 ++-- .../features/launcher/LauncherActivity.java | 6 ++- 5 files changed, 51 insertions(+), 29 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4b28a9c9af..d2d2dca7e3 100755 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -46,9 +46,8 @@ android:clearTaskOnLaunch="true" android:launchMode="singleTask" android:resumeWhilePausing="true" - android:screenOrientation="nosensor" android:stateNotNeeded="true" - android:configChanges="keyboard|keyboardHidden|mcc|mnc|navigation|orientation|screenSize|screenLayout|smallestScreenSize" + android:screenOrientation="nosensor" android:theme="@style/HomeScreenTheme" android:windowSoftInputMode="adjustPan"> diff --git a/app/src/main/java/foundation/e/blisslauncher/core/blur/ShaderBlurDrawable.kt b/app/src/main/java/foundation/e/blisslauncher/core/blur/ShaderBlurDrawable.kt index e74a279253..a453092221 100644 --- a/app/src/main/java/foundation/e/blisslauncher/core/blur/ShaderBlurDrawable.kt +++ b/app/src/main/java/foundation/e/blisslauncher/core/blur/ShaderBlurDrawable.kt @@ -1,16 +1,11 @@ package foundation.e.blisslauncher.core.blur -import android.graphics.Bitmap -import android.graphics.BitmapShader -import android.graphics.Canvas -import android.graphics.ColorFilter -import android.graphics.Paint -import android.graphics.Path -import android.graphics.PixelFormat -import android.graphics.RectF -import android.graphics.Shader + +import android.graphics.* import android.graphics.drawable.Drawable import foundation.e.blisslauncher.core.DeviceProfile +import android.graphics.Bitmap +import android.graphics.RectF class ShaderBlurDrawable internal constructor(private val blurWallpaperProvider: BlurWallpaperProvider) : Drawable(), BlurWallpaperProvider.Listener { @@ -37,7 +32,6 @@ class ShaderBlurDrawable internal constructor(private val blurWallpaperProvider: } } } - var noRadius = true @@ -50,22 +44,16 @@ class ShaderBlurDrawable internal constructor(private val blurWallpaperProvider: if(blurBitmap == null) { blurBitmap = blurWallpaperProvider.placeholder } + blurBitmap = if (blurBitmap!!.height > (blurBounds.bottom.toInt() - blurBounds.top.toInt())) { - - Bitmap.createBitmap( - blurBitmap!!, - blurBounds.left.toInt(), blurBounds.top.toInt(), - blurBounds.right.toInt() - blurBounds.left.toInt(), - blurBounds.bottom.toInt() - blurBounds.top.toInt() - ) + getCropBitmapByCPU(blurBitmap!!,blurBounds) } else { blurBitmap } //setupBlurPath() - //canvas.translate(0f, -1500f) if (noRadius) { canvas.drawRect( 0f, 0f, @@ -78,6 +66,29 @@ class ShaderBlurDrawable internal constructor(private val blurWallpaperProvider: //canvas.translate(0f, 1500f) } + private fun getCropBitmapByCPU(source: Bitmap, cropRectF: RectF): Bitmap? { + val resultBitmap = Bitmap.createBitmap(cropRectF.width().toInt(), + cropRectF.height().toInt(), Bitmap.Config.ARGB_8888); + val canvas = Canvas(resultBitmap); + + // draw background + val paint = Paint(Paint.FILTER_BITMAP_FLAG); + paint.setColor(Color.WHITE); + canvas.drawRect(//from w w w. ja v a 2s. c om + RectF(0F, 0F, cropRectF.width(), cropRectF.height()), + paint); + + val matrix = Matrix(); + matrix.postTranslate(-cropRectF.left, -cropRectF.top); + + canvas.drawBitmap(source, matrix, paint); + + if (source != null && !source.isRecycled()) { + source.recycle(); + } + return resultBitmap; + } + override fun setAlpha(alpha: Int) { blurAlpha = alpha blurPaint.alpha = alpha diff --git a/app/src/main/java/foundation/e/blisslauncher/core/customviews/InsettableScrollLayout.java b/app/src/main/java/foundation/e/blisslauncher/core/customviews/InsettableScrollLayout.java index 438e4b29c9..da9a1b564e 100644 --- a/app/src/main/java/foundation/e/blisslauncher/core/customviews/InsettableScrollLayout.java +++ b/app/src/main/java/foundation/e/blisslauncher/core/customviews/InsettableScrollLayout.java @@ -23,10 +23,14 @@ public class InsettableScrollLayout extends ScrollView implements Insettable { @Override public void setInsets(WindowInsets insets) { - int top = getPaddingTop(); - int left = getPaddingLeft(); - int right = getPaddingRight(); - int bottom = getPaddingBottom(); - setPadding(left, top, right, bottom + insets.getSystemWindowInsetBottom()); + try { + int top = getPaddingTop(); + int left = getPaddingLeft(); + int right = getPaddingRight(); + int bottom = getPaddingBottom(); + setPadding(left, top, right, bottom + insets.getSystemWindowInsetBottom()); + }catch (Exception e){ + e.printStackTrace(); + } } } diff --git a/app/src/main/java/foundation/e/blisslauncher/core/events/EventRelay.java b/app/src/main/java/foundation/e/blisslauncher/core/events/EventRelay.java index 4587951ab8..85c7d7a205 100644 --- a/app/src/main/java/foundation/e/blisslauncher/core/events/EventRelay.java +++ b/app/src/main/java/foundation/e/blisslauncher/core/events/EventRelay.java @@ -52,9 +52,13 @@ public class EventRelay { } public void unsubscribe() { - if (this.observer != null) { - observer.clear(); - observer = null; + try { + if (this.observer != null) { + observer.clear(); + observer = null; + } + }catch(Exception e){ + e.printStackTrace(); } } diff --git a/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java b/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java index 2e90a097a3..9133268c9a 100755 --- a/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java +++ b/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java @@ -479,7 +479,9 @@ public class LauncherActivity extends AppCompatActivity implements ManagedProfileBroadcastReceiver.unregister(this, managedProfileReceiver); LocalBroadcastManager.getInstance(this).unregisterReceiver(mWeatherReceiver); getCompositeDisposable().dispose(); - events.unsubscribe(); + if(events!=null) { + events.unsubscribe(); + } BlissLauncher.getApplication(this).getAppProvider().clear(); } @@ -1259,6 +1261,7 @@ public class LauncherActivity extends AppCompatActivity implements return grid; } + @SuppressLint("ClickableViewAccessibility") private void createWidgetsPage() { widgetsPage = (FrameLayout) getLayoutInflater().inflate(R.layout.widgets_page, mHorizontalPager, false); @@ -2016,6 +2019,7 @@ public class LauncherActivity extends AppCompatActivity implements public boolean onDrag(View view, DragEvent dragEvent) { if (dragEvent.getAction() == DragEvent.ACTION_DRAG_STARTED) { isDragging = true; + if (mWobblingCountDownTimer != null) { mWobblingCountDownTimer.cancel(); } -- GitLab From 935fabecea20a6482195e8c003c1a63d69a6cd85 Mon Sep 17 00:00:00 2001 From: Dayona Joseph Date: Mon, 6 Apr 2020 11:34:26 +0530 Subject: [PATCH 2/2] Fix: Restrict bitmap changes to only Nougat devices --- .../e/blisslauncher/core/blur/ShaderBlurDrawable.kt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/foundation/e/blisslauncher/core/blur/ShaderBlurDrawable.kt b/app/src/main/java/foundation/e/blisslauncher/core/blur/ShaderBlurDrawable.kt index a453092221..e159a35a56 100644 --- a/app/src/main/java/foundation/e/blisslauncher/core/blur/ShaderBlurDrawable.kt +++ b/app/src/main/java/foundation/e/blisslauncher/core/blur/ShaderBlurDrawable.kt @@ -6,6 +6,7 @@ import android.graphics.drawable.Drawable import foundation.e.blisslauncher.core.DeviceProfile import android.graphics.Bitmap import android.graphics.RectF +import android.os.Build class ShaderBlurDrawable internal constructor(private val blurWallpaperProvider: BlurWallpaperProvider) : Drawable(), BlurWallpaperProvider.Listener { @@ -47,7 +48,17 @@ class ShaderBlurDrawable internal constructor(private val blurWallpaperProvider: blurBitmap = if (blurBitmap!!.height > (blurBounds.bottom.toInt() - blurBounds.top.toInt())) { - getCropBitmapByCPU(blurBitmap!!,blurBounds) + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N_MR1) { + Bitmap.createBitmap( + blurBitmap!!, + blurBounds.left.toInt(), blurBounds.top.toInt(), + blurBounds.right.toInt() - blurBounds.left.toInt(), + blurBounds.bottom.toInt() - blurBounds.top.toInt() + ) + } + else{ + getCropBitmapByCPU(blurBitmap!!,blurBounds) + } } else { blurBitmap } -- GitLab