【Android界面实现】View Animation 使用介绍
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992
我们能够使用view animation 动画系统来给View控件加入tween动画(下称“补间动画”),补间动画通过计算一些动画參数,比方说開始点,结束点,大小,旋转角度和一些其它的动画參数。来实现动画效果。
补间动画能够给View对象加入一系列简单的变换。比方位置,大小,角度或者是透明度。所以,假设你有一个TextView对象。你能够移动,旋转或者是变大。
假设它有一个背景图片,背景图片也会随着text进行变化。
http://developer.android.com/reference/android/view/animation/package-summary.html 这个地址提供了补间动画须要的全部类。
一系列的动画指令被定义为补间动画,我们能够使用xml文件或者是纯代码进行定义。当我们想定义一个布局的时候。xml文件更加的方便,由于相对于硬编码。它可读性好、复用性强而且易于替换。所以,在以下的实例中,我们将使用xml的方式(想要了解很多其它的关于硬编码而不是xml方式的信息,请查阅AnimationSet类和Animation的子类)。
我们能够通过设置属性来决定我们想要动画什么时候发生,持续的时长等等。
动画的变换能够是顺序发生的,也能够是同一时候发生的。比方。我们能够把一个TextView从左移动到右,然后旋转180度。或者是,我们能够让移动的动画和旋转动画同一时候发生。
每一种动画变换都须要设置自己特有的属性集合(大小变化须要设置開始大小和结束大小,旋转变化须要设置開始角度和结束角度,其它的也相似),还须要设置一些共同的属性,比方開始时间和持续时间。
假设我们想让非常多变换一起发生,给他们设置同样的開始时间就可以。假设想让变换顺序发生,我们仅仅须要把開始时间设置成前面动画的持续总时间就能够了。
假设我们想通过xml文件创建动画,我们须要在project的res文件夹下,创建一个anim文件夹。文件必须有且仅仅有一个根元素。比方<alpha>,<scale>,<translate>,<rotate>,插值器元素。或者是一个<set>元素里面包括这些动画元素(也能够再包括一个set元素)。假设我们想让动画顺序发生,我们比方设置单独的startOffset属性。就像以下的样例。
以下的这个xml文件来自ApiDemo,用来伸缩然后同一时候旋转一个View对象。
<set android:shareInterpolator="false">
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="1.0"
android:toXScale="1.4"
android:fromYScale="1.0"
android:toYScale="0.6"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="700" />
<set android:interpolator="@android:anim/decelerate_interpolator">
<scale
android:fromXScale="1.4"
android:toXScale="0.0"
android:fromYScale="0.6"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="700"
android:duration="400"
android:fillBefore="false" />
<rotate
android:fromDegrees="0"
android:toDegrees="-45"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="700"
android:duration="400" />
</set>
</set>
屏幕的坐标系的(0。0)点在屏幕的左上角上面。向右为x正坐标,向下是y的正坐标。
一些值,比方说pivotX,能够指定与自身或者是父类相关。请确保你使用的格式是你想要的效果的正确格式,比方,50%是相对于自身的50%,可是50就不一样了。
我们也能够指定一个interpolator(插值器)来确定变换的时间怎样变化。Android里面包括了几中插值器子类。每一种都有自己的加速度曲线。比方accelerateInterpolator,会告诉变换在開始的时候速度比較慢。然后開始加速。我们能够在xml里面设置相关的属性。
假设我们把上面的代码叫做hyperspace_jump.xml,那么我们使用以下的代码。给一个ImageView控件加入动画。
ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
spaceshipImage.startAnimation(hyperspaceJumpAnimation);
作为startAnimatinon()的一个可选的方式。我们能够使用Animation,setStartTime()设置開始时间。然后使用View,setAnimation()设置动画
假设想了解很多其它XML使用方法和可选的tag的属性,请查看Animation Resources。
Note:
无论你的动画是移动还是放缩,设置了动画的View控件的边界都不会自己主动调整去适应,即使如此,动画依旧会被绘制出来,及时超出了边界也不会被分割。然而,假设动画超出了父View的范围,那超出部分就会被分割。
原文地址:http://developer.android.com/guide/topics/graphics/view-animation.html
【Android界面实现】View Animation 使用介绍的更多相关文章
- Android Animation学习(六) View Animation介绍
Android Animation学习(六) View Animation介绍 View Animation View animation系统可以用来执行View上的Tween animation和F ...
- 【Android界面实现】Drawable Animation 使用介绍
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 (眼下仅仅能用在View对象上的动画效果的实现有两种,一种就是上一篇的View Animat ...
- Android动画View Animation
Animations 一.Animations介绍 Animations是一个实现android UI界面动画效果的API,Animations提供了一系列的动画效果,可以进行旋转.缩放.淡入淡出等, ...
- 【Android 基础】Animation 动画介绍和实现
在前面PopupWindow 实现显示仿腾讯新闻底部弹出菜单有用到Animation动画效果来实现菜单的显示和隐藏,本文就来介绍下吧. 1.Animation 动画类型 Android的animati ...
- Android动画主要包含补间动画(Tween)View Animation、帧动画(Frame)Drawable Animation、以及属性动画Property Animation
程序运行效果图: Android动画主要包含补间动画(Tween)View Animation.帧动画(Frame)Drawable Animation.以及属性动画Property Animatio ...
- [Android]Animation 动画介绍和实现
Animation动画效果来实现菜单的显示和隐藏,本文就来介绍下吧. 1.Animation 动画类型 Android的animation由四种类型组成: XML中 alph 渐变透明度动画效果 sc ...
- Android动画View Animation与Drawable Animation
Animations 一.Animations介绍 Animations是一个实现android UI界面动画效果的API,Animations提供了一系列的动画效果,可以进行旋转.缩放.淡入淡出等, ...
- 浅谈Android样式开发之View Animation (视图动画)
引言 一个用户体验良好的App肯定少不了动画效果.Android为我们提供了2种动画框架,分别是视图动画(View Animation)和属性动画(Property Animation).视图动画比较 ...
- Android Animation学习(一) Property Animation原理介绍和API简介
Android Animation学习(一) Property Animation介绍 Android Animation Android framework提供了两种动画系统: property a ...
随机推荐
- THttpClientSocket token验证
THttpClientSocket uses SynCrtSock非WINHTTP.DLL里面的控件,可以用于手机端. function Client(const SQL: RawUTF8): Raw ...
- 如何实现jenkins的多平台任务同时执行
如果需要我们的程序在多个平台(linux.mac.window)同时执行,该如何操作 1.首先需要构建一个“多配置项目” 2.配置项目在过个平台上运行
- JS函数节流和函数防抖问题分析
问题1:如果实现了dom拖拽功能,但是在绑定拖拽事件的时候发现每当元素稍微移动一点便触发了大量的回调函数,导致浏览器直接卡死,这个时候怎么办? 问题2:如果给一个按钮绑定了表单提交的post事件,但是 ...
- Hibernate简介与实例
一.Hibernate简介 1.什么是Hibernate? Hibernate是数据持久层的一个轻量级框架.数据持久层的框架有很多比如:iBATIS,myBatis,Nhibernate,Siena等 ...
- PHP的抽象类、接口的区别和选择[转载]
区别: 1.对接口的使用是通过关键字implements.对抽象类的使用是通过关键字extends.当然接口也可以通过关键字extends继承. 2.接口中不可以声明成员变量(包括类静态变量),但是可 ...
- ftp上传下载至网站
完整的命令行模式解析! 1. 首先open 域名(Ip)形式即可 实例: open 60.205.45.115 2.后面输入用户名(主机名): bxw2713600302 3.输入密码:密码默认显示不 ...
- 算法笔记_054:Prim算法(Java)
目录 1 问题描述 2 解决方案 2.1 贪心法 1 问题描述 何为Prim算法? 此处引用网友博客中一段介绍(PS:个人感觉网友的这篇博客对于Prim算法讲解的很清楚,本文与之相区别的地方在于具 ...
- VUE 数组更新
1.数据方法分类: (1)原数组改变 push pop unshift shift reverse sort splice (2)原数组未变,生成新数组 slice concat filter map ...
- linux下Oracle11g RAC搭建(二)
linux下Oracle11g RAC搭建(二) 一.安装前配置 网络的配置 IP占用測试 进入windows下.运行cmd,使用ping命令验证网段是否被占用. 注:用哪个网段都行,一定保证不要被其 ...
- 【Datastage】导出的dsx文件如何统计导出作业个数
我们在日常使用ds时候,会将很多ds打包导出,例如:有100个作业,现在我们打包导出,但是导出之后如何确认我们是否已经完全导出,会不会在导出的时候漏了一个作业呢? 不用怕! 我们使用编辑打开导出的ds ...