diff --git a/app/src/main/java/foundation/e/blisslauncher/core/blur/BlurDrawable.kt b/app/src/main/java/foundation/e/blisslauncher/core/blur/BlurDrawable.kt index 52a19e33fd8398eb358742f88b79ab8219f4a52d..763ac52dec62266c7fb3c8088a1101d801e4e1de 100644 --- a/app/src/main/java/foundation/e/blisslauncher/core/blur/BlurDrawable.kt +++ b/app/src/main/java/foundation/e/blisslauncher/core/blur/BlurDrawable.kt @@ -10,8 +10,11 @@ import android.graphics.RectF import android.graphics.Shader import android.graphics.drawable.Drawable -class BlurDrawable internal constructor(private val blurWallpaperProvider: BlurWallpaperProvider) : - Drawable(), BlurWallpaperProvider.Listener { +class BlurDrawable +internal constructor( + private val blurWallpaperProvider: BlurWallpaperProvider, + private val config: BlurWallpaperProvider.BlurConfig = BlurWallpaperProvider.blurConfigWidget +) : Drawable(), BlurWallpaperProvider.Listener { private var blurAlpha = 255 private val blurPaint = Paint(Paint.FILTER_BITMAP_FLAG or Paint.ANTI_ALIAS_FLAG) @@ -33,7 +36,9 @@ class BlurDrawable internal constructor(private val blurWallpaperProvider: BlurW val height = blurBounds.bottom.toInt() - blurBounds.top.toInt() if (width <= 0 || height <= 0) return if (blurAlpha == 0) return - blurBitmap = blurWallpaperProvider.wallpapers?.second + val wallpapers = blurWallpaperProvider.wallpapers + blurBitmap = wallpapers?.let { config.getDrawable(it) } + val scale = config.scale.toFloat() if (blurBitmap == null) { blurBitmap = blurWallpaperProvider.placeholder @@ -43,9 +48,12 @@ class BlurDrawable internal constructor(private val blurWallpaperProvider: BlurW val top = blurBounds.top + offsetY val right = blurBounds.right + offsetX val bottom = blurBounds.bottom + offsetY + val count = canvas.save() canvas.translate(-left, -top) - canvas.drawRect(left, top, right, bottom, blurPaint) - canvas.translate(left, top) + canvas.clipRect(left, top, right, bottom) + canvas.scale(scale, scale, 0f, 0f) + canvas.drawPaint(blurPaint) + canvas.restoreToCount(count) } override fun setAlpha(alpha: Int) { diff --git a/app/src/main/java/foundation/e/blisslauncher/core/blur/BlurViewDelegate.kt b/app/src/main/java/foundation/e/blisslauncher/core/blur/BlurViewDelegate.kt index 295a530bbf026f8c531b40c0b03c8294a88bd3fc..3a46792ba343b4b473ca992e873d984447e72aee 100644 --- a/app/src/main/java/foundation/e/blisslauncher/core/blur/BlurViewDelegate.kt +++ b/app/src/main/java/foundation/e/blisslauncher/core/blur/BlurViewDelegate.kt @@ -14,8 +14,11 @@ import foundation.e.blisslauncher.R import foundation.e.blisslauncher.core.customviews.HorizontalPager import foundation.e.blisslauncher.core.utils.OffsetParent -class BlurViewDelegate(private val view: View, attrs: AttributeSet? = null) : - View.OnAttachStateChangeListener, BlurWallpaperProvider.Listener { +class BlurViewDelegate( + private val view: View, + private val config: BlurWallpaperProvider.BlurConfig, + attrs: AttributeSet? = null +) : View.OnAttachStateChangeListener, BlurWallpaperProvider.Listener { private val context = view.context private val blurWallpaperProvider by lazy { BlurWallpaperProvider.getInstance(context) } @@ -62,6 +65,7 @@ class BlurViewDelegate(private val view: View, attrs: AttributeSet? = null) : } var blurCornerRadius = 0f + var overlayOffset = 70f val outlineProvider = object : ViewOutlineProvider() { override fun getOutline(view: View, outline: Outline) { @@ -74,9 +78,10 @@ class BlurViewDelegate(private val view: View, attrs: AttributeSet? = null) : field = value overlayPaint.color = value } + private val overlayPaint = Paint(Paint.FILTER_BITMAP_FLAG or Paint.ANTI_ALIAS_FLAG).apply { - blendMode = BlendMode.OVERLAY + blendMode = BlendMode.MULTIPLY } init { @@ -87,6 +92,7 @@ class BlurViewDelegate(private val view: View, attrs: AttributeSet? = null) : val a = context.obtainStyledAttributes(attrs, R.styleable.BlurLayout) blurCornerRadius = a.getDimension(R.styleable.BlurLayout_blurCornerRadius, 0f) overlayColor = a.getColor(R.styleable.BlurLayout_blurOverlayColor, 0) + overlayOffset = a.getInt(R.styleable.BlurLayout_blurOverlayOffset, 70).toFloat() a.recycle() } } @@ -118,11 +124,13 @@ class BlurViewDelegate(private val view: View, attrs: AttributeSet? = null) : this.draw(canvas) } if (overlayColor != 0) { - canvas.drawRect( - view.left.toFloat(), - view.top.toFloat(), + canvas.drawRoundRect( + view.left.toFloat() - overlayOffset, + view.top.toFloat() - overlayOffset, view.right.toFloat(), view.bottom.toFloat(), + view.x, + view.y, overlayPaint ) } @@ -131,7 +139,7 @@ class BlurViewDelegate(private val view: View, attrs: AttributeSet? = null) : private fun createFullBlurDrawable() { fullBlurDrawable?.let { if (view.isAttachedToWindow) it.stopListening() } fullBlurDrawable = - blurWallpaperProvider.createBlurDrawable().apply { + blurWallpaperProvider.createBlurDrawable(config).apply { callback = blurDrawableCallback setBounds(view.left, view.top, view.right, view.bottom) if (view.isAttachedToWindow) startListening() diff --git a/app/src/main/java/foundation/e/blisslauncher/core/blur/BlurWallpaperFilter.kt b/app/src/main/java/foundation/e/blisslauncher/core/blur/BlurWallpaperFilter.kt index b075661a84b41f0388812cd38d38b207014f2392..a752682157deef29e65030da4c78a5b21b813578 100644 --- a/app/src/main/java/foundation/e/blisslauncher/core/blur/BlurWallpaperFilter.kt +++ b/app/src/main/java/foundation/e/blisslauncher/core/blur/BlurWallpaperFilter.kt @@ -4,44 +4,54 @@ import android.content.Context import android.graphics.Bitmap import com.hoko.blur.HokoBlur -typealias BitmapPair = Pair +class BlurWallpaperFilter(private val context: Context) : + WallpaperFilter { -class BlurWallpaperFilter(private val context: Context) : WallpaperFilter { - - private var blurRadiusSmall = 8 - private var blurRadiusLarge = 25 - - override fun apply(wallpaper: Bitmap): WallpaperFilter.ApplyTask { + override fun apply( + wallpaper: Bitmap + ): WallpaperFilter.ApplyTask { return WallpaperFilter.ApplyTask.create { emitter -> - var wallpaperSmallBlur: Bitmap? = null - var wallpaperLargeBlur: Bitmap? = null + var blurBackground: Bitmap? = null + var blurDock: Bitmap? = null + var blurAppGroup: Bitmap? = null + var blurWidget: Bitmap? = null try { - wallpaperSmallBlur = - HokoBlur.with(context) - .scheme(HokoBlur.SCHEME_NATIVE) - .mode(HokoBlur.MODE_STACK) - .radius(blurRadiusSmall) - .sampleFactor(8f) - .forceCopy(false) - .needUpscale(true) - .processor() - .blur(wallpaper) - wallpaperLargeBlur = - HokoBlur.with(context) - .scheme(HokoBlur.SCHEME_NATIVE) - .mode(HokoBlur.MODE_STACK) - .radius(blurRadiusLarge) - .sampleFactor(16f) - .forceCopy(false) - .needUpscale(true) - .processor() - .blur(wallpaper) - emitter.onSuccess(Pair(wallpaperSmallBlur, wallpaperLargeBlur)) + blurBackground = blur(wallpaper, BlurWallpaperProvider.blurConfigBackground) + blurDock = blur(wallpaper, BlurWallpaperProvider.blurConfigDock) + blurAppGroup = blur(wallpaper, BlurWallpaperProvider.blurConfigAppGroup) + blurWidget = blur(wallpaper, BlurWallpaperProvider.blurConfigWidget) + emitter.onSuccess( + BlurWallpaperProvider.BlurSizes( + blurBackground, + blurDock, + blurAppGroup, + blurWidget + ) + ) } catch (t: Throwable) { - wallpaperSmallBlur?.recycle() - wallpaperLargeBlur?.recycle() + blurBackground?.recycle() + blurDock?.recycle() + blurAppGroup?.recycle() + blurWidget?.recycle() emitter.onError(t) } } } + + private fun blur(wallpaper: Bitmap, config: BlurWallpaperProvider.BlurConfig): Bitmap { + val source = + Bitmap.createScaledBitmap( + wallpaper, + wallpaper.width / config.scale, + wallpaper.height / config.scale, + true + ) + return HokoBlur.with(context) + .scheme(HokoBlur.SCHEME_NATIVE) + .mode(HokoBlur.MODE_STACK) + .radius(config.radius) + .forceCopy(false) + .processor() + .blur(source) + } } diff --git a/app/src/main/java/foundation/e/blisslauncher/core/blur/BlurWallpaperProvider.kt b/app/src/main/java/foundation/e/blisslauncher/core/blur/BlurWallpaperProvider.kt index de1fa6aa213502e2960413035878b1c710717ea3..afa55ca301c5abadede878aef36bafd06725d378 100644 --- a/app/src/main/java/foundation/e/blisslauncher/core/blur/BlurWallpaperProvider.kt +++ b/app/src/main/java/foundation/e/blisslauncher/core/blur/BlurWallpaperProvider.kt @@ -30,11 +30,10 @@ class BlurWallpaperProvider(val context: Context) { private val listeners = ArrayList() private val displayMetrics = DisplayMetrics() - var wallpapers: Pair? = null + var wallpapers: BlurSizes? = null private set(value) { if (field != value) { - field?.first?.recycle() - field?.second?.recycle() + field?.recycle() field = value } } @@ -51,7 +50,7 @@ class BlurWallpaperProvider(val context: Context) { private val mUpdateRunnable = Runnable { updateWallpaper() } private val wallpaperFilter = BlurWallpaperFilter(context) - private var applyTask: WallpaperFilter.ApplyTask>? = null + private var applyTask: WallpaperFilter.ApplyTask? = null private var updatePending = false @@ -186,13 +185,16 @@ class BlurWallpaperProvider(val context: Context) { navigationBarHeight = context.getResources().getDimensionPixelSize(resourceId); } }*/ - val y: Int - y = + val y: Int = if (scaledWallpaper.height > height) { (scaledWallpaper.height - height) / 2 } else 0 - return Bitmap.createBitmap(scaledWallpaper, 0, y, width, height - navigationBarHeight) + val newBitmap = + Bitmap.createBitmap(scaledWallpaper, 0, y, width, height - navigationBarHeight) + wallpaper.recycle() + scaledWallpaper.recycle() + return newBitmap } fun addListener(listener: Listener) { @@ -203,13 +205,7 @@ class BlurWallpaperProvider(val context: Context) { listeners.remove(listener) } - fun createDrawable(): ShaderBlurDrawable { - return ShaderBlurDrawable(this) - } - - fun createBlurDrawable(): BlurDrawable { - return BlurDrawable(this) - } + fun createBlurDrawable(config: BlurConfig = blurConfigDock) = BlurDrawable(this, config) interface Listener { fun onWallpaperChanged() {} @@ -222,11 +218,35 @@ class BlurWallpaperProvider(val context: Context) { sInstance = null }*/ + data class BlurSizes( + val background: Bitmap, + val dock: Bitmap, + val appGroup: Bitmap, + val widget: Bitmap + ) { + fun recycle() { + background.recycle() + dock.recycle() + appGroup.recycle() + widget.recycle() + } + } + + data class BlurConfig(val getDrawable: (BlurSizes) -> Bitmap, val scale: Int, val radius: Int) + companion object : SingletonHolder( ensureOnMainThread(useApplicationContext(::BlurWallpaperProvider)) ) { + val blurConfigBackground = BlurConfig({ it.background }, 2, 8) + + val blurConfigDock = BlurConfig({ it.dock }, 1, 2) + + val blurConfigAppGroup = BlurConfig({ it.appGroup }, 6, 8) + + val blurConfigWidget = BlurConfig({ it.widget }, 6, 10) + var isEnabled: Boolean = false private var sEnabledFlag: Int = 0 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 deleted file mode 100644 index fc38be1f99d593bd903b56505d68dbdb88881f0d..0000000000000000000000000000000000000000 --- a/app/src/main/java/foundation/e/blisslauncher/core/blur/ShaderBlurDrawable.kt +++ /dev/null @@ -1,133 +0,0 @@ -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.drawable.Drawable -import foundation.e.blisslauncher.core.DeviceProfile - -class ShaderBlurDrawable -internal constructor(private val blurWallpaperProvider: BlurWallpaperProvider) : - Drawable(), BlurWallpaperProvider.Listener { - - private var blurAlpha = 255 - private val blurPaint = Paint(Paint.FILTER_BITMAP_FLAG or Paint.ANTI_ALIAS_FLAG) - private var blurBitmap: Bitmap? = null - set(value) { - if (field != value) { - field = value - blurPaint.shader = - value?.let { BitmapShader(it, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP) } - } - } - - private val blurBounds = RectF() - private val blurPath = Path() - private var blurPathValid = false - set(value) { - if (field != value) { - field = value - if (!value) { - invalidateSelf() - } - } - } - - var noRadius = true - - override fun draw(canvas: Canvas) = draw(canvas, noRadius) - - fun draw(canvas: Canvas, noRadius: Boolean = false) { - if (blurAlpha == 0) return - blurBitmap = blurWallpaperProvider.wallpapers?.first - - if (blurBitmap == null) { - blurBitmap = blurWallpaperProvider.placeholder - } - blurBitmap = - if ( - blurBitmap!!.height >= blurBounds.bottom && blurBitmap!!.width >= blurBounds.right - ) { - Bitmap.createBitmap( - blurBitmap!!, - blurBounds.left.toInt(), - blurBounds.top.toInt(), - blurBounds.right.toInt() - blurBounds.left.toInt(), - blurBounds.bottom.toInt() - blurBounds.top.toInt() - ) - } else { - blurBitmap - } - - // setupBlurPath() - - // canvas.translate(0f, -1500f) - if (noRadius) { - canvas.drawRect( - 0f, - 0f, - blurBounds.right - blurBounds.left, - blurBounds.bottom - blurBounds.top, - blurPaint - ) - } else { - canvas.drawPath(DeviceProfile.path, blurPaint) - } - // canvas.translate(0f, 1500f) - } - - override fun setAlpha(alpha: Int) { - blurAlpha = alpha - blurPaint.alpha = alpha - } - - override fun getAlpha(): Int { - return blurAlpha - } - - private fun setupBlurPath() { - if (blurPathValid) return - - blurPath.reset() - blurPath.addRect( - 0f, - 0f, - blurBounds.right - blurBounds.left, - blurBounds.bottom - blurBounds.top, - Path.Direction.CW - ) - } - - override fun setBounds(left: Int, top: Int, right: Int, bottom: Int) = - setBlurBounds(left.toFloat(), top.toFloat(), right.toFloat(), bottom.toFloat()) - - fun setBlurBounds(left: Float, top: Float, right: Float, bottom: Float) { - if ( - blurBounds.left != left || - blurBounds.top != top || - blurBounds.right != right || - blurBounds.bottom != bottom - ) { - blurBounds.set(left, top, right, bottom) - blurPathValid = false - } - } - - override fun getOpacity(): Int = PixelFormat.TRANSLUCENT - - override fun onWallpaperChanged() { - invalidateSelf() - } - - override fun setColorFilter(colorFilter: ColorFilter?) {} - - fun startListening() = blurWallpaperProvider.addListener(this) - - fun stopListening() = blurWallpaperProvider.removeListener(this) -} diff --git a/app/src/main/java/foundation/e/blisslauncher/core/customviews/BlurBackgroundView.kt b/app/src/main/java/foundation/e/blisslauncher/core/customviews/BlurBackgroundView.kt index 9e09c6351b80a375cd2f4f6443c4a9eee4fa746c..1e0d61d2a9a783c417dbff08f6bcb63845b703f8 100644 --- a/app/src/main/java/foundation/e/blisslauncher/core/customviews/BlurBackgroundView.kt +++ b/app/src/main/java/foundation/e/blisslauncher/core/customviews/BlurBackgroundView.kt @@ -6,8 +6,8 @@ import android.graphics.Rect import android.graphics.drawable.Drawable import android.util.AttributeSet import android.view.View +import foundation.e.blisslauncher.core.blur.BlurDrawable import foundation.e.blisslauncher.core.blur.BlurWallpaperProvider -import foundation.e.blisslauncher.core.blur.ShaderBlurDrawable import foundation.e.blisslauncher.core.runOnMainThread class BlurBackgroundView(context: Context, attrs: AttributeSet?) : @@ -15,7 +15,7 @@ class BlurBackgroundView(context: Context, attrs: AttributeSet?) : private val blurWallpaperProvider by lazy { BlurWallpaperProvider.getInstance(context) } - private var fullBlurDrawable: ShaderBlurDrawable? = null + private var fullBlurDrawable: BlurDrawable? = null private var blurAlpha = 255 private val blurDrawableCallback by lazy { @@ -62,10 +62,12 @@ class BlurBackgroundView(context: Context, attrs: AttributeSet?) : } } - private fun createFullBlurDrawable() { + private fun createFullBlurDrawable( + config: BlurWallpaperProvider.BlurConfig = BlurWallpaperProvider.blurConfigBackground + ) { fullBlurDrawable?.let { if (isAttachedToWindow) it.stopListening() } fullBlurDrawable = - blurWallpaperProvider.createDrawable().apply { + blurWallpaperProvider.createBlurDrawable(config).apply { callback = blurDrawableCallback setBounds(left, top, right, bottom) if (isAttachedToWindow) startListening() diff --git a/app/src/main/java/foundation/e/blisslauncher/core/customviews/BlurLayout.kt b/app/src/main/java/foundation/e/blisslauncher/core/customviews/BlurLayout.kt index 9a64ecf1ce9c63f23da5024dd591e6208bdd36b5..1b81b2f62db489011910d5cccf37cba56dddeb46 100644 --- a/app/src/main/java/foundation/e/blisslauncher/core/customviews/BlurLayout.kt +++ b/app/src/main/java/foundation/e/blisslauncher/core/customviews/BlurLayout.kt @@ -5,11 +5,12 @@ import android.graphics.Canvas import android.util.AttributeSet import android.widget.FrameLayout import foundation.e.blisslauncher.core.blur.BlurViewDelegate +import foundation.e.blisslauncher.core.blur.BlurWallpaperProvider open class BlurLayout @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : FrameLayout(context, attrs) { - private val delegate = BlurViewDelegate(this, attrs) + private val delegate = BlurViewDelegate(this, BlurWallpaperProvider.blurConfigWidget, attrs) init { setWillNotDraw(false) diff --git a/app/src/main/java/foundation/e/blisslauncher/core/customviews/DockGridLayout.kt b/app/src/main/java/foundation/e/blisslauncher/core/customviews/DockGridLayout.kt index b823e183368b4b0dc422f5d8d402ef580de0b639..bb51163ba6e0edabcd6fbe644fe43297cd38d31b 100755 --- a/app/src/main/java/foundation/e/blisslauncher/core/customviews/DockGridLayout.kt +++ b/app/src/main/java/foundation/e/blisslauncher/core/customviews/DockGridLayout.kt @@ -7,6 +7,7 @@ import android.util.AttributeSet import android.widget.GridLayout import foundation.e.blisslauncher.BlissLauncher import foundation.e.blisslauncher.core.blur.BlurViewDelegate +import foundation.e.blisslauncher.core.blur.BlurWallpaperProvider import foundation.e.blisslauncher.core.utils.OffsetParent class DockGridLayout @@ -21,7 +22,7 @@ constructor(private val mContext: Context, attrs: AttributeSet? = null, defStyle override val offsetY: Float get() = translationY - private val blurDelegate = BlurViewDelegate(this, attrs) + private val blurDelegate = BlurViewDelegate(this, BlurWallpaperProvider.blurConfigDock, attrs) init { setWillNotDraw(false) diff --git a/app/src/main/java/foundation/e/blisslauncher/core/customviews/RoundedWidgetView.java b/app/src/main/java/foundation/e/blisslauncher/core/customviews/RoundedWidgetView.java index b53a81a1cb716a48835ffbb1fc4705dc86d73d65..c8bb76785a861f9b7ec775b04d8dea1108d78b9c 100644 --- a/app/src/main/java/foundation/e/blisslauncher/core/customviews/RoundedWidgetView.java +++ b/app/src/main/java/foundation/e/blisslauncher/core/customviews/RoundedWidgetView.java @@ -14,6 +14,7 @@ import android.widget.ImageView; import androidx.annotation.Nullable; import foundation.e.blisslauncher.R; import foundation.e.blisslauncher.core.blur.BlurViewDelegate; +import foundation.e.blisslauncher.core.blur.BlurWallpaperProvider; import foundation.e.blisslauncher.features.widgets.CheckLongPressHelper; public class RoundedWidgetView extends AppWidgetHostView { @@ -40,7 +41,7 @@ public class RoundedWidgetView extends AppWidgetHostView { this.cornerRadius = context.getResources().getDimensionPixelSize(R.dimen.corner_radius); mLongPressHelper = new CheckLongPressHelper(this); if (blurBackground) { - mBlurDelegate = new BlurViewDelegate(this, null); + mBlurDelegate = new BlurViewDelegate(this, BlurWallpaperProvider.Companion.getBlurConfigWidget(), null); mBlurDelegate.setBlurCornerRadius(cornerRadius); setWillNotDraw(false); setOutlineProvider(mBlurDelegate.getOutlineProvider()); diff --git a/app/src/main/java/foundation/e/blisslauncher/core/customviews/SquareFrameLayout.java b/app/src/main/java/foundation/e/blisslauncher/core/customviews/SquareFrameLayout.java index 54a028dd96280d7ec987211e82c86bbe22af7314..511549e0183c646d15cc69d451ed3ce00936b39c 100755 --- a/app/src/main/java/foundation/e/blisslauncher/core/customviews/SquareFrameLayout.java +++ b/app/src/main/java/foundation/e/blisslauncher/core/customviews/SquareFrameLayout.java @@ -6,8 +6,11 @@ import android.util.AttributeSet; import android.widget.FrameLayout; import androidx.annotation.NonNull; import androidx.annotation.Nullable; + +import foundation.e.blisslauncher.R; import foundation.e.blisslauncher.core.DeviceProfile; import foundation.e.blisslauncher.core.blur.BlurViewDelegate; +import foundation.e.blisslauncher.core.blur.BlurWallpaperProvider; /** Created by falcon on 9/3/18. */ public class SquareFrameLayout extends FrameLayout { @@ -33,12 +36,13 @@ public class SquareFrameLayout extends FrameLayout { int width = getMeasuredWidth(); int height = getMeasuredHeight(); - int size = width < height ? width : height; + int size = Math.min(width, height); setMeasuredDimension(size, size); } public void enableBlur() { - mBlurDelegate = new BlurViewDelegate(this, null); + mBlurDelegate = new BlurViewDelegate(this, BlurWallpaperProvider.Companion.getBlurConfigAppGroup(), null); + mBlurDelegate.setOverlayColor(getContext().getColor(R.color.blur_overlay)); setWillNotDraw(false); } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 2b31b02c327830fd92756ab72baac08b86aff9e8..ca45e2043b4201b0cfa92f216667dae5eb0192db 100755 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,7 +1,7 @@ + android:focusable="true" + android:visibility="gone"> - + app:blurCornerRadius="12dp" + app:blurOverlayColor="@color/blur_overlay" + app:blurOverlayOffset="2000"> - + android:layout_height="wrap_content" + android:layout_centerInParent="true" + android:background="@drawable/folder_window" + android:orientation="vertical"> + + - + - + + diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 94bb8a510e75d32901fc6431277f282e4321595c..ce2984efd642911b5089abf9813703f4091ae00b 100755 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -39,6 +39,7 @@ + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 09815dfd60e7c7179205328056c61428c84ff3cd..06352ae3f94c29696050aed8a92e9480b82c2ffc 100755 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -34,4 +34,5 @@ #26ffffff @color/colorAccent + #38202020