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 ...
随机推荐
- Intellij IDEA调试功能总结
public class Demo { public static void f1() { System.out.println("one"); System.out.printl ...
- synchronized和lock
Synchronized 同步代码块 使用 monitorenter 和 moniterexit 指令实现, monitorenter指令插入到同步代码块的开始位置, moniterexit 指令插 ...
- Android 隐藏虚拟按键,并且全屏
/** * 隐藏虚拟按键,并且全屏 */protected void hideBottomUIMenu() { //隐藏虚拟按键,并且全屏 if (Build.VERSION.SDK_INT > ...
- MVC 6 电商网站开发实战
[原创] ASP.NET 5系列教程 (六): 在 MVC6 中创建 Web API 标签: Web API MVC6 创建web API | 博主:powertoolsteam ASP.NE ...
- SSIS组件——Merge、Merge Join、Union All
- Django(request和response)
原文链接: https://blog.csdn.net/weixin_31449201/article/details/81043326 Django中的请求与响应 一.请求request djang ...
- Codeforces Round #375 (Div. 2) F. st-Spanning Tree 生成树
F. st-Spanning Tree 题目连接: http://codeforces.com/contest/723/problem/F Description You are given an u ...
- UVALive 6908 Electric Bike dp
Electric Bike 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8 ...
- Java Web c3p0 pool池泄漏优化与日志分析
问题跟踪: 近期在整合SSH(spring.springmvc.hibernate)项目,提供给第三方服务.每当调用内存池达到上限之后,外界调用服务直接失败,提示[cannot open connec ...
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
http://www.cnblogs.com/xdp-gacl/p/3902537.html 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBea ...