安卓 简单的登录界面 (密码可见 获取验证码)(新手笔记-4)

在做登录界面之前做了一个文本框四个角圆角化的操作吧,随便做了下,样式丑了一点,所以我首先写了一个shape_corner.xml:



    
    
    
    
    

这个数据有点丑,想要好看的自己修改参数吧。

然后对整个页面进行设计(我使用上面这个xml的方法就是把它放到每个layout的background了),login_activity.xml:




    

        
        
    

    

        

        
    

    

        
        
        

界面写的方式不知是否合理,如有更好的方式希望dalao们指出啦。

接下来就是LoginActivity的代码:

public class LoginActivity extends Activity implements OnClickListener{

    private EditText edit_username;
    private EditText edit_password;
    private EditText edit_identify;
    private ImageButton ibtn_look_password;
    private Button btn_indentify;
    private Button btn_login;

    private CountDownTimer countDownTimer;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.login_activity);

        edit_username = findViewById(R.id.edit_username);
        edit_password = findViewById(R.id.edit_password);
        edit_identify = findViewById(R.id.edit_identify);
        ibtn_look_password = findViewById(R.id.look_password);
        btn_indentify = findViewById(R.id.btn_identify);
        btn_login = findViewById(R.id.btn_login);

        ibtn_look_password.setOnClickListener(this);
        btn_indentify.setOnClickListener(this);
        btn_login.setOnClickListener(this);

        //这里使用了一个60秒倒数的计时器,总时间为60秒,每一秒进行一次onTick操作
        countDownTimer = new CountDownTimer(60000,1000) {
            @Override
            public void onTick(long millisUntilFinished) {
                //每过一秒改变一次验证码数值
                btn_indentify.setText( millisUntilFinished/1000 + "");
            }

            @Override
            public void onFinish() {
                //使验证码键变为可以点击,在计数时间内不可以点击。然后把按键改回为获取验证码。
                btn_indentify.setEnabled(true);
                btn_indentify.setText("获取验证码");
            }
        };

    }

    @Override
    public void onClick(View v) {
        //点击三个按钮分别进行不同的操作,我将其写在三个函数中。
        switch (v.getId()){
            case R.id.look_password:
                lookPassword();
                break;
            case R.id.btn_identify:
                sendIndentify();
                break;
            case R.id.btn_login:
                checkLogin();
                break;
        }
    }

    //这里通过使用一个flag来进行判断目前的密码框是可见还是不可见,然后通过这个flag来对editText进行操作
    private boolean flag = false;
    public void lookPassword() {
        if(flag){
            //不可见
            edit_password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
            //首先得到密码的字段,然后通过得到其长度将光标定位在最后一位
            // (因为点了按钮之后光标会移动到已输入密码的最前端)
            String password = edit_password.getText().toString();
            edit_password.setSelection(password.length());
            flag = ! flag;
        }else{
            //可见
            edit_password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
            String password = edit_password.getText().toString();
            edit_password.setSelection(password.length());
            flag = !flag;
        }
    }

    //发送验证码 具体实现功能没写,暂时不会
    public void sendIndentify() {
        //开始Timer工作,并且将按钮锁住,不能点击
        countDownTimer.start();
        btn_indentify.setEnabled(false);
        /*
            具体需要实现的方法
         */
    }

    //这里就是随便写写一些log 得到三个editText中的字符串
    public void checkLogin() {
        String username = edit_username.getText().toString();
        String password = edit_password.getText().toString();
        String identify = edit_identify.getText().toString();
        Log.v("LoginMessage", username);
        Log.v("LoginMessage", password);
        Log.v("LoginMessage", identify);
    }
}
这些东西简单的实现了一个登录界面前端的东西,至于后端数据什么的还没有学习那么深入,慢慢来吧。


你可能感兴趣的:(安卓)