Android 动画设置

Android动画的详解

Android动画分为三种 补间动画,帧动画,属性动画

补间动画

首先我们要在res文件夹下创建一个文件夹命名必须为anim来存放动画xml文件
在这里插入图片描述
在xml文件中写动画的类型
补间动画的类型有 渐变 位移 缩放 旋转

渐变

代码如下

<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="4000" 
    android:fromAlpha="1.0"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    android:toAlpha="0.0"
    android:repeatCount="2"
    android:fillAfter="true"
    />

属性基本都大致一致

缩放
<scale
    android:duration = "2000"
    android:fromXScale="0.0"
    android:fromYScale="0.0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="1.0"
    android:toYScale="1.0"
    ></scale>
位移
<translate
    android:duration="2000"
    android:fromYDelta="0"
    android:toYDelta="200"
    android:fromXDelta="0"
    android:toXDelta="100"
    />
旋转
<rotate
android:duration="2000"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="-1"
android:repeatMode="restart"
android:toDegrees="360" />~

看了上面的代码,发现跟多地方都是相似的,所以来介绍一下这些属性的都代表什么

duration 是设置动画的时长
这是每个动画基本都要设置的一个属性
from 开头的属性基本都是对应它本身这个动画特性来进行的,就是初始样子
比如fromAlpha 这个属性是Alpha渐变动画的属性,意思就是说它初始的透明度是1,透明度的参数值是 0—1 所以,开始是1 tofrom 设置为0,这个动画的效果就是图片逐渐消失.
povit这个属性是指应用到的控件上的x,y的位置,就是参照要实现动画控件的自身的位置,povitX =“50%” 指的就是我们要找到这个控件x坐标的中点, 在配合povitY = “50%” 找到y坐标的中点,配合在一起就是这个控件的中心点位置.如果我们本身是一个圆形控件,就可以实现自传,
例如(音乐播放器中的图片转动)。

属性先介绍到这里,主要看看这些动画应该如何来实现:
代码:

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

首先需要通过AnimationUtlis来返回一个animation(动画)对象 ,参数就是上下文和anim文件夹下的动画xml文件,直接给要实现动画的控件.startAnimation方法把动画对象放进去就可以了。

帧动画

帧动画简单的来说就像我们看电视一样,它是一帧一帧来播放的,这就需要我们找许多的图片来进行模拟一帧一帧的感觉

这里可以使用一个切割Gif图的网址
https://www.qtool.net/gif

当把图片切割好了,我们就可以把图片放到mipmap目录下
并且在Drawable目录下创建一个xml文件
如下:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@mipmap/tuzi1" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi2" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi3" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi4" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi5" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi6" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi7" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi8" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi9" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi10" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi11" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi12" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi13" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi14" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi15" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi16" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi17" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi18" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi19" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi20" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi21" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi22" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi23" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi24" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi25" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi26" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi27" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi28" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi29" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi30" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi31" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi32" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi33" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi34" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi35" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi36" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi37" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi38" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi39" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi40" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi41" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi42" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi43" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi44" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi45" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi46" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi47" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi48" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi49" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi50" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi51" android:duration="100"/>
    <item android:drawable="@mipmap/tuzi52" android:duration="100"/>

</animation-list>~

就是把切好的图片给每一个item添加进去,后一个属性还是时长
当做完这些准备后,就在java代码中实现:

 Iv.setBackgroundResource(R.drawable.move);

                if(drawable==null){
                    drawable = (AnimationDrawable) Iv.getBackground();
                }

                if(!flag){
                    drawable.start();
                    drawable.setOneShot(false);
                    flag = true;
                }else{
                    flag = false;
               }

首先就是给要实现动画的控件设置上我们刚才的xml文件
然后判断AnimationDrawble对象是否为空,如果为空了,就把控件的背景给它设置上去
其次定义一个Boolean类型的值来判断时候播放动画,这样写可以使我们再次点击按钮可以使动画停下来.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值