国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android編程實(shí)現(xiàn)仿iphone抖動(dòng)效果的方法(附源碼)

2020-04-11 11:16:01
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了Android編程實(shí)現(xiàn)仿iphone抖動(dòng)效果的方法。分享給大家供大家參考,具體如下:

布局文件:

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

完整實(shí)例代碼代碼點(diǎn)擊此處本站下載

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宜兴市| 剑阁县| 中西区| 贺兰县| 古丈县| 天气| 扶余县| 阜阳市| 宜丰县| 满洲里市| 南部县| 台州市| 逊克县| 津市市| 铜梁县| 满城县| 辉南县| 桂林市| 巴楚县| 正蓝旗| 延长县| 子长县| 泊头市| 长治市| 同江市| 临邑县| 凤城市| 尚志市| 洛川县| 上林县| 宁国市| 泰安市| 临清市| 额尔古纳市| 岫岩| 潮州市| 大关县| 寻甸| 和静县| 巴塘县| 陆良县|