diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4b28a9c9af7ac05eda2f977d2a21752a27648222..d2d2dca7e3ab7bf5538102bf60568491577b9241 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 e74a2792536bc877b2cb66975b6f30543b1af8d8..e159a35a56dd1c2fd2865cfb6cd807df6bae5ee9 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,12 @@ 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 +import android.os.Build class ShaderBlurDrawable internal constructor(private val blurWallpaperProvider: BlurWallpaperProvider) : Drawable(), BlurWallpaperProvider.Listener { @@ -37,7 +33,6 @@ class ShaderBlurDrawable internal constructor(private val blurWallpaperProvider: } } } - var noRadius = true @@ -50,22 +45,26 @@ 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() - ) + 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 } //setupBlurPath() - //canvas.translate(0f, -1500f) if (noRadius) { canvas.drawRect( 0f, 0f, @@ -78,6 +77,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 438e4b29c9027a5a6fd99321a553e6023896f545..da9a1b564ed12888439c07fe837e0f7271d17004 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 4587951ab8091d903939a14e523233f752e91a51..85c7d7a20598019997da8715ef10981fb22eecc6 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 2e90a097a3e4e284b82cc15f4c5ebf64f8381f54..9133268c9a26433b95da8706531320889861c2c7 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(); }