From ec07a99c236c7c72f8264322252a5e8d9b5c1ad8 Mon Sep 17 00:00:00 2001 From: Eduardo Speroni Date: Thu, 21 Mar 2019 14:25:12 -0300 Subject: [PATCH 1/2] feat(android): implement BorderDrawable outline --- .../nativescript/widgets/BorderDrawable.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tns-core-modules-widgets/android/widgets/src/main/java/org/nativescript/widgets/BorderDrawable.java b/tns-core-modules-widgets/android/widgets/src/main/java/org/nativescript/widgets/BorderDrawable.java index 3608a195d..247caa6a6 100644 --- a/tns-core-modules-widgets/android/widgets/src/main/java/org/nativescript/widgets/BorderDrawable.java +++ b/tns-core-modules-widgets/android/widgets/src/main/java/org/nativescript/widgets/BorderDrawable.java @@ -8,6 +8,7 @@ import android.graphics.Canvas; import android.graphics.Color; import android.graphics.LinearGradient; import android.graphics.Matrix; +import android.graphics.Outline; import android.graphics.Paint; import android.graphics.Path; import android.graphics.PointF; @@ -16,6 +17,7 @@ import android.graphics.RectF; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.graphics.Shader; +import android.support.annotation.NonNull; import org.nativescript.widgets.image.BitmapOwner; import org.nativescript.widgets.image.Fetcher; @@ -804,6 +806,23 @@ public class BorderDrawable extends ColorDrawable implements BitmapOwner { return drawable; } + @Override + public void getOutline(@NonNull Outline outline) { + if (android.os.Build.VERSION.SDK_INT >= 21) { + Path backgroundPath = new Path(); + float[] backgroundRadii = { + Math.max(0, borderTopLeftRadius), Math.max(0, borderTopLeftRadius), + Math.max(0, borderTopRightRadius), Math.max(0, borderTopRightRadius), + Math.max(0, borderBottomRightRadius), Math.max(0, borderBottomRightRadius), + Math.max(0, borderBottomLeftRadius), Math.max(0, borderBottomLeftRadius) + }; + backgroundPath.addRoundRect(new RectF(getBounds()), backgroundRadii, Path.Direction.CW); + outline.setConvexPath(backgroundPath); + } else { + throw new IllegalStateException("Method supported on API 21 or higher"); + } + } + private class BackgroundDrawParams { private boolean repeatX = true; private boolean repeatY = true; From db4d7177e6d73236917fb471e2e31e1aeb642a70 Mon Sep 17 00:00:00 2001 From: Manol Donev Date: Tue, 2 Apr 2019 18:09:42 +0300 Subject: [PATCH 2/2] chore: update tests --- apps/app/ui-tests-app/button/button-border.css | 2 +- apps/app/ui-tests-app/css/pixels.xml | 8 ++++---- apps/app/ui-tests-app/flexbox/flexbox.css | 1 + apps/app/ui-tests-app/issues/issue-3113.css | 5 ++++- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/apps/app/ui-tests-app/button/button-border.css b/apps/app/ui-tests-app/button/button-border.css index 644d827a6..3b404e027 100644 --- a/apps/app/ui-tests-app/button/button-border.css +++ b/apps/app/ui-tests-app/button/button-border.css @@ -46,7 +46,7 @@ Button { } #s10 { - border-width: 5 0; border-color: black; + border-width: 5 0; border-color: black; background-color: white; } #s11 { diff --git a/apps/app/ui-tests-app/css/pixels.xml b/apps/app/ui-tests-app/css/pixels.xml index b2b61157d..30f25d526 100644 --- a/apps/app/ui-tests-app/css/pixels.xml +++ b/apps/app/ui-tests-app/css/pixels.xml @@ -4,7 +4,7 @@