转自:http://blog.csdn.net/long33long/article/details/7693671

布局文件:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >        <LinearLayout        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <TextView            android:id="@+id/tv0"            android:layout_width="80dip"            android:layout_height="94dip"            android:drawableTop="@drawable/ic_launcher"            android:text="@string/hello" />        <TextView            android:id="@+id/tv1"            android:layout_width="80dip"            android:layout_height="94dip"            android:drawableTop="@drawable/ic_launcher"            android:text="@string/hello" />        <TextView            android:id="@+id/tv2"            android:layout_width="80dip"            android:layout_height="94dip"            android:drawableTop="@drawable/ic_launcher"            android:text="@string/hello" />        <TextView            android:id="@+id/tv3"            android:layout_width="80dip"            android:layout_height="94dip"            android:drawableTop="@drawable/ic_launcher"            android:text="@string/hello" />    </LinearLayout>        <LinearLayout        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <TextView            android:id="@+id/tv4"            android:layout_width="80dip"            android:layout_height="94dip"            android:drawableTop="@drawable/ic_launcher"            android:text="@string/hello" />        <TextView            android:id="@+id/tv5"            android:layout_width="80dip"            android:layout_height="94dip"            android:drawableTop="@drawable/ic_launcher"            android:text="@string/hello" />        <TextView            android:id="@+id/tv6"            android:layout_width="80dip"            android:layout_height="94dip"            android:drawableTop="@drawable/ic_launcher"            android:text="@string/hello" />        <TextView            android:id="@+id/tv7"            android:layout_width="80dip"            android:layout_height="94dip"            android:drawableTop="@drawable/ic_launcher"            android:text="@string/hello" />    </LinearLayout>    <LinearLayout        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <TextView            android:id="@+id/tv8"            android:layout_width="80dip"            android:layout_height="94dip"            android:drawableTop="@drawable/ic_launcher"            android:text="@string/hello" />        <TextView            android:id="@+id/tv9"            android:layout_width="80dip"            android:layout_height="94dip"            android:drawableTop="@drawable/ic_launcher"            android:text="@string/hello" />        <TextView            android:id="@+id/tv10"            android:layout_width="80dip"            android:layout_height="94dip"            android:drawableTop="@drawable/ic_launcher"            android:text="@string/hello" />        <TextView            android:id="@+id/tv11"            android:layout_width="80dip"            android:layout_height="94dip"            android:drawableTop="@drawable/ic_launcher"            android:text="@string/hello" />    </LinearLayout>        <LinearLayout        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <TextView            android:id="@+id/tv12"            android:layout_width="80dip"            android:layout_height="94dip"            android:drawableTop="@drawable/ic_launcher"            android:text="@string/hello" />        <TextView            android:id="@+id/tv13"            android:layout_width="80dip"            android:layout_height="94dip"            android:drawableTop="@drawable/ic_launcher"            android:text="@string/hello" />        <TextView            android:id="@+id/tv14"            android:layout_width="80dip"            android:layout_height="94dip"            android:drawableTop="@drawable/ic_launcher"            android:text="@string/hello" />        <TextView            android:id="@+id/tv15"            android:layout_width="80dip"            android:layout_height="94dip"            android:drawableTop="@drawable/ic_launcher"            android:text="@string/hello" />    </LinearLayout>        <LinearLayout        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <TextView            android:id="@+id/tv16"            android:layout_width="80dip"            android:layout_height="94dip"            android:drawableTop="@drawable/ic_launcher"            android:text="@string/hello" />        <TextView            android:id="@+id/tv17"            android:layout_width="80dip"            android:layout_height="94dip"            android:drawableTop="@drawable/ic_launcher"            android:text="@string/hello" />        <TextView            android:id="@+id/tv18"            android:layout_width="80dip"            android:layout_height="94dip"            android:drawableTop="@drawable/ic_launcher"            android:text="@string/hello" />        <TextView            android:id="@+id/tv19"            android:layout_width="80dip"            android:layout_height="94dip"            android:drawableTop="@drawable/ic_launcher"            android:text="@string/hello" />    </LinearLayout></LinearLayout>

代码:

package com.android.shake;import android.app.Activity;import android.os.Bundle;import android.util.DisplayMetrics;import android.view.animation.Animation;import android.view.animation.Animation.AnimationListener;import android.view.animation.RotateAnimation;import android.widget.TextView;import android.view.View;import android.view.Window;public class ShakeTestActivity extends Activity implements View.OnClickListener {    private TextView mtv0;    private TextView mtv1;    private TextView mtv2;    private TextView mtv3;    private TextView mtv4;    private TextView mtv5;    private TextView mtv6;    private TextView mtv7;    private TextView mtv8;    private TextView mtv9;    private TextView mtv10;    private TextView mtv11;    private TextView mtv12;    private TextView mtv13;    private TextView mtv14;    private TextView mtv15;    private TextView mtv16;    private TextView mtv17;    private TextView mtv18;    private TextView mtv19;    private boolean mNeedShake = false;    private boolean mStartShake = false;    private static final int ICON_WIDTH = 80;    private static final int ICON_HEIGHT = 94;    private static final float DEGREE_0 = 1.8f;    private static final float DEGREE_1 = -2.0f;    private static final float DEGREE_2 = 2.0f;    private static final float DEGREE_3 = -1.5f;    private static final float DEGREE_4 = 1.5f;    private static final int ANIMATION_DURATION = 80;    private int mCount = 0;    float mDensity;    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.main);        DisplayMetrics dm = new DisplayMetrics();        getWindowManager().getDefaultDisplay().getMetrics(dm);        if (dm != null) {            mDensity = dm.density;        }        mtv0 = (TextView) findViewById(R.id.tv0);        mtv0.setOnClickListener(this);        mtv1 = (TextView) findViewById(R.id.tv1);        mtv1.setOnClickListener(this);        mtv2 = (TextView) findViewById(R.id.tv2);        mtv2.setOnClickListener(this);        mtv3 = (TextView) findViewById(R.id.tv3);        mtv3.setOnClickListener(this);        mtv4 = (TextView) findViewById(R.id.tv4);        mtv4.setOnClickListener(this);        mtv5 = (TextView) findViewById(R.id.tv5);        mtv5.setOnClickListener(this);        mtv6 = (TextView) findViewById(R.id.tv6);        mtv6.setOnClickListener(this);        mtv7 = (TextView) findViewById(R.id.tv7);        mtv7.setOnClickListener(this);        mtv8 = (TextView) findViewById(R.id.tv8);        mtv8.setOnClickListener(this);        mtv9 = (TextView) findViewById(R.id.tv9);        mtv9.setOnClickListener(this);        mtv10 = (TextView) findViewById(R.id.tv10);        mtv10.setOnClickListener(this);        mtv11 = (TextView) findViewById(R.id.tv11);        mtv11.setOnClickListener(this);        mtv12 = (TextView) findViewById(R.id.tv12);        mtv12.setOnClickListener(this);        mtv13 = (TextView) findViewById(R.id.tv13);        mtv13.setOnClickListener(this);        mtv14 = (TextView) findViewById(R.id.tv14);        mtv14.setOnClickListener(this);        mtv15 = (TextView) findViewById(R.id.tv15);        mtv15.setOnClickListener(this);        mtv16 = (TextView) findViewById(R.id.tv16);        mtv16.setOnClickListener(this);        mtv17 = (TextView) findViewById(R.id.tv17);        mtv17.setOnClickListener(this);        mtv18 = (TextView) findViewById(R.id.tv18);        mtv18.setOnClickListener(this);        mtv19 = (TextView) findViewById(R.id.tv19);        mtv19.setOnClickListener(this);    }    @Override    public void onClick(View v) {        if (!mStartShake) {            mStartShake = true;            mNeedShake = true;            shakeAnimation(mtv0);            shakeAnimation(mtv1);            shakeAnimation(mtv2);            shakeAnimation(mtv3);            shakeAnimation(mtv4);            shakeAnimation(mtv5);            shakeAnimation(mtv6);            shakeAnimation(mtv7);            shakeAnimation(mtv8);            shakeAnimation(mtv9);            shakeAnimation(mtv10);            shakeAnimation(mtv11);            shakeAnimation(mtv12);            shakeAnimation(mtv13);            shakeAnimation(mtv14);            shakeAnimation(mtv15);            shakeAnimation(mtv16);            shakeAnimation(mtv17);            shakeAnimation(mtv18);            shakeAnimation(mtv19);        }    }    private void shakeAnimation(final View v) {        float rotate = 0;        int c = mCount++ % 5;        if (c == 0) {            rotate = DEGREE_0;        } else if (c == 1) {            rotate = DEGREE_1;        } else if (c == 2) {            rotate = DEGREE_2;        } else if (c == 3) {            rotate = DEGREE_3;        } else {            rotate = DEGREE_4;        }        final RotateAnimation mra = new RotateAnimation(rotate, -rotate, ICON_WIDTH * mDensity / 2, ICON_HEIGHT * mDensity / 2);        final RotateAnimation mrb = new RotateAnimation(-rotate, rotate, ICON_WIDTH * mDensity / 2, ICON_HEIGHT * mDensity / 2);        mra.setDuration(ANIMATION_DURATION);        mrb.setDuration(ANIMATION_DURATION);        mra.setAnimationListener(new AnimationListener() {            @Override            public void onAnimationEnd(Animation animation) {                if (mNeedShake) {                    mra.reset();                    v.startAnimation(mrb);                }            }            @Override            public void onAnimationRepeat(Animation animation) {            }            @Override            public void onAnimationStart(Animation animation) {            }        });        mrb.setAnimationListener(new AnimationListener() {            @Override            public void onAnimationEnd(Animation animation) {                if (mNeedShake) {                    mrb.reset();                    v.startAnimation(mra);                }            }            @Override            public void onAnimationRepeat(Animation animation) {            }            @Override            public void onAnimationStart(Animation animation) {            }        });        v.startAnimation(mra);    }    @Override    public void onBackPressed() {        if (!mNeedShake) {            super.onBackPressed();        } else {            mNeedShake = false;            mCount = 0;            mStartShake = false;        }    }}

资源下载:http://download.csdn.net/detail/long33long/4395746

更多相关文章

  1. Android 实现在Java代码中修改UI界面,并修改界面
  2. JS调用Java代码(Android)
  3. 【Android】Android Layout Binder——根据layout布局文件自动生
  4. Android应用程序进程启动过程的源代码分析(2)
  5. Android源代码编译
  6. Android 去掉状态栏 去掉标题栏 沉浸式状态栏 状态栏重叠 布局重
  7. Android应用程序组件Content Provider的启动过程源代码分析(6)
  8. android常用代码片段
  9. Android系统进程Zygote启动过程的源代码分析(3)

随机推荐

  1. Android(安卓)Error: execution failed f
  2. Android(安卓)GPS应用:临近警告
  3. android studio布局显示异常或空白
  4. android bind service and remote servic
  5. Android:Date、String、Long三种日期类型
  6. Recently studying plan
  7. 懒人爱家务_onInterceptTouchEvent与onTo
  8. android多国语言的国家代码
  9. 大型企业所需掌握技术
  10. 有关于Android多个module混淆的问题