Android 사용자 정의 View 를 통 해 랜 덤 인증 코드 구현

많은 안 드 로 이 드 입문 프로그램 원숭이 들 에 게 안 드 로 이 드 사용자 정의 View 는 비교적 두 려 울 수 있 지만 이것 은 고수 가 진급 하 는 데 필수 적 인 길이 다.모든 준 비 는 사용자 정의 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 를 통 해 랜 덤 인증 코드 를 실현 하 는 것 에 관 한 지식 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다!

좋은 웹페이지 즐겨찾기