Animation之震动效果动画在登录Activity上的应用

在账户登录错误时,如果显示弹出框则会显得很难看而且不友好。

当然使用Toast也是不错的选择。

在这里提供一种Animation的动画效果。

当用户名或者密码错误时,输入框会左右震动,来表示“用户名或者密码错误”。

同时,通过这个小案例,来初步了解Animation动画。

【注】灵感来自Android自带的API。

 

Animation的XML

在项目的res目录下新建anim文件夹,用来存放Animation动画的XML。

新建shake.xml如下:

[html] view plain copy
 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <translate xmlns:android="http://schemas.android.com/apk/res/android"   
  3.     android:fromXDelta="0"   
  4.     android:toXDelta="10"   
  5.     android:duration="1000"   
  6.     android:interpolator="@anim/cycle_7" />  
其中,fromXDelta表示指定控件在动画开始时水平方向的像素位置,toXDelta表示在水平方向上的位移像素。
相应的,还可以有fromYDelta和toYDelta。
duration表示动画的持续时间。
 

Animation的应用

 
[java] view plain copy
 
  1. Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake);  
  2. findViewById(R.id.editText2).startAnimation(shake);  
  3. findViewById(R.id.editText1).startAnimation(shake);  

完整的应用

Java文件

[java] view plain copy
 
  1. package com.app;  
  2.   
  3. import android.annotation.SuppressLint;  
  4. import android.app.Activity;  
  5. import android.content.Intent;  
  6. import android.net.Uri;  
  7. import android.os.Bundle;  
  8. import android.view.View;  
  9. import android.view.animation.Animation;  
  10. import android.view.animation.AnimationUtils;  
  11. import android.widget.EditText;  
  12. import android.widget.Toast;  
  13.   
  14. @SuppressLint("NewApi")  
  15. public class MyQQActivity extends Activity implements View.OnClickListener{  
  16.     /** Called when the activity is first created. */  
  17.     @Override  
  18.     public void onCreate(Bundle savedInstanceState) {  
  19.         super.onCreate(savedInstanceState);  
  20.         setContentView(R.layout.qq_login);  
  21.         findViewById(R.id.button1).setOnClickListener(this);  
  22.         findViewById(R.id.button2).setOnClickListener(this);  
  23.         findViewById(R.id.button3).setOnClickListener(this);  
  24.     }  
  25.   
  26.     public void onClick(View v) {  
  27.         EditText editText1 = (EditText) findViewById(R.id.editText1);  
  28.         String text1 = editText1.getText().toString();  
  29.         EditText editText2 = (EditText) findViewById(R.id.editText2);  
  30.         String text2 = editText2.getText().toString();  
  31.         switch (v.getId()) {  
  32.         case R.id.button1:      
  33.             if (text1.equals(text2)) {  
  34.                 Intent intent2 = new Intent();  
  35.                 intent2.setClass(MyQQActivity.this,Tabs.class );  
  36.                 startActivity(intent2);  
  37.                  int version = Integer.valueOf(android.os.Build.VERSION.SDK);  
  38.                  if(version >= 5) {       
  39.                      overridePendingTransition(R.anim.zoomin, R.anim.zoomout);   
  40.                 }   
  41.             }   
  42.             else {  
  43.                 Toast.makeText(MyQQActivity.this, "账号或密码错误,请重新输入!", Toast.LENGTH_LONG).show();  
  44.                 Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake);  
  45.                 findViewById(R.id.editText2).startAnimation(shake);  
  46.                 findViewById(R.id.editText1).startAnimation(shake);  
  47.                 editText2.setText(null);  
  48.             }  
  49.             break;  
  50.         case R.id.button2:    
  51.             //注册账号  
  52.             Uri uri1 = Uri.parse("http://zc.qq.com/chs/index.html");  
  53.             Intent it1  = new Intent(Intent.ACTION_VIEW,uri1);  
  54.             startActivity(it1);   
  55.             break;  
  56.         case R.id.button3:    
  57.             //忘记密码  
  58.             Uri uri2 = Uri.parse("https://aq.qq.com/cn2/findpsw/pc/pc_find_pwd_input_account");  
  59.             Intent it2  = new Intent(Intent.ACTION_VIEW,uri2);  
  60.             startActivity(it2);   
  61.             break;  
  62.         default:  
  63.             break;  
  64.         }  
  65.     }       
  66. }  

layout文件

[html] view plain copy
 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:id="@+id/qqlogin"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent"  
  6.     android:orientation="vertical"   
  7.     android:background="@drawable/phone_call_bg"  
  8.     android:padding="10dp">  
  9.     <LinearLayout  
  10.         android:layout_width="fill_parent"  
  11.         android:layout_height="wrap_content"  
  12.         android:orientation="vertical" >  
  13.         <ImageView  
  14.             android:id="@+id/imageView1"  
  15.             android:layout_width="fill_parent"  
  16.             android:layout_height="120dp"  
  17.             android:layout_marginTop="15dp"  
  18.             android:src="@drawable/ic_launcher" />  
  19.     </LinearLayout>  
  20.     <RelativeLayout  
  21.         android:layout_width="match_parent"  
  22.         android:layout_height="100dp"  
  23.         android:layout_marginTop="15dp"  
  24.         android:background="@drawable/login_management_background"  
  25.         android:padding="10dp" >  
  26.         <TextView  
  27.             android:id="@+id/textView1"  
  28.             android:layout_width="wrap_content"  
  29.             android:layout_height="wrap_content"  
  30.             android:layout_alignParentLeft="true"  
  31.             android:layout_alignParentTop="true"  
  32.             android:layout_marginLeft="15dp"  
  33.             android:layout_marginTop="10dp"  
  34.             android:layout_marginBottom="5dp"  
  35.             android:text="账号"   
  36.             android:textSize="20dp"  
  37.             android:textColor="#333"/>  
  38.         <TextView  
  39.             android:id="@+id/textView2"  
  40.             android:layout_width="wrap_content"  
  41.             android:layout_height="wrap_content"  
  42.             android:layout_alignParentLeft="true"  
  43.             android:layout_below="@+id/textView1"  
  44.             android:layout_alignLeft="@+id/textView1"  
  45.             android:layout_marginLeft="15dp"  
  46.             android:layout_marginTop="5dp"  
  47.             android:layout_marginBottom="10dp"  
  48.             android:text="密码"   
  49.             android:textSize="20dp"  
  50.             android:textColor="#333"/>  
  51.         <EditText  
  52.             android:id="@+id/editText1"  
  53.             android:layout_width="wrap_content"  
  54.             android:layout_height="wrap_content"  
  55.             android:paddingTop="3dp"  
  56.             android:layout_alignBaseline="@+id/textView1"  
  57.             android:layout_alignBottom="@+id/textView1"  
  58.             android:layout_marginLeft="22dp"  
  59.             android:drawableTop="#fff"  
  60.             android:hint="用户名/邮箱"  
  61.             android:phoneNumber="true"  
  62.             android:layout_toRightOf="@+id/textView1"  
  63.             android:ems="10" >  
  64.             <requestFocus />  
  65.         </EditText>  
  66.         <EditText  
  67.             android:id="@+id/editText2"  
  68.             android:layout_width="wrap_content"  
  69.             android:layout_height="wrap_content"  
  70.             android:layout_alignBaseline="@+id/textView2"  
  71.             android:layout_alignBottom="@+id/textView2"  
  72.             android:layout_alignLeft="@+id/editText1"  
  73.             android:ems="10"  
  74.             android:phoneNumber="true"  
  75.             android:drawableTop="#fff"  
  76.             android:hint="请输入密码"  
  77.             android:inputType="textPassword" />  
  78.     </RelativeLayout>  
  79.     <LinearLayout  
  80.         android:layout_width="wrap_content"  
  81.         android:layout_marginTop="15dp"  
  82.         android:layout_height="40dp"  
  83.         android:orientation="horizontal" >  
  84.         <Button  
  85.             android:id="@+id/button1"  
  86.             android:layout_width="170dp"  
  87.             android:layout_height="40dp"  
  88.             android:layout_marginLeft="60dp"  
  89.             android:background="@drawable/bg_alibuybutton"  
  90.             android:text="登          录"   
  91.             android:gravity="center"  
  92.             android:textSize="20sp"  
  93.             android:textColor="#000000"/>  
  94.     </LinearLayout>  
  95.   
  96. <LinearLayout  
  97.         android:layout_width="fill_parent"  
  98.         android:layout_marginTop="100dp"  
  99.         android:gravity="center_horizontal"  
  100.         android:orientation="horizontal"  
  101.         android:layout_height="wrap_content" >  
  102.         <Button  
  103.             android:id="@+id/button2"  
  104.             style="?android:attr/buttonStyleSmall"  
  105.             android:layout_width="wrap_content"  
  106.             android:layout_height="wrap_content"  
  107.             android:textSize="10sp"  
  108.             android:text="注册账号" />  
  109.         <Button  
  110.             android:id="@+id/button3"  
  111.             style="?android:attr/buttonStyleSmall"  
  112.             android:layout_width="wrap_content"  
  113.             android:layout_height="wrap_content"  
  114.             android:textSize="10sp"  
  115.             android:text="忘记密码" />  
  116.     </LinearLayout>  
  117. </LinearLayout>  

效果图

 

posted @ 2016-11-28 16:39  天涯海角路  阅读(238)  评论(0)    收藏  举报