今天上完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(.cb2)
    CheckBox cb2;
    @InjectView(.cb3)
    CheckBox cb3;
    @InjectView(.cb4)
    CheckBox cb4;
    @InjectView(.cb5)
    CheckBox cb5;
    @InjectView(.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.初始界面

Android用户登录封装 android 实现登录和注册功能_复选框

2.验证用户名

Android用户登录封装 android 实现登录和注册功能_ide_02

3.验证密码

(空密码)

Android用户登录封装 android 实现登录和注册功能_ide_03

(少于8位数的密码)

Android用户登录封装 android 实现登录和注册功能_android_04

验证确认密码

确认密码为空

Android用户登录封装 android 实现登录和注册功能_android_05

确认密码与密码位数不一样

Android用户登录封装 android 实现登录和注册功能_ide_06

4.复选框功能

Android用户登录封装 android 实现登录和注册功能_复选框_07

5.弹窗确认消息功能

Android用户登录封装 android 实现登录和注册功能_android_08

6.返回主页面功能,显示注册成功

Android用户登录封装 android 实现登录和注册功能_android_09


核心源码

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

        switch (view.getId()) {
            case .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出来!哈哈哈哈哈啊哈!和大家共勉!