用Android Studio写一个登录界面,要求有登录,注册界面,注册时需要使用数据库储存用户注册信息,注册成功后返回登录界面,账号密码正确后登录成功,进入欢迎界面,欢迎界面会显示登录者的信息
时间: 2023-07-20 18:36:22 浏览: 57
好的,下面是一个简单的实现步骤:
1. 新建 Android Studio 项目,选择 Empty Activity 模板。
2. 在布局文件 activity_main.xml 中添加登录和注册按钮,并设置它们的 id 和点击事件。
3. 在 MainActivity 中实现点击事件,分别跳转到登录界面和注册界面。
4. 在登录界面 LoginActivity 中添加账号和密码输入框,并设置登录按钮的点击事件。
5. 在注册界面 RegisterActivity 中添加账号、密码和确认密码输入框,并设置注册按钮的点击事件。在注册按钮的点击事件中,将用户信息写入数据库,并跳转回登录界面。
6. 在欢迎界面 WelcomeActivity 中显示登录用户的信息。在登录成功后,将用户信息传递到欢迎界面,并显示在界面上。
7. 在数据库操作类 DBHelper 中,实现用户信息的插入和查询操作。
这里提供一个简单的实现代码供参考:
activity_main.xml:
```xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btn_login"
android:text="登录"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:onClick="onLoginClick"/>
<Button
android:id="@+id/btn_register"
android:text="注册"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:onClick="onRegisterClick"/>
</LinearLayout>
```
MainActivity.java:
```java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onLoginClick(View view) {
Intent intent = new Intent(this, LoginActivity.class);
startActivity(intent);
}
public void onRegisterClick(View view) {
Intent intent = new Intent(this, RegisterActivity.class);
startActivity(intent);
}
}
```
LoginActivity.java:
```java
public class LoginActivity extends AppCompatActivity {
private EditText mEtUsername;
private EditText mEtPassword;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
mEtUsername = findViewById(R.id.et_username);
mEtPassword = findViewById(R.id.et_password);
}
public void onLoginClick(View view) {
String username = mEtUsername.getText().toString();
String password = mEtPassword.getText().toString();
// 查询数据库中是否存在该用户
DBHelper dbHelper = new DBHelper(this);
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor cursor = db.rawQuery("select * from user where username=? and password=?", new String[]{username, password});
if (cursor.moveToFirst()) {
// 登录成功,跳转到欢迎界面
Intent intent = new Intent(this, WelcomeActivity.class);
intent.putExtra("username", username);
startActivity(intent);
finish();
} else {
// 登录失败,弹出提示框
Toast.makeText(this, "用户名或密码错误", Toast.LENGTH_SHORT).show();
}
cursor.close();
db.close();
}
}
```
activity_login.xml:
```xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/et_username"
android:hint="账号"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<EditText
android:id="@+id/et_password"
android:hint="密码"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"/>
<Button
android:text="登录"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:onClick="onLoginClick"/>
</LinearLayout>
```
RegisterActivity.java:
```java
public class RegisterActivity extends AppCompatActivity {
private EditText mEtUsername;
private EditText mEtPassword;
private EditText mEtConfirmPassword;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
mEtUsername = findViewById(R.id.et_username);
mEtPassword = findViewById(R.id.et_password);
mEtConfirmPassword = findViewById(R.id.et_confirm_password);
}
public void onRegisterClick(View view) {
String username = mEtUsername.getText().toString();
String password = mEtPassword.getText().toString();
String confirmPassword = mEtConfirmPassword.getText().toString();
if (!password.equals(confirmPassword)) {
// 密码不一致,弹出提示框
Toast.makeText(this, "两次密码不一致", Toast.LENGTH_SHORT).show();
return;
}
// 插入用户信息到数据库
DBHelper dbHelper = new DBHelper(this);
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("username", username);
values.put("password", password);
db.insert("user", null, values);
db.close();
// 注册成功,跳转到登录界面
Toast.makeText(this, "注册成功,请登录", Toast.LENGTH_SHORT).show();
finish();
}
}
```
activity_register.xml:
```xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/et_username"
android:hint="账号"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<EditText
android:id="@+id/et_password"
android:hint="密码"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"/>
<EditText
android:id="@+id/et_confirm_password"
android:hint="确认密码"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"/>
<Button
android:text="注册"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:onClick="onRegisterClick"/>
</LinearLayout>
```
WelcomeActivity.java:
```java
public class WelcomeActivity extends AppCompatActivity {
private TextView mTvWelcome;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
mTvWelcome = findViewById(R.id.tv_welcome);
String username = getIntent().getStringExtra("username");
mTvWelcome.setText("欢迎 " + username + " 来到这里!");
}
}
```
activity_welcome.xml:
```xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:id="@+id/tv_welcome"
android:text="欢迎来到这里!"
android:textSize="24sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
```
DBHelper.java:
```java
public class DBHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "user.db";
private static final int DB_VERSION = 1;
public DBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table user (_id integer primary key autoincrement, username varchar(20), password varchar(20))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// do nothing
}
}
```
这只是一个简单的实现,您可以根据自己的需求进行修改和扩展。