Android之仿iphone抖动效果
转自: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
Android之仿iphone抖动效果的更多相关文章
- Android实现仿qq侧边栏效果
最近从github上看到一个关于侧边栏的项目,模仿的是qq侧边栏. Github地址是https://github.com/SpecialCyCi/AndroidResideMenu ,这个项目是一个 ...
- 50个Android开发人员必备UI效果源码[转载]
50个Android开发人员必备UI效果源码[转载] http://blog.csdn.net/qq1059458376/article/details/8145497 Android 仿微信之主页面 ...
- [转载] 50个Android开发人员必备UI效果源码
好东西,多学习! Android 仿微信之主页面实现篇Android 仿微信之界面导航篇Android 高仿QQ 好友分组列表Android 高仿QQ 界面滑动效果Android 高仿QQ 登陆界面A ...
- android该怎么办iphone那种画面抖动的动画效果(含有button和EditText)
首先在效果图: 要做到抖动效果按钮,能够这样做.设定anim房源res以下.创建一个button_shake.xml <? xml version="1.0" encodin ...
- Android仿iPhone 滚轮控件 实现
Android_开发 实用滚轮效果选择数字http://blog.csdn.net/zhangtengyuan23/article/details/8653771 Android仿iPhone滚轮控件 ...
- Android仿IOS回弹效果 ScrollView回弹 总结
Android仿IOS回弹效果 ScrollView回弹 总结 应项目中的需求 须要仿IOS 下拉回弹的效果 , 我在网上搜了非常多 大多数都是拿scrollview 改吧改吧 试了一些 发现总 ...
- 通用的Android控件抖动效果实现
这个小程序的功能在实际的开发中会用到,比如:设置Button左右晃动,或者上下的晃动效果,下面就给出示例代码. 首先:要定义一个xml文件,命名为Shake [html] view plain cop ...
- Android 实现高仿iOS桌面效果之可拖动的GridView(上)
转载请标明出处:http://blog.csdn.net/sk719887916/article/details/40074663,作者:skay 最近项目中遇到一个LIstview的拖动效 ...
- 021 Android 查询已经导入到工程中的数据库+抖动效果
1.将数据库(.db)文件放入工程中 在project状态下,新建assets文件夹,并将数据库文件放入assets目录下. 注意:assets目录.java目录.res目录是同级的 new---&g ...
随机推荐
- c++中的前置声明
引用google c++编码规范: When you include a header file you introduce a dependency that will cause your cod ...
- SqlServer中 CREATE PARTITION FUNCTION使用
表分区的操作三步走: 1.创建分区函数 CREATE PARTITION FUNCTION xx1(int) 解释:在当前数据库中创建一个函数,该函数可根据指定列的值将表或索引的各行映射到分区. 语法 ...
- tidb 升级步骤
1.检查ansible版本,正常情况下,2.1 rc3需要兼容ansible 2.5以上的版本 $ ansible --version 2.检查python两个模块jinja2需要升级到2.9.6或以 ...
- 007.LVM查看命令
一 PV查看 [root@kauai ~]# pvdisplay #显示有关物理卷的信息 --- Physical volume --- PV Name /dev/sdb5 #PV名称 VG Name ...
- 有了这套flexible.js 移动端自适应方案,你就能在移动端的来去自如, (*^__^*)
flexible.js 移动端自适应方案 一,flexible.js 的使用方式: github地址:https://github.com/amfe/lib-flexible 官方文档地址:https ...
- 简单的CSS3 Loading动画
最终效果如图一,gif图片稍微有点卡顿,事实上代码在浏览器里执行得很流畅.这里面用到的css3技术非常简单,分别是border-radius.伪元素.css3关键帧以及animation动画. 首先整 ...
- Python异常处理回顾与总结
1 引言 在我们调试程序时,经常不可避免地出现意料之外的情况,导致程序不得不停止运行,然后提示大堆提示信息,大多是这种情况都是由异常引起的.异常的出现一方面是因为写代码时粗心导致的语法错误,这种错误在 ...
- Orleans介绍
一.介绍 Orleans是一个框架,提供了一个直接的方法来构建分布式高规模计算应用程序 默认可扩展 -> Orleans处理构建分布式系统的复杂性,使您的应用程序能够扩展到数百台服务器.低延迟 ...
- 求有向图的强连通分量个数 之 Kosaraju算法
代码: #include<cstdio> #include<cstring> #include<iostream> using namespace std; ][] ...
- 【LCA】BZOJ1776-[Usaco2010 Hol]cowpol 奶牛政坛
[题目大意] 一棵n个点的树,树上每个点属于一个党派,要求每个党派的最远距离点.两点间距离为两点间边的个数. [思路] yy一下可知,最远距离点中必有一个是该党派深度最深的一个,那么我们就记下最深的点 ...