Kendada

Has been in envy, have been working harder!


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

仿微信或支付宝的支付密码View

发表于 2017-09-05

APasswordView

APasswordView是一个密码输入视图,类似于微信或支付宝的支付密码视图。
可以设置文字颜色和大小、分割线颜色、密码的长度、以及背景圆角等。

  • 实现原理

    整个密码输入框最外层是一个水平方向的LinearLayout,内部包括显示密码的View,而多个显示密码的View中,第一个位置放置的是EditText,其余均为TextView

  • Download app-debug.apk

  • Code 源码

效果图:

  1. AlonePasswordView

AlonePasswordView

  • 在布局中添加AlonePasswordView
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <com.koudai.library.AlonePasswordView
    android:id="@+id/pswView1"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_margin="15dp"
    app:BaseItemBackground="@drawable/mw_input_code_bg_1"
    app:BaseItemMargin="2dp"
    app:gpvGridColor="#ffffff"
    app:gpvLineColor="@color/test"
    app:gpvLineWidth="1dp"
    app:gpvPasswordLength="6"
    app:gpvPasswordTransformation="*"
    app:gpvPasswordType="numberPassword"
    app:gpvTextColor="#000000"
    app:gpvTextSize="25sp" />
    ```
    2. WholePasswordView
    > ![WholePasswordView](http://ovsv7o62g.bkt.clouddn.com/4FEADB1D76A9D18ADB27E44CB23F7E92.png)
    * 在布局中添加WholePasswordView


1
### 参数说明

<attr name="gpvTextColor" format="color|reference" /> <!-- 设置输入密码的颜色 -->
<attr name="gpvTextSize" format="dimension" /> <!-- 设置输入密码的大小 -->

<attr name="gpvLineColor" format="color" /> <!-- 边框颜色 -->
<attr name="gpvGridColor" format="color" /> <!-- 背景顔色 -->
<attr name="gpvLineWidth" format="dimension" /> <!-- 边框宽度 -->

<attr name="gpvPasswordLength" format="integer" /> <!-- 设置密码长度 -->
<attr name="gpvPasswordTransformation" format="string" /> <!-- 你输入密码的时候显示的符号 -->

<attr name="gpvPasswordType" format="enum"> <!-- 输入内容的类别 -->
    <enum name="numberPassword" value="0" />
    <enum name="textPassword" value="1" />
    <enum name="textVisiblePassword" value="2" />
    <enum name="textWebPassword" value="3" />
</attr>

<attr name="BaseItemBackground" format="reference" /> <!-- 设置输入密码框的背景 -->
<attr name="BaseItemMargin" format="dimension" /> <!-- 边框间距 -->
<attr name="BaseCornerRadius" format="dimension" /> <!-- 背景圆角 -->


```

感谢项目GridPasswordView,本项目核心代码来源此.

模拟软键盘删除操作

发表于 2016-06-12
模拟软键盘删除操作

第一种方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
* 删除表情和文字
*/
private void deleteEmoji(String str, int selection) {
int start = -1, end = -1;
Matcher matcher = emoji.matcher(str);
while (matcher.find()) { // 遍历最后一个
String key = matcher.group();
start = matcher.start();
end = matcher.start() + key.length();
}
if (start != -1 && end != -1) { // 删除表情
messageContent.getText().delete(start, end);
} else {
if (selection > 0) { // 删除文字
messageContent.getText().delete(selection - 1, selection);
}
}
}
// 表情规则
private Pattern emoji = Pattern.compile(
"[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]", Pattern.UNICODE_CASE
| Pattern.CASE_INSENSITIVE);

第二种方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* 模拟删除按键
*/
private void deleteKey() {
AsyncTask.execute(new Runnable() {
@Override
public void run() {
try {
Instrumentation inst = new Instrumentation();
inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DEL);
} catch (Exception ignored) {
}
}
});
}

Hexo 第一篇博客

发表于 2012-01-01
Kendada

Kendada

3 日志
GitHub E-Mail 新浪微博 CSDN博客
© 2017 Kendada
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.2