English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Beispiel für eine ios-ähnliche numerische Passworteingabeschnittstelle für Android

Wie folgt:

Jeder Android-Entwickler weiß, dass die häufigste Art, ein Android-Gerät zu entsperren, die neunzehn-Gitter-Entsperrung ist, und die häufigste Art, ein iOS-Gerät zu entsperren, ist die Passwort-Entsperrung. Während der Entwicklung benötigen wir oft die Kombination von Android und iOS. Manchmal müssen wir unsere Entsperrungsoberfläche so gestalten, dass sie wie die der iOS-Zifferntastatur aussieht.

这里我就实现了一个仿照iOS的数字密码解锁界面。在这里我采用了两种方式来实现,第一种就是使用自定义控件的形式,第二种就是使用我们的布局来实现的。这里我就着重讲一下使用自定义控件形式实现的思路。至于使用布局文件实现的方式,我就不进行具体的讲解了,具体的在后面我会上传源码供大家下载进行研究学习。

当然,我的能力有限,可能你们觉得我的方式不好,那么你们就给我提出来,看看具体你们觉得怎么实现才好,我们一起研究学习。

好了,废话不多说了,现在就来讲解一下,我所使用自定义控件的实现方法:

1.最主要还是实现自定义数字键盘(一个自定义View的控件):

1.绘制数字

// 绘制第一排1,2,3
 canvas.drawText("1", first_x, 40 + first_y, paint);
 canvas.drawText("2", first_x * 2, 40 + first_y, paint);
 canvas.drawText("3", first_x * 3, 40 + first_y, paint);
 // 绘制第2Reihe4,5,6
 canvas.drawText("4", first_x, 40 + first_y + first_x, paint);
 canvas.drawText("5", first_x * 2, 40 + first_y + first_x, paint);
 canvas.drawText("6", first_x * 3, 40 + first_y + first_x, paint);
 // 绘制第3Reihe7,8,9
 canvas.drawText("7", first_x, 40 + first_y + first_x * 2, paint);
 canvas.drawText("8", first_x * 2, 40 + first_y + first_x * 2, paint);
 canvas.drawText("9", first_x * 3, 40 + first_y + first_x * 2, paint);
 // 绘制第4排0
 canvas.drawText("0", first_x * 2, 40 + first_y + first_x * 3, paint);

2.绘制好数字后,我们需要在每一个数字外面添加一层圆,绘制圆

//依次绘制第一排的圆
 canvas.drawCircle(first_x+10, 40 + first_y - 15, 50, paint);
 canvas.drawCircle(first_x*2+10, 40 + first_y - 15, 50, paint);
 canvas.drawCircle(first_x*3+10, 40 + first_y - 15, 50, paint);
 //依次绘制第2排的圆
 canvas.drawCircle(first_x+10, 40 + first_y + first_x - 15, 50, paint);
 canvas.drawCircle(first_x*2+10, 40 + first_y + first_x - 15, 50, paint);
 canvas.drawCircle(first_x*3+10, 40 + first_y + first_x - 15, 50, paint);
 //依次绘制第3排的圆
 canvas.drawCircle(first_x+10, 40 + first_y + first_x * 2 - 15, 50, paint);
 canvas.drawCircle(first_x*2+10, 40 + first_y + first_x * 2 - 15, 50, paint);
 canvas.drawCircle(first_x*3+10, 40 + first_y + first_x * 2 - 15, 50, paint);
 //绘制最后一个圆
 canvas.drawCircle(first_x*2+10, 40 + first_y + first_x * 3 - 15, 50, paint);

3点击数字后,我们给一个不同的效果,让用户知道自己点击了该数字,这里我是吧外面的圆的颜色改为了黄色

//判断是否点击数字
 if(circle_x > 0 && circle_y > 0){//点击
 if(type == 0){//Aktualisieren Sie
 paint.setColor(Color.YELLOW);//设置画笔颜色
 canvas.drawCircle(circle_x, circle_y, 50, paint);//绘制圆
 }else if(type == 1{//弹起刷新
 paint.setColor(Color.WHITE);//设置画笔颜色
 canvas.drawCircle(circle_x, circle_y, 50, paint);//绘制圆
 //绘制完成后,重置
 circle_x = 0; circle_y = 0;
 }
 }

4最后就是判断点击的数字

/*
 * 判断点击的是哪一个数字圆
 */
private void handleDown(float x, float y){
 //判断点击的是那一列的数据
 if(xs[0] - 50 <= x && x <= xs[0] + 50){//erste Spalte
 //Erhalten Sie die horizontale Koordinate des Mittelpunkts des geklickten Zifferncircles
 circle_x = xs[0];
 //Bestimmen Sie, welche Reihe geklickt wurde
 if(ys[0] - 50 <= y && ys[0] + 50 >= y){//Der1Reihe
 //Erhalten Sie die vertikale Koordinate des Mittelpunkts des geklickten Zifferncircles
 circle_y = ys[0];
 number = 1;//Setzen Sie die geklickte Ziffer
 }1]; - 50 <= y && ys[1]; + 50 >= y){//Der2Reihe
 //Erhalten Sie die vertikale Koordinate des Mittelpunkts des geklickten Zifferncircles
 circle_y = ys[1];
 number = 4;//Setzen Sie die geklickte Ziffer
 }2]; - 50 <= y && ys[2]; + 50 >= y){//Der3Reihe
 //Erhalten Sie die vertikale Koordinate des Mittelpunkts des geklickten Zifferncircles
 circle_y = ys[2];
 number = 7;//Setzen Sie die geklickte Ziffer
 }
 }1]; - 50 <= x && x <= xs[1]; + 50){//Der2Spalte
 //Erhalten Sie die horizontale Koordinate des Mittelpunkts des geklickten Zifferncircles
 circle_x = xs[1];
 //Bestimmen Sie, welche Reihe geklickt wurde
 if(ys[0] - 50 <= y && ys[0] + 50 >= y){//Der1Reihe
 //Erhalten Sie die vertikale Koordinate des Mittelpunkts des geklickten Zifferncircles
 circle_y = ys[0];
 number = 2;//Setzen Sie die geklickte Ziffer
 }1]; - 50 <= y && ys[1]; + 50 >= y){//Der2Reihe
 //Erhalten Sie die vertikale Koordinate des Mittelpunkts des geklickten Zifferncircles
 circle_y = ys[1];
 number = 5;//Setzen Sie die geklickte Ziffer
 }2]; - 50 <= y && ys[2]; + 50 >= y){//Der3Reihe
 //Erhalten Sie die vertikale Koordinate des Mittelpunkts des geklickten Zifferncircles
 circle_y = ys[2];
 number = 8;//Setzen Sie die geklickte Ziffer
 }3]; - 50 <= y && ys[3]; + 50 >= y){//Der4Reihe
 //Erhalten Sie die vertikale Koordinate des Mittelpunkts des geklickten Zifferncircles
 circle_y = ys[3];
 number = 0;//Setzen Sie die geklickte Ziffer
 }
 }2]; - 50 <= x && x <= xs[2]; + 50){//Der3Spalte
 //Erhalten Sie die horizontale Koordinate des Mittelpunkts des geklickten Zifferncircles
 circle_x = xs[2];
 //Bestimmen Sie, welche Reihe geklickt wurde
 if(ys[0] - 50 <= y && ys[0] + 50 >= y){//Der1Reihe
 //Erhalten Sie die vertikale Koordinate des Mittelpunkts des geklickten Zifferncircles
 circle_y = ys[0];
 number = 3;//Setzen Sie die geklickte Ziffer
 }1]; - 50 <= y && ys[1]; + 50 >= y){//Der2Reihe
 //Erhalten Sie die vertikale Koordinate des Mittelpunkts des geklickten Zifferncircles
 circle_y = ys[1];
 number = 6;//Setzen Sie die geklickte Ziffer
 }2]; - 50 <= y && ys[2]; + 50 >= y){//Der3Reihe
 //Erhalten Sie die vertikale Koordinate des Mittelpunkts des geklickten Zifferncircles
 circle_y = ys[2];
 number = 9;//Setzen Sie die geklickte Ziffer
 }
 }
 sendAccessEvent(R.string.numeric_keyboard_down);
 type = 0;//Aktualisieren Sie
 //Zeichnen Sie den Hintergrundkreis beim Klicken
 invalidate();
}

Das ist also fast alles, was ich sagen kann. Übrigens, oben hier4Ein Kontrollfeld zur Anzeige des Passworts verwendet ebenfalls ein benutzerdefiniertes Kontrollfeld und realisiert dies durch einen Thread nach der Eingabe der Ziffern1Nach einer Sekunde wird das Passwortzeichen das eingegebene Ziffern ersetzen. (Manche könnten sagen, dass die System-EditText-Kontrollen mit einem Passwortstil auch dies erreichen können, aber ich möchte sagen, dass das nicht geht, zumindest habe ich es versucht und es hat nicht funktioniert)

Dieses Beispiel eines android-ähnlichen ios-Ziffernpasswort-Spiegeleffekts ist alles, was der Redakteur Ihnen mitteilen möchte. Ich hoffe, es kann Ihnen als Referenz dienen und hoffe, dass alle mehr Unterstützung für die Anleitungsklage leisten.

Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet entnommen und gehört dem Urheberrechtsinhaber. Der Inhalt wurde von Internetbenutzern freiwillig und selbstständig hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht manuell bearbeitet. Sie übernimmt auch keine rechtlichen Verantwortlichkeiten. Wenn Sie verdächtige Urheberrechtsinhalte finden, freuen wir uns über eine E-Mail an: notice#oldtoolbag.com (Bitte ersetzen Sie # durch @, wenn Sie eine E-Mail senden, um eine Meldung zu machen, und fügen Sie relevante Beweise bei. Sobald nachgewiesen, wird diese Website den fraglichen Inhalt sofort löschen.)

Empfohlene Artikel