美文网首页
Android动画详解

Android动画详解

作者: Perk | 来源:发表于2018-01-24 15:01 被阅读0次

Android动画有什么用?duang!当然是给程序加特效!

1.Android动画的分类

1.Tween Animation 变换动画

2.Frame Animation 帧动画

3.Layout Animation 布局动画

4.Property Animation 属性动画

Android 动画有这四种。其中变换动画帧动画布局动画这三种动画为传统动画。属性动画我们将在下一篇介绍。

1.1动画的实现方式

1.XML配置文件实现:通过在res/anim目录下创建xml文件来进进行动画实现

2.Java代码实现:通过系统提供的各种动画类进行动画实现,更灵活。

1.2Tween Animation 变换动画

变换动画有四种:

Alpha:渐变透明度变化

Scale:改变尺寸缩放动画

Translate:位置移动动画

Rotate:旋转动画

1.2.1 Alpha

最简单的一个动画,改变透明度。

Alpha实现(Java代码):

Animation animation = new AlphaAnimation(0.1f, 1.0f);
animation.setDuration(3000);
imageView.startAnimation(animation);

Alpha实现(XML):

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
     <alpha
        android:duration=3000//其实在xml中是没有这个属性的,网上这么写的都是sdk8版本的,用的sdk版本是25
        android:fromAlpha="0.1"
        android:toAlpha="1.0"
        />
</set>

在代码中加载xml:

        Animation animation = AnimationUtils.loadAnimation(this, R.anim.alpha);//加载xml
        animation.setDuration(2000);
        imageView.startAnimation(animation);

动画效果:

alpha.gif

1.2.2 Scale

能实现对缩放。

public ScaleAnimation(float fromX, float toX, float fromY, float toY,
        float pivotX, float pivotY) {
    
}


public ScaleAnimation(float fromX, float toX, float fromY, float toY,
        int pivotXType, float pivotXValue, int pivotYType, float pivotYValue) {
     
}
private boolean applyLegacyAnimation(ViewGroup parent, long drawingTime,
        Animation a, boolean scalingRequired) {
    Transformation invalidationTransform;
    final int flags = parent.mGroupFlags;
    final boolean initialized = a.isInitialized();
    if (!initialized) {
        a.initialize(mRight - mLeft, mBottom - mTop, parent.getWidth(), parent.getHeight());
        a.initializeInvalidateRegion(0, 0, mRight - mLeft, mBottom - mTop);
        if (mAttachInfo != null) a.setListenerHandler(mAttachInfo.mHandler);

相关文章

网友评论

      本文标题:Android动画详解

      本文链接:https://www.haomeiwen.com/subject/jajuaxtx.html