Android 第四天

EditText文本输入框

基本属性


监听键盘事件的集中方式
// 1. 当前这个Activity来监听事件
et.setOnEditorActionListener(this);

// 实现接口
public class MainActivity extends AppCompatActivity implements TextView.OnEditorActionListener {                 
  // 键盘被按下的回调事件
    @Override
    public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
        System.out.println("点击了");
        return false;
    }
}

// 2.创建一个类 管理事件的回调

class aaListener implements TextView.OnEditorActionListener{

    @Override
    public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
        System.out.println("点击了");
        return false;
    }
}
// 创建对象
 aaListener pl = new aaListener();
        et.setOnEditorActionListener(pl);
        // 匿名对象
        et.setOnEditorActionListener(new aaListener());

// 3.创建匿名类对象

        et.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
                et.getText();
                return false;
            }
        });

// 4.Lambda表达式

        et.setOnEditorActionListener((TextView textView, int i, KeyEvent keyEvent) ->{
                    System.out.println("点击了");
                    return true;
                }
              );

// 监听EditText文本内容改变的事件

        et.addTextChangedListener(new 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) {

                // 获取目前输入的个数
                int len = charSequence.toString().length();
                if (len > 6){
                    // 将最后一个删除掉
                    // 只要前面6个
                    et.setText(charSequence.subSequence(0,6));

                    // 让光标定位到最后
                    et.setSelection(6);
                }
            }

            @Override
            public void afterTextChanged(Editable editable) {

            }
        });
    }

PIN解锁demo

  • xml搭建界面


    

    

    

  • 设置键盘一直显示
    QQ图片20190907221303.png
  • 密码解锁代码


import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.MotionEvent;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
private TextView mTextView;
private EditText mEditText;
private String password;
private String firstInput;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

//获取xml的控件
        mTextView = findViewById(R.id.tv_alert);
        mEditText = findViewById(R.id.et_password);

        //获取保存的密码
        //获取管理资源对象Resources
        Resources res = getResources();
        //通过这个对象获取string.xml里面对应的字符串
        String fileName = res.getString(R.string.password_file_name);
        //获取共享的sp对象:1.文件不存在就创建 2.文件存在就打开
        final SharedPreferences sp = getSharedPreferences(fileName, MODE_PRIVATE);
        //通过key获取对应的value
        password = sp.getString("yx",null);

        //显示提示文本
        if (password == null){
            mTextView.setText("请设置密码");
        }else{
            mTextView.setText("请输入密码");
        }

        //监听内容改变的事件
        mEditText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                //获取文本内容
                String inputPassword = s.toString();

                //判断是不是6个
                if (inputPassword.length() == 6){
                    //判断是不是设置密码
                    if (password == null){
                        //设置密码
                        if (firstInput == null){
                            //设置密码的第一次输入
                            firstInput = inputPassword;

                            //提示确认密码
                            mTextView.setText("请确认密码");

                            //清空内容
                            mEditText.setText("");
                        }else{
                            //确认密码
                            if (firstInput.equals(inputPassword)){
                                //两次密码一致
                                mTextView.setText("设置密码成功!");

                                goToNext();
                                //保存密码
                                SharedPreferences.Editor edit = sp.edit();
                                edit.putString("yx",firstInput);
                                edit.commit();
                            }else{
                                //密码不正确
                                mTextView.setText("两次密码不一致 请重新设置");
                                firstInput = null;
                                mEditText.setText("");
                            }
                        }
                    } else{
                        //密码设置过了
                        if(inputPassword.equals(password)){
                            //密码正确
                            mTextView.setText("密码正确!");
                            goToNext();
                        }else{
                            //不正确
                            mTextView.setText("密码错误请重新输入");
                            //清空
                            mEditText.setText("");
                        }
                    }
                }
            }
        });
    }
  • 实现界面跳转

    1.先创建一个界面
    QQ图片20190907221652.png

    2.代码实现跳转
    QQ图片20190907221727.png

    3.点击屏幕实现返回
    QQ图片20190907221810.png

你可能感兴趣的:(Android 第四天)