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

Esempio di interfaccia di sblocco di password numerica simile a iOS per Android

Come mostrato di seguito:

Ogni sviluppatore Android sa che, al momento, lo sblocco più comune su Android è lo sblocco a schiera di nove, mentre lo sblocco più comune su iOS è lo sblocco a password numerica. Durante lo sviluppo, spesso dobbiamo combinare Android e iOS. A volte dobbiamo rendere la nostra interfaccia di sblocco simile a una tastiera numerica di iOS.

Qui ho implementato una simulazione dell'interfaccia di sblocco della password numerica di iOS. Ho adottato due metodi per realizzarla, il primo è utilizzare il componente di View personalizzato, il secondo è utilizzare il nostro layout. Ecco che mi soffermerò su come implementare il primo metodo. Per quanto riguarda il metodo di implementazione utilizzando il file di layout, non lo spiegherò in dettaglio, il codice sorgente sarà caricato in seguito per consentire a tutti di scaricarlo e studiarlo.

Certo, le mie capacità sono limitate, potreste pensare che il mio metodo non sia buono, allora fatemi sapere come pensate che dovrebbe essere implementato meglio, studieremo insieme.

Bene, senza dilungarmi troppo, ora vi spiegherò il metodo di implementazione del controllo personalizzato che utilizzo:

1. Principalmente, è necessario implementare una tastiera numerica personalizzata (un componente di View personalizzato):

1. Disegna i numeri

// Disegna la prima riga 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);
 // Disegna la seconda riga 4,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);
 // Disegna la terza riga 7,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.scritturaTesto("9", (first_x * 3), (40 + first_y + first_x * 2), paint)
 // disegna il 0 della quarta riga
 canvas.scritturaTesto("0", (first_x * 2), (40 + first_y + first_x * 3), paint);

2. Dopo aver disegnato i numeri, dobbiamo aggiungere un cerchio intorno a ciascun numero, disegna il cerchio

// disegna i cerchi della prima riga in sequenza
 canvas.disegnaCerchio((first_x+10), (40 + first_y - 15), 50, paint);
 canvas.disegnaCerchio((first_x*2+10), (40 + first_y - 15), 50, paint);
 canvas.disegnaCerchio((first_x*3+10), (40 + first_y - 15), 50, paint);
 // disegna i cerchi della seconda riga in sequenza
 canvas.disegnaCerchio((first_x+10), (40 + first_y + first_x - 15), 50, paint);
 canvas.disegnaCerchio((first_x*2+10), (40 + first_y + first_x - 15), 50, paint);
 canvas.disegnaCerchio((first_x*3+10), (40 + first_y + first_x - 15), 50, paint);
 // disegna i cerchi della terza riga in sequenza
 canvas.disegnaCerchio((first_x+10), (40 + first_y + first_x * 2 - 15), 50, paint);
 canvas.disegnaCerchio((first_x*2+10), (40 + first_y + first_x * 2 - 15), 50, paint);
 canvas.disegnaCerchio((first_x*3+10), (40 + first_y + first_x * 2 - 15), 50, paint);
 // disegna l'ultimo cerchio
 canvas.disegnaCerchio((first_x*2+10), (40 + first_y + first_x * 3 - 15), 50, paint);

//判断是否点击数字

if(circle_x > 0 && circle_y > 0){//点击
 if(type == 0){//按下刷新
 paint.setColor(Color.YELLOW);//设置画笔颜色
 }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){//第一列}
 circle_x = xs[0];
 //获取点击处的圆心横坐标
 number = 1;//设置点击的数字
 //判断点击的是哪一排
 if(ys[0] - 50 <= y && ys[0] + 50 >= y){//第1排}
 //Ottieni l'assise y del cerchio del numero cliccato
 circle_y = ys[0];
 number = 4;//设置点击的数字
 } else if(ys[1] - 50 <= y && ys[1] + 50 >= y){//Seconda riga
 //Ottieni l'assise y del cerchio del numero cliccato
 circle_y = ys[1];
 number = 7;//设置点击的数字
 } else if(ys[2] - 50 <= y && ys[2] + 50 >= y){//Terza riga
 //Ottieni l'assise y del cerchio del numero cliccato
 circle_y = ys[2];
 else if(xs[1] - 50 <= x && x <= xs[1] + 50){//第2列}
 }
 }
 //获取点击处的圆心横坐标
 circle_x = xs[1];
 //判断点击的是哪一排
 if(ys[0] - 50 <= y && ys[0] + 50 >= y){//第1排}
 //Ottieni l'assise y del cerchio del numero cliccato
 circle_y = ys[0];
 number = 2;//设置点击的数字
 } else if(ys[1] - 50 <= y && ys[1] + 50 >= y){//Seconda riga
 //Ottieni l'assise y del cerchio del numero cliccato
 circle_y = ys[1];
 number = 5;//设置点击的数字
 } else if(ys[2] - 50 <= y && ys[2] + 50 >= y){//Terza riga
 //Ottieni l'assise y del cerchio del numero cliccato
 circle_y = ys[2];
 number = 8;//设置点击的数字
 }
 //Ottieni l'assise y del cerchio del numero cliccato
 circle_y = ys[3];
 number = 0;//设置点击的数字
 }
 }else if(xs[2] - 50 <= x && x <= xs[2] + 50){//第3列}
 //获取点击处的圆心横坐标
 circle_x = xs[2];
 //判断点击的是哪一排
 if(ys[0] - 50 <= y && ys[0] + 50 >= y){//第1排}
 //Ottieni l'assise y del cerchio del numero cliccato
 circle_y = ys[0];
 number = 3;//Imposta il numero cliccato
 } else if(ys[1] - 50 <= y && ys[1] + 50 >= y){//Seconda riga
 //Ottieni l'assise y del cerchio del numero cliccato
 circle_y = ys[1];
 number = 6;//Imposta il numero cliccato
 } else if(ys[2] - 50 <= y && ys[2] + 50 >= y){//Terza riga
 //Ottieni l'assise y del cerchio del numero cliccato
 circle_y = ys[2];
 number = 9;//Imposta il numero cliccato
 }
 }
 sendAccessEvent(R.string.numeric_keyboard_down);
 type = 0;//Aggiorna
 //Disegna lo sfondo circolare dell'interazione
 invalidate();
}

Bene, è più o meno così. A proposito, i 4 controlli di visualizzazione della password qui sopra sono anche utilizzati come controlli personalizzati, che utilizzano il thread per sostituire i numeri inseriti con i caratteri della password dopo 1 secondo (alcuni potrebbero dire che è possibile realizzarlo anche impostando lo stile del controllo EditText del sistema, ma devo dire che non è possibile, almeno non ha funzionato per me).

Ecco tutto il contenuto dell'esempio di interfaccia di sblocco numerica simile a iOS condiviso dall'autore, spero possa fornire una riferimento, e spero che tutti possano sostenere tutorial di urla.

Dichiarazione: il contenuto di questo articolo è stato tratto da Internet, il copyright è proprietà del rispettivo proprietario, il contenuto è stato contribuito volontariamente dagli utenti di Internet e caricato autonomamente, questo sito non possiede il diritto di proprietà, non è stato elaborato manualmente e non assume alcuna responsabilità legale pertinente. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare una e-mail a: notice#oldtoolbag.com (al momento dell'invio dell'e-mail, sostituisci # con @) per segnalare, fornendo prove pertinenti. Una volta verificata, questo sito eliminerà immediatamente il contenuto sospetto di violazione del copyright.

Ti potrebbe interessare