From af0830f637eeb8b186e399ebd3f44dab1bc0ddf6 Mon Sep 17 00:00:00 2001 From: banban <9010293+banban61@user.noreply.gitee.com> Date: Thu, 3 Jun 2021 19:17:02 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BA=91=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jungly/gridpasswordview/MainAbility.java | 1 + .../gridpasswordview/ToolbarAdapter.java | 8 +- .../slice/MainAbilitySlice.java | 19 +- .../CustomPasswordTransformationMethod.java | 1 - .../gridpasswordview/GridPasswordView.java | 175 +++++++++--------- .../jungly/gridpasswordview/PasswordType.java | 5 + .../jungly/gridpasswordview/PasswordView.java | 3 +- .../gridpasswordview/TypedAttrUtils.java | 2 +- .../imebugfixer/ImeDelBugFixedEditText.java | 21 +++ 9 files changed, 129 insertions(+), 106 deletions(-) diff --git a/entry/src/main/java/com/jungly/gridpasswordview/MainAbility.java b/entry/src/main/java/com/jungly/gridpasswordview/MainAbility.java index c349b39..33eaa27 100644 --- a/entry/src/main/java/com/jungly/gridpasswordview/MainAbility.java +++ b/entry/src/main/java/com/jungly/gridpasswordview/MainAbility.java @@ -1,6 +1,7 @@ package com.jungly.gridpasswordview; import com.jungly.gridpasswordview.slice.MainAbilitySlice; + import ohos.aafwk.ability.Ability; import ohos.aafwk.content.Intent; diff --git a/entry/src/main/java/com/jungly/gridpasswordview/ToolbarAdapter.java b/entry/src/main/java/com/jungly/gridpasswordview/ToolbarAdapter.java index 0cc9e2a..f869b09 100644 --- a/entry/src/main/java/com/jungly/gridpasswordview/ToolbarAdapter.java +++ b/entry/src/main/java/com/jungly/gridpasswordview/ToolbarAdapter.java @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -24,6 +24,12 @@ public class ToolbarAdapter extends BaseItemProvider { private List mColorList; private Context context; + /** + * constructor + * + * @param context + * @param list + */ public ToolbarAdapter(Context context, List list) { this.mColorList = list; this.context = context; diff --git a/entry/src/main/java/com/jungly/gridpasswordview/slice/MainAbilitySlice.java b/entry/src/main/java/com/jungly/gridpasswordview/slice/MainAbilitySlice.java index 1044a8f..a80195c 100644 --- a/entry/src/main/java/com/jungly/gridpasswordview/slice/MainAbilitySlice.java +++ b/entry/src/main/java/com/jungly/gridpasswordview/slice/MainAbilitySlice.java @@ -11,12 +11,10 @@ import ohos.agp.colors.RgbColor; import ohos.agp.components.*; import ohos.agp.components.element.ShapeElement; import ohos.agp.components.element.StateElement; -import ohos.agp.utils.Color; import ohos.agp.window.dialog.*; import ohos.hiviewdfx.HiLog; import ohos.hiviewdfx.HiLogLabel; -import java.time.format.TextStyle; import java.util.ArrayList; import java.util.List; @@ -29,7 +27,6 @@ public class MainAbilitySlice extends AbilitySlice { private GridPasswordView mGridPasswordView8; private Text mText; private Text mTextStyle; - private boolean isChangePSW = true; private boolean isFirst = true; private String firstPwd; private boolean password_type_number = true; @@ -51,8 +48,7 @@ public class MainAbilitySlice extends AbilitySlice { mText = (Text) findComponentById(ResourceTable.Id_change_psw); mTextStyle = (Text) findComponentById(ResourceTable.Id_change_psw_style); - mGridPasswordView8.setOnPasswordChangedListener( - new GridPasswordView.OnPasswordChangedListener() { + mGridPasswordView8.setOnPasswordChangedListener(new GridPasswordView.OnPasswordChangedListener() { @Override public void onTextChanged(String psw) { if (psw.length() == mGridPasswordView8.DEFAULT_PASSWORD_LENGTH && isFirst) { @@ -127,16 +123,19 @@ public class MainAbilitySlice extends AbilitySlice { elementThumbOn.setShape(ShapeElement.OVAL); elementThumbOn.setRgbColor(RgbColor.fromArgbInt(0xFF4aac4e)); elementThumbOn.setCornerRadius(SWITCH_CORNER_RADIUS); + // 关闭状态下滑块的样式 ShapeElement elementThumbOff = new ShapeElement(); elementThumbOff.setShape(ShapeElement.OVAL); elementThumbOff.setRgbColor(RgbColor.fromArgbInt(0xFFFFFFFF)); elementThumbOff.setCornerRadius(SWITCH_CORNER_RADIUS); + // 开启状态下轨迹样式 ShapeElement elementTrackOn = new ShapeElement(); elementTrackOn.setShape(ShapeElement.RECTANGLE); elementTrackOn.setRgbColor(RgbColor.fromArgbInt(0xffcde6ce)); elementTrackOn.setCornerRadius(SWITCH_CORNER_RADIUS); + // 关闭状态下轨迹样式 ShapeElement elementTrackOff = new ShapeElement(); elementTrackOff.setShape(ShapeElement.RECTANGLE); @@ -188,14 +187,4 @@ public class MainAbilitySlice extends AbilitySlice { menuList.add("pattern_text"); return menuList; } - - @Override - public void onActive() { - super.onActive(); - } - - @Override - public void onForeground(Intent intent) { - super.onForeground(intent); - } } diff --git a/library/src/main/java/com/jungly/gridpasswordview/CustomPasswordTransformationMethod.java b/library/src/main/java/com/jungly/gridpasswordview/CustomPasswordTransformationMethod.java index a95c038..9c394e0 100644 --- a/library/src/main/java/com/jungly/gridpasswordview/CustomPasswordTransformationMethod.java +++ b/library/src/main/java/com/jungly/gridpasswordview/CustomPasswordTransformationMethod.java @@ -6,7 +6,6 @@ package com.jungly.gridpasswordview; * @author Jungly * mail: jungly.ik@gmail.com */ - public class CustomPasswordTransformationMethod { private final String transformation; diff --git a/library/src/main/java/com/jungly/gridpasswordview/GridPasswordView.java b/library/src/main/java/com/jungly/gridpasswordview/GridPasswordView.java index 307c391..231bd6b 100644 --- a/library/src/main/java/com/jungly/gridpasswordview/GridPasswordView.java +++ b/library/src/main/java/com/jungly/gridpasswordview/GridPasswordView.java @@ -11,7 +11,6 @@ import ohos.agp.utils.TextAlignment; import ohos.agp.window.service.Display; import ohos.agp.window.service.DisplayManager; import ohos.app.Context; - import ohos.multimodalinput.event.KeyEvent; /** @@ -22,6 +21,9 @@ import ohos.multimodalinput.event.KeyEvent; * 15/3/5 21:30 */ public class GridPasswordView extends DirectionalLayout implements PasswordView, Component.DrawTask { + /** + * DEFAULT_PASSWORD_LENGTH + */ public static final int DEFAULT_PASSWORD_LENGTH = 6; private static final int DEFAULT_LINE_WIDTH = 5; private static final int DEFAULT_MAX_PASSWORDLENGTH = 8; @@ -49,17 +51,101 @@ public class GridPasswordView extends DirectionalLayout implements PasswordView, private int mScreenWidth; private boolean isFirst = true; private boolean isDelInput = false; + private Component.ClickedListener mOnClickListener = new Component.ClickedListener() { + @Override + public void onClick(Component component) { + forceInputViewGetFocus(); + } + }; + + /** + * TextFiled 的文本输入监听 + */ + Text.TextObserver textWatcher = new ohos.agp.components.Text.TextObserver() { + @Override + public void onTextUpdated(String s, int index, int i1, int i2) { + if (s == null || "".equals(s) || s.length() > mPasswordLength) { + return; + } + for (int i = 0; i < mPasswordArr.length; i++) { + String newNum = s.substring(s.length() - 1); + if (mPasswordArr[i] == null) { + if (isDelInput) { + isDelInput = false; + break; + } + mPasswordArr[i] = newNum; + if (showPassword) { + mViewArr[i].setText(mPasswordTransformation); + } else { + mViewArr[i].setText(newNum); + } + notifyTextChanged(); + break; + } + } + } + }; + Component.KeyEventListener KeyEventListener = new Component.KeyEventListener() { + @Override + public boolean onKeyEvent(Component component, KeyEvent keyEvent) { + if (keyEvent.getKeyCode() == KeyEvent.KEY_SPACE) { + return true; + } + if (keyEvent.isKeyDown() && keyEvent.getKeyCode() == KeyEvent.KEY_DEL) { + for (int i = mPasswordArr.length - 1; i >= 0; i--) { + if (mPasswordArr[i] != null) { + mPasswordArr[i] = null; + + mViewArr[i].setText(null); + notifyTextChanged(); + + isDelInput = true; + if (i == 0) { + isDelInput = false; + for (int j = mViewFiledArr.length - 1; j >= 0; j--) { + mViewFiledArr[j].setText(null); + } + } + break; + } else { + mViewArr[i].setText(null); + } + } + } + return false; + } + }; + + /** + * constructor + * + * @param context + */ public GridPasswordView(Context context) { super(context); init(context, null, ""); } + /** + * constructor + * + * @param context + * @param attrs + */ public GridPasswordView(Context context, AttrSet attrs) { super(context, attrs); init(context, attrs, ""); } + /** + * constructor + * + * @param context + * @param attrs + * @param defStyleAttr + */ public GridPasswordView(Context context, AttrSet attrs, String defStyleAttr) { super(context, attrs, defStyleAttr); init(context, attrs, defStyleAttr); @@ -174,13 +260,6 @@ public class GridPasswordView extends DirectionalLayout implements PasswordView, view.setTextSize(mTextSize); } - private Component.ClickedListener mOnClickListener = new Component.ClickedListener() { - @Override - public void onClick(Component component) { - forceInputViewGetFocus(); - } - }; - private ShapeElement generateDividerBackgroundColor() { ShapeElement elementLine = new ShapeElement(); elementLine.setRgbColor(RgbColor.fromArgbInt(mOutLineColor.getValue())); @@ -200,84 +279,6 @@ public class GridPasswordView extends DirectionalLayout implements PasswordView, mInputView.requestFocus(); } - private ImeDelBugFixedEditText.OnDelKeyEventListener onDelKeyEventListener = new ImeDelBugFixedEditText.OnDelKeyEventListener() { - @Override - public void onDeleteClick() { - for (int i = mPasswordArr.length - 1; i >= 0; i--) { - if (mPasswordArr[i] != null) { - mPasswordArr[i] = null; - mViewArr[i].setText(null); - notifyTextChanged(); - break; - } else { - mViewArr[i].setText(null); - } - } - } - }; - - /** - * TextFiled 的文本输入监听 - */ - ohos.agp.components.Text.TextObserver textWatcher = new ohos.agp.components.Text.TextObserver() { - @Override - public void onTextUpdated(String s, int index, int i1, int i2) { - String newStr = s.toString(); - if (newStr == null || newStr.equals("") || newStr.length() > mPasswordLength) { - return; - } - - for (int i = 0; i < mPasswordArr.length; i++) { - String newNum = newStr.substring(newStr.length() - 1); - if (mPasswordArr[i] == null) { - if (isDelInput) { - isDelInput = false; - break; - } - mPasswordArr[i] = newNum; - if (showPassword) { - mViewArr[i].setText(mPasswordTransformation); - } else { - mViewArr[i].setText(newNum); - } - notifyTextChanged(); - break; - } - } - } - }; - - Component.KeyEventListener KeyEventListener = new Component.KeyEventListener() { - @Override - public boolean onKeyEvent(Component component, KeyEvent keyEvent) { - if (keyEvent.getKeyCode() == KeyEvent.KEY_SPACE) { - return true; - } - if (keyEvent.isKeyDown() && keyEvent.getKeyCode() == KeyEvent.KEY_DEL) { - for (int i = mPasswordArr.length - 1; i >= 0; i--) { - if (mPasswordArr[i] != null) { - mPasswordArr[i] = null; - - mViewArr[i].setText(null); - notifyTextChanged(); - - isDelInput = true; - if (i == 0) { - isDelInput = false; - for (int j = mViewFiledArr.length - 1; j >= 0; j--) { - mViewFiledArr[j].setText(null); - } - } - break; - } else { - mViewArr[i].setText(null); - } - } - } - return false; - } - }; - /** * 获取密码 * @@ -327,7 +328,7 @@ public class GridPasswordView extends DirectionalLayout implements PasswordView, public void setPassword(String password) { clearPassword(); - if (null == password || password.length() == 0) { + if (password == null || password.length() == 0) { return; } diff --git a/library/src/main/java/com/jungly/gridpasswordview/PasswordType.java b/library/src/main/java/com/jungly/gridpasswordview/PasswordType.java index 2884b79..c2df4db 100644 --- a/library/src/main/java/com/jungly/gridpasswordview/PasswordType.java +++ b/library/src/main/java/com/jungly/gridpasswordview/PasswordType.java @@ -1,10 +1,15 @@ package com.jungly.gridpasswordview; /** + * PasswordType + * * @author Jungly * jungly.ik@gmail.com * 5/3/21 16:47 */ public enum PasswordType { + /** + * NUMBER, TEXT, TEXTVISIBLE, PATTERN_NULL, PASSWORD + */ NUMBER, TEXT, TEXTVISIBLE, PATTERN_NULL, PASSWORD } \ No newline at end of file diff --git a/library/src/main/java/com/jungly/gridpasswordview/PasswordView.java b/library/src/main/java/com/jungly/gridpasswordview/PasswordView.java index cf110fe..6f4abe8 100644 --- a/library/src/main/java/com/jungly/gridpasswordview/PasswordView.java +++ b/library/src/main/java/com/jungly/gridpasswordview/PasswordView.java @@ -1,12 +1,13 @@ package com.jungly.gridpasswordview; /** + * PasswordView + * * @author Jungly * @mail jungly.ik@gmail.com * @date 15/3/21 16:20 */ interface PasswordView { - String getPassWord(); void clearPassword(); diff --git a/library/src/main/java/com/jungly/gridpasswordview/TypedAttrUtils.java b/library/src/main/java/com/jungly/gridpasswordview/TypedAttrUtils.java index 627631b..83bb232 100644 --- a/library/src/main/java/com/jungly/gridpasswordview/TypedAttrUtils.java +++ b/library/src/main/java/com/jungly/gridpasswordview/TypedAttrUtils.java @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/library/src/main/java/com/jungly/gridpasswordview/imebugfixer/ImeDelBugFixedEditText.java b/library/src/main/java/com/jungly/gridpasswordview/imebugfixer/ImeDelBugFixedEditText.java index b9a985b..67af681 100644 --- a/library/src/main/java/com/jungly/gridpasswordview/imebugfixer/ImeDelBugFixedEditText.java +++ b/library/src/main/java/com/jungly/gridpasswordview/imebugfixer/ImeDelBugFixedEditText.java @@ -7,14 +7,32 @@ import ohos.app.Context; public class ImeDelBugFixedEditText extends TextField { private OnDelKeyEventListener delKeyEventListener; + /** + * constructor + * + * @param context + */ public ImeDelBugFixedEditText(Context context) { super(context); } + /** + * constructor + * + * @param context + * @param attrs + */ public ImeDelBugFixedEditText(Context context, AttrSet attrs) { super(context, attrs); } + /** + * constructor + * + * @param context + * @param attrs + * @param defStyle + */ public ImeDelBugFixedEditText(Context context, AttrSet attrs, String defStyle) { super(context, attrs, defStyle); } @@ -24,6 +42,9 @@ public class ImeDelBugFixedEditText extends TextField { } public interface OnDelKeyEventListener { + /** + * onDeleteClick + */ void onDeleteClick(); } } \ No newline at end of file -- Gitee From 18fc98f11e8ecaed4641ea281838afd151076754 Mon Sep 17 00:00:00 2001 From: banban <9010293+banban61@user.noreply.gitee.com> Date: Thu, 3 Jun 2021 19:29:59 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CustomPasswordTransformationMethod.java | 10 ++++++ .../jungly/gridpasswordview/PasswordView.java | 31 +++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/library/src/main/java/com/jungly/gridpasswordview/CustomPasswordTransformationMethod.java b/library/src/main/java/com/jungly/gridpasswordview/CustomPasswordTransformationMethod.java index 9c394e0..904b4b0 100644 --- a/library/src/main/java/com/jungly/gridpasswordview/CustomPasswordTransformationMethod.java +++ b/library/src/main/java/com/jungly/gridpasswordview/CustomPasswordTransformationMethod.java @@ -9,6 +9,11 @@ package com.jungly.gridpasswordview; public class CustomPasswordTransformationMethod { private final String transformation; + /** + * constructor + * + * @param transformation + */ public CustomPasswordTransformationMethod(String transformation) { this.transformation = transformation; } @@ -16,6 +21,11 @@ public class CustomPasswordTransformationMethod { private class PasswordCharSequence implements CharSequence { private final CharSequence mSource; + /** + * constructor + * + * @param source + */ public PasswordCharSequence(CharSequence source) { mSource = source; } diff --git a/library/src/main/java/com/jungly/gridpasswordview/PasswordView.java b/library/src/main/java/com/jungly/gridpasswordview/PasswordView.java index 6f4abe8..e2302de 100644 --- a/library/src/main/java/com/jungly/gridpasswordview/PasswordView.java +++ b/library/src/main/java/com/jungly/gridpasswordview/PasswordView.java @@ -8,17 +8,48 @@ package com.jungly.gridpasswordview; * @date 15/3/21 16:20 */ interface PasswordView { + /** + * getPassWord + * + * @return String + */ String getPassWord(); + /** + * clearPassword + */ void clearPassword(); + /** + * setPassword + * + * @param password + */ void setPassword(String password); + /** + * setPasswordVisibility + * + * @param visible + */ void setPasswordVisibility(boolean visible); + /** + * togglePasswordVisibility + */ void togglePasswordVisibility(); + /** + * setOnPasswordChangedListener + * + * @param listener + */ void setOnPasswordChangedListener(GridPasswordView.OnPasswordChangedListener listener); + /** + * setPasswordType + * + * @param passwordType + */ void setPasswordType(PasswordType passwordType); } -- Gitee From 53bcb7647ee5ce055321b62f063e2fbceb15fb18 Mon Sep 17 00:00:00 2001 From: banban <9010293+banban61@user.noreply.gitee.com> Date: Thu, 3 Jun 2021 19:36:33 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jungly/gridpasswordview/Util.java | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 library/src/main/java/com/jungly/gridpasswordview/Util.java diff --git a/library/src/main/java/com/jungly/gridpasswordview/Util.java b/library/src/main/java/com/jungly/gridpasswordview/Util.java deleted file mode 100644 index ac50995..0000000 --- a/library/src/main/java/com/jungly/gridpasswordview/Util.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.jungly.gridpasswordview; - - -import ohos.app.Context; - -/** - * @author Jungly - * jungly.ik@gmail.com - * 15/3/8 10:07 - */ -public class Util { - public static int px2sp(Context context, float pxValue) { - return 1; - } - - public static int dp2px(Context context, int dp) { - return 1; - } -} -- Gitee From 99d1a2c29e6188ad2a271472606b5599d8e5eee0 Mon Sep 17 00:00:00 2001 From: banban <9010293+banban61@user.noreply.gitee.com> Date: Thu, 3 Jun 2021 19:51:11 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jungly/gridpasswordview/slice/MainAbilitySlice.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/entry/src/main/java/com/jungly/gridpasswordview/slice/MainAbilitySlice.java b/entry/src/main/java/com/jungly/gridpasswordview/slice/MainAbilitySlice.java index a80195c..fd18225 100644 --- a/entry/src/main/java/com/jungly/gridpasswordview/slice/MainAbilitySlice.java +++ b/entry/src/main/java/com/jungly/gridpasswordview/slice/MainAbilitySlice.java @@ -155,11 +155,11 @@ public class MainAbilitySlice extends AbilitySlice { mPopupWindow = null; } mText.setText(getPassTypeData().get(position)); - if (mText.getText().equals("pattern_number")) { + if ("pattern_number".equals(mText.getText())) { mGridPasswordView3.setPasswordType(PasswordType.NUMBER); - } else if (mText.getText().equals("pattern_password")) { + } else if ("pattern_password".equals(mText.getText())) { mGridPasswordView3.setPasswordType(PasswordType.PASSWORD); - } else if (mText.getText().equals("pattern_text")) { + } else if ("pattern_text".equals(mText.getText())) { mGridPasswordView3.setPasswordType(PasswordType.TEXT); } }); -- Gitee