前言:
期末了,期末大作业也来了,本篇将记录我的登录页面制作。如有不完善或错误的地方,欢迎大佬指出Orz
具体判断用户名与名匹配,因为各自情况不同,本篇不不涉及
UI布局
主体布局
布局采用了线性布局,xml的代码如下(记录时)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| <?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:gravity="center"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登录" android:layout_marginBottom="50dp" android:textColor="#1097DF" android:textSize="35dp" android:textStyle="bold" ></TextView> <EditText android:drawableLeft="@drawable/yonghu" android:layout_width="300dp" android:layout_height="wrap_content" android:layout_marginBottom="20dp" android:id="@+id/etuser" android:hint="请输入用户名" android:background="@drawable/edittext_style" ></EditText> <EditText android:drawableLeft="@drawable/mima" android:layout_width="300dp" android:layout_height="wrap_content" android:id="@+id/etpwd" android:hint="请输入密码" android:inputType="textPassword" android:background="@drawable/edittext_style" ></EditText> <CheckBox android:layout_width="300dp" android:layout_height="wrap_content" android:id="@+id/checkbox" android:textColor="#2196F3" android:text="记住密码" ></CheckBox> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="10dp" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="10dp" android:text="登录" android:id="@+id/Login_btn" ></Button> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:onClick="Back" android:text="退出" android:id="@+id/Back_btn" ></Button></LinearLayout> </LinearLayout>
|
上面有用到两个图标资源(即android:drawableLeft="@drawable/mima"
和android:drawableLeft="@drawable/yonghu"
),本篇不提供,可以去iconfont-阿里巴巴矢量图标库挑选自己喜欢的图标
EditText样式修改
输入框我做了样式修改,请在drawable
文件夹下新建xml文件edittext_style
,其代码为
1 2 3 4 5
| <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#D5EDE9E9"></solid> <corners android:radius="10dp"></corners> </shape>
|
这部分样式修改主要是将EditText
即可输入文本框的背景设为淡灰色,并设置圆角。
效果图
基本效果图如下
其他文件
为后续演示跳转,我们再新建一个简单的xml文件index
,内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13
| <?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:gravity="center" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Hello World" android:gravity="center" ></TextView> </LinearLayout>
|
以及对应的java代码,新建一个java文件Idex
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| package com.example.mylogindemo;
import android.os.Bundle;
import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity;
public class Index extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.index); } }
|
package com.example.mylogindemo;
根据自己的项目名,自行修改
另外记得在文件夹maxifests下的AndroidManifest
中添加(application标签内)
1
| <activity android:name=".Index"></activity>
|
JAVA代码
该部分总览如下,具体可见我在代码中的注释
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
| package com.example.mylogindemo;
import androidx.annotation.Nullable; import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Color; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; 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 { EditText etuser,etpwd; Button thelogin; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); etuser=findViewById(R.id.etuser); etpwd=findViewById(R.id.etpwd); thelogin=findViewById(R.id.Login_btn); ActionBar bar=getSupportActionBar(); bar.setTitle("登录演示"); View theview=getLayoutInflater().inflate(R.layout.activity_main,null); Read(theview); thelogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Login(theview); } }); if(etpwd.getText().toString().length()==0||etuser.getText().toString().length()==0){ thelogin.setClickable(false); thelogin.setBackgroundColor(Color.parseColor("#abddff")); } TextWatcher textWatcher=new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override public void afterTextChanged(Editable editable) { if(etpwd.getText().toString().length()==0||etuser.getText().toString().length()==0){ thelogin.setClickable(false); thelogin.setBackgroundColor(Color.parseColor("#abddff")); }else{ thelogin.setClickable(true); thelogin.setBackgroundColor(Color.parseColor("#077AF4")); } } }; etpwd.addTextChangedListener(textWatcher); etuser.addTextChangedListener(textWatcher); } public void Login(View view){ String theuser =etuser.getText().toString(); String thepwd=etpwd.getText().toString(); CheckBox checkbox=findViewById(R.id.checkbox); checkbox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {
} }); Save(theuser,thepwd); Intent it = new Intent(MainActivity.this, Index.class); startActivity(it); Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show(); } void Save(String username,String password){ SharedPreferences preferences=getSharedPreferences("yzyDemo",MODE_PRIVATE); SharedPreferences.Editor editor=preferences.edit(); editor.putString("username",username); editor.putString("password",password); editor.commit(); } void Read(View view){ SharedPreferences preferences=getSharedPreferences("yzyDemo",MODE_PRIVATE); String user =preferences.getString("username",""); String pass=preferences.getString("password",""); etuser.setText(user); etpwd.setText(pass); } public void Back(View view){ finish(); } }
|