パスワードを忘れてパスワードをリセットしてまとめを実現
6974 ワード
1.まず、インタフェースを明確にし、パスワードを取り戻すプロセスと様々な使用例を確定する必要がある.
2.DigitsKeyListenerはjavaコードによってTextViewに対してKeyListener KeyListenerを設定するインタフェースであり、キーボードキーを入力する傍受InputFilterを提供するインタフェースであり、文字のフィルタandroidを提供することはKeyListenerとInputFilterを実現したNumberKeyListenerを提供し、DigitsKeyListenerはNumberKeyListenerを継承する
より自由度の高いフィルタカスタマイズを実現するには、自分でKeyListener(BaseKeyListenerを継承)を書いてInputFilterを実現し、filter()関数を書き換え、filter()関数で自由なフィルタリングを実現することができます.
3.EditText入力ボックスの変化を傍受し、TextWatcherインタフェースを実現し、書き換えは三つの方法で関連傍受と操作を行うことができる.
4.メール認証コードボタン60 sのカウントダウンを取得する:
法1:TextViewプラスCountDownTimerで実現
法2:Buttonと継承CountDownTimerにより実現
本質的にはすべてCountDownTimerに基づいて実現され、その関連方法を書き換える実現される.
5.json解析については、キャプチャする異常の中でいくつかの操作を行うことができ、対応するラベルがない場合に異常を投げる.
2.DigitsKeyListenerはjavaコードによってTextViewに対してKeyListener KeyListenerを設定するインタフェースであり、キーボードキーを入力する傍受InputFilterを提供するインタフェースであり、文字のフィルタandroidを提供することはKeyListenerとInputFilterを実現したNumberKeyListenerを提供し、DigitsKeyListenerはNumberKeyListenerを継承する
より自由度の高いフィルタカスタマイズを実現するには、自分でKeyListener(BaseKeyListenerを継承)を書いてInputFilterを実現し、filter()関数を書き換え、filter()関数で自由なフィルタリングを実現することができます.
TextView tv = new TextView(context);
//
KeyListener l = new DigitsKeyListener(fasle,false);
//
KeyListener l = new DigitsKeyListener(true,false);
// ,
KeyListener l = new DigitsKeyListener(false,true);
// /
KeyListener l = new DigitsKeyListener(true,true);
tv.setKeyListener(l);
3.EditText入力ボックスの変化を傍受し、TextWatcherインタフェースを実現し、書き換えは三つの方法で関連傍受と操作を行うことができる.
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
code=edtCode.getText().toString().trim();
if(code.length()==6){
btnNext.setBackgroundResource(R.drawable.btnselector);
}else{
btnNext.setBackgroundResource(R.drawable.sso_login_transparent);
}
}
4.メール認証コードボタン60 sのカウントダウンを取得する:
法1:TextViewプラスCountDownTimerで実現
// 60s
CountDownTimer timer = new CountDownTimer(60 * 1000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
SpannableStringBuilder builder = new SpannableStringBuilder("" + millisUntilFinished / 1000 + "s ");
builder.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.greenBg)), 0, builder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.edittext_hint_color)), builder.length() - 4, builder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tvGetCode.setText(builder);
}
@Override
public void onFinish() {
tvGetCode.setEnabled(true);
tvGetCode.setText(R.string.regUsrtips_get_phone_code);
}
};
法2:Buttonと継承CountDownTimerにより実現
public class TimerCount extends CountDownTimer {
private Button bnt;
public TimerCount(long millisInFuture, long countDownInterval, Button bnt) {
super(millisInFuture, countDownInterval);
this.bnt = bnt;
}
public TimerCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
// TODO Auto-generated constructor stub
}
@Override
public void onFinish() {
// TODO Auto-generated method stub
bnt.setClickable(true);
bnt.setText(" ");
}
@Override
public void onTick(long arg0) {
// TODO Auto-generated method stub
bnt.setClickable(false);
bnt.setText(arg0 / 1000 + " ");
}
}
本質的にはすべてCountDownTimerに基づいて実現され、その関連方法を書き換える実現される.
5.json解析については、キャプチャする異常の中でいくつかの操作を行うことができ、対応するラベルがない場合に異常を投げる.