zoukankan      html  css  js  c++  java
  • Android记账本开发(二):实现注册登录功能

    今天的工作是实现了注册登录功能。

    根据逻辑,启动app时就运行,只有成功登录才跳入主界面,但支持注册功能,注册成功则可登录。

    首先创建LoginActivity,登录应该由数据库中存储的用户名密码实现,但数据库还未编写,这里则提前设置账号密码,只为实现简单的登录功能。

    这是Login前台的代码实现,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"
        android:gravity="center_horizontal"
        android:orientation="vertical"
        tools:context=".activity.LoginActivity">
    
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#2196F3"
            android:orientation="horizontal">
    
            <ImageView
                android:id="@+id/imageView3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                app:srcCompat="@drawable/default_user_logo" />
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="50dp"
            android:orientation="vertical">
    
            <TextView
                android:id="@+id/textView2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="用户昵称:" />
    
            <EditText
                android:id="@+id/editTextName"
                android:layout_width="match_parent"
                android:layout_height="58dp"
                android:ems="10"
                android:inputType="textPersonName"
                android:text="" />
    
            <TextView
                android:id="@+id/textViewPassword"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="密码:" />
    
            <EditText
                android:id="@+id/editTextPassword"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="textPassword"
                android:text="" />
    
            <Button
                android:id="@+id/buttonLogin"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="登录" />
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="20dp"
            android:layout_marginRight="5dp">
            <TextView
                android:id="@+id/textView3"
                android:layout_height="wrap_content"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:text="" />
    
            <TextView
                android:id="@+id/textViewRegister"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_gravity="end"
                android:text="@string/login_register"
                android:textColor="@color/colorPrimaryDark" />
        </LinearLayout>
    
    </LinearLayout>

    效果如下:

    需要为注册用户添加调转的事件监听器到RegisterActivity去注册用户,在该Activity中编写跳转代码即可,如下:

    package com.example.thorineaccount.activity;
    
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import com.example.thorineaccount.MainActivity;
    import com.example.thorineaccount.R;
    
    /**
     * A login screen that offers login via email/password.
     */
    public class LoginActivity extends AppCompatActivity {
        Button btnLogin;
        EditText editTextName,editTextPwd;
        TextView textViewRegister;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_login);
            btnLogin=(Button) this.findViewById(R.id.buttonLogin);
            editTextName=(EditText)this.findViewById(R.id.editTextName);
            editTextPwd=(EditText)this.findViewById(R.id.editTextPassword);
            textViewRegister=(TextView)this.findViewById(R.id.textViewRegister);
            btnLogin.setOnClickListener(new View.OnClickListener() {//实现登录功能
                @Override
                public void onClick(View view) {
                    login();
                }
            });
            textViewRegister.setOnClickListener(new View.OnClickListener() {//实现注册功能
                @Override
                public void onClick(View view) {
                    register();
                }
            });
    
        }
    
        private void register()//跳转到注册页面
        {
            Intent intent=new Intent();
            intent.setClass(this,RegisterActivity.class);
            startActivity(intent);
        }
    
        private void login()//登录校准
        {
            String name=editTextName.getText().toString();
            String pwd=editTextPwd.getText().toString();
            if(name.equals("admin") && pwd.equals("admin"))
            {
                Intent intent = new Intent(this, MainActivity.class);
                startActivity(intent);
            }
            else
            {
                Toast.makeText(this,"登录失败!",Toast.LENGTH_LONG).show();
            }
        }
    }

    下面首先是注册页面的布局代码,activity_register.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"
        android:layout_margin="5dp"
        tools:context=".activity.RegisterActivity">
    
        <ImageView
            android:id="@+id/imageView4"
            android:layout_width="match_parent"
            android:layout_height="120dp"
            app:srcCompat="@drawable/user_reg" />
    
        <TextView
            android:id="@+id/textViewName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/imageView4"
            android:layout_marginTop="10dp"
            android:text="昵称:"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="35dp" />
    
        <EditText
            android:id="@+id/editTextName"
            android:layout_width="334dp"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textViewName"
            android:layout_marginStart="35dp"
            android:layout_marginTop="10dp"
            android:layout_marginEnd="35dp"
            android:ems="10"
            android:inputType="textPersonName"
            android:text="Dear"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true" />
    
        <TextView
            android:id="@+id/textViewPassword"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/editTextName"
            android:layout_marginTop="10dp"
            android:text="密码:"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="35dp" />
    
        <EditText
            android:id="@+id/editTextPassword"
            android:layout_width="334dp"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textViewPassword"
            android:layout_marginStart="35dp"
            android:layout_marginEnd="35dp"
            android:layout_marginBottom="10dp"
            android:ems="10"
            android:inputType="numberPassword"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true" />
    
        <TextView
            android:id="@+id/textViewPassword2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/editTextPassword"
            android:layout_marginTop="10dp"
            android:text="确认密码:"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="35dp" />
    
        <EditText
            android:id="@+id/editTextPassword2"
            android:layout_width="332dp"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textViewPassword2"
            android:layout_marginStart="35dp"
            android:layout_marginTop="10dp"
            android:layout_marginEnd="35dp"
            android:ems="10"
            android:inputType="numberPassword"
            android:layout_alignParentRight="true" />
    
        <TextView
            android:id="@+id/textViewPrompt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/editTextPassword2"
            android:layout_marginTop="10dp"
            android:text="密码提示:"
            android:layout_marginLeft="35dp" />
    
        <EditText
            android:id="@+id/editTextPrompt"
            android:layout_width="324dp"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textViewPrompt"
            android:layout_marginStart="35dp"
            android:layout_marginTop="10dp"
            android:layout_marginEnd="35dp"
            android:ems="10"
            android:inputType="textPersonName"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true" />
    
        <Button
            android:id="@+id/buttonRegister"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="30dp"
            android:layout_centerInParent="true"
            android:background="@drawable/login_button_shape"
            android:text="注册" />
    </RelativeLayout>

    界面样式如下:

    然后是注册的逻辑结构:

    package com.example.thorineaccount.activity;
    
    import android.content.Context;
    import android.content.SharedPreferences;
    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 com.example.thorineaccount.R;
    
    
    public class RegisterActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_register);
            Button buttonRegister = (Button)findViewById(R.id.buttonRegister);
            buttonRegister.setOnClickListener(new View.OnClickListener() {//注册按钮的点击事件
                @Override
                public void onClick(View v) {
                    register();
                }
            });
        }
    
        private void register(){
            EditText editTextName = (EditText)findViewById(R.id.editTextName);
            EditText editTextPassword = (EditText)findViewById(R.id.editTextPassword);
            EditText editTextPassword2 = (EditText)findViewById(R.id.editTextPassword2);
            EditText editTextPrompt = (EditText) findViewById(R.id.editTextPrompt);
    
            String name = editTextName.getText().toString();
            if(name.length()<1) {
                Toast.makeText(this,"昵称不能为空",Toast.LENGTH_SHORT).show();
                return;
            }
            String pwd = editTextPassword.getText().toString();
            String pwd2 = editTextPassword2.getText().toString();
            if (pwd.length() < 1){
                Toast.makeText(this,"密码不能为空.",Toast.LENGTH_LONG).show();
                return;
            }
            if (!pwd.equals(pwd2)){
                Toast.makeText(this,"两次密码不相同.",Toast.LENGTH_LONG).show();
                return;
            }
            String prompt = editTextPrompt.getText().toString();
            //用SharedPreferences方式存储数据
            SharedPreferences sp = this.getSharedPreferences("tinyaccount", Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = sp.edit();
            editor.putString("name",name);
            editor.putString("password",pwd);
            editor.putString("prompt",prompt);
    
            editor.apply();
            finish();
        }
    
    }

     至此便可完成一个简单的登录注册功能。

  • 相关阅读:
    170325 第六章应用层 域名系统 DNS
    文件操作(Linux系统调用)
    进程优先级,进程nice值和%nice的解释
    常用的操作系统进程调度算法
    fork函数返回值问题
    进度条的实现
    find命令
    单链表的插入排序
    B树
    排序
  • 原文地址:https://www.cnblogs.com/dongao/p/12300214.html
Copyright © 2011-2022 走看看