用Android Studio编写手机登录界面,验证码登录
时间: 2023-11-15 20:47:38 浏览: 41
好的,下面是一个简单的登录界面的示例代码。这个示例包括了手机号和验证码登录的功能。
1. 布局文件
我们可以在res/layout文件夹下创建一个名为activity_login.xml的布局文件,代码如下:
```
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
android:paddingBottom="16dp">
<EditText
android:id="@+id/phone_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入手机号码"
android:inputType="phone" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="16dp">
<EditText
android:id="@+id/verification_code"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:hint="请输入验证码" />
<Button
android:id="@+id/get_verification_code"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="获取验证码" />
</LinearLayout>
<Button
android:id="@+id/login_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登录" />
</LinearLayout>
```
2. Activity类
我们可以在src/main/java文件夹下创建一个名为LoginActivity的Activity类,代码如下:
```
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class LoginActivity extends AppCompatActivity {
private EditText mPhoneNumberEditText;
private EditText mVerificationCodeEditText;
private Button mGetVerificationCodeButton;
private Button mLoginButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
mPhoneNumberEditText = findViewById(R.id.phone_number);
mVerificationCodeEditText = findViewById(R.id.verification_code);
mGetVerificationCodeButton = findViewById(R.id.get_verification_code);
mLoginButton = findViewById(R.id.login_button);
mGetVerificationCodeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//TODO: 获取验证码
}
});
mLoginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//TODO: 登录操作
String phoneNumber = mPhoneNumberEditText.getText().toString();
String verificationCode = mVerificationCodeEditText.getText().toString();
if (phoneNumber.isEmpty() || verificationCode.isEmpty()) {
Toast.makeText(LoginActivity.this, "请输入手机号和验证码", Toast.LENGTH_SHORT).show();
} else {
//TODO: 验证码登录
}
}
});
}
}
```
3. 获取验证码
我们可以使用第三方库SMS SDK来发送短信验证码。在build.gradle文件中添加以下依赖:
```
implementation 'cn.smssdk:sdk:3.0.0'
```
在获取验证码的按钮的点击事件中添加以下代码:
```
import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;
import java.util.HashMap;
import java.util.Map;
mGetVerificationCodeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String phoneNumber = mPhoneNumberEditText.getText().toString();
if (phoneNumber.isEmpty()) {
Toast.makeText(LoginActivity.this, "请输入手机号", Toast.LENGTH_SHORT).show();
} else {
// 发送短信验证码
SMSSDK.initSDK(LoginActivity.this, "appKey", "appSecret");
SMSSDK.registerEventHandler(new EventHandler() {
@Override
public void afterEvent(int event, int result, Object data) {
if (result == SMSSDK.RESULT_COMPLETE) {
if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
// 获取验证码成功
} else if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
// 验证码验证成功
}
} else {
// 获取验证码失败
}
}
});
SMSSDK.getVerificationCode("86", phoneNumber);
}
}
});
```
4. 验证码登录
我们可以使用Firebase Authentication来进行验证码登录。在build.gradle文件中添加以下依赖:
```
implementation 'com.google.firebase:firebase-auth:19.3.1'
```
在登录按钮的点击事件中添加以下代码:
```
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.PhoneAuthCredential;
import com.google.firebase.auth.PhoneAuthProvider;
mLoginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String phoneNumber = mPhoneNumberEditText.getText().toString();
String verificationCode = mVerificationCodeEditText.getText().toString();
if (phoneNumber.isEmpty() || verificationCode.isEmpty()) {
Toast.makeText(LoginActivity.this, "请输入手机号和验证码", Toast.LENGTH_SHORT).show();
} else {
// 使用验证码登录
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationCode, "");
FirebaseAuth.getInstance().signInWithCredential(credential)
.addOnSuccessListener(new OnSuccessListener<AuthResult>() {
@Override
public void onSuccess(AuthResult authResult) {
// 登录成功
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// 登录失败
}
});
}
}
});
```
以上就是一个简单的验证码登录的示例,你可以根据自己的需求进行修改。