android补间动画(TweenAnimation)

来源:互联网 发布:linux c opengl 编辑:程序博客网 时间:2024/06/04 18:20

一、AlphaAnimation(渐变动画)

//渐变动画private void startAlphaAnimation () {    /**     * 创建渐变动画对象     * 参数1:从一个透明值     * 参数2:到另外一个透明值     * 参数取值范围0~1     * 0:全不透明     * 1:全透明     */    AlphaAnimation aa = new AlphaAnimation (1,0);    //设置动画播放时长    aa.setDuration (1000);    //设置保持动画结束后的动作    aa.setFillAfter (true);    //设置保持动画结束前的动作    //aa.setFillBefore (true);    //设置延时之后再启动动画    aa.setStartOffset (500);    //设置重复播放动画的次数,如果为负数的话,则一直重复播放    aa.setRepeatCount (3);    /**     * 设置重复播放的模式,参数有2Animation.REVERSEAnimation.RESTART     * Animation.REVERSE,紧接着播放动画     * Animation.RESTART,回到开始的状态再播放动画     */    aa.setRepeatMode (Animation.RESTART);    //播放动画    iv_anim.startAnimation (aa);    //监听动画的状态,其它动画的监听也是一样的    aa.setAnimationListener (new Animation.AnimationListener () {        //开始动画时回调        @Override        public void onAnimationStart (Animation animation) {            toast("开始动画时回调");        }        //动画结束后回调        @Override        public void onAnimationEnd (Animation animation) {            toast("动画结束后回调");        }        //重复播放动画时回调        @Override        public void onAnimationRepeat (Animation animation) {            toast("重复播放动画时回调");        }    });}
二、ScaleAnimation(缩放动画)

//缩放动画private void startScaleAnimation () {    /**     * 创建缩放动画对象     * 参数1X轴从多大开始缩放     * 参数2X轴缩放到多大     * 参数3Y轴从多大开始缩放     * 参数4Y轴缩放到多大     * 0是从没有开始缩放     * 其他大于零的数是缩放的倍数     * 小于零的数是将缩放的控件翻转再进行缩放     *     * 参数5X轴围绕哪里(可以是自己,也可以是父控件)缩放Animation.RELATIVE_TO_SELF,Animation.RELATIVE_TO_PARENT     * 参数6:围绕X轴的哪个点进行缩放     * 参数7Y轴围绕哪里缩放     * 参数8:围绕Y轴的那个点进行缩放     */    ScaleAnimation sa = new ScaleAnimation (1,0,1,0,Animation.RELATIVE_TO_SELF,2.0f,Animation.RELATIVE_TO_SELF,2.0f);    //以下设置的参数同渐变动画设置的参数一致    sa.setDuration (1000);    sa.setRepeatCount (3);    sa.setRepeatMode (Animation.REVERSE);    sa.setFillAfter (true);    sa.setStartOffset (500);    iv_anim.startAnimation (sa);}
三、RotateAnimation(旋转动画)

//旋转动画private void startRotateAnimation () {    /**     * 创建旋转动画对象     * 参数1:从哪个角度开始旋转     * 参数2:旋转到哪个角度     * 参数3X轴围绕哪里(可以是自己,也可以是父控件)旋转Animation.RELATIVE_TO_SELF,Animation.RELATIVE_TO_PARENT     * 参数4X轴围绕着哪个点进行旋转     * 参数5Y轴围绕哪里旋转     * 参数6Y轴围绕着哪个点进行旋转     */    RotateAnimation ra = new RotateAnimation (0,720,Animation.RELATIVE_TO_PARENT,1.0f,Animation.RELATIVE_TO_SELF,1.0f);    //以下设置的参数同渐变动画设置的参数一致    ra.setDuration (1000);    ra.setStartOffset (500);    ra.setFillAfter (true);    ra.setRepeatCount (4);    ra.setRepeatMode (Animation.REVERSE);    iv_anim.startAnimation (ra);}
四、TranslateAnimation(平移动画)

//平移动画private void startTranslateAnimation () {    /**     *  创建平移动画的对象     *  参数1X轴平移起始位置相对于哪里(可以相对自己,起始位置相对于自己或者父控件,其实是一样的,可以相对父控件,如果是父控件,有可能跑到屏幕外面)     *  参数2X轴平移动画的起始位置     *  参数3X轴平移动到的位置相对哪里(可以相对自己,起始位置相对于自己或者父控件,其实是一样的,可以相对父控件,如果是父控件,有可能跑到屏幕外面)     *  参数4X轴平移到的位置     *  参数5Y轴平移起始位置相对于哪里(可以相对自己,起始位置相对于自己或者父控件,其实是一样的,可以相对父控件,如果是父控件,有可能跑到屏幕外面)     *  参数6Y轴平移动画的起始位置     *  参数7Y轴平移动到的位置相对哪里(可以相对自己,起始位置相对于自己或者父控件,其实是一样的,可以相对父控件,如果是父控件,有可能跑到屏幕外面)     *  参数8Y轴平移到的位置     *     *  总结:平移相对位置只和平移到的相对位置有关。     */    TranslateAnimation ta = new TranslateAnimation (Animation.RELATIVE_TO_PARENT,0,Animation.RELATIVE_TO_SELF,1F,Animation.RELATIVE_TO_PARENT,0f,Animation.RELATIVE_TO_SELF,1f);    //以下设置的参数同渐变动画设置的参数一致    ta.setRepeatMode (Animation.REVERSE);    ta.setRepeatCount (4);    ta.setDuration (1000);    ta.setStartOffset (500);    ta.setFillAfter (true);    iv_anim.startAnimation (ta);}
五、AnimationSet(组合动画)

//组合动画private void startSetAnimation () {    /**     * 创建组合动画对象     * 参数的具体意义不是很清楚,待以后清楚了补充     */    AnimationSet as = new AnimationSet (true);    TranslateAnimation ta = new TranslateAnimation (Animation.RELATIVE_TO_SELF,0,Animation.RELATIVE_TO_SELF,1F,Animation.RELATIVE_TO_SELF,0f,Animation.RELATIVE_TO_SELF,1f);    ta.setRepeatMode (Animation.REVERSE);    ta.setRepeatCount (4);    ta.setDuration (1000);    ta.setStartOffset (500);    ta.setFillAfter (true);    RotateAnimation ra = new RotateAnimation (0,360,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);    ra.setDuration (1000);    ra.setStartOffset (500);    ra.setFillAfter (true);    ra.setRepeatCount (4);    ra.setRepeatMode (Animation.REVERSE);    ScaleAnimation sa = new ScaleAnimation (0,1,0,1,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);    sa.setDuration (1000);    sa.setRepeatCount (4);    sa.setRepeatMode (Animation.REVERSE);    sa.setFillAfter (true);    sa.setStartOffset (500);    AlphaAnimation aa = new AlphaAnimation (0,1);    aa.setDuration (1000);    aa.setFillAfter (true);    aa.setStartOffset (500);    aa.setRepeatCount (4);    aa.setRepeatMode (Animation.REVERSE);    //往组合动画中添加其它动画对象    as.addAnimation (ta);    as.addAnimation (sa);    as.addAnimation (aa);    as.addAnimation (ra);    //启动动画    iv_anim.startAnimation (as);}
Demo下载地址:点击打开链接

0 0
原创粉丝点击