Android 사용자 정의 View 를 통 해 랜 덤 인증 코드 구현
문제 설명
웹 개발 에 익숙 한 어린이 신발 들 은 악의 적 인 해독,악의 적 인 제출,개표 등 을 막 기 위해 폼 데 이 터 를 제출 할 때 무 작위 인증 코드 기능 을 사용 한 다 는 것 을 잘 알 고 있 습 니 다.안 드 로 이 드 응용 프로그램 에서 도 이 기능 이 필요 합 니 다.어떻게 실현 해 야 합 니까?다음은 무 작위 인증 코드 View 컨트롤 을 사용자 정의 하여 이 수 요 를 실현 하고 유 니 버 설 성 을 가 집 니 다.필요 할 때 인터페이스 에 이 View 구성 요 소 를 직접 추가 하면 됩 니 다.
사례 소개
사례 실행 효과
사례 관련 구성 요소
1.CheckView 사용자 정의 인증 코드 컨트롤,주로 onDraw 방법 으로 그래 픽 그리 기
2.Config:인증 코드 컨트롤 매개 변수 에 대한 설정 입 니 다.예 를 들 어 포인트,밑줄,배경 색 설정 등 입 니 다.
3.CheckUtil:인증 코드 관련 도구 류,예 를 들 어 랜 덤 점 좌표,랜 덤 라인 시작 과 끝 점 좌표,인증 코드 검사 등 기능 을 실현 합 니 다.
4.MainActivity:테스트 응용
기능 실현
1.Config 구성 요소 작성
/**
* :
* */
public class Config {
//
public static final int PTEDE_TIME = 1200;
//
public static final int POINT_NUM = 100;
//
public static final int LINE_NUM = 2;
//
public static final int COLOR=Color.BLUE;
//
public static int TEXT_LENGTH=4;
//
public static int TEXT_SIZE=30;
}
2、CheckUtil
/**
* :
* */
public class CheckUtil
{
/**
*
* @return
*/
public static int [] getCheckNum(){
int [] tempCheckNum = new int[Config.TEXT_LENGTH];
for(int i = 0; i < Config.TEXT_LENGTH; i++){
tempCheckNum[i] = (int) (Math.random() * 10);
}
return tempCheckNum;
}
/**
*
* @param height CheckView
* @param width CheckView
* @return
*/
public static int[] getLine(int height, int width){
int [] tempCheckNum = {0,0,0,0};
for(int i = 0; i < 4; i+=2){
tempCheckNum[i] = (int) (Math.random() * width);
tempCheckNum[i + 1] = (int) (Math.random() * height);
}
return tempCheckNum;
}
/**
*
* @param height CheckView
* @param width CheckView
* @return
*/
public static int[] getPoint(int height, int width){
int [] tempCheckNum = {0,0,0,0};
tempCheckNum[0] = (int) (Math.random() * width);
tempCheckNum[1] = (int) (Math.random() * height);
return tempCheckNum;
}
/**
*
* @param userCheck
* @param checkNum
* @return
*/
public static boolean checkNum(String userCheck, int[] checkNum){
if(userCheck.length() != 4 ){
return false;
}
String checkString = "";
for (int i = 0; i < 4; i++) {
checkString += checkNum[i];
}
if(userCheck.equals(checkString)){
return true;
}
else {
return false;
}
}
/**
* y
* @param height CheckView
* @return
*/
public static int getPositon(int height){
int tempPositoin = (int) (Math.random() * height);
if(tempPositoin < 20){
tempPositoin += 20;
}
return tempPositoin;
}
}
3.사용자 정의 인증 코드 컨트롤 CheckView
public class CheckView extends View{
Context mContext;
int [] CheckNum = null;
Paint mTempPaint = new Paint();
//
public CheckView(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
mTempPaint.setAntiAlias(true);
mTempPaint.setTextSize(Config.TEXT_SIZE);
mTempPaint.setStrokeWidth(3);
}
public void onDraw(Canvas canvas){
canvas.drawColor(Config.COLOR);
final int height = getHeight();// CheckView
final int width = getWidth();// CheckView
int dx = 40;
for(int i = 0; i < 4; i ++){//
canvas.drawText("" + CheckNum[i], dx, CheckUtil.getPositon(height), mTempPaint);
dx += width/ 5;
}
int [] line;
for(int i = 0; i < Config.LINE_NUM; i ++){//
line = CheckUtil.getLine(height, width);
canvas.drawLine(line[0], line[1], line[2], line[3], mTempPaint);
}
//
int [] point;
for(int i = 0; i < Config.POINT_NUM; i ++) {//
point=CheckUtil.getPoint(height, width);
canvas.drawCircle(point[0], point[1], 1, mTempPaint);
}
}
public void setCheckNum(int [] chenckNum) {//
CheckNum = chenckNum;
}
public int[] getCheckNum() {//
return CheckNum;
}
public void invaliChenkNum() {
invalidate();
}
}
4.MainActivity 테스트 코드 작성
public class MainActivity extends Activity implements View.OnClickListener{
private CheckAction mCheckView ;
private TextView mShowPassViwe;
private EditText mEditPass;
private Button mSubmit;
private Button mRef;
// :
private int [] checkNum =null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initView();
initCheckNum();
}
public void initView(){
mCheckView = (CheckView) findViewById(R.id.checkView);
mShowPassViwe = (TextView) findViewById(R.id.checkpass);
mEditPass = (EditText) findViewById(R.id.checkTest);
mSubmit = (Button) findViewById(R.id.submit);
mRef = (Button) findViewById(R.id.ref);
mSubmit.setOnClickListener(this);
mRef.setOnClickListener(this);
}
//
public void initCheckNum(){
checkNum = CheckUtil.getCheckNum();
mCheckView.setCheckNum(checkNum);
mCheckView.invaliChenkNum();
}
public void onClick(View v) {
switch (v.getId()){
case R.id.submit:
String userInput = mEditPass.getText().toString();
if(CheckUtil.checkNum(userInput, checkNum)){
setPassString(" ");
Toast.makeText(this, " ", 1200).show();
}else{
setPassString(" ");
Toast.makeText(this, " ", 1200).show();
}
break;
case R.id.ref:
initCheckNum();
break;
default:
break;
}
}
public void setPassString(String passString) {
mShowPassViwe.setText(passString);
}
}
위 에서 말 한 것 은 안 드 로 이 드 가 사용자 정의 View 를 통 해 랜 덤 인증 코드 를 실현 하 는 것 에 관 한 지식 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.