From 25b58ba1fce1ee649e7dcf0b8731a4edb9b979bd Mon Sep 17 00:00:00 2001 From: mopsicus Date: Tue, 27 Aug 2024 15:48:11 +0300 Subject: [PATCH] feat: custom caret/cursor/handles color --- .../java/com/mopsicus/umi/MobileInput.java | 98 ++++++++++++++++++ Plugins/Android/MobileInput.aar.meta | 2 +- Plugins/Android/Mobileinput.aar | Bin 20724 -> 22760 bytes Plugins/iOS/MobileInput.mm | 12 +++ Runtime/MobileInputField.cs | 11 ++ 5 files changed, 122 insertions(+), 1 deletion(-) diff --git a/Android~/plugin/src/main/java/com/mopsicus/umi/MobileInput.java b/Android~/plugin/src/main/java/com/mopsicus/umi/MobileInput.java index 01a05dd..29af154 100644 --- a/Android~/plugin/src/main/java/com/mopsicus/umi/MobileInput.java +++ b/Android~/plugin/src/main/java/com/mopsicus/umi/MobileInput.java @@ -1,9 +1,15 @@ package com.mopsicus.umi; import android.content.Context; +import android.content.res.Resources; import android.graphics.Color; +import android.graphics.PorterDuff; import android.graphics.Rect; import android.graphics.Typeface; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.InsetDrawable; +import android.os.Build; import android.text.Editable; import android.text.InputType; import android.text.TextWatcher; @@ -18,10 +24,13 @@ import android.widget.EditText; import android.widget.RelativeLayout; import android.widget.RelativeLayout.LayoutParams; +import android.widget.TextView; import org.json.JSONException; import org.json.JSONObject; +import java.lang.reflect.Field; + public class MobileInput { private static final String CREATE = "CREATE_EDIT"; @@ -68,6 +77,16 @@ public class MobileInput { */ private int editInputType = 0; + /** + * Cached caret color + */ + private int caretColor = Color.GRAY; + + /** + * Cached flag to change caret to custom color or not + */ + private boolean isCaretChange = false; + /** * List of inputs */ @@ -255,6 +274,10 @@ private void Create(int id, JSONObject data) { int placeHolderColor_g = (int) (255.0f * data.getDouble("placeholder_color_g")); int placeHolderColor_b = (int) (255.0f * data.getDouble("placeholder_color_b")); int placeHolderColor_a = (int) (255.0f * data.getDouble("placeholder_color_a")); + int caretColor_r = (int) (255.0f * data.getDouble("caret_color_r")); + int caretColor_g = (int) (255.0f * data.getDouble("caret_color_g")); + int caretColor_b = (int) (255.0f * data.getDouble("caret_color_b")); + int caretColor_a = (int) (255.0f * data.getDouble("caret_color_a")); String contentType = data.getString("content_type"); String inputType = data.optString("input_type"); String keyboardType = data.optString("keyboard_type"); @@ -262,6 +285,8 @@ private void Create(int id, JSONObject data) { String alignment = data.getString("align"); String customFont = data.getString("font"); boolean multiline = data.getBoolean("multiline"); + caretColor = Color.argb(caretColor_a, caretColor_r, caretColor_g, caretColor_b); + isCaretChange = data.getBoolean("caret_color"); edit = new EditText(Plugin.activity.getApplicationContext()); edit.setSingleLine(!multiline); edit.setId(this.id); @@ -476,6 +501,74 @@ public void onTextChanged(CharSequence s, int start, int before, int count) { } } + /*** + * Set cursor/caret/handles color + * + * @param color Color value + */ + void setCaretColor(int color) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + if (edit.getTextCursorDrawable() instanceof InsetDrawable) { + InsetDrawable insetDrawable = (InsetDrawable) edit.getTextCursorDrawable(); + insetDrawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP); + edit.setTextCursorDrawable(insetDrawable); + Log.d("[UMI]", String.format("set caret cursor: %s", color)); + } + if (edit.getTextSelectHandle() instanceof BitmapDrawable) { + BitmapDrawable insetDrawable = (BitmapDrawable) edit.getTextSelectHandle(); + insetDrawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP); + edit.setTextSelectHandle(insetDrawable); + Log.d("[UMI]", String.format("set caret handle: %s", color)); + } + if (edit.getTextSelectHandleRight() instanceof BitmapDrawable) { + BitmapDrawable insetDrawable = (BitmapDrawable) edit.getTextSelectHandleRight(); + insetDrawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP); + edit.setTextSelectHandleRight(insetDrawable); + Log.d("[UMI]", String.format("set caret handle right: %s", color)); + } + if (edit.getTextSelectHandleLeft() instanceof BitmapDrawable) { + BitmapDrawable insetDrawable = (BitmapDrawable) edit.getTextSelectHandleLeft(); + insetDrawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP); + edit.setTextSelectHandleLeft(insetDrawable); + Log.d("[UMI]", String.format("set caret handle left: %s", color)); + } + } else { + try { + Resources res = edit.getContext().getResources(); + Field field = TextView.class.getDeclaredField("mEditor"); + field.setAccessible(true); + Object editor = field.get(edit); + field = TextView.class.getDeclaredField("mCursorDrawableRes"); + field.setAccessible(true); + int cursorDrawableRes = field.getInt(edit); + Drawable cursorDrawable = res.getDrawable(cursorDrawableRes).mutate(); + cursorDrawable.setColorFilter(color, PorterDuff.Mode.SRC_IN); + Drawable[] drawables = {cursorDrawable, cursorDrawable}; + field = editor.getClass().getDeclaredField("mCursorDrawable"); + field.setAccessible(true); + field.set(editor, drawables); + String[] resFieldNames = {"mTextSelectHandleLeftRes", "mTextSelectHandleRightRes", "mTextSelectHandleRes"}; + String[] drawableFieldNames = {"mSelectHandleLeft", "mSelectHandleRight", "mSelectHandleCenter"}; + for (int i = 0; i < resFieldNames.length; i++) { + String resFieldName = resFieldNames[i]; + String drawableFieldName = drawableFieldNames[i]; + field = TextView.class.getDeclaredField(resFieldName); + field.setAccessible(true); + int selectHandleRes = field.getInt(edit); + Drawable selectHandleDrawable = res.getDrawable(selectHandleRes).mutate(); + selectHandleDrawable.setColorFilter(color, PorterDuff.Mode.SRC_IN); + field = editor.getClass().getDeclaredField(drawableFieldName); + field.setAccessible(true); + field.set(editor, selectHandleDrawable); + } + } catch (Exception e) { + if (Plugin.bridge.isDebug) { + Log.e("[UMI]", String.format("set caret error: %s", e)); + } + } + } + } + /** * Remove MobileInput */ @@ -534,6 +627,11 @@ private void SetFocus(boolean isFocus) { } if (isFocus) { edit.requestFocus(); + if (isCaretChange) { + setCaretColor(caretColor); + } else { + setCaretColor(Color.GRAY); + } } else { edit.clearFocus(); } diff --git a/Plugins/Android/MobileInput.aar.meta b/Plugins/Android/MobileInput.aar.meta index 7f60eb1..30030be 100644 --- a/Plugins/Android/MobileInput.aar.meta +++ b/Plugins/Android/MobileInput.aar.meta @@ -7,7 +7,7 @@ PluginImporter: executionOrder: {} defineConstraints: [] isPreloaded: 0 - isOverridable: 0 + isOverridable: 1 isExplicitlyReferenced: 0 validateReferences: 1 platformData: diff --git a/Plugins/Android/Mobileinput.aar b/Plugins/Android/Mobileinput.aar index ecf170ea0758076e2cb54632a09adadc4b59b93a..c7ca32776411e57cfca0dcef8977dee160e55187 100644 GIT binary patch delta 21668 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

q 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 delta 19610 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Πmf5*daDYQ{!F(k*#-O!I* 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 /// Handler for app focus lost /// @@ -325,6 +328,7 @@ void OnApplicationPause(bool hasPause) { } SetVisible(!hasPause); } +#endif ///

/// Current InputField for external access @@ -420,6 +424,8 @@ void PrepareNativeEdit() { var placeHolder = _inputObject.placeholder.GetComponent(); _config.Placeholder = placeHolder.text; _config.PlaceholderColor = placeHolder.color; + _config.CaretColor = _inputObject.caretColor; + _config.ChangeCaret = _inputObject.customCaretColor; _config.CharacterLimit = _inputObject.characterLimit; var rect = GetScreenRectFromRectTransform(_inputObjectText.rectTransform); var ratio = rect.height / _inputObjectText.rectTransform.rect.height; @@ -573,6 +579,11 @@ void CreateNativeEdit() { data["placeholder_color_g"] = InvariantCultureString(_config.PlaceholderColor.g); data["placeholder_color_b"] = InvariantCultureString(_config.PlaceholderColor.b); data["placeholder_color_a"] = InvariantCultureString(_config.PlaceholderColor.a); + data["caret_color_r"] = InvariantCultureString(_config.CaretColor.r); + data["caret_color_g"] = InvariantCultureString(_config.CaretColor.g); + data["caret_color_b"] = InvariantCultureString(_config.CaretColor.b); + data["caret_color_a"] = InvariantCultureString(_config.CaretColor.a); + data["caret_color"] = _config.ChangeCaret; data["multiline"] = _config.Multiline; data["input_type"] = _config.InputType; data["keyboard_type"] = _config.KeyboardType;