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

android에서 ios 디지털 비밀번호 해제 인터페이스의 예제

이와 같이 보입니다:

모든 Android 개발자는 알고 있듯이, 현재 Android의 가장 일반적인 해금 방법은 나인성 격자 해금이며, iOS의 해금 방법은 일반적인 숫자 비밀번호 해금입니다. 우리가 개발 프로젝트에서 많은 경우에 Android와 iOS를 결합해야 합니다. 때로는 우리가 해금 인터페이스를 iOS와 같은 숫자 키보드로 만들어야 합니다.

여기서는 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);
 // 그립니다2행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);
 // 그립니다3행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.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){//새로 고침 누르기
 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){//첫 번째 열
 //터치된 위치의 원심横坐标를 가져오기
 circle_x = xs[0];
 //터치된 행을 결정하기
 if(ys[0] - 50 <= y && ys[0] + 50 >= y){//第1행
 //터치된 숫자 원의 원심纵坐标를 가져오기
 circle_y = ys[0];
 number = 1;//터치된 숫자 설정
 }1]; - 50 <= y && ys[1]; + 50 >= y){//第2행
 //터치된 숫자 원의 원심纵坐标를 가져오기
 circle_y = ys[1];
 number = 4;//터치된 숫자 설정
 }2]; - 50 <= y && ys[2]; + 50 >= y){//第3행
 //터치된 숫자 원의 원심纵坐标를 가져오기
 circle_y = ys[2];
 number = 7;//터치된 숫자 설정
 }
 }1]; - 50 <= x && x <= xs[1]; + 50){//第2열
 //터치된 위치의 원심横坐标를 가져오기
 circle_x = xs[1];
 //터치된 행을 결정하기
 if(ys[0] - 50 <= y && ys[0] + 50 >= y){//第1행
 //터치된 숫자 원의 원심纵坐标를 가져오기
 circle_y = ys[0];
 number = 2;//터치된 숫자 설정
 }1]; - 50 <= y && ys[1]; + 50 >= y){//第2행
 //터치된 숫자 원의 원심纵坐标를 가져오기
 circle_y = ys[1];
 number = 5;//터치된 숫자 설정
 }2]; - 50 <= y && ys[2]; + 50 >= y){//第3행
 //터치된 숫자 원의 원심纵坐标를 가져오기
 circle_y = ys[2];
 number = 8;//터치된 숫자 설정
 }3]; - 50 <= y && ys[3]; + 50 >= y){//第4행
 //터치된 숫자 원의 원심纵坐标를 가져오기
 circle_y = ys[3];
 number = 0;//터치된 숫자 설정
 }
 }2]; - 50 <= x && x <= xs[2]; + 50){//第3열
 //터치된 위치의 원심横坐标를 가져오기
 circle_x = xs[2];
 //터치된 행을 결정하기
 if(ys[0] - 50 <= y && ys[0] + 50 >= y){//第1행
 //터치된 숫자 원의 원심纵坐标를 가져오기
 circle_y = ys[0];
 number = 3;//터치된 숫자 설정
 }1]; - 50 <= y && ys[1]; + 50 >= y){//第2행
 //터치된 숫자 원의 원심纵坐标를 가져오기
 circle_y = ys[1];
 number = 6;//터치된 숫자 설정
 }2]; - 50 <= y && ys[2]; + 50 >= y){//第3행
 //터치된 숫자 원의 원심纵坐标를 가져오기
 circle_y = ys[2];
 number = 9;//터치된 숫자 설정
 }
 }
 sendAccessEvent(R.string.numeric_keyboard_down);
 type = 0;//새로 고침 누르기
 //터치시 배경 원 그리기
 invalidate();
}

그래서, 제 것은 이렇게 되었습니다. 또한, 저의 것은4패스워드를 표시하는 컨트롤도 사용자 정의 컨트롤 방식으로 사용되며, 입력된 숫자 후에 스레드를 사용하여1초간에 패스워드 문자로 입력된 숫자를 대체합니다. (시스템의 EditText 컨트롤 스타일을 패스워드로 설정하여 이를 통해 구현할 수 있다고 말할 사람이 있을 수 있지만, 저는 이를 할 수 없다는 것을 알고 있습니다)

이상의 android 모의 ios 디지털 패스워드 잠금 화면 예제는 편집자가 모두 공유한 내용입니다. 모두에게 참고가 되기를 바라며, 많은 지지를 부탁드립니다. 노아웃 튜토리얼.

언급: 본문 내용은 인터넷에서 가져왔으며, 원작자에게 속합니다. 인터넷 사용자가 자발적으로 기여하고 업로드한 내용이며, 웹사이트는 소유권을 가지지 않으며, 인공적으로 편집되지 않았으며, 관련 법적 책임을 지지 않습니다.涉嫌저작권 내용이 있을 경우, 이메일을 보내 주시기 바랍니다: notice#oldtoolbag.com(이메일 보내는 때는 #을 @으로 바꿔서 신고해 주시고, 관련 증거를 제공해 주시면, 확인된 후, 사이트는 즉시 침해될 수 있는 내용을 제거합니다。)

추천 합니다