パスワードを忘れてパスワードをリセットしてまとめを実現

6974 ワード

1.まず、インタフェースを明確にし、パスワードを取り戻すプロセスと様々な使用例を確定する必要がある.
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解析については、キャプチャする異常の中でいくつかの操作を行うことができ、対応するラベルがない場合に異常を投げる.