转自: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. eclipse 启动 Android(安卓)SDK Content Loader 异常
  2. android studio 调试android源码
  3. Android(安卓)TextView 字体加粗
  4. Android环境变量作用--命令行操作
  5. Android(安卓)SDK的docs访问速度很慢
  6. android 重点
  7. CreateProcess error=2, 系统找不到指定的文件。
  8. Android(安卓)4.0 的 GridLayout
  9. Android中RadioGroup组与onCheckedChanged事件

随机推荐

  1. Android(安卓)语音输入API使用
  2. android表格布局
  3. 要学android不可不学的android样例
  4. 在Android(安卓)Studio中查看android APP
  5. andriod布局常用控件
  6. ndk for mac
  7. Android(安卓)使用RenderScript
  8. Android中渐变效果的设置
  9. android process bar 几种style
  10. android布局属性大全