如何使用Android Studio开发用户登录界面
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Android Studio开发用户登录界面相关的知识,希望对你有一定的参考价值。
右键点击new-->Module,Module相当于新建了一个项目。如图所示
选择android Application,点击next
将My Module 和app改成自己项目相应的名字,同时选择支持的Android版本
这一步我们选择Blank Activity,自己手动编写登录界面,而不依赖系统内置的Login Activity,一直点击next,最后点击finish就完成了项目的创建
在project下我们可以看到出现了我们刚才创建的login项目
展开res/layout,点击打开activity_main.xml文件,在这个文件里我们将完成登录界面的编写
这是初始的主界面,还没有经过我们编写的界面,Android Studio有一个很强大的预览功能,相当给力
将activity_main.xml的代码替换成如下代码:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:gravity="center_vertical"
android:stretchColumns="0,3">
<TableRow>
<TextView />
<TextView
android:text="账 号:"
android:layout_
android:layout_
android:textSize="24px"
/>
<EditText
android:id="@+id/account"
android:layout_
android:layout_
android:textSize="24px"
android:minWidth="220px"/>
<TextView />
</TableRow>
<TableRow android:layout_marginTop="20px">
<TextView />
<TextView
android:text="密 码:"
android:layout_
android:layout_
/>
<EditText
android:id="@+id/pwd"
android:layout_
android:layout_
android:minWidth="220px"
android:textSize="24px"
android:inputType="textPassword"/>
<TextView />
</TableRow>
<TableRow android:layout_marginTop="20px">
<TextView />
<Button
android:id="@+id/login"
android:text="登录"
android:layout_
android:layout_
/>
<Button
android:id="@+id/quit"
android:text="退出"
android:layout_
android:layout_/>
<TextView />
</TableRow>
</TableLayout>
预览效果如图
使用Android 手机进行测试,大功告成
参考技术A 您好,很高兴能帮助您我们项目的前提是你已经将基本的运行环境及sdk都已经安装好了,读者可自行百度环境配置相关内容,本文不再赘述。右键点击new-->Module,Module相当于新建了一个项目。
选择Android Application,点击next
将My Module 和app改成自己项目相应的名字,同时选择支持的Android版本
这一步我们选择Blank Activity,自己手动编写登录界面,而不依赖系统内置的Login Activity,一直点击next,最后点击finish就完成了项目的创建
在project下我们可以看到出现了我们刚才创建的login项目
展开res/layout,点击打开activity_main.xml文件,在这个文件里我们将完成登录界面的编写
这是初始的主界面,还没有经过我们编写的界面,Android Studio有一个很强大的预览功能,相当给力
我们将activity_main.xml的代码替换成如下代码:
<TableLayout xmlns:android="
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:stretchColumns="0,3">
<TableRow>
<TextView />
<TextView
android:text="账 号:"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24px"
/>
<EditText
android:id="@+id/account"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24px"
android:minWidth="220px"/>
<TextView />
</TableRow>
<TableRow android:layout_marginTop="20px">
<TextView />
<TextView
android:text="密 码:"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<EditText
android:id="@+id/pwd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="220px"
android:textSize="24px"
android:inputType="textPassword"/>
<TextView />
</TableRow>
<TableRow android:layout_marginTop="20px">
<TextView />
<Button
android:id="@+id/login"
android:text="登录"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/quit"
android:text="退出"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView />
</TableRow>
</TableLayout>
使用Android 手机进行测试,大功告成
用户登录但未登录时的Android Studio按钮onclick重定向条件
【中文标题】用户登录但未登录时的Android Studio按钮onclick重定向条件【英文标题】:Android studio button onclick redirect condition when user is logged in and not logged in 【发布时间】:2021-07-13 13:36:16 【问题描述】:我是编码新手,我需要有关此特定功能的帮助,如果有人可以提供帮助,我将不胜感激。
我正在开发一个 android studio 项目,并且在我的活动(假设为活动 A)上,我想放置一个按钮,单击该按钮将打开假设活动 B。
我已经能够设置 onclick 功能和意图在按钮单击时打开 Activity B。
但现在我想要的是,如果用户未登录,那么当单击该按钮时它应该将用户带到 LoginActivity,但是当用户登录时它应该将用户直接带到 Activity B。
请问我怎样才能在我的活动中实现这一点?感谢期待解决方案。
下面是我的登录活动代码
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.sckoolboy.premiumapp.R;
public class Login extends AppCompatActivity
EditText mEmail,mPassword;
Button mCreateBtn,mLoginBtn;
TextView forgotTextLink;
ProgressBar progressBar;
FirebaseAuth fAuth;
private FirebaseAuth auth;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
auth = FirebaseAuth.getInstance();
if (auth.getCurrentUser() != null)
startActivity(new Intent(Login.this, Main1.class));
finish();
setContentView(R.layout.activity_login);
mEmail = findViewById(R.id.Email);
mPassword = findViewById(R.id.password);
progressBar = findViewById(R.id.progressBar);
fAuth = FirebaseAuth.getInstance();
mLoginBtn = findViewById(R.id.loginBtn);
mCreateBtn = findViewById(R.id.createText);
forgotTextLink = findViewById(R.id.forgotPassword);
mLoginBtn.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
String email = mEmail.getText().toString().trim();
String password = mPassword.getText().toString().trim();
if(TextUtils.isEmpty(email))
mEmail.setError("Email is Required.");
return;
if(TextUtils.isEmpty(password))
mPassword.setError("PremiumKey is Required.");
return;
if(password.length() < 6)
mPassword.setError("PremiumKey not valid");
return;
progressBar.setVisibility(View.VISIBLE);
// authenticate the user
fAuth.signInWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>()
@Override
public void onComplete(@NonNull Task<AuthResult> task)
if(task.isSuccessful())
Toast.makeText(Login.this, "Premium Successfully Unlocked", Toast.LENGTH_SHORT).show();
startActivity(new Intent(getApplicationContext(),Main1.class));
else
Toast.makeText(Login.this, "Error ! " + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
);
);
mCreateBtn.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
startActivity(new Intent(getApplicationContext(),Register.class));
);
forgotTextLink.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
final EditText resetMail = new EditText(v.getContext());
final AlertDialog.Builder passwordResetDialog = new AlertDialog.Builder(v.getContext());
passwordResetDialog.setTitle("Reset Password ?");
passwordResetDialog.setMessage("Enter Your Email To Received Reset Link.");
passwordResetDialog.setView(resetMail);
passwordResetDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialog, int which)
// extract the email and send reset link
String mail = resetMail.getText().toString();
fAuth.sendPasswordResetEmail(mail).addOnSuccessListener(new OnSuccessListener<Void>()
@Override
public void onSuccess(Void aVoid)
Toast.makeText(Login.this, "Reset Link Sent To Your Email.", Toast.LENGTH_SHORT).show();
).addOnFailureListener(new OnFailureListener()
@Override
public void onFailure(@NonNull Exception e)
Toast.makeText(Login.this, "Error ! Reset Link is Not Sent" + e.getMessage(), Toast.LENGTH_SHORT).show();
);
);
passwordResetDialog.setNegativeButton("No", new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialog, int which)
// close the dialog
);
passwordResetDialog.create().show();
);
使用 firebase 身份验证,我该如何从这里开始
【问题讨论】:
你好。只需使用 IF 条件拆分程序执行(onClickEvent 处理程序的执行): if (loggedIn) startActivity (B) else startActivity(loginActivity) 你能分享你已经拥有的代码吗?您使用的是哪种身份验证? @jonas 我仍在登录活动屏幕上工作,但我同时创建了活动 A 和 B。登录使用 firebase 身份验证。那么,当点击我的应用程序上的任何活动的按钮时,我可以使用任何代码来指导用户是否登录? 如果您使用 Firebase 身份验证,您可以使用:***.com/questions/37873608/… 代码! 请问当按钮被按下并且用户登录时会发生什么? 【参考方案1】:您可以使用 if 块在启动不同活动之间切换,具体取决于用户是否登录。
例如,假设loggedIn
是存储用户是否登录的布尔变量,button
是按钮,
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(v ->
if (loggedIn)
// Start ActivityB, user has logged in
Intent intent = new Intent(/* context here */, Main1.class);
startActivity(intent);
else
// Redirect to LoginActivity, user hasn't logged in
Intent intent = new Intent(/* context here */, Login.class);
startActivity(intent);
);
以及新活动的 XML 设计:
<!-- Root layout above..... -->
<Button
android:text="Log in"
android:id="@+id/button"/>
<!--Other elements below -->
您可以从 Firebase 的 API 获取登录条件,(参考https://***.com/a/44585789/12204281),方法调用应该是:
FirebaseAuth.getInstance().getCurrentUser()
,当用户未登录时,此方法返回null
。
因此您可以使用等号运算符检查该值是否为空并将其存储在loggedIn
:
boolean loggedIn = FirebaseAuth.getInstance().getCurrentUser() != null;
【讨论】:
我已将我的 LoginActivity 的代码添加到问题中,您是否可以检查是否可以根据您的答案实施此解决方案'假设登录是存储用户是否登录的布尔变量" ....... 您的代码似乎没问题。应用程序在 Login 活动上启动,然后如果用户已经登录,他/她将被重定向到 Main1 活动。 是的,但这是我真正想要的,我想在该活动上创建一个新活动,它将包含一个按钮,如果用户未登录我希望它来到这个 LoginActivity,但是如果单击该按钮时用户已登录,则应打开另一个活动。我的目标是确保我创建的新活动只有已登录的活动才能访问 我已经添加了如何实现新活动,可以吗? 我不知道为什么,但我在最终实现过程中仍然遇到了一些代码问题,如果在我添加代码的 Activity 类上显示无法解析符号 'loggedIn' 该怎么办以上是关于如何使用Android Studio开发用户登录界面的主要内容,如果未能解决你的问题,请参考以下文章