android打开小屏登录画面,Android炫酷登录界面

来看一波图片吧

CoverEyeLogin.gif

动画效果介绍

1.当用户输入用户名时,小猫头鹰的眼睛是没有被捂住的

2.当用户输入密码时,小猫头鹰会用手捂住眼睛

3.如果用户名和密码都已经输入完毕,登录按钮会变成蓝色

4.调用第三方包来进行背景的虚化

目录结构

代码部分

MainActivity

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import android.text.Editable;

import android.text.TextWatcher;

import android.view.MotionEvent;

import android.view.View;

import android.view.animation.AnimationUtils;

import android.view.animation.RotateAnimation;

import android.view.animation.TranslateAnimation;

import android.view.inputmethod.InputMethodManager;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ImageView;

import android.widget.Toast;

import static android.content.Context.INPUT_METHOD_SERVICE;

public class MainActivity extends AppCompatActivity implements TextWatcher {

private EditText user;

private EditText password;

private Button loginBtn;

private ImageView leftArm;

private ImageView rightArm;

private ImageView leftHand;

private ImageView rightHand;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initViews();

}

public void initViews(){

user = findViewById(R.id.et_user);

password = findViewById(R.id.et_password);

loginBtn = findViewById(R.id.bt_login);

leftArm = findViewById(R.id.iv_left_arm);

rightArm = findViewById(R.id.iv_right_arm);

leftHand = findViewById(R.id.iv_left_hand);

rightHand = findViewById(R.id.iv_right_hand);

//监听内容改变 -> 控制按钮的点击状态

user.addTextChangedListener(this);

password.addTextChangedListener(this);

//监听EidtText的焦点变化 -> 控制是否需要捂住眼睛

password.setOnFocusChangeListener(new View.OnFocusChangeListener() {

@Override

public void onFocusChange(View v, boolean hasFocus) {

if (hasFocus == true){

//捂住眼睛

close();

}else{

//打开

open();

}

}

});

}

/**

* 当有控件获得焦点focus 自动弹出键盘

* 1. 点击软键盘的enter键 自动收回键盘

* 2. 代码控制 InputMethodManager

* requestFocus

* showSoftInput:显示键盘 必须先让这个view成为焦点requestFocus

*

* hideSoftInputFromWindow 隐藏键盘

*/

@Override

public boolean onTouchEvent(MotionEvent event) {

if (event.getAction() == MotionEvent.ACTION_DOWN){

//隐藏键盘

//1.获取系统输入的管理器

InputMethodManager inputManager =

(InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);

//2.隐藏键盘

inputManager.hideSoftInputFromWindow(user.getWindowToken(),0);

//3.取消焦点

View focusView = getCurrentFocus();

if (focusView != null) {

focusView.clearFocus(); //取消焦点

}

//getCurrentFocus().clearFocus();

//focusView.requestFocus();//请求焦点

}

return true;

}

@Override

public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@Override

public void onTextChanged(CharSequence s, int start, int before, int count) {

}

@Override

public void afterTextChanged(Editable s) {

//判断两个输入框是否有内容

if (user.getText().toString().length() > 0 &&

password.getText().toString().length() > 0){

//按钮可以点击

loginBtn.setEnabled(true);

}else{

//按钮不能点击

loginBtn.setEnabled(false);

}

}

public void close(){

//左边

RotateAnimation lAnim = new RotateAnimation(0,170,leftArm.getWidth(),0f);

lAnim.setDuration(500);

lAnim.setFillAfter(true);

leftArm.startAnimation(lAnim);

RotateAnimation rAnim = new RotateAnimation(0, -170,0f,0f);

rAnim.setDuration(500);

rAnim.setFillAfter(true);

rightArm.startAnimation(rAnim);

TranslateAnimation down = (TranslateAnimation) AnimationUtils.loadAnimation(this,R.anim.hand_down_anim);

leftHand.startAnimation(down);

rightHand.startAnimation(down);

}

public void open(){

//左边

RotateAnimation lAnim = new RotateAnimation(170,0,leftArm.getWidth(),0f);

lAnim.setDuration(500);

lAnim.setFillAfter(true);

leftArm.startAnimation(lAnim);

RotateAnimation rAnim = new RotateAnimation(-170,0,0f,0f);

rAnim.setDuration(500);

rAnim.setFillAfter(true);

rightArm.startAnimation(rAnim);

TranslateAnimation up = (TranslateAnimation) AnimationUtils.loadAnimation(this,R.anim.hand_up_anim);

leftHand.startAnimation(up);

rightHand.startAnimation(up);

}

}

anim--hand_down_anim.xml

android:toYDelta="100"

android:fromYDelta="0"

android:fillAfter="true"

android:duration="500">

anim--hand_up_anim.xml

android:toYDelta="0"

android:fromYDelta="100"

android:fillAfter="true"

android:duration="500">

drawable--editview_shape.xml

android:shape="rectangle">

android:color="#44000000"/>

drawable--ic_launcher_background.xml

android:width="108dp"

android:height="108dp"

android:viewportWidth="108"

android:viewportHeight="108">

android:fillColor="#008577"

android:pathData="M0,0h108v108h-108z" />

android:fillColor="#00000000"

android:pathData="M9,0L9,108"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M19,0L19,108"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M29,0L29,108"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M39,0L39,108"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M49,0L49,108"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M59,0L59,108"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M69,0L69,108"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M79,0L79,108"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M89,0L89,108"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M99,0L99,108"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M0,9L108,9"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M0,19L108,19"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M0,29L108,29"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M0,39L108,39"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M0,49L108,49"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M0,59L108,59"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M0,69L108,69"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M0,79L108,79"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M0,89L108,89"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M0,99L108,99"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M19,29L89,29"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M19,39L89,39"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M19,49L89,49"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M19,59L89,59"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M19,69L89,69"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M19,79L89,79"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M29,19L29,89"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M39,19L39,89"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M49,19L49,89"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M59,19L59,89"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M69,19L69,89"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

android:fillColor="#00000000"

android:pathData="M79,19L79,89"

android:strokeWidth="0.8"

android:strokeColor="#33FFFFFF" />

drawable--ic_launcher_foreground.xml

xmlns:aapt="http://schemas.android.com/aapt"

android:width="108dp"

android:height="108dp"

android:viewportWidth="108"

android:viewportHeight="108">

android:fillType="evenOdd"

android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z"

android:strokeWidth="1"

android:strokeColor="#00000000">

android:endX="78.5885"

android:endY="90.9159"

android:startX="48.7653"

android:startY="61.0927"

android:type="linear">

android:color="#44000000"

android:offset="0.0" />

android:color="#00000000"

android:offset="1.0" />

android:fillColor="#FFFFFF"

android:fillType="nonZero"

android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z"

android:strokeWidth="1"

android:strokeColor="#00000000" />

drawable--input_bg_shape.xml

android:shape="rectangle">

drawable--login_btn_selector.xml

layout--activity_main.xml

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity">

android:layout_width="match_parent"

android:layout_height="match_parent"

android:src="@drawable/bg"

android:scaleType="fitXY"/>

android:layout_width="match_parent"

android:layout_height="match_parent"

app:blk_fps="0"

app:blk_blurRadius="25"/>

android:layout_width="300dp"

android:layout_height="200dp"

android:layout_centerHorizontal="true"

android:layout_alignTop="@id/bg"

android:layout_marginTop="-100dp"

>

android:id="@+id/iv_head"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@drawable/owl_head"

android:layout_centerHorizontal="true"/>

android:id="@+id/iv_left_hand"

android:layout_width="50dp"

android:layout_height="60dp"

android:src="@drawable/icon_hand"

android:layout_alignParentLeft="true"

android:layout_alignBottom="@id/iv_head"

android:layout_marginBottom="-20dp"

android:layout_marginLeft="10dp"/>

android:id="@+id/iv_right_hand"

android:layout_width="50dp"

android:layout_height="60dp"

android:src="@drawable/icon_hand"

android:layout_alignParentRight="true"

android:layout_alignBottom="@id/iv_head"

android:layout_marginBottom="-20dp"

android:layout_marginRight="10dp"/>

android:id="@+id/iv_left_arm"

android:layout_width="65dp"

android:layout_height="40dp"

android:src="@drawable/arm_left"

android:layout_below="@id/iv_head"

android:layout_alignParentLeft="true"

android:layout_marginLeft="20dp"/>

android:id="@+id/iv_right_arm"

android:layout_width="65dp"

android:layout_height="40dp"

android:src="@drawable/arm_right"

android:layout_below="@id/iv_head"

android:layout_alignParentRight="true"

android:layout_marginRight="20dp"/>

android:id="@+id/bg"

android:layout_width="match_parent"

android:layout_height="300dp"

android:background="@drawable/input_bg_shape"

android:layout_centerInParent="true"

android:layout_marginLeft="20dp"

android:layout_marginRight="20dp"

app:blk_fps="0"

app:blk_blurRadius="20"/>

android:layout_width="match_parent"

android:layout_height="300dp"

android:layout_centerInParent="true"

android:orientation="vertical"

android:padding="20dp"

android:layout_marginRight="20dp"

android:layout_marginLeft="20dp">

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="炫酷登录"

android:textColor="#999999"

android:textSize="20dp"

android:textAlignment="center"/>

android:id="@+id/et_user"

style="@style/EditTextStyle"

android:inputType="text"

android:hint="请输入用户名"/>

android:id="@+id/et_password"

style="@style/EditTextStyle"

android:inputType="textPassword"

android:hint="请输入密码"/>

android:id="@+id/bt_login"

android:layout_width="match_parent"

android:layout_height="50dp"

android:text="登录"

android:textColor="#ffffff"

android:layout_marginTop="20dp"

android:enabled="false"

android:background="@drawable/login_btn_selector"/>

values--editview_style.xml

match_parent

50dp

@drawable/editview_shape

20dp

@drawable/iconfont_user

7dp

7dp

20sp

1

你可能感兴趣的:(android打开小屏登录画面)