团队博客(二)

5.4

完成登录注册界面的设计以及相关java文件的代码,但仍存在一些问题

 xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#4169E1">


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_gravity="center"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:textColor="#000000"
        android:textSize="55sp"
        android:textStyle="bold"
        android:text="福星会议" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="10dp"
        android:src="@drawable/huiyi"/>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="50dp"
            android:text="用户:"
            android:drawableLeft="@drawable/yonghu"
            android:textColor="#000000"
            android:textSize="28dp" />

        <EditText
            android:layout_width="250dp"
            android:layout_height="wrap_content"
            android:id="@+id/username"
            android:layout_marginTop="50dp"
            android:layout_marginLeft="5dp"
            android:background="@drawable/bg_username"
            android:maxLines="1"
            android:singleLine="true"
            android:textSize="28dp"
            android:hint="请输入用户名"
            android:paddingLeft="10dp"
            />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginTop="20dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="密码:"
            android:drawableLeft="@drawable/mima"
            android:textColor="#000000"
            android:textSize="28dp" />

        <EditText
            android:layout_width="250dp"
            android:layout_height="wrap_content"
            android:id="@+id/password"
            android:background="@drawable/bg_username"
            android:layout_marginLeft="5dp"
            android:maxLines="1"
            android:textSize="28dp"
            android:hint="请输入密码"
            android:singleLine="true"
            android:paddingLeft="10dp"
            android:inputType="textWebPassword"
            />//隐藏密码

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginTop="20dp">
        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/checkbox_zhanghao"
            android:orientation="vertical"
            android:layout_marginLeft="5dp"
            android:checked="false"
            android:textSize="20dp"
            android:text="自动登录"
            android:textColor="#000000"
            />

    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginTop="20dp">
        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/checkbox_text"
            android:orientation="vertical"
            android:layout_marginLeft="5dp"
            android:checked="false"
            android:textSize="20dp"
            android:text="记住密码"
            android:textColor="#000000"
            />

    </LinearLayout>

    <Button
        android:id="@+id/btn_login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:layout_marginTop="5dp"
        android:background="@drawable/bg_btn_1"
        android:paddingLeft="40dp"
        android:paddingRight="40dp"
        android:text="登录"
        android:textSize="30dp" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:orientation="horizontal"
        android:paddingTop="40dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="忘记密码?"
            android:layout_marginLeft="25dp"
            android:textSize="30sp"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/btn_register"
            android:layout_marginLeft="70dp"
            android:paddingLeft="40dp"
            android:paddingRight="40dp"
            android:textSize="30sp"
            android:text="注册" />



    </LinearLayout>

</LinearLayout>

java

package com.example.fuxing;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.example.fuxing.service.UserService;

import java.util.Map;

public class LoginActivity extends AppCompatActivity {


    private CheckBox rem_pw;
    private CheckBox auto_login;
    private EditText username;
    private EditText password;
    private Button login;
    private TextView register;
    private SharedPreferences sp;

    @SuppressLint("WrongConstant")
    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.activity_login );//即activity_login.xml
        sp = this.getSharedPreferences( "userInfo", Context.MODE_PRIVATE );
            username = findViewById( R.id.username );
            password = findViewById( R.id.password );
            login = findViewById( R.id.btn_login );
            register = findViewById( R.id.btn_register );
            rem_pw = findViewById( R.id.checkbox_text );
            auto_login = findViewById( R.id.checkbox_zhanghao );
        /*Map<String, String> map=User.Get(this);
        if(map!=null){
            username.setText(map.get("user"));
            password.setText(map.get("key"));
        }*/

        //判断记住密码多选框的状态
        if(sp.getBoolean("ISCHECK", true))
        {
            //设置默认是记录密码状态
            rem_pw.setChecked(true);
            username.setText(sp.getString("USER_NAME", ""));
            password.setText(sp.getString("PASSWORD", ""));
            //判断自动登陆多选框状态
            if(sp.getBoolean("AUTO_ISCHECK", true))
            {
                //设置默认是自动登录状态
                auto_login.setChecked(true);
                //跳转界面
                Intent intent = new Intent(LoginActivity.this,MainActivity.class);
                LoginActivity.this.startActivity(intent);

            }
        }

        //登录事件
            login.setOnClickListener( new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String name = username.getText().toString();
                    System.out.println( name );
                    String pass = password.getText().toString();
                    System.out.println( pass );

                    Log.i( "TAG", name + "_" + pass );
                    UserService uService = new UserService( LoginActivity.this );
                    boolean flag = uService.login( name, pass );

                    if (flag) {
                        Log.i( "TAG", "登录成功" );
                        Toast.makeText( LoginActivity.this, "登录成功", Toast.LENGTH_LONG ).show();
                        //登录成功和记住密码框为选中状态才保存用户信息
                        if(rem_pw.isChecked())
                        {
                            //记住用户名、密码、
                            SharedPreferences.Editor editor = sp.edit();
                            editor.putString("USER_NAME", name);
                            editor.putString("PASSWORD", pass);
                            editor.commit();
                        }
                        //跳转界面
                        Intent intent = new Intent( LoginActivity.this, MainActivity.class );
                        startActivity( intent );
                    }
                    else {
                        Log.i( "TAG", "登录失败" );
                        Toast.makeText( LoginActivity.this, "登录失败", Toast.LENGTH_LONG ).show();
                    }
                }
            } );

        rem_pw.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
                if (rem_pw.isChecked()) {

                    System.out.println("记住密码已选中");
                    sp.edit().putBoolean("ISCHECK", true).commit();

                }else {

                    System.out.println("记住密码没有选中");
                    sp.edit().putBoolean("ISCHECK", false).commit();

                }

            }
        });

        //监听自动登录多选框事件
        auto_login.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
                if (auto_login.isChecked()) {
                    System.out.println("自动登录已选中");
                    sp.edit().putBoolean("AUTO_ISCHECK", true).commit();

                } else {
                    System.out.println("自动登录没有选中");
                    sp.edit().putBoolean("AUTO_ISCHECK", false).commit();
                }
            }
        });

        //注册事件
        register.setOnClickListener( new View.OnClickListener() {
                public void onClick(View v) {
                    Intent intent = new Intent( LoginActivity.this, RegisterActivity.class );
                    startActivity( intent );
                }
            } );
        }
    }
原文地址:https://www.cnblogs.com/wangdayang/p/14762330.html