开发工具: Android Studio
(当输入账号“admin”密码“123456”时登陆效果)
实现功能:使用SharedPreferences 存储数据的功能,实现数据的保存和提取具体实现如下:
主界面main_activity布局代码如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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" android:orientation="vertical" tools:context="com.example.administrator.testlogin.MainActivity"> <!--用户名--> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:orientation="horizontal" android:layout_gravity="center"> <TextView android:text="用户名 :" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <EditText android:id="@+id/account" android:gravity="center" android:padding="5dp" android:layout_weight="1" android:layout_width="0dp" android:layout_height="35dp" android:hint="请输入您的账户 :"/> </LinearLayout> <!--密码--> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:orientation="horizontal" android:layout_gravity="center"> <TextView android:text="密码 :" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <EditText android:id="@+id/password" android:gravity="center" android:padding="5dp" android:layout_width="0dp" android:layout_height="35dp" android:layout_weight="1" android:hint="请输入您的密码 :"/> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <CheckBox android:id="@+id/remember_pass" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="18sp" android:text="Remember password"/> </LinearLayout> <Button android:id="@+id/login" android:layout_width="match_parent" android:layout_height="60dp" android:text="Login"/> </LinearLayout>
其中Main_activity的代码如下:
package com.example.administrator.testlogin; import android.content.Intent; import android.content.SharedPreferences; import android.preference.Preference; import android.preference.PreferenceManager; 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.Checkable; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private SharedPreferences pref; private SharedPreferences.Editor editor; //密码框 private EditText accountEdit; private EditText passwordEdit; //登录按钮 private Button login; //复选框 private CheckBox rememberPass; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化数据 init(); pref = PreferenceManager.getDefaultSharedPreferences(this); boolean isRemember = pref.getBoolean("remember_password",false); //当点击了记住密码后执行下面的步骤 if(isRemember){ String account = pref.getString("account",""); String password = pref.getString("password",""); accountEdit.setText(account); passwordEdit.setText(password); rememberPass.setChecked(true); } login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String account = accountEdit.getText().toString(); String password = passwordEdit.getText().toString(); //如果账号是admin密码是123456就认为登录成功 if (account.equals("admin") & password.equals("123456")) { editor = pref.edit(); if (rememberPass.isChecked()) { editor.putBoolean("remember_password", true); editor.putString("account", account); editor.putString("password", password); } else { editor.clear(); } editor.apply(); Intent intent = new Intent(MainActivity.this, LoginActivity.class); startActivity(intent); finish(); } else { Toast.makeText(MainActivity.this, "account or password is invalid", Toast.LENGTH_SHORT).show(); } } }); } //初始化数据 private void init() { accountEdit = (EditText) findViewById(R.id.account); passwordEdit = (EditText) findViewById(R.id.password); rememberPass = (CheckBox) findViewById(R.id.remember_pass); login = (Button) findViewById(R.id.login); } }
还需要设计一个登陆后的界面验证登陆效果成功:
LoginActivity界面如下:
package com.example.administrator.testlogin; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; /** * Created by Administrator on 2018/3/23/023. */ public class LoginActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); } }
其布局login.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" android:gravity="center"> <TextView android:textSize="30sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登录成功欢迎来到主界面"/> </LinearLayout>
注意在完成界面设计后要将LoginActivity界面添加到AndroidManifest.xml文件下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.administrator.testlogin"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!--登录界面--> <activity android:name = "LoginActivity"> </activity> </application> </manifest>
运行结果如下: