Android 动画总结

动画效果是开发中不必可少的东西。去搜索多了那些炫酷的动画效果。忽然觉得有必要整理一下基础的东西。不然时间长了就会丢在曾经的笔记深处,一旦忘记就再也记不起。
而对于安卓动画效果,总体来说分为两种。
视图动画
属性动画

View Animation视图动画:只是实现动画效果,对view本身的属性并没有影响。视图动画包括帧动画以及补间动画。
Property Animation 属性动画:通过动画的变换效果执行改变当前view的属性。

由于电脑较卡,用as敲出效果并运行总是让人想要放弃。索性对着笔记,整理出流程。不再加以实现效果

Frame 帧动画:
app应用场景:页面未加载出来之前的动画效果,GIF图片

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
    <item android:drawable="@drawable/image1"
        android:duration="200">
    </item>
    <item android:drawable="@drawable/image2"
        android:duration="200">
    </item>
    <item android:drawable="@drawable/image3"
        android:duration="200">
    </item>
    <item android:drawable="@drawable/image4"
        android:duration="200">
    </item>
</animation-list>

1、在res/drawable文件夹下常见帧动画的xml资源文件,代码如上
android:oneshot=”false” 值为false可以播放多次,为true只播放一次
android:duration=”200” 值为毫秒值,延迟时间
2、在activity中获取ImageView控件,调用setBackgroundResource将动画的xml文件设置为ImageView的背景。
3、调用ImageView

Tween补间动画实现
1.透明度的改变淡入淡出 alpha
2.缩放 宽高尺寸 scale
3.平移 rotate
4.旋转 translate

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    //透明度
    <alpha android:fromAlpha="#起始透明度"
        android:toAlpha="结束透明度">
    </alpha>
    //缩放
    <scale android:fromXScale="起始x"
        android:fromYScale="起始Y"
        android:toXScale="结束X"
        android:toYScale="结束Y"
        android:pivotX="缩放中心x"
        android:pivotY="缩放中心Y">
    </scale>
    //旋转
    <rotate android:fromDegrees="起始角度"
        android:toDegrees="结束角度"
        android:pivotX="圆心X"
        android:pivotY="圆心Y">
    </rotate>
    //平移
    <translate android:fromXDelta="起始X"
        android:fromYDelta="起始Y"
        android:toXDelta="结束X"
        android:toYDelta="结束Y">
    </translate>
</set>

1、在res下创建anim文件夹,补间动画的xml放到改文件夹下
2、Animation animation = AnimationUtils.LoadAnimation(上下文,R.ainm.XXX);
imageView.startAinmation(animation);

属性动画:
可以用xml定义动画效果:

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <objectAnimato android:propertyName="属性动画操作的属性"
        android:valueType="操作属性值的类型"
        android:valueFrom="操作动画的起始值"
        android:valueTo="操作动画的结束值"/>
</set>

1、在项目的res文件夹下创建animation文件夹,存放属性动画的xml文件
2、设置一个或者多个属性
3、在java代码中使用
Animation animation=AnimationInflater.loadAnimation(上下文,R.animation.x);
animation.setTarget(需要使用动画的view对象);
animation.start();

也可以用Java代码事项属性动画:
1、单一属性设置:
ObjectAnimator animator =ObjectAnimation.ofFloat
(使用动画的view对象,需要设置的动画属性,需要动画的属性的取值);
animation.setTarget(需要使用动画的view对象);
animation.start();

2、多个属性的设置

ObjectAnimation animation1=ObjectAnimation.ofFloat();
ObjectAnimation animation2=ObjectAnimation.ofFloat();
AnimatorSet set=new AnimatorSet();
set.paly(animator1).after(animator2);
//android:ordering="sequentially"
set.paly(animator1).with(animator2);
//android:ordering="together"
set.start();

终于算是整理了一些有用的东西。慢慢的发现,其实基础太过于重要,也太容易在所谓前进的道路上被忽略掉。总算是克服了一下懒癌。算是最近除了看完一本《月亮与六便士》以外。最有意义的一件事。对了前两天说好的写自定义view呢。画了个圆跟曲线就懒得写了。好吧好吧,懒癌依旧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值