android 帧动画

原创 2016年08月28日 21:46:38
Android animation动画有四种类型,


alph 渐变透明度
scale 渐变尺寸伸缩
translate  画面转换位置移动
rotate 画面转移旋转


对应的java代码中
AlphaAnimation 渐变透明度
ScaleAnimation 渐变尺寸伸缩
TranslateAnimation 画面转换位置移动
RotateAnimation 画面转移旋转


在xml里面可以使用类似布局的玩意书写
透明动画是四类动画中最简单的一个


<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <alpha
        android:duration="1000"
        android:fromAlpha="0.0"
        android:toAlpha="1.0" />
    <!--
     透明度控制动画效果 alpha
        浮点型值:
            fromAlpha 属性为动画起始时透明度
            toAlpha   属性为动画结束时透明度
            说明: 
                0.0表示完全透明
                1.0表示完全不透明
            以上值取0.0-1.0之间的float数据类型的数字
        长整型值:
            duration  属性为动画持续时间
            说明:     
                时间以毫秒为单位
    -->
</set>


Animation animation = AnimationUtils.loadAnimation(this, R.anim.alpha_anim);
view.startAnimation(animation);






剩下的动画中伸缩和旋转有异曲同工之妙


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


    <scale
        android:duration="1000"
        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.4"
        android:toYScale="1.4" />


</set><!--
     尺寸伸缩动画效果 scale
       属性:interpolator 指定一个动画的插入器
        在我试验过程中,使用android.res.anim中的资源时候发现
        有三种动画插入器:
            accelerate_decelerate_interpolator  加速-减速 动画插入器
            accelerate_interpolator        加速-动画插入器
            decelerate_interpolator        减速- 动画插入器
        其他的属于特定的动画效果
      浮点型值:
            fromXScale 属性为动画起始时 X坐标上的伸缩尺寸    
            toXScale   属性为动画结束时 X坐标上的伸缩尺寸     
        
            fromYScale 属性为动画起始时Y坐标上的伸缩尺寸    
            toYScale   属性为动画结束时Y坐标上的伸缩尺寸    
            说明:
                 以上四种属性值    
    
                    0.0表示收缩到没有 
                    1.0表示正常无伸缩     
                    值小于1.0表示收缩  
                    值大于1.0表示放大   
            pivotX     属性为动画相对于物件的X坐标的开始位置
            pivotY     属性为动画相对于物件的Y坐标的开始位置 
            说明:
                    以上两个属性值 从0%-100%中取值
                    50%为物件的X或Y方向坐标上的中点位置  
        长整型值:
            duration  属性为动画持续时间
            说明:   时间以毫秒为单位


        布尔型值:
            fillAfter 属性 当设置为true ,该动画转化在动画结束后被应用
-->
ScaleAnimation(float fromX, float toX, float fromY, float toY,
           int pivotXType, float pivotXValue, int pivotYType, float pivotYValue) 


fromX为动画起始时 X坐标上的伸缩尺寸    
toX为动画结束时 X坐标上的伸缩尺寸     
fromY为动画起始时Y坐标上的伸缩尺寸    
toY为动画结束时Y坐标上的伸缩尺寸  




pivotXType为动画在X轴相对于物件位置类型  
pivotXValue为动画相对于物件的X坐标的开始位置
pivotXType为动画在Y轴相对于物件位置类型   
pivotYValue为动画相对于物件的Y坐标的开始位置




前面四个参数好理解,关键是后面四个,
type的类型有三种
 public static final int ABSOLUTE = 0;


    /**
     * The specified dimension holds a float and should be multiplied by the
     * height or width of the object being animated.
     */
    public static final int RELATIVE_TO_SELF = 1;


    /**
     * The specified dimension holds a float and should be multiplied by the
     * height or width of the parent of the object being animated.
     */
    public static final int RELATIVE_TO_PARENT = 2;


ABSOLUTE 指的是相对屏幕;RELATIVE_TO_SELF 指的是自身;RELATIVE_TO_PARENT 指的是相


对父容器。


比如又一个控件ImageView,想让他缩放扩大效果,是想让他以哪个点为基准来缩放,就有后


面四个参数分别控制x轴和y轴。
pivotXType为参照类型,pivotXValue为百分比,
比如上述ImageView在布局中,想扩大到全屏,如果在屏幕上随意一个位置,该如何计算缩放


点呢?
首先要以屏幕为type,其次x轴计算缩放点,就是该控件距离屏幕左边的距离与控件距离屏幕


右边的距离的比,就是pivotXValue的值,如此即可。
动画构造方法,读过源码应该知道,默认是
private int mPivotXType = ABSOLUTE;
private int mPivotYType = ABSOLUTE;
private float mPivotXValue = 0.0f;
private float mPivotYValue = 0.0f;


默认是相对屏幕类型,并且是在屏幕的左上角,也就是说从屏幕的左上角向右边和下边扩散







旋转动画和缩放动画类似,可以参考看看。


位移动画,也和上述类似,默认都是相对屏幕,
TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float 


toYDelta)
四个参数都是可以传int值,就是像素。
说的再通俗一点


选择参照为Animation.ABSOLUTE,对应的值是具体的坐标值,比如100到400,指绝对的屏幕


像素单位


选择参照为Animation.RELATIVE_TO_SELF或者 Animation.RELATIVE_TO_PARENT是相对于自身


或父控件,对应值为相对于自身或者父控件的几倍或百分之多少。这里直接用float数字表示


,不要用%。


以上都可以设置动画次数和动画执行方式。









相关文章推荐

android逐帧动画

  • 2015年12月28日 16:26
  • 446KB
  • 下载

【Android实战】使用帧动画实现自定义loading加载布局

在项目开发过程中,我们总是需要自定义一些和项目风格类似的loading页面,这时候我们可以考虑使用帧动画来完成这一功能 假如我们要实现如下图所示的帧动画加载效果: 我们可以选取三张帧图片: 具体在帧...

Android逐帧(Frame)动画

  • 2016年09月10日 16:15
  • 11.51MB
  • 下载

Android下逐帧动画的Demo

  • 2013年12月03日 00:07
  • 5.14MB
  • 下载

Android 帧动画OOM问题优化

普通实现 实现一个帧动画,最先想到的就是用animation-list将全部图片按顺序放入,并设置时间间隔和播放模式。然后将该drawable设置给ImageView或Progressbar就OK了。...

android 经典帧动画源码

  • 2017年07月25日 14:31
  • 32.51MB
  • 下载

Android帧动画实现

  • 2014年08月22日 16:15
  • 1.47MB
  • 下载

Android DrawableAnimation逐帧动画加载多图(OOM的解决)

想做一个逐帧动画,用了一百来张图片,结果内存溢出了,找了半天最后算是解决了。 本来是在drawable里面写一个animation-list,设置ImageView的backgroud, 然后在A...

android 逐帧动画实现 源码

  • 2017年09月14日 09:03
  • 3KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android 帧动画
举报原因:
原因补充:

(最多只允许输入30个字)