• AndroidAnimations的使用大全之二:Frame Animation和其他


    Android-Animations的使用大全之一:Tweened Animations详解

     

    5 Frame-By-Frame Animations的使用方

    1 在res/drawable中创建一个xml文件,定义Animation的动画播放序列 anim_nv.xml

    Xml代码  收藏代码
    1. <animation-list xmlns:android="http://schemas.android.com/apk/res/android"  
    2.     android:oneshot="false">  
    3.     <item android:drawable="@drawable/nv1"  
    4.         android:duration="500" />  
    5.     <item android:drawable="@drawable/nv2"  
    6.         android:duration="500" />  
    7.     <item android:drawable="@drawable/nv3"  
    8.         android:duration="500" />  
    9.     <item android:drawable="@drawable/nv4"  
    10.         android:duration="500" />  
    11. </animation-list>  

    2 为ImageView设置背景资源

    Java代码  收藏代码
    1. imageView.setBackgroundResource(R.drawable.anim_nv);  

    3 通过ImageView得到AnimationDrawable

    Java代码  收藏代码
    1. AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getBackground();  

    3 执行动画

    Java代码  收藏代码
    1. animationDrawable.start();  

     

    Frame-By-Frame Animations的代码使用方法

            //实例化AnimationDrawable对象
            frameAnimation = new AnimationDrawable();
            
            /*装载资源*/
            //这里用一个循环装载所有名字类似的资源
            //如"a1...........15.png"的图片
            for(int i = 1; i <= 15; i++){
                int id = getResources().getIdentifier("a" + i, "drawable", mContext.getPackageName());
                //此方法返回一个可绘制的对象与特定的资源ID相关联 
                mBitAnimation = getResources().getDrawable(id);
                /*为动画添加一帧*/
                //参数mBitAnimation是该帧的图片
                //参数500是该帧显示的时间,按毫秒计算
                frameAnimation.addFrame(mBitAnimation, 500);
            }
            /*上边用到了Resources的getIdentifier方法 方法返回一个资源的唯一标识符,如果没有这个资源就返回0
             * 0不是有效的标识符,在说说这个方法几个参数的含义
             * 第一个 就是我们的资源名称了。
             * 第二个 就是我们要去哪里找我们的资源 我们的图片在drawable 下 所以为drawable
             * 第三个 我们用了Context的getPackageName返回应用程序的包名
             * */
            
            //设置播放模式是否循环播放,false表示循环,true表示不循环
            frameAnimation.setOneShot(false);
            
            //设置本类将要显示的这个动画
            this.setBackgroundDrawable( frameAnimation );
        

     

    6 LayoutAnimationController的使用方法(与ListView结合使用为例)

    什么是LayoutAnimationController

    1 LayoutAnimationController用于为一个layout里面的控件,或者是一个ViewGroup里面的控件设置动画效果

    2 每一个控件都有相同的动画效果

    3 这些控件的动画效果在不同的时间显示出来

    4 LayoutAnimationController可以在xml文件中设置,也可以在代码中设置

    在XML中使用LayoutAnimaionController

    1 在res/anim文件夹中创建一个文件,名为list_anim_layout.xml

    Xml代码  收藏代码
    1. <layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"  
    2.     android:delay="0.5"  
    3.     android:animationOrder="random"  
    4.     android:animation="@anim/list_anim" />  

    注意到list_anim这个xml文件,其中配置了动画效果,也就是一个动画配置文件(见3中)

    <set>

    <alpha...>

    </set>

    2 在布局文件中为ListView添加如下配置(就是在<listview>标签中添加一个属性)

    android:layoutAnimation="@anim/list_anim_layout"

    在代码中使用LayoutAnimationController

    Java代码  收藏代码
    1. 1 创建一个Animation对象:  
    2.     可以通过装载xml,也可以直接使用Animation的构造函数创建Animation对象  
    3. 2 创建LayoutAnimationController对象  
    4.     LayoutAnimationController lac=new LayoutAnimationController(animation);  
    5. 3 设置控件显示顺序  
    6.     lac.setOrder(LayoutAnimationController.ORDER_NORMAL);  
    7. 4 为ListView设置LayoutAnimationController属性:  
    8.     listView.setLayoutAnimation(lac);  

     

    7 AnimationListener的使用方法

    什么是AnimationListener

    1 Animation是一个监听器

    2 该监听器在动画执行的各个阶段会得到通知,从而调用相应的方法

    3 主要包含下面的三个方法

    onAnimationEnd(Animation animation)

    onAnimationRepeat(Animation animation)

    onAnimationStart(Animation animation)

    使用方法:

    animation.setAnimationListener(new XxxAnimationListener);

    其中XxxAnimationListener继承AnimationListene

    在其中实现三个onXXX方法

  • 相关阅读:
    [它山之石] 一件事情,假设你不能说清楚,十有八九你就做不好
    《硅谷》观后感:创业难,毋忘初心,且行且珍惜
    POJ
    Android Service完全解析,关于服务你所需知道的一切(上)
    Android最佳性能实践(四)——布局优化技巧
    Android最佳性能实践(一)——合理管理内存
    深入解析开源项目之Universal-Image-Loader(二)硬盘---缓存篇
    Image-Loader LruMemoryCache
    LinkedHashMap<String, Bitmap>(0, 0.75f, true) LinkedHashMap的加载因子和初始容量分配
    深入解析开源项目之Universal-Image-Loader(二)内存---缓存篇
  • 原文地址:https://www.cnblogs.com/TseChiHoi/p/2690365.html
Copyright © 2020-2023  润新知