目录
六、编写登录布局资源文件 - activity_login.xml
任务:实现用户注册功能
一、新建项目
- 选择一个空的模板
- 完善项目信息
二、修改主界面名称与主布局文件名
将MainActivity
改名为LoginActivity
- 将
activity_main.xml
改名为activity_login.xml
三、导入背景图片资源
四、创建按钮边框配置文件
- 源代码
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#808080" />
<corners
android:bottomLeftRadius="8dp"
android:bottomRightRadius="8dp"
android:topLeftRadius="8dp"
android:topRightRadius="8dp" />
<stroke
android:width="0.5dp"
android:color="#808080" />
</shape>
五、在字符串资源文件里定义变量
- 源代码
<resources>
<string name="app_name">用户注册</string>
<string name="name">姓名:</string>
<string name="gender">性别:</string>
<string name="age">年龄:</string>
<string name="telephone">电话:</string>
<string name="mailbox">邮箱:</string>
<string name="homepage">主页:</string>
<string name="remarks">备注:</string>
<string name="register">注册</string>
<string name="cancel">取消</string>
</resources>
六、编写登录布局资源文件 - activity_login.xml
- 源代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/background"
android:orientation="vertical"
tools:context=".LoginActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.5"
android:text="Hello World!"
android:gravity="center" >
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="Hello World!"
android:gravity="center" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/name"
android:textSize="25dp"
android:textColor="#000000" />
<EditText
android:id="@+id/edt_username"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="Hello World!"
android:gravity="center" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/gender"
android:textSize="25dp"
android:textColor="#000000" />
<EditText
android:id="@+id/edt_gender"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="Hello World!"
android:gravity="center" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/age"
android:textSize="25dp"
android:textColor="#000000" />
<EditText
android:id="@+id/edt_age"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="Hello World!"
android:gravity="center" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/telephone"
android:textSize="25dp"
android:textColor="#000000" />
<EditText
android:id="@+id/edt_telephone"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="Hello World!"
android:gravity="center" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/mailbox"
android:textSize="25dp"
android:textColor="#000000" />
<EditText
android:id="@+id/edt_mailbox"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="Hello World!"
android:gravity="center" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/homepage"
android:textSize="25dp"
android:textColor="#000000" />
<EditText
android:id="@+id/edt_homepage"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:text="Hello World!"
android:gravity="center" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/remarks"
android:textSize="25dp"
android:textColor="#000000" />
<EditText
android:id="@+id/edt_remarks"
android:layout_width="250dp"
android:layout_height="100dp"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:text="Hello World!"
android:gravity="center" >
<Button
android:id="@+id/btn_login"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginBottom="39dp"
android:background="@drawable/button_border"
android:text="@string/register"
android:textSize="20sp" />
<Button
android:id="@+id/btn_cancel"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginBottom="39dp"
android:background="@drawable/button_border"
android:text="@string/cancel"
android:textSize="20sp" />
</LinearLayout>
</LinearLayout>
- 运行程序,查看效果
七、基于模板创建主界面
八、事件处理
-
修改登录布局资源文件
-
编写注册界面代码
- 源代码
package net.zs.register;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
public class LoginActivity extends AppCompatActivity {
private EditText edtUsername;
private EditText edtGender;
private EditText edtAge;
private EditText edtTelephone;
private EditText edtMailbox;
private EditText edtHomepage;
private EditText edtRemarks;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
// 通过资源标识符获取控件实例
edtUsername = findViewById(R.id.edt_username);
edtGender = findViewById(R.id.edt_gender);
edtAge = findViewById(R.id.edt_age);
edtTelephone = findViewById(R.id.edt_telephone);
edtMailbox = findViewById(R.id.edt_mailbox);
edtHomepage = findViewById(R.id.edt_homepage);
edtRemarks = findViewById(R.id.edt_remarks);
}
/**
* 注册事件处理方法
*
*/
public void doRegister(View v){
// 获取用户输入的数据
String username = edtUsername.getText().toString().trim();
String gender = edtGender.getText().toString().trim();
String age = edtAge.getText().toString().trim();
String telephone = edtTelephone.getText().toString().trim();
String mailbox = edtMailbox.getText().toString().trim();
String homepage = edtHomepage.getText().toString().trim();
String remarks = edtRemarks.getText().toString().trim();
// 创建意图(参数1:起始组件;参数2:目标组件)
Intent intent = new Intent(this, MainActivity.class);
// 让意图携带数据
intent.putExtra("username", username);
// 按意图实现界面跳转
startActivity(intent);
}
/**
* 取消事件处理方法
*
*/
public void doCancel(View v) {
// 关闭当前窗口
finish();
}
}
- 运行程序,查看效果
九、修改主布局资源文件
- 将约束布局改为线性布局
- 导入主界面的背景图片
- 设置背景的属性和对齐方式
- 添加一个标签,用于显示注册信息
十、编写主界面代码
十一、修改主界面活动栏标题
- 在字符串资源文件里定义主界面标题变量
- 项目清单文件里设置主界面的标题
- 运行程序,查看效果
十二、优化代码
十三、修改文件代码
- 修改字符串资源文件的代码
- 修改注册界面布局代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/background"
android:orientation="vertical"
tools:context=".LoginActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.5"
android:gravity="center"
android:text="Hello World!">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:text="@string/rein"
android:textColor="#0000ff"
android:textSize="30dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="Hello World!">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="20dp"
android:text="@string/user"
android:textColor="#000000"
android:textSize="25dp" />
<EditText
android:id="@+id/edt_username"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:hint="@string/user_hint"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="Hello World!">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="20dp"
android:text="@string/password"
android:textColor="#000000"
android:textSize="25dp" />
<EditText
android:id="@+id/edt_gender"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="24dp"
android:hint="@string/password_hint"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="Hello World!">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="20dp"
android:text="@string/telephone"
android:textColor="#000000"
android:textSize="25dp" />
<EditText
android:id="@+id/edt_telephone"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="24dp"
android:hint="@string/telephone_hint"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="Hello World!">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="20dp"
android:text="@string/mailbox"
android:textColor="#000000"
android:textSize="25dp" />
<EditText
android:id="@+id/edt_mailbox"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="24dp"
android:hint="@string/mailbox_hint"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="Hello World!">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="20dp"
android:text="@string/gender"
android:textColor="#000000"
android:textSize="25dp" />
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="24dp"
android:orientation="horizontal">
<RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男"
android:textSize="30sp" />
<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"
android:textSize="30sp" />
</RadioGroup>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="Hello World!">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="20dp"
android:text="@string/interest"
android:textColor="#000000"
android:textSize="25dp" />
<CheckBox
android:id="@+id/edt_travel"
android:layout_width="90dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="43dp"
android:text="@string/travel"
android:textSize="24dp" />
<CheckBox
android:id="@+id/edt_music"
android:layout_width="90dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/music"
android:textSize="24dp" />
<CheckBox
android:id="@+id/edt_food"
android:layout_width="90dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/food"
android:textSize="24dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:gravity="center"
android:text="Hello World!">
<Button
android:id="@+id/btn_login"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginBottom="39dp"
android:background="@drawable/button_border"
android:onClick="doRegister"
android:text="@string/submit"
android:textSize="20sp" />
<Button
android:id="@+id/btn_cancel"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginBottom="39dp"
android:background="@drawable/button_border"
android:onClick="doCancel"
android:text="@string/reset"
android:textSize="20sp" />
</LinearLayout>
</LinearLayout>
- 修改注册界面的代码,编辑事件处理方法
package net.zs.register;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
public class LoginActivity extends AppCompatActivity {
private EditText edtUsername;
private EditText edtPassword;
private EditText edtTelephone;
private EditText edtMailbox;
private RadioGroup radioGender;
private RadioButton radioMale;
private RadioButton radioFemale;
private CheckBox edt_travel;
private CheckBox edt_music;
private CheckBox edt_food;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
// 通过资源标识符获取控件实例
edtUsername = findViewById(R.id.edt_username);
edtPassword = findViewById(R.id.edt_password);
edtTelephone = findViewById(R.id.edt_telephone);
edtMailbox = findViewById(R.id.edt_mailbox);
radioGender = findViewById(R.id.radioGender);
radioMale = findViewById(R.id.radioMale);
radioFemale = findViewById(R.id.radioFemale);
edt_travel = findViewById(R.id.edt_travel);
edt_music = findViewById(R.id.edt_music);
edt_food = findViewById(R.id.edt_food);
}
/**
* 注册事件处理方法
*
*/
public void doRegister(View v){
// 获取用户输入的数据
String username = edtUsername.getText().toString().trim();
String password = edtPassword.getText().toString().trim();
String telephone = edtTelephone.getText().toString().trim();
String mailbox = edtMailbox.getText().toString().trim();
// 获取性别值
String strGender = "";
switch (radioGender.getCheckedRadioButtonId()) { // 根据选中的单选按钮id进行判断
case R.id.radioMale:
strGender = radioMale.getText().toString();
break;
case R.id.radioFemale:
strGender = radioFemale.getText().toString();
break;
}
// 获取兴趣
StringBuilder builder = new StringBuilder();
if (edt_travel.isChecked()) {
builder.append(edt_travel.getText().toString() + " ");
}
if (edt_music.isChecked()) {
builder.append(edt_music.getText().toString() + " ");
}
if (edt_food.isChecked()) {
builder.append(edt_food.getText().toString() + " ");
}
String interest = builder.toString().trim();
// 创建意图(参数1:起始组件;参数2:目标组件)
Intent intent = new Intent(this, MainActivity.class);
// 让意图携带数据
intent.putExtra("username", username);
intent.putExtra("password", password);
intent.putExtra("telephone", telephone);
intent.putExtra("mailbox", mailbox);
intent.putExtra("strGender", strGender);
intent.putExtra("interest",interest);
// 按意图实现界面跳转
startActivity(intent);
}
/**
* 重置事件处理方法
*
*/
public void doCancel(View v) {
edtUsername.setText("");
radioMale.setChecked(false);
radioFemale.setChecked(false);
edt_travel.setChecked(false);
edt_music.setChecked(false);
edt_food.setText("");
}
}
- 编写注册信息界面的代码
package net.zs.register;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private TextView tvMessage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 利用布局资源文件设置用户界面
setContentView(R.layout.activity_main);
// 通过控件资源标识获得控件实例
tvMessage = findViewById(R.id.tv_message);
// 获取意图
Intent intent = getIntent();
// 判断意图是否为空
if (intent != null) {
// 获取意图携带的数据
String username = intent.getStringExtra("username");
String password = intent.getStringExtra("password");
String telephone = intent.getStringExtra("telephone");
String mailbox = intent.getStringExtra("mailbox");
String strGender = intent.getStringExtra("strGender");
String interest = intent.getStringExtra("interest");
// 设置标签内容
tvMessage.setText("用户名:" + username + "\n密码:" + password + "\n电话:" + telephone +
"\n邮箱:" + mailbox + "\n性别:" + strGender +"\n兴趣:" + interest);
}
}
}
- 运行程序,查看效果