android中的动画

1.AnimationDrawable

在XML中加入一组连贯的图片,设置图片的资源和时间间隔


<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/ship2_1" android:duration="100"></item>
    <item android:drawable="@drawable/ship2_2" android:duration="100"></item>
    <item android:drawable="@drawable/ship2_3" android:duration="100"></item>
    <item android:drawable="@drawable/ship2_4" android:duration="100"></item>
    <item android:drawable="@drawable/ship2_5" android:duration="100"></item>
    <item android:drawable="@drawable/ship2_6" android:duration="100"></item>
    <item android:drawable="@drawable/ship2_7" android:duration="100"></item>
    <item android:drawable="@drawable/ship2_8" android:duration="100"></item>    
</animation-list>

在布局中文件中定义一个ImageView,设置其背景为该XML文件

<ImageView
        android:id="@+id/img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@null"
        android:background="@drawable/background"/>

得到ImageView,通过其得到AnimationDrawable对象


     img =(ImageView) findViewById(R.id.img) ;
     AnimationDrawable ad  = (AnimationDrawable) img.getBackground() ;

通过其start()和stop()方法开始和停止动画。


2.anim的xml实现


动画有rotate,scale,translate,alpha四种,set是这四种动画的集合

    Animation anim = AnimationUtils.loadAnimation(MainActivity.this, R.anim.rotate) ;
    img.setAnimation(anim);

rotate.xml

<?xml version="1.0" encoding="utf-8"?>
<rotate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:toDegrees="180"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="2000"   
    android:repeatCount="1"
    android:repeatMode="reverse">
    <!-- android:fillAfter="true" 保留最后的状态-->
    <!-- android:pivotX="50%" 表示是围绕自己的中心,"50%p"是围绕父控件的中心 -->
 </rotate>

3.layoutAnimation

<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"  
            android:delay="30%"  
            android:animationOrder="reverse"  
            android:animation="@anim/translate" /> 

在需要使用的空间中加入layoutAnimation属性

android:layoutAnimation="@anim/layout_anim" 


也可以再java代码中实现

 
  在anim下新建一个xml文件,该文件里面设置了控件的动态效果,所以根标签为set。
 
  在java代码中新建一个Animation对象,采用AnimationUtils.loadAnimation()的方法获得,该方法有一个输入参数及anim下的xml文件id。
 
  新建一个LayoutAnimationController对象,输入参数为上一步新建的Animation对象。
 
  设置改LayoutAnimationController对象的属性,比如控件出场的顺序(该顺序主要有随机,从头到尾,反向3种),控件出现的间隔时间等。
 
  在布局文件中加载该LayoutAnimationController对象。

 Animation animation = (Animation)AnimationUtils.loadAnimation(MainActivity.this, R.anim.set_anim);
        LayoutAnimationController lac = new LayoutAnimationController(animation);
        lac.setOrder(LayoutAnimationController.ORDER_RANDOM);
        lac.setDelay(0.5f);//注意这个地方是以秒为单位,是浮点型数据,所以要加f
        view.setLayoutAnimation(lac);





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值