View动画

View动画的种类

View动画支持四种效果:

1.平移动画

2.缩放动画 

3.旋转动画 

4.透明度动画

以上四种动画分别对应Animation的四个子类:TranslateAnimation   ScaleAniamtion  RotateAnimation  AlphaAnimation

这四种动画既可以通过xml定义,也可以通过代码来创建。对于View动画来说,建议采用xml来定义动画,因为xml格式的动画可读性更好。

下面说一下用xml来定义四种动画的语法

首先都是

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <alpha
        android:fromAlpha="0.1"
        android:toAlpha="1"/>
    <translate
        android:duration="400"
        android:fromXDelta="0"
        android:toXDelta="100"
        android:fromYDelta="0"
        android:toYDelta="100"/>
    <rotate
        android:duration="400"
        android:fromDegrees="0"
        android:toDegrees="90"/>
    <scale
        android:fromXScale="0"
        android:toXScale="100"
        android:fromYScale="0"
        android:toYScale="100"
        android:pivotX="0"
        android:pivotY="0"/>

</set>
其中
scale动画中的
android:pivotX="0"意思是旋转的轴的X坐标  
android:pivotX="0"意思是旋转的轴的Y坐标
//加载xml的形式
Animation animation = AnimationUtils.loadAnimation(this, R.anim.anim_view);
btn_animView.startAnimation(animation);

通过代码的形式来应用动画
比如透明度动画如下写法:
AlphaAnimation alphaAnimation = new AlphaAnimation(0,1);
alphaAnimation.setDuration(300);
btn_animView.startAnimation(alphaAnimation);
btn_animView.startAnimation(alphaAnimation);


View动画的特殊用途

1.在ViewGroup中可以控制子元素的出场效果  ,用到的类是LayoutAnimation

2.在Activity中可以实现不同Activity之间的切换效果

下面来介绍特殊用途1,这里为GridView添加一个item出现效果,有两种方式

方式一,使用xml的形式定义这个动画

1.先在anim文件夹下面定义一个LayoutAnimation的xml文件,内容如下

<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
    android:delay="0.5"
    android:animationOrder="normal"
    android:animation="@anim/anim_item"/>

这里需要说明的几个属性的意思,delay属性表示开始动画的时间延迟,比如子元素入场动画的时间周期为300ms,那么0.5表示每个子元素都需要延迟150ms才能播放入场动画。总的来说就是子元素1延迟150ms,子元素2就是延迟300ms了。

animationOrder表示子元素动画的顺序,有以下三中选项:

normal:表示顺序显示,即是排在最前面的子元素先开始播放入场动画

reverse:表示逆向显示,跟normal相反。

random: 表示随机播放入场动画

animation就是指定具体的入场动画,这里就是下面要定义的anim_item动画文件

然后建立一个上面文件中的属性animation对应的anim_item的文件,就是GridView每个item出现的具体动画文件

内容是:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="300"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    android:shareInterpolator="true">

    <alpha
        android:fromAlpha="0.0"
        android:toAlpha="1.0"/>
    <translate
        android:fromYDelta="500"
        android:toYDelta="0"/>
</set

最后在GridView中配置LayoutAnimation属性,如下

<GridView
    android:id="@+id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:numColumns="3"
    android:stretchMode="columnWidth"
    android:listSelector="@null"
    android:horizontalSpacing="1dp"
    android:verticalSpacing="1dp"
    android:background="#FFFFFF"
    android:layoutAnimation="@anim/anim_layout"
    android:scrollbars="none"/>
就这样,利用xml给GridView的item添加出现动画已经完了,这种方式适合所有的ViewGroup,比如ListView。


然后介绍用代码形式,就是以下几句代码

Animation animation = AnimationUtils.loadAnimation(this,R.anim.anim_item);
LayoutAnimationController controller = new LayoutAnimationController(animation);
controller.setDelay(0.5f);
controller.setOrder(LayoutAnimationController.ORDER_NORMAL);
gridView.setLayoutAnimation(controller);
这种方法主要用到了LayoutAnimationController这个类。


下面介绍View动画的第二种特殊用途,在Activity中可以实现不同Activity之间的切换效果

这里不贴代码了,主要用到的是overridePendingTransition()这个方法,这个方法必须放在startActivity()或者finish()之后才能生效

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值