Android 모 의 알 리 페 이,경 동의 비밀번호 키보드 와 입력 상자

일단 효과 도 를 볼 게 요.

레이아웃 코드
키 보드 는 0~9 의 숫자,삭제 키 와 완성 키 로 구성 되 어 있 으 며,수요 에 따라GridView어댑터 의getItemViewType방법 으로 정의 할 수 있다.버튼 을 눌 렀 을 때 배경 이 변색 되 는 효과 가 있 습 니 다.
암호 입력 상 자 는 6 개EditText로 구성 되 어 있 으 며,입력 상자 마다 하나의 숫자 를 입력 할 수 있 으 며,마지막 입력 상 자 를 감청 하여 암호 입력 이 끝 난 감청 을 완성 할 수 있 습 니 다.
키보드
키보드 의 주요 논리 처리,키보드 스타일,item클릭 이벤트

@Override
public int getViewTypeCount() {
  return 2;
}

@Override
public int getItemViewType(int position) {
  return (getItemId(position) == KEY_NINE) ? 2 : 1;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
  ViewHolder viewHolder = null;
  if (convertView == null) {
    if (getItemViewType(position) == 1) {
      //   
      convertView = LayoutInflater.from(context).inflate(R.layout.item_grid_keyboard, parent, false);
      viewHolder = new ViewHolder(convertView);
    } else {
      //   
      convertView = LayoutInflater.from(context).inflate(R.layout.item_grid_keyboard_delete, parent, false);
    }
  }

  if (getItemViewType(position) == 1) {
    viewHolder = (ViewHolder) convertView.getTag();
    viewHolder.tvKey.setText(key[position]);
  }

  return convertView;
}
3:비밀번호 입력 상자
암호 입력 상자 에서 처리 할 논 리 는 삭제,입력,입력 완료 리 셋 등 이 있 습 니 다.

/**
 *     ,  StringBuilder            
 * @param value
 */
public void add(String value) {
  if (mPassword != null && mPassword.length() < 6) {
    mPassword.append(value);//      StringBuilder ,        
    if (mPassword.length() == 1) {
      tvFirst.setText(value);
    } else if (mPassword.length() == 2) {
      tvSecond.setText(value);
    }else if (mPassword.length() == 3) {
      tvThird.setText(value);
    }else if (mPassword.length() == 4) {
      tvForth.setText(value);
    }else if (mPassword.length() == 5) {
      tvFifth.setText(value);
    }else if (mPassword.length() == 6) {
      tvSixth.setText(value);
    }
  }
}

/**
 *     ,  StringBuilder            
 */
public void remove() {
  if (mPassword != null && mPassword.length() > 0) {
    if (mPassword.length() == 1) {
      tvFirst.setText("");
    } else if (mPassword.length() == 2) {
      tvSecond.setText("");
    }else if (mPassword.length() == 3) {
      tvThird.setText("");
    }else if (mPassword.length() == 4) {
      tvForth.setText("");
    }else if (mPassword.length() == 5) {
      tvFifth.setText("");
    }else if (mPassword.length() == 6) {
      tvSixth.setText("");
    }
    mPassword.deleteCharAt(mPassword.length() - 1);
  }
}
전체 비밀번호 가 져 오기

/**
 *       
 * @return 
 */
public String getText() {
  return (mPassword == null) ? null : mPassword.toString();
}
실제 응용
레이아웃,키 보드 를 분리 해서 입력 할 때 창 아래 에서 미끄러져 들 어 갈 수도 있 습 니 다.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

  <com.github.phoenix.widget.PayEditText
    android:id="@+id/PayEditText_pay"
    android:layout_width="match_parent"
    android:layout_marginTop="20dp"
    android:paddingLeft="12dp"
    android:layout_alignParentTop="true"
    android:paddingRight="12dp"
    android:layout_height="48dp"/>

  <com.github.phoenix.widget.Keyboard
    android:id="@+id/KeyboardView_pay"
    android:layout_alignParentBottom="true"
    android:layout_width="match_parent"
    android:layout_height="300dp"/>

</RelativeLayout>
코드 중

// 
private static final String[] KEY = new String[] {
      "1", "2", "3",
      "4", "5", "6",
      "7", "8", "9",
      "<<", "0", "  "
  };
//    
keyboard.setKeyboardKeys(KEY);
//        
keyboard.setOnClickKeyboardListener(new Keyboard.OnClickKeyboardListener() {
  @Override
  public void onKeyClick(int position, String value) {
    if (position < 11 && position != 9) {
      payEditText.add(value);
    } else if (position == 9) {
      payEditText.remove();
    }else if (position == 11) {
      //            ,     payEditText.getText()    ,       OnInputFinishedListener  
      Toast.makeText(getApplication(), "     :" + payEditText.getText(), Toast.LENGTH_SHORT).show();
      finish();
    }
  }
});

//           
payEditText.setOnInputFinishedListener(new PayEditText.OnInputFinishedListener() {
  @Override
  public void onInputFinished(String password) {
    Toast.makeText(getApplication(), "     :" + password, Toast.LENGTH_SHORT).show();
 }
});
총결산
자,이상 이 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 안 드 로 이 드 개발 자 여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 댓 글 을 남 겨 주 십시오.

좋은 웹페이지 즐겨찾기