今天要做的登录界面是根据原来为前提做的,主要是为了记住密码,这就需要数据存储。即当用户选中了记住密码复选框,并成功登录一次后,如果再启动登录界面,之前输入的用户名和密码就会显示在文本框里。
运行效果图:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.bz0209.login.MainActivity"
android:background="@drawable/bg1"
>
<TextView
android:layout_width="match_parent"
android:layout_height="230dp"
android:background="@drawable/shape"
android:alpha="0.8"
android:id="@+id/textView" />
<LinearLayout
android:id="@+id/input"
android:layout_marginTop="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:id="@+id/username"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/edit_text"
android:ems="10"
android:drawableLeft="@drawable/icon_user"
android:textSize="15sp"
android:hint="Please input your UserName"
>
<requestFocus/>
</EditText>
<EditText
android:id="@+id/password"
android:layout_marginTop="5dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/icon_pass"
android:background="@android:drawable/edit_text"
android:textSize="15sp"
android:hint="Please input your password"
android:inputType="textPassword"
>
<requestFocus/>
</EditText>
</LinearLayout>
<ImageView
android:layout_alignParentBottom="true"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@drawable/deer"/>
<TextView
android:onClick="text"
android:textSize="15sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Forget your Password?"
android:layout_alignBottom="@+id/textView"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:id="@+id/textView2" />
<LinearLayout
android:layout_marginTop="23dp"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_below="@+id/input"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
<CheckBox
android:text="记住密码"
android:textSize="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cbpass"
android:layout_weight="1"
/>
<Button
android:id="@+id/bt_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btn_selector"
android:text="Login"
android:textSize="30dp"
android:onClick="login"
android:layout_weight="1"/>
</LinearLayout>
</RelativeLayout>
MainActivity.java
package com.example.bz0209.login;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private EditText e1,e2;
private SharedPreferences sharedPreferences;
private CheckBox cbpass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
sharedPreferences=getSharedPreferences("rememberpassword", Context.MODE_PRIVATE);
boolean isRemember= sharedPreferences.getBoolean("rememberpassword",false);
if(isRemember)
{
String name=sharedPreferences.getString("name","");
String password=sharedPreferences.getString("password","");
e1.setText(name);
e2.setText(password);
cbpass.setChecked(true);
}
}
private void initViews()
{
e1=(EditText)findViewById(R.id.username);
e2=(EditText)findViewById(R.id.password);
cbpass=(CheckBox)findViewById(R.id.cbpass);
}
public void login(View view)
{
String name=e1.getText().toString();
String password=e2.getText().toString();
if("admi".equals(name)&&"123456".equals(password))
{
SharedPreferences.Editor editor=sharedPreferences.edit();
if(cbpass.isChecked())
{
editor.putBoolean("rememberpassword",true);
editor.putString("name",name);
editor.putString("password",password);
}
else
{
editor.clear();
}
editor.commit();
Intent intent =new Intent(MainActivity.this,info.class);
Bundle b =new Bundle();
String user = e1.getText().toString().trim();
String pass = e2.getText().toString().trim();
String info ="username: "+user +"\n"+ "password: "+pass;
b.putString("username",user);
b.putString("pass",pass);
b.putString("info",info);
intent.putExtras(b);
switch (view.getId()){
case R.id.bt_login:
Toast.makeText(MainActivity.this,info,Toast.LENGTH_LONG).show();
startActivity(intent);
break;
}
finish();
}else {
Toast.makeText(this,"账号或密码有误",Toast.LENGTH_LONG).show();
}
}
}
info.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/user"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30dp"/>
<TextView
android:id="@+id/pass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30dp"/>
<TextView
android:id="@+id/summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30dp"/>
</LinearLayout>
Info.java
package com.example.bz0209.login;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import org.w3c.dom.Text;
/**
* Created by Administrator on 2017/3/9.
*/
public class info extends AppCompatActivity {
private TextView tv1,tv2,tv3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.info);
tv1=(TextView)findViewById(R.id.user);
tv2=(TextView)findViewById(R.id.pass);
tv3=(TextView)findViewById(R.id.summary);
Intent intent =getIntent();
Bundle bundle =intent.getExtras();
String username =bundle.getString("username");
String password =bundle.getString("pass");
String sum =bundle.getString("info");
tv1.setText("Your username is " +username);
tv2.setText("Your password is "+password);
tv3.setText("Your information is "+"\n"+sum);
}
}
点击LOGIN按钮,会把你所输入的信息显示在Info页面上