Android注册布局设计

本文仅供参考,老师问问题翻车概不负责

作业的要求是设计一个简易的注册界面,然后实现一些乱起八糟的功能神马的...

如下图:

image.png

那就首先根据该要求写一个布局页面:



    
    

    

        

        

    

    

        

        

    

    

        

        

    

    

        

        

            

            
        

    

    

        

        

        

        

    

    

        

        

        

    

    

        

        

        

    

    

(由于编译器不同,使用Android Studio写布局文件会如下图所示)


image.png

然后便是JAVA代码:

public class MainActivity extends AppCompatActivity {

    private EditText username;
    private EditText password;
    private EditText ensurePass;
    RadioGroup Sex;
    RadioButton male;
    RadioButton female;
    CheckBox music;
    CheckBox sport;
    CheckBox read;
    Spinner college;
    Spinner department;
    Button button;
    String sex;
    String hobby;
    private List checkBoxList = new ArrayList();
    private String[] collegeName = {"计算机学院","外国语学院","机械学院"};
    private int[] depatrmentName = {R.array.computer,R.array.language,R.array.machine};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();

        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                StringBuffer stringBuffer = new StringBuffer();
                String name = username.getText().toString();
                String pass = password.getText().toString();
                String surePass = ensurePass.getText().toString();
                Log.e("Wugui",pass+surePass);
                for (CheckBox checkbox : checkBoxList) {
                    if (checkbox.isChecked()){
                        stringBuffer.append(checkbox.getText().toString() + " ");
                    }
                }

                if (TextUtils.isEmpty(name) || TextUtils.isEmpty(pass) || TextUtils.isEmpty(surePass)){
                    AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
                    dialog.setTitle("错误");
                    dialog.setMessage("请输入正确的信息");
                    dialog.setPositiveButton("确定",null);
                    dialog.show();
                } else if (stringBuffer != null && "".equals(stringBuffer.toString())){
                    AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
                    dialog.setTitle("错误");
                    dialog.setMessage("请选择至少一个爱好");
                    dialog.setPositiveButton("确定",null);
                    dialog.show();
                }
                else {
                    hobby = stringBuffer.toString();
                    showDialog();
                }
            }
        });

        Sex.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {
                if (checkedId == male.getId()){
                    sex = male.getText().toString();
                } else {
                    sex = female.getText().toString();
                }
            }
        });
    }

    private void showDialog(){
        AlertDialog.Builder dialog = new AlertDialog.Builder(this);
        dialog.setTitle("您的注册信息");
        dialog.setMessage("姓名="+username.getText().toString()+
                "\n" +"密码="+password.getText().toString()+
                "\n"+"性别="+sex+
                "\n"+"爱好="+hobby+
                "\n"+"学院="+college.getSelectedItem().toString()+
                "\n"+"系部="+department.getSelectedItem().toString());
        dialog.setPositiveButton("确定",null);
        dialog.show();
    }

    private void initView(){
        username = (EditText) findViewById(R.id.userName);
        password = (EditText) findViewById(R.id.password);
        ensurePass = (EditText) findViewById(R.id.surePass);
        Sex = (RadioGroup) findViewById(R.id.sex);
        male = (RadioButton) findViewById(R.id.male);
        female = (RadioButton) findViewById(R.id.female);

        music = (CheckBox) findViewById(R.id.music);
        sport = (CheckBox) findViewById(R.id.sport);
        read = (CheckBox) findViewById(R.id.read);
        checkBoxList.add(music);
        checkBoxList.add(sport);
        checkBoxList.add(read);

        college = (Spinner) findViewById(R.id.college);
        department = (Spinner) findViewById(R.id.department);

        ArrayAdapter college_adapter = new ArrayAdapter(this,
                android.R.layout.simple_spinner_dropdown_item,collegeName);
        college.setAdapter(college_adapter);
        college.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView parent, View view, int position, long id) {
                ArrayAdapter city_adapter = ArrayAdapter.createFromResource(
                        MainActivity.this,depatrmentName[position],android.R.layout.simple_spinner_dropdown_item);
                department.setAdapter(city_adapter);
            }

            @Override
            public void onNothingSelected(AdapterView parent) {

            }
        });
    }
}

提示:由于要实现在选择学院时,系部能自动进行联动,因此还需要在values下的strings文件夹里编写如下代码:

    
        计算机科学与技术
        软件工程
        物联网
    

    
        日语
        英语
        朝鲜语
    

    
        汽车
        自动化
        德语
    

作业的主要目的就是使用Spinner来进行系部的联动以及对CheckBox进行遍历取值,下面列出这两个部分的CheckBox部分重要代码:
先初始化一个CheckBox的List,如下:

private List checkBoxList = new ArrayList();

然后遍历CheckBoxList:

                for (CheckBox checkbox : checkBoxList) {
                    if (checkbox.isChecked()){
                        stringBuffer.append(checkbox.getText().toString() + " ");
                    }
                }

由于List中主要存储了音乐、运动、阅读这三个选项;因此先在onCreate方法内将这三个CheckBox与布局内的控件进行绑定,之后再将这三个CheckBox添加到CheckBoxList中:

        music = (CheckBox) findViewById(R.id.music);
        sport = (CheckBox) findViewById(R.id.sport);
        read = (CheckBox) findViewById(R.id.read);
        checkBoxList.add(music);
        checkBoxList.add(sport);
        checkBoxList.add(read);

然后针对用户没有选择爱好就注册时编写弹出提示框的事件:

                if (stringBuffer != null && "".equals(stringBuffer.toString())){
                    AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
                    dialog.setTitle("错误");
                    dialog.setMessage("请选择至少一个爱好");
                    dialog.setPositiveButton("确定",null);
                    dialog.show();
                }
image.png

(可以看上面发的全代码看看stringBuffer 是怎么来的);

然后是系部联动部分的代码(在MainActivity的initView方法中可以看到):

        college = (Spinner) findViewById(R.id.college);
        department = (Spinner) findViewById(R.id.department);

        ArrayAdapter college_adapter = new ArrayAdapter(this,
                android.R.layout.simple_spinner_dropdown_item,collegeName);
        college.setAdapter(college_adapter);
        college.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView parent, View view, int position, long id) {
                ArrayAdapter city_adapter = ArrayAdapter.createFromResource(
                        MainActivity.this,depatrmentName[position],android.R.layout.simple_spinner_dropdown_item);
                department.setAdapter(city_adapter);
            }

            @Override
            public void onNothingSelected(AdapterView parent) {

            }
        });

其中第一个college_adapter主要将collegeName数组中的几个学院的名字放入Spinner控件中,实现了点击Spinner控件下拉展开内容可以显示几个学院;

而college这个Spinner的点击事件则根据点击到的学院名来在系部Spinner中显示对应的系部名;在city_adapter中,使用departmentName[position]来实现了根据选择的学院名展示相应的系部名这一方法。

(Tip:与数组一样,选择Spinner控件的第一个子选项时,position的值为0。)

最后就是一个单击注册之后显示注册信息的提示框咯:

我们先写一个showDialog的方法:

private void showDialog(){
        AlertDialog.Builder dialog = new AlertDialog.Builder(this);
        dialog.setTitle("您的注册信息");
        dialog.setMessage("姓名="+username.getText().toString()+
                "\n" +"密码="+password.getText().toString()+
                "\n"+"性别="+sex+
                "\n"+"爱好="+hobby+
                "\n"+"学院="+college.getSelectedItem().toString()+
                "\n"+"系部="+department.getSelectedItem().toString());
        dialog.setPositiveButton("确定",null);
        dialog.show();
}

然后,在注册button点击事件中进行逻辑判断,当注册信息无误是即可显示该Dialog:

button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                StringBuffer stringBuffer = new StringBuffer();
                String name = username.getText().toString();
                String pass = password.getText().toString();
                String surePass = ensurePass.getText().toString();
                for (CheckBox checkbox : checkBoxList) {
                    if (checkbox.isChecked()){
                        stringBuffer.append(checkbox.getText().toString() + " ");
                    }
                }

                if (TextUtils.isEmpty(name) || TextUtils.isEmpty(pass) || TextUtils.isEmpty(surePass)){
                    AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
                    dialog.setTitle("错误");
                    dialog.setMessage("请输入正确的信息");
                    dialog.setPositiveButton("确定",null);
                    dialog.show();
                } else if (stringBuffer != null && "".equals(stringBuffer.toString())){
                    AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
                    dialog.setTitle("错误");
                    dialog.setMessage("请选择至少一个爱好");
                    dialog.setPositiveButton("确定",null);
                    dialog.show();
                }
                  else {
                    hobby = stringBuffer.toString();
                    showDialog();
                }
            }
        });

至此,一个简单的注册页面以及简单的判断就完成了(建议修改提供的XML源码,将password的EditText的inputType修改为password)。

你可能感兴趣的:(Android注册布局设计)