Android 动画(1) View Animation

本文介绍了Android中的View Animation,作为实现应用动态效果的一种方式。它适用于View对象,支持旋转、缩放、平移等变化,但不改变View的背景颜色。尽管View Animation在视觉上改变大小,实际并未影响View的实际尺寸。动画可通过XML或代码定义,推荐使用XML,并存放在/res/anim/目录下。通过startOffset和interpolator属性,可以调整动画的顺序和渐变效果。动画类型包括<alpha>、<scale>、<translate>和<rotate>,并可以通过<set>组合多个动画。
摘要由CSDN通过智能技术生成

简介:

Android 开发过程当中,我们会经常想到用一些动画效果让开发出来的app看起来更加高大上,也更加符合人机交互。Android提供了3种动画效果:View Animation、Drawble Animation、Property Animation;

使用:

这里写一下View Animation(Tween Animation),补间动画,给出两个关键帧,通过一些算法将给定属性值在给定的时间内在两个关键帧间渐变。

View Animation 只能用在View对象,而且只支持一部分属性改变,如:可以旋转,不能改变背景颜色;

注:View Animation 视觉改变View的大小的时候,只是改变View对象的绘制位置,而没有改变View对象的本身的大小,eg:比如,你有一个Button,坐标(100,100),Width:200,Height:50,而你有一个动画使其变为Width:100,Height:100,你会发现动画过程中触发按钮点击的区域仍是(100,100)-(300,150)。

View Animation就是一系列View形状的变换,如大小的缩放,透明度的改变,位置的改变,动画的定义既可以用代码定义也可以用XML定义,当然,建议用XML定义。

可以给一个View同时设置多个动画,比如从透明至不透明的淡入效果,与从小到大的放大效果,这些动画可以同时进行,也可以在一个完成之后开始另一个。

用XML定义的动画放在/res/anim/文件夹内,XML文件的根元素可以为<alpha>,<scale>,<translate>,<rotate>,interpolator元素或<set>(表示以上几个动画的集合,set可以嵌套)。默认情况下,所有动画是同时进行的,可以通过startOffset属性设置各个动画的开始偏移(开始时间)来达到动画顺序播放的效果。

可以通过设置interpolator属性改变动画渐变的方式,如AccelerateInterpolator,开始时慢,然后逐渐加快。默认为AccelerateDecelerateInterpolator。

在资源文件中定义好动画XML,使用以下方式调用:

ImageView iv_temp= (ImageView)findViewById(R.id.iv_temp);
Animation hyperspaceJumpAnimation=AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
iv_temp.startAnimation(hyperspaceJumpAnimation)


使用详解:

XML定义动画效果:

alpha渐变透明度动画
scale渐变尺寸大小动画
translate画面转换位置移动动画
rotate画面旋转动画


Java代码中:

AlphaAnimation渐变透明度动画
ScaleAnimation渐变尺寸大小动画
TranslateAnimation画面转换位置移动动画
RotateAnimation画面旋转动画

alpha:

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="20"
    android:fromAlpha="0.0"
    android:toAlpha="1.0" />


fromAlpha:开始透明度

toAlpha:结束透明度

duration:动画时间


roate:

<?xml version="1.0" encoding="utf-8"?>
<rotate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    android:fromDegrees="300"
    android:toDegrees="-360"
    android:pivotX="10%"
    android:pivotY="100%"
    android:duration="10000"
    />
fromDegrees:动画开始时的角度

toDegrees:动画结束时的角度,正代表顺时针

pivotY:动画相对VIew对象的Y轴位置

pivotX:动画相对View对象的X轴位置

duration:动画完成时间


scale:

<?xml version="1.0" encoding="utf-8"?>
<scale
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/decelerate_interpolator"
    android:fromXScale="0.0"
    android:toXScale="1.5"
    android:fromYScale="0.0"
    android:toYScale="1.5"
    android:pivotX="50%"
    android:pivotY="50%"
    android:startOffset="0"
    android:duration="10000"
    android:repeatCount="1"
    android:repeatMode="reverse"/>

fromXScale,fromYscale:开始时x,y的长度缩放大小,0.0为不显示,1.0为正常大小

toXScale,toYscale:结束时x,y的长度缩放大小,0.0为不显示,1.0为正常大小

pivotX,pivotY:开始时动画在屏幕的位置,50%即为一半,如上就是为屏幕的中间

startOffset:动画多次执行停顿的时间间隔,如果只是执行一次,在执行前将停顿这个时间间隔

repeatCount:动画重复次数

repeatMode:动画执行模式,reverse:偶数次数时将逆向执行动画;restart:重复执行,一毛一样


translate:

<?xml version="1.0" encoding="utf-8"?>
<scale
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="320"
    android:toXDelta="0"
    android:fromYDelta="480"
    android:toYDelta="0"
    android:duration="10000"/>

fromXDelta:开始时X坐标

fromYDelta:开始时Y坐标

toXDelta:结束X坐标

toYDelta:结束Y坐标









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值