zoukankan      html  css  js  c++  java
  • 动画

    变换动画

       3.1 四个基本的变换
             Alpha :渐变;   Scale : 渐变尺寸;   Translate :位置移动动画;  Rotate:旋转动画;

       3.2 常用属性:
         (1)  Duration :动画时间;
         (2)fillAfter :为true 动画转换为 动画结束后应用;
         (3)fillBefore :true 动画转换 直接被 应用;
         (4)interpolator :动画插入器(加速,减速插入器);
         (5)repeatCount  : 动画重复次数;
         (6)repateMode   :顺序重复 、倒叙重复;
         (7)startOffset  : 动画之间的时间间隔;

       3.3 实现方式:
         配置文件:alpha , scale ,translate ,rotate ;
         代码实现:AlphaAnimation ,ScaleAnimation ,TranslateAnimation,RotateAnimation;

       3.4 Alpha 实现
         (1)代码实现
        Animation animation = new AlphaAnimation(0.1f, 1.0f);  
        animation.setDuration(5000);  
        imageview1.startAnimation(animation);  

    (2)布局实现

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

        加载:

        Animation animation2 = AnimationUtils.loadAnimation(  
                            MainActivity.this, R.anim.alpha);  
                    imageview1.startAnimation(animation2);  

     3.5 Scale 缩放

         (1)代码实现
        /** 
             * 参数: 
             * 0.0~1.0 
             * float fromX :x开始比例 
             * float toX   :x结束比例 
             * float fromY :y开始比例 
             * float toY,  :y结束比例 
             * int pivotXType    :Animation.RELATIVE_TO_SELF 相对与自己缩放 
             * float pivotXValue :x缩放的位置 0.0~1.0 ;0.5为 中心 
             * int pivotYType    :Animation.RELATIVE_TO_SELF 相对与自己缩放 
             * float pivotYValue :y缩放的位置 0.0~1.0 ;0.5为 中心 
             *  
             */  
            Animation animation = new ScaleAnimation(1.0f, 0.3f, 1.0f, 0.3f,  
                    Animation.RELATIVE_TO_SELF, 0.5f,  
                    Animation.RELATIVE_TO_SELF, 0.5f);  
            animation.setDuration(1000);  
            //缩放结束后,保持为改比例  
            animation.setFillAfter(true);  
            imageview1.startAnimation(animation);  

    (2)布局实现

        <?xml version="1.0" encoding="utf-8"?>  
        <set xmlns:android="http://schemas.android.com/apk/res/android" >  
          
            <!--  
             **duration 时间  
             **fillAfter 结束后是否保持状态  
             **fromXScale x缩放初始值  
             **fromYScale y缩放初始值  
             **interpolator 插入器  
             **pivotx x缩放位置  
             **pivotY y缩放位置  
             **toXScale x缩放最终值  
             **toYScale y缩放最终值  
              
            -->  
              
            <scale  
                android:duration="2000"  
                android:fillAfter="false"  
                android:fromXScale="0.0"  
                android:fromYScale="0.0"  
                android:interpolator="@android:anim/accelerate_decelerate_interpolator"  
                android:pivotX="50%"  
                android:pivotY="50%"  
                android:toXScale="1.0"  
                android:toYScale="1.0" />  
          
        </set>  

       调用:

        Animation anim= AnimationUtils.loadAnimation(this, R.anim.scale);  
                image.startAnimation(anim);  

    3.6 Translate 移动

         (1)代码实现
        /** 
                 * 参数: 
                 * int fromXType ,x初始相对位置 
                 * float fromXValue, x 初始位置 
                 * int toXType,  x 目标相对位置 
                 * float toXValue,  x目标位置 
                 * int fromYType, y 初始相对位置 
                 * float fromYValue, y 初始位置 
                 * int toYType,   y目标相对位置 
                 * float toYValue y目标位置 
                 *  
                 * 下面实现 平移效果 
                 *  
                 */  
          
                Animation animation = new TranslateAnimation(Animation.RELATIVE_TO_SELF,  
                        0.0f, Animation.RELATIVE_TO_SELF, 1.0f, Animation.RELATIVE_TO_SELF, 0.0f,  
                        Animation.RELATIVE_TO_SELF, 0.0f);  
                animation.setDuration(1000);  
                imageview1.startAnimation(animation);  

         (2)布局实现

        <?xml version="1.0" encoding="utf-8"?>  
        <set xmlns:android="http://schemas.android.com/apk/res/android" >  
          
            <translate  
                android:duration="1000"  
                android:fromXDelta="10"  
                android:fromYDelta="10"  
                android:toXDelta="100"  
                android:toYDelta="100" />  
          
        </set>  

    3.7 Rotate 旋转效果

          (1)代码实现
        /** 
                     * 参数:  
                     * float fromDegrees, 开始角度 
                     * float toDegrees,  旋转的角度 
                     * int pivotXType,   x相对属性 Animation.RELATIVE_TO_SELF 
                     * float pivotXValue, 旋转中心 x 
                     * int pivotYType,   y相对属性 Animation.RELATIVE_TO_SELF 
                     * float pivotYValue  旋转中心 y 
                     *  
                     * 旋转180度 
                     */  
          
                    Animation animation = new RotateAnimation(0.0f, 180.0f,  
                            Animation.RELATIVE_TO_SELF, 0.5f,  
                            Animation.RELATIVE_TO_SELF, 0.5f);  
                    animation.setDuration(2000);  
                    animation.setFillAfter(true);  
                    imageview1.startAnimation(animation);  

    (2)布局实现

        <?xml version="1.0" encoding="utf-8"?>  
        <set xmlns:android="http://schemas.android.com/apk/res/android" >  
          
            <rotate  
                android:duration="1000"  
                android:fromDegrees="0"  
                android:interpolator="@android:anim/accelerate_decelerate_interpolator"  
                android:pivotX="50%"  
                android:pivotY="50%"  
                android:toDegrees="+360" />  
          
        </set>  

      调用:

        Animation anim= AnimationUtils.loadAnimation(this, R.anim.rotate);  
                    image.startAnimation(anim);  
    4.帧动画 FrameAnimation
      (1)实现布局 animation-list
        <?xml version="1.0" encoding="utf-8"?>  
        <animation-list xmlns:android="http://schemas.android.com/apk/res/android" >  
          
            <item  
                android:drawable="@drawable/one"  
                android:duration="500"/>  
            <item  
                android:drawable="@drawable/two"  
                android:duration="500"/>  
            <item  
                android:drawable="@drawable/three"  
                android:duration="500"/>  
            <item  
                android:drawable="@drawable/four"  
                android:duration="500"/>  
            <item  
                android:drawable="@drawable/five"  
                android:duration="500"/>  
            <item  
                android:drawable="@drawable/six"  
                android:duration="500"/>  
          
        </animation-list>  

    加载

          ImageView加载 实现动画;
    image.setImageResource(R.drawable.anim_list);  

    布局动画

      (1) 实现LayoutAnimationController 实现加载动画;
        LayoutAnimationController lac=new LayoutAnimationController(AnimationUtils.loadAnimation(this, R.anim.zoom_in));  
           lac.setOrder(LayoutAnimationController.ORDER_NORMAL);  
           listView.setLayoutAnimation(lac);  

    动画实现 渐进进入

        <?xml version="1.0" encoding="utf-8"?>  
        <set xmlns:android="http://schemas.android.com/apk/res/android"  
            android:interpolator="@android:anim/decelerate_interpolator" >  
            
          <scale  
                android:duration="1000"  
                android:fromXScale="0.1"  
                android:fromYScale="0.1"  
                android:pivotX="50%"  
                android:pivotY="50%"  
                android:toXScale="1.0"  
                android:toYScale="1.0" />  
          <alpha  
                android:duration="1000"  
                android:fromAlpha="0"  
                android:toAlpha="1.0" />  
        </set>  

    动画实现 渐进渐出

        <?xml version="1.0" encoding="utf-8"?>  
        <set xmlns:android="http://schemas.android.com/apk/res/android"  
            android:interpolator="@android:anim/decelerate_interpolator"  
            android:zAdjustment="top" >  
          
            <scale  
                android:duration="@android:integer/config_mediumAnimTime"  
                android:fromXScale="1.0"  
                android:fromYScale="1.0"  
                android:pivotX="50%p"  
                android:pivotY="50%p"  
                android:toXScale="0.1"  
                android:toYScale="0.1" />  
          
            <alpha  
                android:duration="@android:integer/config_mediumAnimTime"  
                android:fromAlpha="1.0"  
                android:toAlpha="0" />  
          
        </set>  

    Activity 切换动画

        使用 overridePendingTransition实现加载动画;
        实例:
        Intent intent=new Intent(MainActivity.this,MainActivity2.class);  
                    startActivity(intent);  
                    overridePendingTransition(R.anim.zoom_in,R.anim.zoom_out);  
  • 相关阅读:
    免费的数据库建模工具
    [原创]程序设计 异常处理总结
    C#混淆器 xenocode 使用说明
    [转载]Quartz.net官方开发指南 第九课: JobStore
    [转载] Quartz Cron 表达式(时间格式的写法)
    calico+macvlan
    华为欧拉openEuler 更新源没有main路径
    Difference between "genmask" and "netmask"?
    left join、right join和join的区别
    SQL查询时根据类型条件转换
  • 原文地址:https://www.cnblogs.com/shangliang88/p/7476942.html
Copyright © 2011-2022 走看看