Animation之震动效果动画在登录Activity上的应用
在账户登录错误时,如果显示弹出框则会显得很难看而且不友好。
当然使用Toast也是不错的选择。
在这里提供一种Animation的动画效果。
当用户名或者密码错误时,输入框会左右震动,来表示“用户名或者密码错误”。
同时,通过这个小案例,来初步了解Animation动画。
【注】灵感来自Android自带的API。
Animation的XML
在项目的res目录下新建anim文件夹,用来存放Animation动画的XML。
新建shake.xml如下:
- <?xml version="1.0" encoding="utf-8"?>
- <translate xmlns:android="http://schemas.android.com/apk/res/android"
- android:fromXDelta="0"
- android:toXDelta="10"
- android:duration="1000"
- android:interpolator="@anim/cycle_7" />
相应的,还可以有fromYDelta和toYDelta。
duration表示动画的持续时间。
Animation的应用
- Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake);
- findViewById(R.id.editText2).startAnimation(shake);
- findViewById(R.id.editText1).startAnimation(shake);
完整的应用
Java文件
- package com.app;
- import android.annotation.SuppressLint;
- import android.app.Activity;
- import android.content.Intent;
- import android.net.Uri;
- import android.os.Bundle;
- import android.view.View;
- import android.view.animation.Animation;
- import android.view.animation.AnimationUtils;
- import android.widget.EditText;
- import android.widget.Toast;
- @SuppressLint("NewApi")
- public class MyQQActivity extends Activity implements View.OnClickListener{
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.qq_login);
- findViewById(R.id.button1).setOnClickListener(this);
- findViewById(R.id.button2).setOnClickListener(this);
- findViewById(R.id.button3).setOnClickListener(this);
- }
- public void onClick(View v) {
- EditText editText1 = (EditText) findViewById(R.id.editText1);
- String text1 = editText1.getText().toString();
- EditText editText2 = (EditText) findViewById(R.id.editText2);
- String text2 = editText2.getText().toString();
- switch (v.getId()) {
- case R.id.button1:
- if (text1.equals(text2)) {
- Intent intent2 = new Intent();
- intent2.setClass(MyQQActivity.this,Tabs.class );
- startActivity(intent2);
- int version = Integer.valueOf(android.os.Build.VERSION.SDK);
- if(version >= 5) {
- overridePendingTransition(R.anim.zoomin, R.anim.zoomout);
- }
- }
- else {
- Toast.makeText(MyQQActivity.this, "账号或密码错误,请重新输入!", Toast.LENGTH_LONG).show();
- Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake);
- findViewById(R.id.editText2).startAnimation(shake);
- findViewById(R.id.editText1).startAnimation(shake);
- editText2.setText(null);
- }
- break;
- case R.id.button2:
- //注册账号
- Uri uri1 = Uri.parse("http://zc.qq.com/chs/index.html");
- Intent it1 = new Intent(Intent.ACTION_VIEW,uri1);
- startActivity(it1);
- break;
- case R.id.button3:
- //忘记密码
- Uri uri2 = Uri.parse("https://aq.qq.com/cn2/findpsw/pc/pc_find_pwd_input_account");
- Intent it2 = new Intent(Intent.ACTION_VIEW,uri2);
- startActivity(it2);
- break;
- default:
- break;
- }
- }
- }
layout文件
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/qqlogin"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:background="@drawable/phone_call_bg"
- android:padding="10dp">
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical" >
- <ImageView
- android:id="@+id/imageView1"
- android:layout_width="fill_parent"
- android:layout_height="120dp"
- android:layout_marginTop="15dp"
- android:src="@drawable/ic_launcher" />
- </LinearLayout>
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="100dp"
- android:layout_marginTop="15dp"
- android:background="@drawable/login_management_background"
- android:padding="10dp" >
- <TextView
- android:id="@+id/textView1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_alignParentTop="true"
- android:layout_marginLeft="15dp"
- android:layout_marginTop="10dp"
- android:layout_marginBottom="5dp"
- android:text="账号"
- android:textSize="20dp"
- android:textColor="#333"/>
- <TextView
- android:id="@+id/textView2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_below="@+id/textView1"
- android:layout_alignLeft="@+id/textView1"
- android:layout_marginLeft="15dp"
- android:layout_marginTop="5dp"
- android:layout_marginBottom="10dp"
- android:text="密码"
- android:textSize="20dp"
- android:textColor="#333"/>
- <EditText
- android:id="@+id/editText1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingTop="3dp"
- android:layout_alignBaseline="@+id/textView1"
- android:layout_alignBottom="@+id/textView1"
- android:layout_marginLeft="22dp"
- android:drawableTop="#fff"
- android:hint="用户名/邮箱"
- android:phoneNumber="true"
- android:layout_toRightOf="@+id/textView1"
- android:ems="10" >
- <requestFocus />
- </EditText>
- <EditText
- android:id="@+id/editText2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignBaseline="@+id/textView2"
- android:layout_alignBottom="@+id/textView2"
- android:layout_alignLeft="@+id/editText1"
- android:ems="10"
- android:phoneNumber="true"
- android:drawableTop="#fff"
- android:hint="请输入密码"
- android:inputType="textPassword" />
- </RelativeLayout>
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_marginTop="15dp"
- android:layout_height="40dp"
- android:orientation="horizontal" >
- <Button
- android:id="@+id/button1"
- android:layout_width="170dp"
- android:layout_height="40dp"
- android:layout_marginLeft="60dp"
- android:background="@drawable/bg_alibuybutton"
- android:text="登 录"
- android:gravity="center"
- android:textSize="20sp"
- android:textColor="#000000"/>
- </LinearLayout>
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_marginTop="100dp"
- android:gravity="center_horizontal"
- android:orientation="horizontal"
- android:layout_height="wrap_content" >
- <Button
- android:id="@+id/button2"
- style="?android:attr/buttonStyleSmall"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textSize="10sp"
- android:text="注册账号" />
- <Button
- android:id="@+id/button3"
- style="?android:attr/buttonStyleSmall"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textSize="10sp"
- android:text="忘记密码" />
- </LinearLayout>
- </LinearLayout>
效果图

浙公网安备 33010602011771号