Android Studio心得-创建登录注册项目

这篇具有很好参考价值的文章主要介绍了Android Studio心得-创建登录注册项目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        首先先了解AndroidStudio是什么:Android Studio是一个由谷歌开发的Android应用程序开发环境,用于开发Android应用程序。它基于JetBrains IntelliJIDEA软件,并包含了许多定制化功能,包括易于使用的分析工具、内存分析工具和代码编辑器等,支持Java、Kotlin等多种编程语言。Android Studio还提供了模拟器和虚拟设备来测试应用程序,可以帮助开发者更加高效地进行Android应用程序开发。
       作为一款Android应用程序开发环境,AndroidStudio具有以下优点:

  1. 界面友好:Android Studio提供了简单直观的界面,并且其操作流畅,易于使用和学习。
  2. 功能强大:Android Studio集成了许多强大的功能,如代码自动完成、代码检查和重构等,方便开发者快速创建高质量的Android应用程序。
  3. 支持多种编程语言:Android Studio支持多种编程语言,包括Java、Kotlin等,开发者可以根据自己的需求选择使用不同的编程语言进行开发。
  4. 良好的集成环境:Android Studio能够与其他工具集成,例如Git等版本控制系统,方便开发者在项目开发过程中协作。
  5. 丰富的插件: Android Studio提供了许多插件来扩展其功能,比如可以安装插件来调试代码、设计图形用户界面等。

 接下来我带大家用Android Studio创建一个登陆注册项目:

1.创建—个新的Android项目,名称为"LoginRegisterDemo"。不需要代码。
2.在布局文件中设计好登录和注册页面的UI界面,可以使用EditText来输入用户名和密码。
首先在login_activity.xml中添加登录页面的U元素:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:id="@+id/editText_userName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请填写用户名"
        android:layout_marginTop="50dp"
        />

    <EditText
        android:id="@+id/editText_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword"
        android:hint="请填写密码"
        android:layout_below="@id/editText_userName"
        />

    <Button
        android:id="@+id/button_login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="登录"
        android:layout_below="@id/editText_password"
        android:layout_centerHorizontal="true"
        />

</RelativeLayout>

然后在register_activity.xml中添加注册页面的UI元素:
 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:id="@+id/editText_userName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请填写用户名"
        android:layout_marginTop="50dp"
        />

    <EditText
        android:id="@+id/editText_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword"
        android:hint="请填写密码"
        android:layout_below="@id/editText_userName"
        />

    <Button
        android:id="@+id/button_register"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="注册"
        android:layout_below="@id/editText_password"
        android:layout_centerHorizontal="true"
        />

</RelativeLayout>

3.在Java代码中创建—个数据库类,用于保存用户信息,并添加相应的表,如用户表。
首先,在app目录下的build.gradle文件中添加Room库的依赖:
 

dependencies {
    def room_version = "2.3.0"

    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"
}

然后定义一个User实体类,用于描述用户信息:
 

@Entity(tableName = "users")
public class User {
    @PrimaryKey(autoGenerate = true)
    public int id;

    public String username;

    public String password;
}

接着定义一个UserDao类,用于与数据库进行交互:
 

@Dao
public interface UserDao {
    @Query("SELECT * FROM users WHERE username = :username AND password = :password")
    User findUser(String username, String password);

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    void insert(User user);
}

最后定义一个AppDatabase类,作为数据库的实体类:
 

@Database(entities = {User.class}, version = 1, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
    private static AppDatabase sInstance;

    public static synchronized AppDatabase getInstance(Context context) {
        if (sInstance == null) {
            sInstance = Room.databaseBuilder(context.getApplicationContext(),
                    AppDatabase.class, "loginregisterdemo.db")
                    .build();
        }
        return sInstance;
    }

    public abstract UserDao userDao();
}

4.创建—个登录Activity和一个注册Activity,并在其中分别添加对应的UI元素与逻辑实现。
首先创建—个LoginActivity类,在其中添加UI元素以及登录逻辑:
 

public class LoginActivity extends AppCompatActivity {

    private EditText mEditTextUsername;
    private EditText mEditTextPassword;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        mEditTextUsername = findViewById(R.id.editText_userName);
        mEditTextPassword = findViewById(R.id.editText_password);

        Button buttonLogin = findViewById(R.id.button_login);
        buttonLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String username = mEditTextUsername.getText().toString();
                String password = mEditTextPassword.getText().toString();

                User user = AppDatabase.getInstance(LoginActivity.this).userDao().findUser(username, password);
                if (user == null) {
                    Toast.makeText(LoginActivity.this, "用户名或密码错误", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}

然后创建一个RegisterActivity类,在其中添加UI元素以及注册逻辑:
 

public class RegisterActivity extends AppCompatActivity {

    private EditText mEditTextUsername;
    private EditText mEditTextPassword;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);

        mEditTextUsername = findViewById(R.id.editText_userName);
        mEditTextPassword = findViewById(R.id.editText_password);

        Button buttonRegister = findViewById(R.id.button_register);
        buttonRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String username = mEditTextUsername.getText().toString();
                String password = mEditTextPassword.getText().toString();

                User user = new User();
                user.username = username;
                user.password = password;
                AppDatabase.getInstance(RegisterActivity.this).userDao().insert(user);

                Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_SHORT).show();
                finish();
            }
        });
    }
}

5.在登录Activity的代码中,通过输入框获取用户输入的用户名和密码,并根据这些信息从数据库中查询用户信息来进行登录验证。
之前在LoginActivity类中已经实现了登录逻辑。如果用户输入的用户名和密码与数据库中的用户信息匹配,则登录成功;否则提示用户名或密码错误。
6.在注册Activity的代码中,通过输入框获取用户的注册信息,并将其保存到数据库中。
之前在RegisterActivity类中已经实现了注册逻辑。当用户填写完注册信息后点击注册按钮时,该信息会被保存到数据库中。
7.在登录Activity和注册Activity中添加相应的按钮监听事件,并在点击按钮时触发对应的事件逻辑。
        之前已经在LoginActivity和RegisterActivity类中分别添加了按钮监听事件,当用户点击登录或注册按钮时,对应的逻辑代码会被执行。以上就是实现Android Studio中登录注册功能的完整步骤和代码。需要注意的是,在实际开发过程中,还需要考虑一些细节问题,比如加密存储密码、输入框输入格式检查等。

接下来是存储用户密码跟加密储存密码的写法又想要的可创建。选写

存储用户密码

 1.在用户输入密码时,通过如下代码获取密码的哈希值:

public static String hashPassword(String password) {
    try {
        MessageDigest digest = MessageDigest.getInstance("SHA-256");
        byte[] hash = digest.digest(password.getBytes(StandardCharsets.UTF_8));
        return Base64.encodeToString(hash, Base64.DEFAULT);
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
        return null;
    }
}

⒉.将此哈希值与用户名一起存储到数据库中。
3.在登录时,通过如下代码检查用户名和密码是否匹配:
 

public static boolean checkPassword(String providedPassword, String storedPasswordHash) {
    String hash = hashPassword(providedPassword);
    return hash != null && hash.equals(storedPasswordHash);
}

       建议每次登录时都重新生成一个哈希值进行比对,以增加安全性。使用哈希值存储密码可以避免明文存储密码,即使数据库泄露也不会直接导致用户密码被泄露。
加密储存密码

下面是使用SHA-256算法对密码进行哈希加密和存储到数据库中的完整代码:
1.定义一个加密工具类:

public class EncryptionUtils {

    public static String hashPassword(String password) {
        try {
            MessageDigest digest = MessageDigest.getInstance("SHA-256");
            byte[] hash = digest.digest(password.getBytes(StandardCharsets.UTF_8));
            return Base64.encodeToString(hash, Base64.DEFAULT);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return null;
        }
    }

    public static boolean checkPassword(String providedPassword, String storedPasswordHash) {
        String hash = hashPassword(providedPassword);
        return hash != null && hash.equals(storedPasswordHash);
    }
}

 2.在注册时,通过如下代码获取用户输入的密码并加密,将加密后的密码保存到数据库中:

String username = mEditTextUsername.getText().toString();
String password = mEditTextPassword.getText().toString();
String encryptedPassword = EncryptionUtils.hashPassword(password); // 哈希加密密码
User user = new User();
user.username = username;
user.encryptedPassword = encryptedPassword; // 保存加密后的密码
AppDatabase.getInstance(RegisterActivity.this).userDao().insert(user);

 3.在登录时,通过如下代码从数据库中读取用户信息,并检查密码是否匹配:

String username = mEditTextUsername.getText().toString();
String password = mEditTextPassword.getText().toString();
User user = AppDatabase.getInstance(LoginActivity.this)
        .userDao()
        .findByUsername(username);
if (user == null) {
    Toast.makeText(LoginActivity.this, "用户名不存在", Toast.LENGTH_SHORT).show();
} else if (EncryptionUtils.checkPassword(password, user.encryptedPassword)) { // 检查密码是否匹配
    Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
} else {
    Toast.makeText(LoginActivity.this, "密码错误", Toast.LENGTH_SHORT).show();
}

       在上述代码中,通过调用EncryptionUtils类的hashPassword()方法对密码进行哈希加密,并将加密后的密码保存到数据库中。而在登录时,则通过调用该类的checkPassword()方法检查用户输入的密码与数据库中保存的加密后的密码是否匹配。

     在实际应用开发中处理用户登录注册时需要注意的事项和建议:

  1. 密码加密:对用户密码进行哈希加密,并且不要使用明文存储用户密码。
  2. 防止重复注册:在用户注册时要保证用户名/手机号/邮箱等唯—性。
  3. 用户信息验证:在用户登录时要对用户输入的信息进行验证,例如,检查用户名是否存在、密码是否正确等。
  4. 记住登录状态:在用户登录成功后,可以通过保存Token等方式来记录用户登录状态,在用户再次打开应用或页面时直接跳转至已登录的状态。
  5. 安全退出:在用户退出登录时,要及时清除缓存和Cookie等信息,并提示用户已退出登录。
  6. 隐私保护:在处理用户数据时要遵守相关法律法规,保护用户隐私不被泄露。

以上是登录注册处理中常见的一些注意事项,此外也要结合具体业务场景进行适当的调整和优化。

额外:

要在 Android Studio 中实现点击按钮跳转到另一个 Activity,你需要按照以下步骤进行操作:

  1. 首先,在你的项目中创建一个新的 Activity(比如 SecondActivity),用于跳转后显示的页面。可以通过右键点击项目文件夹 -> New -> Activity -> Empty Activity 来创建。

  2. 在你的源 Activity(即当前页面)的 XML 布局文件中,添加一个按钮控件,并为其设置一个唯一的 android:id。例如:

<Button
    android:id="@+id/nextButton"
    android:text="跳转到下一页"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

 

   4. 打开源 Activity 的 Java 文件(即当前页面对应的 Activity 类),在 onCreate 方法中找到按钮,并为其设置点击事件监听器。在监听器中,使用 Intent 实例来指定要跳转到的目标 Activity。例如:

Button nextButton = findViewById(R.id.nextButton);
nextButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(CurrentActivity.this, SecondActivity.class);
        startActivity(intent);
    }
});

确保将 CurrentActivity 替换为当前页面的类名,SecondActivity 替换为你创建的目标 Activity 的类名。

   5. 最后,在 AndroidManifest.xml 文件中,将第 3 步中创建的目标 Activity 添加为一个 <activity> 标签。确保 android:name 属性的值与你创建的目标 Activity 类的名称一致。例如:

 

<activity
    android:name=".SecondActivity"
    android:label="Second Activity" />

现在,当用户点击源 Activity 的按钮时,就会启动目标 Activity,并跳转到该页面。 

学习使用Android Studio编写登录和注册功能需要掌握以下几个方面:

  1. 基础知识:熟悉Android开发基础知识,如布局、控件、事件处理等。

  2. UI设计:关注良好的UI设计和用户体验,设计简洁明了的界面并考虑不同设备屏幕的适配。

  3. 表单验证和数据处理:对用户输入进行合法性验证,并采取相应的处理措施。

  4. 数据存储:学习如何使用数据库或本地存储技术来保存和检索用户信息。

  5. 安全性考虑:保护用户隐私和账号安全,采取相应的加密和安全处理措施。

  6. 逻辑处理和错误处理:处理登录和注册过程中的逻辑流程,并提示用户合适的错误信息。

  7. 前后端交互:与后端服务器进行数据交互,包括发送请求、解析响应和处理网络连接问题。

总的来说,学习使用Android Studio编写登录和注册功能需要深入理解Android开发知识,同时关注UI设计、数据处理、安全性和网络交互等方面。通过不断实践和积累经验,可以逐渐掌握这一技能 。文章来源地址https://www.toymoban.com/news/detail-744707.html

到了这里,关于Android Studio心得-创建登录注册项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android Studio —— Activity组件(课后作业:登录和注册App)

    运行效果图   主界面(初始),注册界面,登录界面,主界面(注册和登录之后) 实现步骤 1.设计主界面,编写activity_main.xml 注:(1) 按钮的格式是自己设计的,如下 注:(2)需编写strings.xml 2.创建两个activity(会自动创建对应的layout布局文件)   3.设计登录和注册界面,编写

    2024年02月05日
    浏览(37)
  • Android studio连接MySQL并完成简单的登录注册功能

    近期需要完成一个Android项目,那先从与数据库交互最简单的登陆注册开始吧,现记录过程如下: 此篇文章的小demo主要涉及数据库的连接,以及相应信息的查找与插入。 我已将源码上传至GitHub: https://github.com/changyan-maker/LoginApp 首先展示一下完成效果。 数据库设计: 数据库

    2024年01月17日
    浏览(35)
  • 用Android Studio编写一个登录界面和注册界面并可以跳转

    下面是使用 Android Studio 编写一个简单的登录界面和注册界面,并实现跳转的示例代码。 首先,在 res/layout 目录下创建一个名为 activity_login.xml 的布局文件,作为登录界面的布局: 接下来,在 res/layout 目录下创建一个名为 activity_register.xml 的布局文件,作为注册界面的布局:

    2024年04月09日
    浏览(76)
  • Android Studio课程心得

    Android Studio 课程是我学习 Android 开发过程中的一次非常宝贵的经历。在这门课程中,我学习了如何使用 Android Studio 进行 Android 应用程序的开发,并且通过完成项目和作业来实践和巩固所学知识。在学习的过程中我遇到了一些困难,但是通过不断地尝试和探索,最终我都找到了

    2024年02月02日
    浏览(34)
  • ffmpeg-android studio创建jni项目

    android - defaultConfig -externalNativeBuild - cmake 配置c++使用标准 android - externalNativeBuild - cmake 1 、配置cmake文件路径 2、配置cmake的版本 cmake_minimum_required cmake最低版本要求 project 设置项目名称 add_library 添加库并设置库的源文件 1、 Normal Libraries name:库名称 STATIC|SHARED|MODULE:库类型(静态

    2024年02月09日
    浏览(37)
  • Android Studio 2022.1.1创建项目的Gradle配置

    今天使用Android Studio建了一个新项目,遇到了不少问题,网上也找了不少解决方案都无效(可能Studio版本、项目版本等都不一样,解决办法也不一样吧),最后问题解决,总结梳理以下几点: Android Studio版本:2022.1.1 Gradle版本:7.5 Android Gradle Plugin Version:7.4.2 JDK版本:Java 1

    2024年02月06日
    浏览(40)
  • Flutter在Android Studio上创建项目与构建模式

    一、安装插件     1、前提条件,安装配置好Android Studio环境     2、安装Flutter和Dart插件          Linux或者Windows平台: 1)、打开 File    Settings。 2)、在左侧列表中,选择 \\\" Plugins \\\" 右侧上方面板选中  \\\"Marketplace\\\" 在搜索框中输入“flutter”,选择Flutter插件,点击“Install”安

    2024年02月04日
    浏览(40)
  • Android Studio 创建项目不自动生成BuildConfig文件

    今天在AS上新建项目发现找不到BuildConfig文件,怎么clear都不行。通过多方面查找发现原来gradle版本不同造成的,Gradle 8.0默认不生成 BuildConfig 文件。 如上图,8.0版本是没有source文件夹 上图是低于8.0版本有source文件夹 针对这个问题,有两种解决办法        方法一:降低Gr

    2024年01月22日
    浏览(40)
  • 【安卓app开发一】Android Studio + Bmob后端云实现注册&登录账号、密码找回、意见反馈及数据可视化

    目录 前言 概览 Bmob后端云介绍 Bmob后端云与Android Studio配置 一、Bmob后端云  二、Android Studio配置 工具类 一、User类 二、Suit类 三、Code类 实现类  一、登录代码  二、注册代码  三、找回密码代码  四、想法反馈代码         本项目尚在开发阶段,主要针对的是安卓用户,通

    2024年02月08日
    浏览(48)
  • Android studio心得——fragment动态加载

    在Android应用程序中,Fragment是一种可以嵌入Activity中的组件。通过 Fragment,我们可以将UI 目录 前言 一、什么是Android Studio 二、简介Fragment 三、学期知识汇总 四、什么是碎片(Fragment) 五、页面实现步骤 1.程序APP主界面的常用例子 2.定义4个Fragment 3.activity_main.xml代码展示 4.四个

    2024年02月09日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包