Android studio 完善登录注册页面
方案设计
实验步骤
- 注册界面要求包含用户名、密码、重复密码、性别(单选按钮)、学历(spinner)、爱好(复选框)等信息;在布局文件中完成设计。
- 在注册界面的java文件中,在button的onCreat()中利用部件的自带方法获取部件的文本信息并使用toast输出,实现点击注册按钮,弹出Toast显示用户具体信息。。
- 为该项目使用shape和selector进行美化。
运行结果
布局文件
RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/background_login"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".RegisterActivity">
<TextView
android:id="@+id/signup_msg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="注册"
android:textSize="25sp"
android:layout_margin="25dp"
android:layout_centerHorizontal="true" />
<EditText
android:id="@+id/username_msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/signup_msg"
android:background="@drawable/input_over"
android:hint="用户名"
android:singleLine="true" />
<EditText
android:id="@+id/pwd_msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/username_msg"
android:background="@drawable/input_over"
android:hint="密码" />
<EditText
android:id="@+id/rpwd_msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/pwd_msg"
android:background="@drawable/login_input"
android:hint="确认密码" />
<TextView
android:id="@+id/sex_msg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/rpwd_msg"
android:layout_marginTop="8dp"
android:text="性别"/>
<RadioGroup
android:id="@+id/rg_sex"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/rpwd_msg"
android:layout_toRightOf="@+id/sex_msg"
android:orientation="horizontal">
<RadioButton
android:id="@+id/sex_male"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="男" />
<RadioButton
android:id="@+id/sex_female"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女" />
</RadioGroup>
<Spinner
android:id="@+id/academic_msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="学历"
android:layout_below="@+id/rg_sex"
android:layout_marginTop="10dp"
android:layout_toRightOf="@+id/academic_text"
android:entries="@array/academic"
android:fadeScrollbars="true"
android:prompt="@string/academic_prompt"
android:scrollIndicators="right"
android:spinnerMode="dialog"
tools:ignore="UnknownId"></Spinner>
<LinearLayout
android:id="@+id/hobby_msg"
android:layout_below="@+id/academic_msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="爱好"/>
<CheckBox
android:id="@+id/hobby_swim"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="游泳"/>
<CheckBox
android:id="@+id/hobby_music"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="音乐"/>
<CheckBox
android:id="@+id/hobby_book"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="读书"/>
</LinearLayout>
<Button
android:id="@+id/reg_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/hobby_msg"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:background="@drawable/background_button_div"
android:text="注册" />
//android:onClick="onRegClick"
</RelativeLayout>
java文件
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.Toast;
import android.widget.CompoundButton;
public class RegisterActivity extends AppCompatActivity {
private EditText nameET,pwdET,memoET;
private Button regBt;
private RadioButton button1,button2;
private String input_username, input_pwd,sex;
private RadioGroup radioGroup1;
private CheckBox checkBox1;
private CheckBox checkBox2;
private CheckBox checkBox3;
private Spinner spinner;
Button btn_login;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
spinner = (Spinner) findViewById(R.id.academic_msg);//学历控件
button1=(RadioButton) findViewById(R.id.sex_male);
button2=(RadioButton) findViewById(R.id.sex_female);
checkBox1=(CheckBox)findViewById(R.id.hobby_swim);//爱好控件123
checkBox2=(CheckBox)findViewById(R.id.hobby_music);
checkBox3=(CheckBox)findViewById(R.id.hobby_book);
nameET = (EditText)findViewById(R.id.username_msg);//用户名
pwdET = (EditText)findViewById(R.id.pwd_msg);//密码
regBt =(Button)findViewById(R.id.reg_button);//注册
regBt.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v)
{
String hobby = "";
if(checkBox1.isChecked()){
hobby+=checkBox1.getText().toString();
}
if(checkBox2.isChecked()){
hobby+=checkBox2.getText().toString();
}
if(checkBox3.isChecked()){
hobby+=checkBox3.getText().toString();
}
String sex = "";
if(button1.isChecked()){
sex+=button1.getText().toString();
}
if(button2.isChecked()){
sex+=button2.getText().toString();
}
Intent intent3=new Intent(); //该“意图”仅仅只传递数据
String msg = "您注册的用户名是:"+ nameET.getText().toString()+ "\n密码是:"+ pwdET.getText().toString()+ "\n学历是:"+ spinner.getSelectedItem().toString()+ "\n爱好是:"+ hobby+ "\n性别是:"+ sex;
Toast.makeText(RegisterActivity.this,msg,Toast.LENGTH_LONG).show();
intent3.putExtra("regName",nameET.getText().toString());
intent3.putExtra("regPwd",pwdET.getText().toString());
setResult(RESULT_OK, intent3);
finish();
}
});
}
}
总结
在一开始的java文件中,button和checkBox组件的自带函数isChecked()没有办法调用,一直在报错;后来经过老师的解答,发现调用函数的语句不能放在方法外,方法外面的只能是声明语句,执行语句会不认识。
经过本次实验发现自己对于安卓组件的认识加深了。对相应的文件夹中的代码块有不同作用和调用方式有了更深刻的认识,而不只是浅尝辄止的看懂就罢。现在的进度是从main->java和res->layout进展到对res->drawable对各种组件的参数调制和res->value->strings.xml的自定义数组的理解和使用。