写在前面的话
1、参考自网络。
2、内容如果有不对的,希望可以指出或补充。
3、任务练习。
一、文件准备
总体要求:完成相应的页面跳转和点击事件。
如下。
二、登录界面
1、布局设计
① 登录界面(layout文件夹下的login_activity.xml),编写如下。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/bg2"
android:gravity="center"
android:orientation="vertical"
>
<!--用户部分-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户:"
android:textSize="30sp"
android:textColor="@color/white"/>
<EditText
android:id="@+id/edt_username"
android:layout_width="200dp"
android:layout_height="50dp"
android:gravity="center"
android:hint="请输入用户名"
android:textSize="20sp"
android:background="@color/white"
/>
</LinearLayout>
<!--密码部分-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密码:"
android:textSize="30sp"
android:textColor="@color/white"/>
<EditText
android:id="@+id/edt_password"
android:layout_width="200dp"
android:layout_height="50dp"
android:gravity="center"
android:hint="请输入密码"
android:textSize="20sp"
android:background="@color/white"
android:inputType="textPassword"/>
</LinearLayout>
<!--按钮部分-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:gravity="center"
>
<Button
android:id="@+id/btn_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="登录"
android:textSize="20sp"
android:layout_marginRight="25dp"
android:backgroundTint="#30ffffff"/>
<Button
android:id="@+id/btn_cancel_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="取消"
android:textSize="20sp"
android:backgroundTint="#30ffffff"/>
</LinearLayout>
</LinearLayout>
② 展示如下。
2、登录窗口
① 在com.example.tasktwo包下的LoginActivity.java里,编写如下。
package com.example.tasktwo;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class LoginActivity extends AppCompatActivity {
//声明控件变量
private EditText edtName, edtPwd;
private Button btnLogin, btnCancel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//加载登录布局页面
setContentView(R.layout.login_activity);
//获取相应控件
edtName = findViewById(R.id.edt_username);
edtPwd = findViewById(R.id.edt_password);
btnLogin = findViewById(R.id.btn_login);
btnCancel = findViewById(R.id.btn_cancel_login);
///登录事件
btnLogin.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
String name = edtName.getText().toString().trim();
String pwd = edtPwd.getText().toString().trim();
if(name.equals("admin") && pwd.equals("admin")){
// Toast.LENGTH_SHORT大概显示时间为1秒,Toast.LENGTH_LONG大概显示时间为3秒
Toast.makeText(LoginActivity.this,"恭喜,用户名与密码正确!",
Toast.LENGTH_SHORT).show();
Intent intent_l = new Intent(LoginActivity.this,LoginMessage.class);
//封装数据
Bundle usrData =new Bundle();
usrData.putString("l_name",name);
//携带数据包
intent_l.putExtras(usrData);
//启动目标组件
startActivity(intent_l);
}else{
Toast.makeText(LoginActivity.this,"遗憾,用户名或密码错误!请重新输入",
Toast.LENGTH_SHORT).show();
}
}
});
//取消事件,也就是关闭当前界面
btnCancel.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
finish();
}
});
}
}
3、登录信息展示界面
4、登录信息展示窗口
在LoginMessage.java里,编写如下。
package com.example.tasktwo;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class LoginMessage extends AppCompatActivity {
private Button btnBack_l;
private TextView message_test_l;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login_message);
//获取相应控件
btnBack_l = findViewById(R.id.message_btn_back_l);
message_test_l = findViewById(R.id.message_test_login);
//获取跳转的意图对象
Intent intent_l = getIntent();
if(intent_l != null){
//获取意图携带的数据包
Bundle usrData = intent_l.getExtras();
String l_name = usrData.getString("l_name");
message_test_l.setText("欢迎您:"+l_name);
}
btnBack_l.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
finish();
}
});
}
}
三、注册界面
与登录界面做法同理。
1、布局设计
① 登录界面(layout文件夹下的register_activity.xml),编写如下。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/bg2"
android:gravity="center"
android:orientation="vertical"
>
<!--姓名部分-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名:"
android:textSize="30sp"
android:textColor="@color/white"/>
<EditText
android:id="@+id/reg_name"
android:layout_width="200dp"
android:layout_height="50dp"
android:gravity="center"
android:hint=""
android:textSize="20sp"
android:background="@color/white"/>
</LinearLayout>
<!--性别部分-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="性别:"
android:textSize="30sp"
android:textColor="@color/white"/>
<EditText
android:id="@+id/reg_sex"
android:layout_width="200dp"
android:layout_height="50dp"
android:gravity="center"
android:textSize="20sp"
android:background="@color/white"
/>
</LinearLayout>
<!--年龄部分-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="年龄:"
android:textSize="30sp"
android:textColor="@color/white"/>
<EditText
android:id="@+id/reg_age"
android:layout_width="200dp"
android:layout_height="50dp"
android:gravity="center"
android:textSize="20sp"
android:background="@color/white"
/>
</LinearLayout>
<!--电话部分-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="电话:"
android:textSize="30sp"
android:textColor="@color/white"/>
<EditText
android:id="@+id/reg_phone"
android:layout_width="200dp"
android:layout_height="50dp"
android:gravity="center"
android:textSize="20sp"
android:background="@color/white"
/>
</LinearLayout>
<!--邮箱-部分-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="邮箱:"
android:textSize="30sp"
android:textColor="@color/white"/>
<EditText
android:id="@+id/reg_email"
android:layout_width="200dp"
android:layout_height="50dp"
android:gravity="center"
android:textSize="20sp"
android:background="@color/white"
/>
</LinearLayout>
<!--主页部分-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="主页:"
android:textSize="30sp"
android:textColor="@color/white"/>
<EditText
android:id="@+id/reg_sheet"
android:layout_width="200dp"
android:layout_height="50dp"
android:gravity="center"
android:textSize="20sp"
android:background="@color/white"
/>
</LinearLayout>
<!--备注部分-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="备注:"
android:textSize="30sp"
android:textColor="@color/white"/>
<EditText
android:id="@+id/reg_remarks"
android:layout_width="200dp"
android:layout_height="50dp"
android:gravity="center"
android:textSize="20sp"
android:background="@color/white"
/>
</LinearLayout>
<!--按钮部分-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="30dp"
android:gravity="center"
>
<Button
android:id="@+id/btn_register"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="注册"
android:textSize="20sp"
android:layout_marginRight="30dp"
android:backgroundTint="#30ffffff"/>
<Button
android:id="@+id/btn_cancel_register"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="取消"
android:textSize="20sp"
android:backgroundTint="#30ffffff"/>
</LinearLayout>
</LinearLayout>
② 展示如下。
2、注册窗口
在RegisterActivity.java里,编写如下。
package com.example.tasktwo;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class RegisterActivity extends AppCompatActivity {
private EditText edtName, edtSex, edtAge, edtPhone, edtEmail, edtSheet, edtRemarks;
private Button btnRegister, btnCancel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//加载注册显示布局页面
setContentView(R.layout.register_activity);
//获取相应控件
edtName = findViewById(R.id.reg_name);
edtSex = findViewById(R.id.reg_sex);
edtAge = findViewById(R.id.reg_age);
edtPhone = findViewById(R.id.reg_phone);
edtEmail = findViewById(R.id.reg_email);
edtSheet = findViewById(R.id.reg_sheet);
edtRemarks = findViewById(R.id.reg_remarks);
btnRegister = findViewById(R.id.btn_register);
btnCancel = findViewById(R.id.btn_cancel_register);
///注册事件
btnRegister.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//.trim()去除字符串的头尾空格
String name = edtName.getText().toString().trim();
String sex = edtSex.getText().toString().trim();
String age = edtAge.getText().toString().trim();
String phone = edtPhone.getText().toString().trim();
String email = edtEmail.getText().toString().trim();
String sheet = edtSheet.getText().toString().trim();
String remarks = edtRemarks.getText().toString().trim();
Intent intent = new Intent(RegisterActivity.this,RegisterMessage.class);
//封装数据
Bundle data =new Bundle();
data.putString("r_name",name);
data.putString("r_sex",sex);
data.putString("r_age",age);
data.putString("r_phone",phone);
data.putString("r_email",email);
data.putString("r_sheet",sheet);
data.putString("r_remarks",remarks);
//携带数据包
intent.putExtras(data);
//启动目标组件
startActivity(intent);
}
});
//取消事件
btnCancel.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
finish();
}
});
}
}
3、注册信息展示界面
4、注册信息展示窗口
在RegisterMessage.java里,编写如下。
package com.example.tasktwo;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class RegisterMessage extends AppCompatActivity {
private Button btnBack;
private TextView message_test;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.register_message);
//获取相应控件
btnBack = findViewById(R.id.message_btn_back);
message_test = findViewById(R.id.message_test);
//获取跳转的意图对象
Intent intent = getIntent();
if(intent != null){
//获取意图携带的数据包
Bundle data = intent.getExtras();
String r_name = data.getString("r_name");
String r_sex = data.getString("r_sex");
String r_age = data.getString("r_age");
String r_phone = data.getString("r_phone");
String r_email = data.getString("r_email");
String r_sheet = data.getString("r_sheet");
String r_remarks = data.getString("r_remarks");
String message="姓名:"+r_name
+"\n性别:"+r_sex
+"\n年龄:"+r_age
+"\n电话:"+r_phone
+"\n邮箱:"+r_email
+"\n主页:"+r_sheet
+"\n备注:"+r_remarks;
message_test.setText(message);
}
btnBack.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
finish();
}
});
}
}
四、主界面
1、在AndroidManifest.xml(项目清单)文件里面添加如下声明。
2、主布局
设计一个简单的包含有登录以及注册按钮的主页面,如下。
注:在这个版本里面(Android Studio4.1.1)使用background设置颜色没有效果,只好用backgroundTint(背景颜色渲染)了。
3、主窗口
在MainActivity.java里,编写如下。
package com.example.tasktwo;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private Button btnLogin,btnRegister;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//加载主界面
setContentView(R.layout.activity_main);
//获取相应控件
btnLogin = findViewById(R.id.btn_login_main);
btnRegister = findViewById(R.id.btn_register_main);
//转到登录界面
btnLogin.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent intent= new Intent(MainActivity.this, LoginActivity.class);
//启动activity
startActivity(intent);
}
});
//转到注册界面
btnRegister.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent intent= new Intent(MainActivity.this, RegisterActivity.class);
//启动activity
startActivity(intent);
}
});
}
}
五、效果展示
运行结果如下。
六、补充
3、Android意图(intent):是一个要执行的操作的抽象描述。主要用来启动activity或者service(并携带需要传递的参数信息),可理解成activity之间的粘合剂。