Android注冊登錄頁面
- 需求
- 分析
- 專案目錄
- .java
- domain
- JsonBean.java
- UserInfo.java
- utils
- GetJsonDataUtil.java
- Login.java
- MainActivity.java
- Result.java
- Welcome.java
- .xml
- activity_login.xml
- activity_main.xml
- activity_result.xml
- activity_result.xml
- AndroidManifest.xml
- 頁面效果
- 注冊頁面
- 注冊成功頁面
- 登錄頁面
- 登錄成功頁面
- 點擊可自行下載
需求
主題:網抑云
用戶注冊
(賬號 密碼 性別 愛好…)
(注冊完成跳轉到注冊成功頁面)
注冊成功頁面
(顯示用戶注冊的詳細資訊)
(可以跳轉到登錄頁面)
登錄頁面
(使用用戶注冊時的賬號密碼登錄)
(進行判斷)
登錄成功頁面
(歡迎XXX(用戶注冊時的昵稱)先生/女士
分析
不能使用回車多行輸入
賬號(不可為空)
密碼(不可為空)(隱藏的)
確認密碼(比對)
昵稱(不可為空)
性別(單選)
愛好(多選)
簡介
簡介可以為空,其他全部非空
inputType屬性實作限制輸入型別
點擊注冊 如果有空(吐司提示XXX不可為空) 從上到下提示
注冊完畢之后:
跳轉到注冊成功頁面
專案目錄

.java
domain
JsonBean.java
package top.gaojc.app.domain;
import com.contrarywind.interfaces.IPickerViewData;
import java.util.List;
public class JsonBean implements IPickerViewData {
private String name;
private List<CityBean> city;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<CityBean> getCityList() {
return city;
}
public void setCityList(List<CityBean> city) {
this.city = city;
}
// 實作 IPickerViewData 介面,
// 這個用來顯示在PickerView上面的字串,
// PickerView會通過IPickerViewData獲取getPickerViewText方法顯示出來,
@Override
public String getPickerViewText() {
return this.name;
}
public static class CityBean {
private String name;
private List<String> area;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getArea() {
return area;
}
public void setArea(List<String> area) {
this.area = area;
}
}
}
UserInfo.java
package top.gaojc.app.domain;
public class UserInfo {
// 賬號
public static String zhanghao;
// 密碼
public static String mima;
// 確認密碼
public static String queren;
// 昵稱
public static String nicheng;
// 性別
public static String xingbie;
// 愛好
public static String aihao;
// 簡介
public static String jianjie;
public String getZhanghao() {
return zhanghao;
}
public void setZhanghao(String zhanghao) {
this.zhanghao = zhanghao;
}
public String getMima() {
return mima;
}
public void setMima(String mima) {
this.mima = mima;
}
public String getQueren() {
return queren;
}
public void setQueren(String queren) {
this.queren = queren;
}
public String getNicheng() {
return nicheng;
}
public void setNicheng(String nicheng) {
this.nicheng = nicheng;
}
public String getXingbie() {
return xingbie;
}
public void setXingbie(String xingbie) {
this.xingbie = xingbie;
}
public String getAihao() {
return aihao;
}
public void setAihao(String aihao) {
this.aihao = aihao;
}
public String getJianjie() {
return jianjie;
}
public void setJianjie(String jianjie) {
this.jianjie = jianjie;
}
}
utils
GetJsonDataUtil.java
package top.gaojc.app.utils;
import android.content.Context;
import android.content.res.AssetManager;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class GetJsonDataUtil {
public String getJson(Context context, String fileName) {
StringBuilder stringBuilder = new StringBuilder();
try {
AssetManager assetManager = context.getAssets();
BufferedReader bf = new BufferedReader(new InputStreamReader(
assetManager.open(fileName)));
String line;
while ((line = bf.readLine()) != null) {
stringBuilder.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
return stringBuilder.toString();
}
}
Login.java
package top.gaojc.app;
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;
import top.gaojc.app.domain.UserInfo;
public class Login extends AppCompatActivity {
// 初始化
Button login;
EditText edt_account;
EditText edt_password;
// 用戶注冊時的賬號密碼
String zhanghao;
String mima;
// 用戶登錄時的賬號密碼
String account;
String password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
// 系結
login = findViewById(R.id.login);
edt_account = findViewById(R.id.account);
edt_password = findViewById(R.id.password);
// 獲取用戶注冊時的賬號和密碼
UserInfo userInfo = new UserInfo();
zhanghao = userInfo.getZhanghao();
mima = userInfo.getMima();
// 監聽點擊事件
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 獲取用戶登錄時輸入的賬號密碼
account = edt_account.getText().toString();
password = edt_password.getText().toString();
// 判斷用戶注冊時的賬號密碼和登錄輸入的賬號密碼是否一致
if (zhanghao.equals(account) == true && mima.equals(password) == true){
// 登錄成功 跳轉登錄成功頁面
Intent intent = new Intent(Login.this,Welcome.class);
startActivity(intent);
}else {
// 提示用戶賬號或密碼錯誤
Toast.makeText(Login.this,"賬號或密碼錯誤",Toast.LENGTH_SHORT).show();
}
}
});
}
}
MainActivity.java
package top.gaojc.app;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
import com.bigkoo.pickerview.view.OptionsPickerView;
import com.google.gson.Gson;
import org.json.JSONArray;
import java.util.ArrayList;
import top.gaojc.app.domain.JsonBean;
import top.gaojc.app.domain.UserInfo;
import top.gaojc.app.utils.GetJsonDataUtil;
public class MainActivity extends AppCompatActivity {
// 初始化
// 省市區聯動
private TextView mTxt;
private ArrayList<JsonBean> options1Items = new ArrayList<>(); //省
private ArrayList<ArrayList<String>> options2Items = new ArrayList<>();//市
private ArrayList<ArrayList<ArrayList<String>>> options3Items = new ArrayList<>();//區
// 賬號
EditText account;
// 密碼
EditText password;
// 確認密碼
EditText confirmPassword;
// 昵稱
EditText username;
// 性別 男
RadioButton rb_man;
// 性別 女
RadioButton rb_woman;
// 愛好 吃
CheckBox eat;
// 愛好 喝
CheckBox drink;
// 愛好 玩
CheckBox play;
// 愛好 樂
CheckBox happy;
// 簡介
EditText presentation;
// 注冊按鈕
Button register;
// 結果
// 賬號
String zhanghao;
// 輸入框 密碼
String mima;
// 輸入框 確認密碼
String queren;
// 輸入框 昵稱
String nicheng;
// 給數字賦值 判斷男女
int gender;
// 按鈕 性別
String xingbie;
// 愛好
String aihao;
// 輸入框 簡介
String jianjie;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 省市區聯動方法
initView();
initData();
// 系結
// 賬號
account = findViewById(R.id.edt_account);
// 密碼
password = findViewById(R.id.edt_password);
// 確認密碼
confirmPassword = findViewById(R.id.edt_confirmPassword);
// 昵稱
username = findViewById(R.id.edt_username);
// 性別
rb_man = findViewById(R.id.rb_man);
rb_woman = findViewById(R.id.rb_woman);
// 愛好
eat = findViewById(R.id.cb_eat);
drink = findViewById(R.id.cb_drink);
play = findViewById(R.id.cb_play);
happy = findViewById(R.id.cb_happy);
// 簡介
presentation = findViewById(R.id.edt_presentation);
// 注冊按鈕
register = findViewById(R.id.btn_register);
// 監聽點擊事件
register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 獲取賬號
zhanghao = account.getText().toString();
// 獲取密碼
mima = password.getText().toString();
// 獲取確認密碼
queren = confirmPassword.getText().toString();
// 獲取昵稱
nicheng = username.getText().toString();
// 獲取性別
rb_woman.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
gender = 1;
}
});
if (gender == 1){
xingbie = "女";
}else {
xingbie = "男";
}
// 獲取愛好
StringBuilder stringBuilder = new StringBuilder();
if (eat.isChecked()){
stringBuilder.append("吃、");
}
if (drink.isChecked()){
stringBuilder.append("喝、");
}
if (play.isChecked()){
stringBuilder.append("玩、");
}
if (happy.isChecked()){
stringBuilder.append("樂");
}
// 獲取字串最后一個字符
String str = stringBuilder.charAt(stringBuilder.length() - 1) + "";
// 如果最后一個符號是、 則剪切掉
if (str.equals("、")){
aihao = stringBuilder.substring(0,stringBuilder.length() - 1);
}else {
aihao = stringBuilder.toString();
}
// 獲取簡介
jianjie = presentation.getText().toString();
// 賬號密碼昵稱校驗
if (zhanghao.equals("") == false && zhanghao.length() != 0 &&
mima.equals("") == false && mima.length() != 0 && mima.equals(queren) == true &&
nicheng.equals("") == false && nicheng.length() != 0)
{
// 資料存盤
UserInfo userInfo = new UserInfo();
userInfo.setZhanghao(zhanghao);
userInfo.setMima(mima);
userInfo.setQueren(queren);
userInfo.setNicheng(nicheng);
userInfo.setXingbie(xingbie);
userInfo.setAihao(aihao);
userInfo.setJianjie(jianjie);
// 跳轉
Intent intent = new Intent(MainActivity.this, Result.class);
startActivity(intent);
} else if (zhanghao.equals("") == true || zhanghao.length() == 0){
Toast.makeText(MainActivity.this,"賬號不允許為空!",Toast.LENGTH_SHORT).show();
}else if (mima.equals("") == true || mima.length() == 0){
Toast.makeText(MainActivity.this,"密碼不允許為空!",Toast.LENGTH_SHORT).show();
} else if (mima.equals(queren) == false){
Toast.makeText(MainActivity.this,"兩次密碼不一致!",Toast.LENGTH_SHORT).show();
}else if (nicheng.equals("") == true || nicheng.length() == 0){
Toast.makeText(MainActivity.this,"昵稱不允許為空!",Toast.LENGTH_SHORT).show();
}
}
});
}
private void initData() {
/**
* 注意:assets 目錄下的Json檔案僅供參考,實際使用可自行替換檔案
* 關鍵邏輯在于回圈體
* */
String JsonData = new GetJsonDataUtil().getJson(this, "province.json");//獲取assets目錄下的json檔案資料
ArrayList<JsonBean> jsonBean = parseData(JsonData);//用Gson 轉成物體
/**
* 添加省份資料
* 注意:如果是添加的JavaBean物體,則物體類需要實作 IPickerViewData 介面,
* PickerView會通過getPickerViewText方法獲取字串顯示出來,
*/
options1Items = jsonBean;
for (int i = 0; i < jsonBean.size(); i++) {//遍歷省份
ArrayList<String> CityList = new ArrayList<>();//該省的城市串列(第二級)
ArrayList<ArrayList<String>> Province_AreaList = new ArrayList<>();//該省的所有地區串列(第三級)
for (int c = 0; c < jsonBean.get(i).getCityList().size(); c++) {//遍歷該省份的所有城市
String CityName = jsonBean.get(i).getCityList().get(c).getName();
CityList.add(CityName);//添加城市
ArrayList<String> City_AreaList = new ArrayList<>();//該城市的所有地區串列
//如果無地區資料,建議添加空字串,防止資料為null 導致三個選項長度不匹配造成崩潰
if (jsonBean.get(i).getCityList().get(c).getArea() == null
|| jsonBean.get(i).getCityList().get(c).getArea().size() == 0) {
City_AreaList.add("");
} else {
City_AreaList.addAll(jsonBean.get(i).getCityList().get(c).getArea());
}
Province_AreaList.add(City_AreaList);//添加該省所有地區資料
}
//添加城市資料
options2Items.add(CityList);
//添加地區資料
options3Items.add(Province_AreaList);
}
}
private void initView() {
mTxt = (TextView) findViewById(R.id.txt);
mTxt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showPickerView();
}
});
}
private void showPickerView() {
OptionsPickerView pvOptions = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
@Override
public void onOptionsSelect(int options1, int options2, int options3, View v) {
//回傳的分別是三個級別的選中位置
mTxt.setText(options1Items.get(options1).getPickerViewText() + " "
+ options2Items.get(options1).get(options2) + " "
+ options3Items.get(options1).get(options2).get(options3));
}
})
.setTitleText("城市選擇")
.setTitleBgColor(Color.WHITE)//設定標題的背景顏色
.setDividerColor(Color.BLACK)//設定分割線的顏色
.setTextColorCenter(Color.BLACK) //設定選中項文字顏色
.setContentTextSize(20)
.build();
pvOptions.setPicker(options1Items, options2Items, options3Items);//三級選擇器
pvOptions.show();
}
public ArrayList<JsonBean> parseData(String result) {//Gson 決議
ArrayList<JsonBean> detail = new ArrayList<>();
try {
JSONArray data = new JSONArray(result);
// 通過建構式來獲取
Gson gson = new Gson();
for (int i = 0; i < data.length(); i++) {
JsonBean entity = gson.fromJson(data.optJSONObject(i).toString(), JsonBean.class);
detail.add(entity);
}
} catch (Exception e) {
e.printStackTrace();
}
return detail;
}
}
Result.java
package top.gaojc.app;
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;
import top.gaojc.app.domain.UserInfo;
public class Result extends AppCompatActivity {
// 初始化
// 回傳值
TextView result;
// 登錄按鈕
Button login;
// 賬號
String zhanghao;
// 密碼
String mima;
// 昵稱
String nicheng;
// 性別
String xingbie;
// 愛好
String aihao;
// 簡介
String jianjie;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
// 系結
result = findViewById(R.id.tv_result);
login = findViewById(R.id.btn_login);
// 用戶資訊物件
UserInfo userInfo = new UserInfo();
// 獲取用戶資訊
zhanghao = userInfo.getZhanghao();
mima = userInfo.getMima();
nicheng = userInfo.getNicheng();
xingbie = userInfo.getXingbie();
aihao = userInfo.getAihao();
jianjie = userInfo.getJianjie();
// 設定顯示的資料
result.setText("賬號:" + zhanghao + "\n密碼:" + mima + "\n昵稱:" + nicheng + "\n性別:" + xingbie + "\n愛好:" + aihao + "\n簡介:" + jianjie);
// 監聽事件
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Result.this, Login.class);
startActivity(intent);
}
});
}
}
Welcome.java
package top.gaojc.app;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import top.gaojc.app.domain.UserInfo;
public class Welcome extends AppCompatActivity {
// 初始化
TextView register;
String nicheng;
String xingbie;
// 稱謂 先生 or 女士
String appellation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
// 系結
register = findViewById(R.id.tv_register);
// 獲取用戶的昵稱和性別
UserInfo userInfo = new UserInfo();
nicheng = userInfo.getNicheng();
xingbie = userInfo.getXingbie();
// 判斷男女 昵稱后面跟稱謂
if (xingbie.equals("男")){
appellation = "先生";
}else {
appellation = "女士";
}
// 輸出內容的拼接
String text = "歡迎" + nicheng + appellation + "!";
// 列印
register.setText(text);
}
}
.xml
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"
tools:context=".Login"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用戶登錄"
android:layout_gravity="center"
android:textSize="25sp"/>
<TextView
android:id="@+id/txt"
android:layout_width="match_parent"
android:layout_height="48dp"
android:gravity="center"
android:layout_centerInParent="true" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="賬號" />
<EditText
android:id="@+id/account"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密碼" />
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"/>
</LinearLayout>
<Button
android:id="@+id/login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="登錄"/>
</LinearLayout>
activity_main.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"
tools:context=".MainActivity"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用戶注冊"
android:layout_gravity="center"
android:textSize="25sp"/>
<TextView
android:id="@+id/txt"
android:layout_width="match_parent"
android:layout_height="48dp"
android:gravity="center"
android:layout_centerInParent="true" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="賬號" />
<EditText
android:id="@+id/edt_account"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密碼" />
<EditText
android:id="@+id/edt_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="確認密碼" />
<EditText
android:id="@+id/edt_confirmPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="昵稱" />
<EditText
android:id="@+id/edt_username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"/>
</LinearLayout>
<RadioGroup
android:id="@+id/rg_gender"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="性別"/>
<RadioButton
android:id="@+id/rb_man"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男"
android:checked="true"/>
<RadioButton
android:id="@+id/rb_woman"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"/>
</RadioGroup>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="愛好"/>
<CheckBox
android:id="@+id/cb_eat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="吃"/>
<CheckBox
android:id="@+id/cb_drink"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="喝" />
<CheckBox
android:id="@+id/cb_play"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="玩"/>
<CheckBox
android:id="@+id/cb_happy"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="樂"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="簡介" />
<EditText
android:id="@+id/edt_presentation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"/>
</LinearLayout>
<Button
android:id="@+id/btn_register"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="注冊"
android:layout_gravity="center"
android:textSize="20sp"
android:layout_marginTop="35dp"/>
</LinearLayout>
activity_result.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context=".Result">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="注冊成功!"
android:layout_above="@id/tv_result"
android:layout_centerHorizontal="true"
android:textColor="#00ff99"
android:textSize="30sp"/>
<!-- 回傳內容-->
<TextView
android:id="@+id/tv_result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"/>
<Button
android:id="@+id/btn_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tv_result"
android:layout_centerHorizontal="true"
android:text="去登錄"/>
</RelativeLayout>
activity_result.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context=".Welcome">
<TextView
android:id="@+id/tv_register"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:textSize="30sp"/>
</RelativeLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="top.gaojc.app">
<application
android:allowBackup="true"
android:icon="@drawable/wyy"
android:label="@string/app_name"
android:roundIcon="@drawable/wyy"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".Login"/>
<activity android:name=".Result" />
<activity android:name=".Welcome" />
<activity android:name=".domain.UserInfo"/>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
頁面效果
注冊頁面

注冊成功頁面

登錄頁面

登錄成功頁面

點擊可自行下載
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/302086.html
標籤:其他
上一篇:Android 實戰中提高Handler發送訊息的優先級
下一篇:怎樣寫好Flutter代碼
