首页 > 系统 > Android > 正文

Android编程实现仿iphone抖动效果的方法(附源码)

2020-04-11 11:16:01
字体:
来源:转载
供稿:网友

本文实例讲述了Android编程实现仿iphone抖动效果的方法。分享给大家供大家参考,具体如下:

布局文件:

<?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;  } }}

完整实例代码代码点击此处本站下载

希望本文所述对大家Android程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表