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

本文实例讲述了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程序设计有所帮助。

时间: 2024-10-25 08:15:50

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

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

本文实例讲述了Android编程实现仿iphone抖动效果的方法.分享给大家供大家参考,具体如下: 布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" and

Android编程实现WebView全屏播放的方法(附源码)_Android

本文实例讲述了Android编程实现WebView全屏播放的方法.分享给大家供大家参考,具体如下: 最近因为项目要用webview加载html5的视频,开始不能全屏播,做了很久才做出来!那按我的理解说下怎么实现全屏吧. 首先写布局文件activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.

Android编程实现仿心跳动画效果的方法_Android

本文实例讲述了Android编程实现仿心跳动画效果的方法.分享给大家供大家参考,具体如下: // 按钮模拟心脏跳动 private void playHeartbeatAnimation() { AnimationSet animationSet = new AnimationSet(true); animationSet.addAnimation(new ScaleAnimation(1.0f, 1.8f, 1.0f, 1.8f, Animation.RELATIVE_TO_SELF, 0.5

Android编程实现仿心跳动画效果的方法

本文实例讲述了Android编程实现仿心跳动画效果的方法.分享给大家供大家参考,具体如下: // 按钮模拟心脏跳动 private void playHeartbeatAnimation() { AnimationSet animationSet = new AnimationSet(true); animationSet.addAnimation(new ScaleAnimation(1.0f, 1.8f, 1.0f, 1.8f, Animation.RELATIVE_TO_SELF, 0.5

Android编程实现泡泡聊天界面实例详解(附源码)_Android

本文实例讲述了Android编程实现泡泡聊天界面的方法.分享给大家供大家参考,具体如下: 昨天写了个界面,实现了Android泡泡聊天界面.运行结果如下,点击发送按钮,屏幕就显示Text的内容. 我也是在网上的一份源码的基础上更改的,整个泡泡界面的实现要点: (1)主界面其实就是一个List View (2)文字显示界面其实就使用了android:background="@drawable/incoming"这个东西.背景图片的格式是xxx.9.png,专门用来缩放的,不然显示效果非常

Android编程实现泡泡聊天界面实例详解(附源码)

本文实例讲述了Android编程实现泡泡聊天界面的方法.分享给大家供大家参考,具体如下: 昨天写了个界面,实现了Android泡泡聊天界面.运行结果如下,点击发送按钮,屏幕就显示Text的内容. 我也是在网上的一份源码的基础上更改的,整个泡泡界面的实现要点: (1)主界面其实就是一个List View (2)文字显示界面其实就使用了android:background="@drawable/incoming"这个东西.背景图片的格式是xxx.9.png,专门用来缩放的,不然显示效果非常

Android编程单击图片实现切换效果的方法_Android

本文实例讲述了Android编程单击图片实现切换效果的方法.分享给大家供大家参考,具体如下: 新建一个Android项目,命名为FrameLayout 此实例主要操作src文件夹下的MainActivity.Java类文件和res/layout下的activity_main.xml布局文件 1.布局主页面代码activity_main.xml↓ <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android&qu

Android编程单击图片实现切换效果的方法

本文实例讲述了Android编程单击图片实现切换效果的方法.分享给大家供大家参考,具体如下: 新建一个Android项目,命名为FrameLayout 此实例主要操作src文件夹下的MainActivity.Java类文件和res/layout下的activity_main.xml布局文件 1.布局主页面代码activity_main.xml↓ <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android&qu

.Net 转战 Android 4.4 日常笔记(9)--常用组件的使用方法[附源码]

原文:.Net 转战 Android 4.4 日常笔记(9)--常用组件的使用方法[附源码] 经过两天的学习,把常用的组件都学习了一遍,并做成了App 学习可能真没有捷径,跟学习html有点类似,都是一个控件一个控件学习并使用,最后拼凑成一个系统 链接:http://pan.baidu.com/s/1hqefzEW 密码:zbel  最低API 2.3 目标API 4.4 采用Android Studio 0.58IDE 希望给和我同样的初学者带来一些便利,和开发时候可以查询,第一个版本可能比较