From 1037dcdf423be323ba95ca5bfb6e631c35c0930d Mon Sep 17 00:00:00 2001 From: SOUP Date: Thu, 21 May 2020 00:14:16 +0900 Subject: [PATCH] Library: Fix nothing is shown in AS Layout Preview --- .../src/main/java/soup/neumorphism/NeumorphButton.kt | 1 + .../src/main/java/soup/neumorphism/NeumorphCardView.kt | 1 + .../java/soup/neumorphism/NeumorphFloatingActionButton.kt | 1 + .../src/main/java/soup/neumorphism/NeumorphImageButton.kt | 1 + .../src/main/java/soup/neumorphism/NeumorphImageView.kt | 1 + .../src/main/java/soup/neumorphism/NeumorphShapeDrawable.kt | 6 ++++++ .../src/main/java/soup/neumorphism/NeumorphTextView.kt | 5 ++++- .../main/java/soup/neumorphism/internal/shape/FlatShape.kt | 3 +++ .../java/soup/neumorphism/internal/shape/PressedShape.kt | 3 +++ 9 files changed, 21 insertions(+), 1 deletion(-) diff --git a/neumorphism/src/main/java/soup/neumorphism/NeumorphButton.kt b/neumorphism/src/main/java/soup/neumorphism/NeumorphButton.kt index a953487..766c9b6 100644 --- a/neumorphism/src/main/java/soup/neumorphism/NeumorphButton.kt +++ b/neumorphism/src/main/java/soup/neumorphism/NeumorphButton.kt @@ -42,6 +42,7 @@ class NeumorphButton @JvmOverloads constructor( a.recycle() shapeDrawable = NeumorphShapeDrawable(context, attrs, defStyleAttr, defStyleRes).apply { + setInEditMode(isInEditMode) setShapeType(shapeType) setShadowElevation(shadowElevation) setShadowColorLight(shadowColorLight) diff --git a/neumorphism/src/main/java/soup/neumorphism/NeumorphCardView.kt b/neumorphism/src/main/java/soup/neumorphism/NeumorphCardView.kt index d5f7bf6..562f42a 100644 --- a/neumorphism/src/main/java/soup/neumorphism/NeumorphCardView.kt +++ b/neumorphism/src/main/java/soup/neumorphism/NeumorphCardView.kt @@ -42,6 +42,7 @@ class NeumorphCardView @JvmOverloads constructor( a.recycle() shapeDrawable = NeumorphShapeDrawable(context, attrs, defStyleAttr, defStyleRes).apply { + setInEditMode(isInEditMode) setShapeType(shapeType) setShadowElevation(shadowElevation) setShadowColorLight(shadowColorLight) diff --git a/neumorphism/src/main/java/soup/neumorphism/NeumorphFloatingActionButton.kt b/neumorphism/src/main/java/soup/neumorphism/NeumorphFloatingActionButton.kt index 1972cfe..eace32d 100644 --- a/neumorphism/src/main/java/soup/neumorphism/NeumorphFloatingActionButton.kt +++ b/neumorphism/src/main/java/soup/neumorphism/NeumorphFloatingActionButton.kt @@ -43,6 +43,7 @@ class NeumorphFloatingActionButton @JvmOverloads constructor( a.recycle() shapeDrawable = NeumorphShapeDrawable(context, attrs, defStyleAttr, defStyleRes).apply { + setInEditMode(isInEditMode) setShapeType(shapeType) setShadowElevation(shadowElevation) setShadowColorLight(shadowColorLight) diff --git a/neumorphism/src/main/java/soup/neumorphism/NeumorphImageButton.kt b/neumorphism/src/main/java/soup/neumorphism/NeumorphImageButton.kt index c33dc6f..9fcefd0 100644 --- a/neumorphism/src/main/java/soup/neumorphism/NeumorphImageButton.kt +++ b/neumorphism/src/main/java/soup/neumorphism/NeumorphImageButton.kt @@ -42,6 +42,7 @@ class NeumorphImageButton @JvmOverloads constructor( a.recycle() shapeDrawable = NeumorphShapeDrawable(context, attrs, defStyleAttr, defStyleRes).apply { + setInEditMode(isInEditMode) setShapeType(shapeType) setShadowElevation(shadowElevation) setShadowColorLight(shadowColorLight) diff --git a/neumorphism/src/main/java/soup/neumorphism/NeumorphImageView.kt b/neumorphism/src/main/java/soup/neumorphism/NeumorphImageView.kt index 417d389..45c8ad5 100644 --- a/neumorphism/src/main/java/soup/neumorphism/NeumorphImageView.kt +++ b/neumorphism/src/main/java/soup/neumorphism/NeumorphImageView.kt @@ -42,6 +42,7 @@ class NeumorphImageView @JvmOverloads constructor( a.recycle() shapeDrawable = NeumorphShapeDrawable(context, attrs, defStyleAttr, defStyleRes).apply { + setInEditMode(isInEditMode) setShapeType(shapeType) setShadowElevation(shadowElevation) setShadowColorLight(shadowColorLight) diff --git a/neumorphism/src/main/java/soup/neumorphism/NeumorphShapeDrawable.kt b/neumorphism/src/main/java/soup/neumorphism/NeumorphShapeDrawable.kt index aa0caef..341d3e9 100644 --- a/neumorphism/src/main/java/soup/neumorphism/NeumorphShapeDrawable.kt +++ b/neumorphism/src/main/java/soup/neumorphism/NeumorphShapeDrawable.kt @@ -368,10 +368,15 @@ class NeumorphShapeDrawable : Drawable { return invalidateSelf } + fun setInEditMode(inEditMode: Boolean) { + drawableState.inEditMode = inEditMode + } + internal class NeumorphShapeDrawableState : ConstantState { var shapeAppearanceModel: NeumorphShapeAppearanceModel val blurProvider: BlurProvider + var inEditMode: Boolean = false var padding: Rect? = null var fillColor: ColorStateList? = null @@ -400,6 +405,7 @@ class NeumorphShapeDrawable : Drawable { constructor(orig: NeumorphShapeDrawableState) { shapeAppearanceModel = orig.shapeAppearanceModel blurProvider = orig.blurProvider + inEditMode = orig.inEditMode alpha = orig.alpha shapeType = orig.shapeType shadowElevation = orig.shadowElevation diff --git a/neumorphism/src/main/java/soup/neumorphism/NeumorphTextView.kt b/neumorphism/src/main/java/soup/neumorphism/NeumorphTextView.kt index 7bd6e6c..d9129de 100644 --- a/neumorphism/src/main/java/soup/neumorphism/NeumorphTextView.kt +++ b/neumorphism/src/main/java/soup/neumorphism/NeumorphTextView.kt @@ -75,7 +75,10 @@ class NeumorphTextView @JvmOverloads constructor( tp.color = Color.BLACK tp.textSize = textSize tp.typeface = typeface - staticLayout(text, tp).draw(Canvas(this)) + if (isInEditMode.not()) { + // layout preview is NOT supported in now. + staticLayout(text, tp).draw(Canvas(this)) + } } } diff --git a/neumorphism/src/main/java/soup/neumorphism/internal/shape/FlatShape.kt b/neumorphism/src/main/java/soup/neumorphism/internal/shape/FlatShape.kt index 96bca1e..98caead 100644 --- a/neumorphism/src/main/java/soup/neumorphism/internal/shape/FlatShape.kt +++ b/neumorphism/src/main/java/soup/neumorphism/internal/shape/FlatShape.kt @@ -88,6 +88,9 @@ internal class FlatShape( private fun Drawable.toBlurredBitmap(w: Int, h: Int): Bitmap? { fun Bitmap.blurred(): Bitmap? { + if (drawableState.inEditMode) { + return this + } return drawableState.blurProvider.blur(this) } diff --git a/neumorphism/src/main/java/soup/neumorphism/internal/shape/PressedShape.kt b/neumorphism/src/main/java/soup/neumorphism/internal/shape/PressedShape.kt index eeecb35..336cb29 100644 --- a/neumorphism/src/main/java/soup/neumorphism/internal/shape/PressedShape.kt +++ b/neumorphism/src/main/java/soup/neumorphism/internal/shape/PressedShape.kt @@ -95,6 +95,9 @@ internal class PressedShape( private fun generateShadowBitmap(w: Int, h: Int): Bitmap? { fun Bitmap.blurred(): Bitmap? { + if (drawableState.inEditMode) { + return this + } return drawableState.blurProvider.blur(this) }