Android设置View抖动动画
在应用中,有时候我们要吸引用户去点击某些按钮,比如应用市场的推荐按钮,为了能够吸引用户主动点击而且不过分的打扰用户,最好的方法就是给我们想吸引用户注意的view添加一些抖动动画,比如这张图
这里我主要实现了两种抖动动画,左右抖动和上下抖动。左右抖动通常用于表单验证失败的时候,上下抖动通常用于吸引用于用户去点击。动画主要使用了Keyframe和PropertyValuesHolder。
Keyframe是一个时间/值对,用于定义在某个时刻动画的状态。比如Keyframe.ofInt(.5f, Color.RED)定义了当动画进行了50%的时候,颜色的值应该是Color.RED。
PropertyValuesHolder保存了view的属性的信息以及在动画进行过程中该属性的值。通过PropertyValuesHolder.ofKeyframe方法来构建PropertyValuesHolder的实例,改方法接收一个属性名以及多个Keyframe对象作为参数。当你想通过动画改变多个属性的时候PropertyValuesHolder就非常有用。
直接上代码:
tada方法实现了上下抖动。抖动的原理很简单,就是对view的x轴和y轴进行0.9倍到1.1倍的缩放,同时对view进行一定角度的上下旋转。
- public static ObjectAnimator tada(View view) {
- return tada(view, 1f);
- }
- public static ObjectAnimator tada(View view, float shakeFactor) {
- PropertyValuesHolder pvhScaleX = PropertyValuesHolder.ofKeyframe(View.SCALE_X,
- Keyframe.ofFloat(0f, 1f),
- Keyframe.ofFloat(.1f, .9f),
- Keyframe.ofFloat(.2f, .9f),
- Keyframe.ofFloat(.3f, 1.1f),
- Keyframe.ofFloat(.4f, 1.1f),
- Keyframe.ofFloat(.5f, 1.1f),
- Keyframe.ofFloat(.6f, 1.1f),
- Keyframe.ofFloat(.7f, 1.1f),
- Keyframe.ofFloat(.8f, 1.1f),
- Keyframe.ofFloat(.9f, 1.1f),
- Keyframe.ofFloat(1f, 1f)
- );
- PropertyValuesHolder pvhScaleY = PropertyValuesHolder.ofKeyframe(View.SCALE_Y,
- Keyframe.ofFloat(0f, 1f),
- Keyframe.ofFloat(.1f, .9f),
- Keyframe.ofFloat(.2f, .9f),
- Keyframe.ofFloat(.3f, 1.1f),
- Keyframe.ofFloat(.4f, 1.1f),
- Keyframe.ofFloat(.5f, 1.1f),
- Keyframe.ofFloat(.6f, 1.1f),
- Keyframe.ofFloat(.7f, 1.1f),
- Keyframe.ofFloat(.8f, 1.1f),
- Keyframe.ofFloat(.9f, 1.1f),
- Keyframe.ofFloat(1f, 1f)
- );
- PropertyValuesHolder pvhRotate = PropertyValuesHolder.ofKeyframe(View.ROTATION,
- Keyframe.ofFloat(0f, 0f),
- Keyframe.ofFloat(.1f, -3f * shakeFactor),
- Keyframe.ofFloat(.2f, -3f * shakeFactor),
- Keyframe.ofFloat(.3f, 3f * shakeFactor),
- Keyframe.ofFloat(.4f, -3f * shakeFactor),
- Keyframe.ofFloat(.5f, 3f * shakeFactor),
- Keyframe.ofFloat(.6f, -3f * shakeFactor),
- Keyframe.ofFloat(.7f, 3f * shakeFactor),
- Keyframe.ofFloat(.8f, -3f * shakeFactor),
- Keyframe.ofFloat(.9f, 3f * shakeFactor),
- Keyframe.ofFloat(1f, 0)
- );
- return ObjectAnimator.ofPropertyValuesHolder(view, pvhScaleX, pvhScaleY, pvhRotate).
- setDuration(1000);
- }
),
github代码
https://github.com/lzyzsd/AndroidSeekAttention
参考:
https://plus.google.com/+CyrilMottier/posts/FABaJhRMCuy
http://developer.android.com/reference/android/animation/PropertyValuesHolder.html
http://developer.android.com/guide/topics/graphics/prop-animation.html
Android设置View抖动动画的更多相关文章
- android设置view透明度的效果
android设置view透明度的效果 推荐textView.setBackgroundColor(Color.TRANSPARENT); 第一种方法:在xml文件中设置背景颜色. andro ...
- Android中使用抖动动画吸引来用户注意
原文:http://www.androidcn.org/topic/552e65bc61d460226ab27a5c 在应用中,有时候我们要吸引用户去点击某些按钮,比如应用市场的推荐按钮,为了能够吸引 ...
- Android自定义View 画弧形,文字,并增加动画效果
一个简单的Android自定义View的demo,画弧形,文字,开启一个多线程更新ui界面,在子线程更新ui是不允许的,但是View提供了方法,让我们来了解下吧. 1.封装一个抽象的View类 B ...
- Android移动view动画问题
http://www.cnblogs.com/eoiioe/archive/2012/08/29/2662546.html Android写动画效果不是一般的麻烦,网上找了好久,终于解决了动画的问题, ...
- 为View设置左右切换动画
本文同步自http://javaexception.com/archives/64 问题: 近期的需求中,碰到了一个view切换动画的需求.要实现的是点击按钮,从左到右滑动view,左边的view消失 ...
- android 开发 View _2_ View的属性动画ObjectAnimator ,动画效果一览
支持:https://www.cnblogs.com/whoislcj/p/5738478.html translationX的效果: protected void onCreate(Bundle s ...
- Android开发——View动画、帧动画和属性动画详解
0. 前言 Android动画是面试的时候经常被问到的话题.我们都知道Android动画分为三类:View动画.帧动画和属性动画. 先对这三种动画做一个概述: View动画是一种渐进式动画,通过图 ...
- Android传统View动画与Property动画基础及比较
前言:关于动画方面的知识也整理一段时间了,如题,这篇文章简单的介绍了View和Property动画的概念,如何在项目中创建资源文件,以及如何在代码中使用它们,本次整理动画的重点放在了Property动 ...
- Android 通过Java代码生成创建界面。动态生成View,动态设置View属性。addRules详解
废话不多说,本文将会层层深入给大家讲解如何动态的生成一个完整的界面. 本文内容: Java代码中动态生成View Java代码中动态设置View的位置,以及其他的属性 LayoutParams详解 一 ...
随机推荐
- 19_Python元组总结
元组 1 元组:不可变的容器,一旦初始化就不能更改,有索引:可以查,不能增,改,删除单个元素:可遍历,不能排序 2 当元组元素,只有一个的时候,需要在元素后加",",否则回当()运 ...
- Java设计模式之策略模式与状态模式
版权声明:本文出自汪磊的博客,转载请务必注明出处. 一.策略模式定义 定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们之间可以相互替换,策略模式可以在不影响客户端的情况下发生变化. ...
- 使用Django实现分页器功能
要使用Django实现分页器,必须从Django中导入Paginator模块 from django.core.paginator import Paginator 假如现在有150条记录要显示,每页 ...
- Perf工具
前段时间Linux下用nmon监控程序的运行,发现CPU的使用率很高,系统态Sys的比例很高.程序的速度不是很快,怀疑和上面的原因有关. 分别使用perf record,perf report和top ...
- demo说明
访问http://192.168.90.63:30111/face_mark/, 会看到上图的界面. 下面简单说下如何使用这个demo. 一.选择选择同一个人不同角度的五张图. 选中了五张图片.此时任 ...
- boost编译随笔
boost下载地址 编译 生成bjam.exe 1.下载boost源码,可以直接使用上面给出的1.60.0版本 2.解压下载到的boost文件,例如解压到 x:\boost_1_60_0 3.使用Vi ...
- CocosCreator游戏开发---菜鸟学习之路(一)
PS(废话): 辞职后在家好久好久了,久到经济不允许了,接着就准备再次出去找工作了,然而工作哪有那么好找,特别是像我这种菜鸟.而且我还准备转行,准备去做游戏,技能等级接近于0,那工作就更难找了.既然如 ...
- IDA学习笔记 函数调用约定
stdcall和cdecl: stdcall和cdecl 压栈方向都是从右到左 区别在于c约定是调用方在函数返回后add esp,n指令清除堆栈中的参数,而stdcall在被调函数内使用ret n来清 ...
- os模块中关于文件/目录常用的函数使用方法
os模块中关于文件/目录常用的函数使用方法 函数名 使用方法 getcwd() 返回当前工作目录 chdir(path) 改变工作目录 listdir(path='.') 列举指定目录中的文件名('. ...
- hdu4149 Magic Potion
Magic Potion Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tota ...