Android 动画总结

来源:互联网 发布:淘宝开店运营流程图 编辑:程序博客网 时间:2024/06/05 23:45

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

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呢。画了个圆跟曲线就懒得写了。好吧好吧,懒癌依旧。

原创粉丝点击