【Android】登录注册功能具体实现和一些小总结

今天上完Android课,觉得还挺好玩的,虽然看起来都是一些很简单的功能,但是实现起来起来却有很多需要注意的细节。

总结一下

视图方面
1.有些时候非常适合用线性布局,比如注册界面这种规规矩矩的界面。使用线性布局时,一定要记得将线性布局的layout_height属性改为wrap_content,不然可能会有内容不显示出来。
2.要好好利用好layout_weight属性,设置好控件的占比,可以很好的适应不同的手机。
但是在用这个属性之前,要将控件的layout_width设置为0dp才能起作用。
3.复选框Spinner,需要使用它的属性prompt和entries控制它的复选框选项,在res–>value–>string.xml文件中设置string-array。
4.CheckBox使用Tablelayout布局。

控制方面
1.今天最最最头秃的一个问题,按照顺序检验怎么实现,想过用操作系统的权限控制(rwx=7)的方式,本来还以为可以活学活用,结果还是没实现(QAQ),具体方法如下
设置一个index,在每一个校验if语句中设置一个index’(index1,index2等等,有多少个if语句就设置多少个,很巧的是我这里就是三个检验,所以我想到了操作系统权限控制的方式,哈哈哈哈哈),设置一个while循环
int index=0;//初始
while(!(index==7)){
int index1=0;
int index2=0;
int index3=0;
if 1; index1=1;
if 2; index2=2;
if 3; index3=4;
index=index1+index2+index3;//如果三个检验都成立就可以退出循环

但是这个方法一点app就崩溃。(请大佬指教)

最后查了一下还是顺序检验 if else if else if …这种方法比较可行。
2.dialog.dismiss()方法是让弹窗消失,但是不结束当前活动。结束当前活动需要使用finish()方法。
3.对于有多个Checkbox的情况,可以使用List泛型存放,方便之后对checkbox的操作。
具体如下:

    CheckBox cb1;
    @InjectView(R.id.cb2)
    CheckBox cb2;
    @InjectView(R.id.cb3)
    CheckBox cb3;
    @InjectView(R.id.cb4)
    CheckBox cb4;
    @InjectView(R.id.cb5)
    CheckBox cb5;
    @InjectView(R.id.cb6)
    CheckBox cb6;
    List<CheckBox> cb=new ArrayList<CheckBox>();//先创建一个全局的存放CheckBox类型数据的cb变量
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_regiser2);
        ButterKnife.inject(this);
        cb=Arrays.asList(cb1,cb2,cb3,cb4,cb5,cb6);//asList()方法将CheckBox对象构件成一个列表。十分好用。
    }

1.初始界面

在这里插入图片描述

2.验证用户名
在这里插入图片描述

3.验证密码

(空密码)
在这里插入图片描述

(少于8位数的密码)
在这里插入图片描述

验证确认密码

确认密码为空
在这里插入图片描述

确认密码与密码位数不一样
在这里插入图片描述

4.复选框功能
在这里插入图片描述
6.返回主页面功能,显示注册成功
在这里插入图片描述
核心源码

@OnClick({R.id.regBtn, R.id.reSetBtn})
    public void onViewClicked(View view) {

        switch (view.getId()) {
            case R.id.regBtn:
                String str = "";
                str = str + "用户名:" + userNameEt.getText() + "\n";
                str = str + "密码:" + passWordEt.getText() + "\n";
                if (userNameEt.length() < 6 || userNameEt.length() > 12) {
                    Toast.makeText(this, "(ಥ﹏ಥ)您输入的用户名不合格", Toast.LENGTH_SHORT).show();

                } else if (passWordEt == null || passWordEt.length() < 8 || passWordEt.length() > 12) {
                    Toast.makeText(this, "(ಥ﹏ಥ)您输入的密码不合格", Toast.LENGTH_SHORT).show();

                } else if (!passWordEt.getText().toString().trim().equals(rePassWordEt.getText().toString().trim())) {
                    Toast.makeText(this, "(ಥ﹏ಥ)您输入的密码不一致", Toast.LENGTH_SHORT).show();

                } else {
                    if (maleRb.isChecked()) {
                        str = str + "性别:" + maleRb.getText() + "\n";
                    } else {
                        str = str + "性别:" + femaleRb.getText() + "\n";
                    }
                    str = str + "职业:" + jobSp.getSelectedItem() + "\n";
                    str = str + "兴趣:";
                    for (int i = 0; i < cb.size(); i++) {
                        if (cb.get(i).isChecked()) {
                            str = str + cb.get(i).getText() + " ";
                        }
                    }
                    AlertDialog.Builder dialog = new AlertDialog.Builder(this);
                    dialog.setTitle("您的注册信息").setMessage(str).setPositiveButton("确定", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {

                            Intent intent = new Intent();
                            intent.putExtra("uname", userNameEt.getText().toString());
                            intent.putExtra("upassword", passWordEt.getText().toString());
                            setResult(RESULT_OK, intent);
                            dialog.dismiss();
                            finish();
                            Toast.makeText(RegiserActivity2.this,userNameEt.getText()+"---(*^▽^*)--->注册成功", Toast.LENGTH_LONG).show();

                        }
                    }).setNegativeButton("取消", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                        }
                    }).show();

                }
                break;

越来越有APP内味了,加油加油,争取早日做个自己的APP出来!哈哈哈哈哈啊哈!和大家共勉!

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值