今天上完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出来!哈哈哈哈哈啊哈!和大家共勉!