android记事本——登陆页面

实现效果

在这里插入图片描述

实现功能:

登陆界面含有用户名和密码,输入相应的内容,点击登陆按钮,系统获取输入框里面的内容,判断输入框是否与内容,没有输入则提示用户输入内容,然后判断输入的对应的用户名与密码是否存在于SharedPreference,如果存在则提示登陆成功,跳转页面,否则提示用户不存在。

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">
    <!--标题栏-->
    <include layout="@layout/main_title_bar"></include>
    <!--显示头像,记得加入id iv_head -->
    <ImageView
        android:id="@+id/iv_head"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginTop="20dp"
        android:layout_gravity="center_horizontal"
        android:background="@drawable/touxiang"/>
    <!--输入框-->
    <EditText
        android:id="@+id/et_user_name"
        android:layout_width="fill_parent"
        android:layout_height="45dp"
        android:layout_marginTop="30dp"
        android:layout_marginLeft="60dp"
        android:layout_marginRight="60dp"
        android:layout_gravity="center_horizontal"
        android:drawableLeft="@drawable/name"
        android:drawablePadding="10dp"
        android:paddingLeft="8dp"
        android:gravity="center_vertical"
        android:hint="请输入用户名"
        android:singleLine="true"
        android:textColor="#204051"
        android:textColorHint="#a3a3a3"
        android:textSize="16sp"/>
    <!--输入框-->
    <EditText
        android:id="@+id/et_psw"
        android:layout_width="fill_parent"
        android:layout_height="45dp"
        android:layout_gravity="center_horizontal"
        android:layout_marginLeft="60dp"
        android:layout_marginRight="60dp"
        android:drawableLeft="@drawable/password"
        android:drawablePadding="10dp"
        android:paddingLeft="8dp"
        android:gravity="center_vertical"
        android:hint="请输入密码"
        android:inputType="textPassword"
        android:singleLine="true"
        android:textColor="#204051"
        android:textColorHint="#a3a3a3"
        android:textSize="16sp"/>
    <!--按钮-->
    <Button
        android:id="@+id/btn_login"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_marginTop="35dp"
        android:layout_marginLeft="100dp"
        android:layout_marginRight="100dp"
        android:layout_gravity="center_horizontal"
        android:text="登 录"
        android:textColor="@android:color/white"
        android:color="@color/colorPrimary"
        android:textSize="18sp"/>
    <!--显示tv register , find_psw -->
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginTop="35dp"
        android:layout_marginLeft="35dp"
        android:layout_marginRight="35dp"
        android:gravity="center_horizontal"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/tv_register"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="left"
            android:padding="8dp"
            android:text="立即注册"
            android:textColor="@android:color/darker_gray"
            android:textSize="12sp" />
        <!--layout_weight="1" layout_width="0dp"实现均分效果-->
        <TextView
            android:id="@+id/tv_find_psw"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="right"
            android:padding="8dp"
            android:text="找回密码?"
            android:textColor="@android:color/darker_gray"
            android:textSize="12sp" />
    </LinearLayout>
</LinearLayout>

java文件:
LogonActivity.java

package com.example.lsl.daily_note;

import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import android.graphics.Color;
import android.graphics.drawable.Drawable;

public class LogonActivity extends AppCompatActivity {
    private TextView tv_main_title;//标题
    private TextView tv_register,tv_find_psw;//返回键,显示的注册,找回密码
    private Button btn_login;//登录按钮
    private String userName,psw,spPsw;//获取的用户名,密码,加密密码
    private EditText et_user_name,et_psw;//编辑框
    @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        //设置此界面为竖屏
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        init();
//      登陆页面
//        设置姓名图标大小
        EditText editName = (EditText) findViewById(R.id.et_user_name);
        Drawable name = getResources().getDrawable(R.drawable.name);
        name.setBounds(0, 0, 50, 50);//第一0是距左边距离,第二0是距上边距离,40分别是长宽
        editName.setCompoundDrawables(name, null, null, null);//只放左边

//        设置密码图标大小
        EditText editPassword = (EditText) findViewById(R.id.et_psw);
        Drawable password = getResources().getDrawable(R.drawable.password);
        password.setBounds(0, 0, 50, 50);//第一0是距左边距离,第二0是距上边距离,40分别是长宽
        editPassword.setCompoundDrawables(password, null, null, null);//只放左边

//        设置按钮颜色
        Button button = (Button) findViewById(R.id.btn_login);
        button.setBackgroundColor(Color.parseColor("#84a9ac"));
    }

        private void init() {
            //从main_title_bar中获取的id
            tv_main_title= (TextView) findViewById(R.id.tv_main_title);
            tv_main_title.setText("登录");
            tv_register= (TextView) findViewById(R.id.tv_register);
            tv_find_psw= (TextView) findViewById(R.id.tv_find_psw);
            btn_login= (Button) findViewById(R.id.btn_login);
            et_user_name= (EditText) findViewById(R.id.et_user_name);
            et_psw= (EditText) findViewById(R.id.et_psw);
            //立即注册控件的点击事件
            tv_register.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //为了跳转到注册界面,并实现注册功能
                    Intent intent=new Intent(LogonActivity.this,RegisterActivity.class);
                    startActivityForResult(intent, 1);
                    LogonActivity.this.finish();
                }
            });
            //找回密码控件的点击事件
            tv_find_psw.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //跳转到找回密码界面(此页面暂未创建)
                }
            });
            //登录按钮的点击事件
            btn_login.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //开始登录,获取用户名和密码 getText().toString().trim();
                    userName=et_user_name.getText().toString().trim();
                    psw=et_psw.getText().toString().trim();
                    //对当前用户输入的密码进行MD5加密再进行比对判断, MD5Utils.md5( ); psw 进行加密判断是否一致
                    String md5Psw= MD5Utils.md5(psw);
                    // md5Psw ; spPsw 为 根据从SharedPreferences中用户名读取密码
                    // 定义方法 readPsw为了读取用户名,得到密码
                    spPsw=readPsw(userName);
                    // TextUtils.isEmpty
                    if(TextUtils.isEmpty(userName)){
                        Toast.makeText(LogonActivity.this, "请输入用户名", Toast.LENGTH_SHORT).show();
                        return;
                    }else if(TextUtils.isEmpty(psw)){
                        Toast.makeText(LogonActivity.this, "请输入密码", Toast.LENGTH_SHORT).show();
                        return;
                        // md5Psw.equals(); 判断,输入的密码加密后,是否与保存在SharedPreferences中一致
                    }else if(md5Psw.equals(spPsw)){
                        //一致登录成功
                        Toast.makeText(LogonActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
                        //保存登录状态,在界面保存登录的用户名 定义个方法 saveLoginStatus boolean 状态 , userName 用户名;
                        saveLoginStatus(true, userName);
                        //登录成功后关闭此页面进入主页
                        Intent data=new Intent();
                        //datad.putExtra( ); name , value ;
                        data.putExtra("isLogin",true);
                        //RESULT_OK为Activity系统常量,状态码为-1
                        // 表示此页面下的内容操作成功将data返回到上一页面,如果是用back返回过去的则不存在用setResult传递data值
                        setResult(RESULT_OK,data);
                        //销毁登录界面
                        LogonActivity.this.finish();
                        //跳转到主界面,登录成功的状态传递到 MainActivity 中
                        startActivity(new Intent(LogonActivity.this, ItemDetailActivity.class));
                        return;
                    }else if((spPsw!=null&&!TextUtils.isEmpty(spPsw)&&!md5Psw.equals(spPsw))){
                        Toast.makeText(LogonActivity.this, "输入的用户名和密码不一致", Toast.LENGTH_SHORT).show();
                        return;
                    }else{
                        Toast.makeText(LogonActivity.this, "此用户名不存在", Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }
        /**
         *从SharedPreferences中根据用户名读取密码
         */
        private String readPsw(String userName){
            //getSharedPreferences("loginInfo",MODE_PRIVATE);
            //"loginInfo",mode_private; MODE_PRIVATE表示可以继续写入
            SharedPreferences sp=getSharedPreferences("loginInfo", MODE_PRIVATE);
            //sp.getString() userName, "";
            return sp.getString(userName , "");
        }
        /**
         *保存登录状态和登录用户名到SharedPreferences中
         */
        private void saveLoginStatus(boolean status,String userName){
            //saveLoginStatus(true, userName);
            //loginInfo表示文件名  SharedPreferences sp=getSharedPreferences("loginInfo", MODE_PRIVATE);
            SharedPreferences sp=getSharedPreferences("loginInfo", MODE_PRIVATE);
            //获取编辑器
            SharedPreferences.Editor editor=sp.edit();
            //存入boolean类型的登录状态
            editor.putBoolean("isLogin", status);
            //存入登录状态时的用户名
            editor.putString("loginUserName", userName);
            //提交修改
            editor.commit();
        }
        /**
         * 注册成功的数据返回至此
         * @param requestCode 请求码
         * @param resultCode 结果码
         * @param data 数据
         */
        @Override
        //显示数据, onActivityResult
        //startActivityForResult(intent, 1); 从注册界面中获取数据
        //int requestCode , int resultCode , Intent data
        // LoginActivity -> startActivityForResult -> onActivityResult();
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            //super.onActivityResult(requestCode, resultCode, data);
            super.onActivityResult(requestCode, resultCode, data);
            if(data!=null) {
                //是获取注册界面回传过来的用户名
                String userName = data.getStringExtra("userName");
                if (!TextUtils.isEmpty(userName)) {
                    //设置用户名到 et_user_name 控件
                    et_user_name.setText(userName);
                    //et_user_name控件的setSelection()方法来设置光标位置
                    et_user_name.setSelection(userName.length());
                }
            }

    }
}

下一篇——记事本记事列表的实现

  • 7
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值