EditText X/Y轴和仿苹果 抖动效果

ShakeDemo\res\layout\main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/bg"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/bg"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_centerHorizontal="true"
        android:text="@string/mShake"
        android:textSize="20sp"
        android:textStyle="bold"
        android:textColor="#000000" />

    <EditText
        android:id="@+id/passWd"
        android:layout_marginTop="20dip"
        android:layout_width="200dip"
        android:layout_height="wrap_content"
        android:layout_below="@+id/text"
        android:layout_centerHorizontal="true"
        android:clickable="true"
        android:singleLine="true" />

    <Button
        android:id="@+id/shake_x"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/passWd"
        android:text="X轴抖动" />

    <Button
        android:id="@+id/shake_y"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/shake_x"
        android:layout_alignBottom="@+id/shake_x"
        android:layout_alignParentRight="true"
        android:text="Y轴抖动" />

    <Button
        android:id="@+id/shake"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/shake_x"
        android:layout_alignBottom="@+id/shake_x"
        android:layout_centerHorizontal="true"
        android:text="仿苹果抖动" />

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/shake"
        android:layout_below="@+id/shake"
        android:layout_marginTop="23dp"
        android:src="@drawable/icon" />

</RelativeLayout>
View Code

ShakeDemo\src\com\shake\ShakeDemoActivity.java

        // 仿苹果抖动效果
        shake.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Animation shake = AnimationUtils.loadAnimation(
                        ShakeDemoActivity.this, R.anim.anim);
                shake.reset();
                shake.setFillAfter(true);
                // 图片控件
                image.startAnimation(shake);
            }
        });
        // X轴抖动
        shake_x.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Animation shakeAnim = AnimationUtils.loadAnimation(ShakeDemoActivity.this,
                        R.anim.shake_x);
                passWd.startAnimation(shakeAnim);
            }
        });
        // Y轴抖动
        shake_y.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Animation shakeAnim = AnimationUtils.loadAnimation(ShakeDemoActivity.this,
                        R.anim.shake_y);
                passWd.startAnimation(shakeAnim);
            }
        });
View Code

ShakeDemo\res\anim\anim.xml

<?xml version="1.0" encoding="utf-8"?>
<rotate 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="180"
    android:fromDegrees="-2"
    android:pivotX="100%"
    android:pivotY="100%"
    android:repeatCount="infinite"
    android:repeatMode="reverse"
    android:toDegrees="2" />
View Code

ShakeDemo\res\anim\cycle.xml

<?xml version="1.0" encoding="utf-8"?>
<cycleInterpolator 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:cycles="20" />
View Code

ShakeDemo\res\anim\shake_x.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" />
View Code

ShakeDemo\res\anim\shake_y.xml

<?xml version="1.0" encoding="utf-8"?>
<translate 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromYDelta="0"
    android:interpolator="@anim/cycle"
    android:toYDelta="10" >
</translate>
View Code


DEMO完整下载路径  http://download.csdn.net/detail/androidsj/5434921

原文地址:https://www.cnblogs.com/androidsj/p/3094841.html