From 8aaa9b6ff07edc9e124096c17cb427a9d0f350d6 Mon Sep 17 00:00:00 2001 From: Aitor Cubeles Torres Date: Sat, 5 Oct 2019 15:05:55 +0200 Subject: [PATCH 1/2] hasBackButton feature on Android browser --- .../proyecto26/inappbrowser/RNInAppBrowser.java | 14 ++++++++++++++ .../res/drawable-hdpi/ic_arrow_back_black.png | Bin 0 -> 146 bytes .../res/drawable-hdpi/ic_arrow_back_white.png | Bin 0 -> 146 bytes .../res/drawable-mdpi/ic_arrow_back_black.png | Bin 0 -> 109 bytes .../res/drawable-mdpi/ic_arrow_back_white.png | Bin 0 -> 111 bytes .../res/drawable-xhdpi/ic_arrow_back_black.png | Bin 0 -> 156 bytes .../res/drawable-xhdpi/ic_arrow_back_white.png | Bin 0 -> 153 bytes .../res/drawable-xxhdpi/ic_arrow_back_black.png | Bin 0 -> 193 bytes .../res/drawable-xxhdpi/ic_arrow_back_white.png | Bin 0 -> 195 bytes 9 files changed, 14 insertions(+) create mode 100644 android/src/main/res/drawable-hdpi/ic_arrow_back_black.png create mode 100644 android/src/main/res/drawable-hdpi/ic_arrow_back_white.png create mode 100644 android/src/main/res/drawable-mdpi/ic_arrow_back_black.png create mode 100644 android/src/main/res/drawable-mdpi/ic_arrow_back_white.png create mode 100644 android/src/main/res/drawable-xhdpi/ic_arrow_back_black.png create mode 100644 android/src/main/res/drawable-xhdpi/ic_arrow_back_white.png create mode 100644 android/src/main/res/drawable-xxhdpi/ic_arrow_back_black.png create mode 100644 android/src/main/res/drawable-xxhdpi/ic_arrow_back_white.png diff --git a/android/src/main/java/com/proyecto26/inappbrowser/RNInAppBrowser.java b/android/src/main/java/com/proyecto26/inappbrowser/RNInAppBrowser.java index 937883d..6f19825 100644 --- a/android/src/main/java/com/proyecto26/inappbrowser/RNInAppBrowser.java +++ b/android/src/main/java/com/proyecto26/inappbrowser/RNInAppBrowser.java @@ -7,9 +7,11 @@ import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.Color; +import android.graphics.BitmapFactory; import android.provider.Browser; import androidx.annotation.Nullable; import androidx.browser.customtabs.CustomTabsIntent; +import androidx.core.graphics.ColorUtils; import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.Promise; @@ -38,8 +40,10 @@ public class RNInAppBrowser { private static final String KEY_ANIMATION_START_EXIT = "startExit"; private static final String KEY_ANIMATION_END_ENTER = "endEnter"; private static final String KEY_ANIMATION_END_EXIT = "endExit"; + private static final String HASBACKBUTTON = "hasBackButton"; private @Nullable Promise mOpenBrowserPromise; + private Boolean isLightTheme; private Activity currentActivity; private static final Pattern animationIdentifierPattern = Pattern.compile("^.+:.+/"); @@ -66,6 +70,7 @@ public class RNInAppBrowser { final String colorString = options.getString(KEY_TOOLBAR_COLOR); try { builder.setToolbarColor(Color.parseColor(colorString)); + isLightTheme = toolbarIsLight(colorString); } catch (IllegalArgumentException e) { throw new JSApplicationIllegalArgumentException( "Invalid toolbar color '" + colorString + "': " + e.getMessage()); @@ -92,6 +97,11 @@ public class RNInAppBrowser { final ReadableMap animations = options.getMap(KEY_ANIMATIONS); applyAnimation(context, builder, animations); } + if (options.hasKey(HASBACKBUTTON) && + options.getBoolean(HASBACKBUTTON)) { + builder.setCloseButtonIcon(BitmapFactory.decodeResource( + context.getResources(), isLightTheme ? R.drawable.ic_arrow_back_black : R.drawable.ic_arrow_back_white)); + } CustomTabsIntent customTabsIntent = builder.build(); @@ -218,4 +228,8 @@ public class RNInAppBrowser { EventBus.getDefault().unregister(this); } } + + private Boolean toolbarIsLight(String themeColor) { + return ColorUtils.calculateLuminance(Color.parseColor(themeColor)) > 0.5; + } } diff --git a/android/src/main/res/drawable-hdpi/ic_arrow_back_black.png b/android/src/main/res/drawable-hdpi/ic_arrow_back_black.png new file mode 100644 index 0000000000000000000000000000000000000000..3353538f69ef452f2d2b777478c5997d707a6b17 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K8q^FBxNX4zUR}Hxu40zlgvWwc5 zE$L>zRAqYn3rFb>ZpY7?>L=(lzL_n#yRC4}s>C_7T@UA+{L@)!vEd=l%|k0wldT1B8K8q^FBxNX4zUR}J|Z6nNYcg*xPR zA8BRQj63_Wl0~9!lH2cH^`5&;mcE#r7{be3kRh={Q!0)Bng1E*!*0fDYSH{B!-VCk tMX$yNO%Kir4pfhHp82d_W5$U@eIK*9Sf1$*A;+)G=o@ZUef%^;>X^?mkg#vY&v44$rj JF6*2UngCnkCWin3 literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-xhdpi/ic_arrow_back_black.png b/android/src/main/res/drawable-xhdpi/ic_arrow_back_black.png new file mode 100644 index 0000000000000000000000000000000000000000..57606fec6a54ee7a7f4e67dceb45568eb7782451 GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}b0DWKS2zkcwMxr&)6yP!M3fzwpz} zS*`~rFuUh3SmL$TKx<(Vd+bqt=aelF{r G5}E)a4M7nA literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-xhdpi/ic_arrow_back_white.png b/android/src/main/res/drawable-xhdpi/ic_arrow_back_white.png new file mode 100644 index 0000000000000000000000000000000000000000..7ffa22f072ef098918c2d28a0b60c0e4281915f5 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}b0D1Wy;okcwMxr`_gkFc3LvHKqUR z9|0}CHF*N*0-l;rQyN&_{k2@$B4FqA)Zr@goE23KvZ4Ps2-SYM=zd;4rIwxXuM6)y zn~bE5!sXpZ=D3)5p7e{UODeveS^9nJO8&%vxR@mo?2F68W&!PD@O1TaS?83{1ORP~ BHn{)* literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-xxhdpi/ic_arrow_back_black.png b/android/src/main/res/drawable-xxhdpi/ic_arrow_back_black.png new file mode 100644 index 0000000000000000000000000000000000000000..5fc11c865049112c699cc7e75415d06c91667cd5 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhawIy_w*Ln>~)y?l_j*+7KlVy*)F zIe{qCu7EBdCtWu&b}5Hb31@Sd{eP7urKP2~)y?mOp!9c+EV&;L? zZ2PrtE;^U|b(L>&L~>2s(^9Q%VUT~Oqod=*9h)DEj&`n%nsZ~>(ayI~GT(1k>z?Cb z=aaE0cyOTcvWa?f(wy@P_FH~!e&VNQk#%r;`xU9oAm!KzS*pERON51%_$)ch?om3) uN;hc3CDkRL=Cmw1Sm|jcqolNGk*%|?gzxwF$7O-8V(@hJb6Mw<&;$VDCQcgw literal 0 HcmV?d00001 From 1004bda73bde1065bf43593ff35e8d52112098be Mon Sep 17 00:00:00 2001 From: Aitor Cubeles Torres Date: Sat, 5 Oct 2019 15:13:05 +0200 Subject: [PATCH 2/2] Update README file to include hasBackButton Android property --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a3d7257..7042d10 100644 --- a/README.md +++ b/README.md @@ -148,6 +148,7 @@ Property | Description Property | Description -------------- | ------ `showTitle` (Boolean) | Sets whether the title should be shown in the custom tab. [`true`/`false`] +`hasBackButton` (Boolean) | Sets a back arrow instead of the default X icon to close the custom tab. [`true`/`false`] `toolbarColor` (String) | Sets the toolbar color. [`gray`/`#808080`] `secondaryToolbarColor` (String) | Sets the color of the secondary toolbar. [`white`/`#FFFFFF`] `enableUrlBarHiding` (Boolean) | Enables the url bar to hide as the user scrolls down on the page. [`true`/`false`]