zoukankan      html  css  js  c++  java
  • 动画的使用—View Animation

    View Animation定义了下面的四种动画效果:

    缩放(scale)、位移(translation)、旋转(rotation)、透明(alpha)

    缩放动画:

    ScaleAnimation(float fromX, float toX, float fromY, float toY, float pivotX, float pivotY)

    看ScaleAnimation的构造函数,各个参数的含义都很清楚

    fromX: 理解为对象缩放前的宽度

    toX:对象x需要缩放到多大

    其他的两个带Y的参数以此类推

    位移动画:

    TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)

    fromXDelte:对象执行动画之前的X坐标

    toXDelte:移动目标,对象停止时所处的x坐标

    旋转动画:

    RotateAnimation(float fromDegrees, float toDegrees, float pivotX, float pivotY)

    fromDegrees:旋转前的角度

    toDegrees:对象应该旋转到多少度

    最后的两个参数是控制旋转中心

    透明动画:

    AlphaAnimation(float fromAlpha, float toAlpha)

    两个参数的值都只能够在0和1之间,0是全透明,1和不透明

    实例代码:

    package com.whathecode.viewanimation;
    
    import android.os.Bundle;
    import android.support.v7.app.ActionBarActivity;
    import android.view.View;
    import android.view.animation.AlphaAnimation;
    import android.view.animation.AnimationSet;
    import android.view.animation.CycleInterpolator;
    import android.view.animation.RotateAnimation;
    import android.view.animation.ScaleAnimation;
    import android.view.animation.TranslateAnimation;
    import android.widget.ImageView;
    
    public class MainActivity extends ActionBarActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        public void onclickMove(View view) {
            ImageView img = (ImageView) findViewById(R.id.image);
    
            TranslateAnimation ta = new TranslateAnimation(0, 10, 0, 0);
            ta.setInterpolator(new CycleInterpolator(7f));
            ta.setDuration(1000);
            img.startAnimation(ta);
        }
    
        public void onclickScale(View view) {
            ImageView img = (ImageView) findViewById(R.id.image);
    
            /**
             * 设置缩放中心的值
             */
            int pivotX = img.getWidth() / 2;
            int pivotY = img.getHeight() / 2;
            
            //初始化缩放对象
            ScaleAnimation sa = new ScaleAnimation(1f, 0.5f, 1f, 0.5f, pivotX,
                    pivotY);
            //设置插值器,用于控制动画的行为,这里是控制动画的重复次数3
            sa.setInterpolator(new CycleInterpolator(3f));
            //动画的速率
            sa.setDuration(1500);
            img.startAnimation(sa);
        }
    
        public void onclickRotate(View view)
        {
            ImageView img = (ImageView) findViewById(R.id.image);
            
            int pivotX = img.getWidth() / 2;
            int pivotY = img.getHeight() / 2;
            RotateAnimation ra = new RotateAnimation(0, 360f, pivotX, pivotY);
            ra.setDuration(1000);
            img.startAnimation(ra);
        }
        
        public void onclickAlpha(View view)
        {
            ImageView img = (ImageView) findViewById(R.id.image);
            
            AlphaAnimation aa = new AlphaAnimation(1f, 0.5f);
            aa.setDuration(1500);
            img.startAnimation(aa);
        }
        
        public void startAnimSet(View view)
        {
            ImageView img = (ImageView) findViewById(R.id.image);
            
            int pivotX = img.getWidth() / 2;
            int pivotY = img.getHeight() / 2;
            RotateAnimation ra = new RotateAnimation(0, 360f, pivotX, pivotY);
            ra.setDuration(1000);
            
            AlphaAnimation aa = new AlphaAnimation(1f, 0.5f);
            aa.setDuration(1500);
            
            //初始化一个空的动画集合
            AnimationSet as = new AnimationSet(false);
            
            //向集合中添加动画
            as.addAnimation(ra);
            as.addAnimation(aa);
            img.startAnimation(as);
        }
    }

    效果:

    ViewAnimation

    除了在java代码中初始化动画对象之外,我们还可以在xml文件中使用动画资源

    下面是xml中使用动画的语法:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@[package:]anim/interpolator_resource"
        android:shareInterpolator=["true" | "false"] >
        <alpha
            android:fromAlpha="float"
            android:toAlpha="float" />
        <scale
            android:fromXScale="float"
            android:toXScale="float"
            android:fromYScale="float"
            android:toYScale="float"
            android:pivotX="float"
            android:pivotY="float" />
        <translate
            android:fromXDelta="float"
            android:toXDelta="float"
            android:fromYDelta="float"
            android:toYDelta="float" />
        <rotate
            android:fromDegrees="float"
            android:toDegrees="float"
            android:pivotX="float"
            android:pivotY="float" />
        <set>
            ...
        </set>
    </set>

    实例代码:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:shareInterpolator="false">
        <translate 
            android:fromXDelta="0"
            android:toXDelta="200"
            android:duration="1500"/>    
    
        <alpha 
            android:fromAlpha="1"
            android:toAlpha="0.5"
            android:duration="1500"
            />
    </set>

    加载资源的方法:

    public void loadAnimRes(View view)
        {
            //使用loadAnimationUtils类加载动画资源
            AnimationSet as = (AnimationSet) AnimationUtils.loadAnimation(this, R.anim.animset);
            img.startAnimation(as);
        }

    效果:

    ViewAnimation

  • 相关阅读:
    IOS小组件(8):App与Widget数据共享
    IOS小组件(7):小组件点击交互
    IOS小组件(6):小组件实现时钟按秒刷新
    IOS小组件(5):小组件刷新机制
    IOS小组件(4-2):创建可配置小组件(动态修改配置数据)
    IOS小组件(4-1):创建可配置小组件(静态配置数据)
    IOS小组件(3):SwiftUI开发小组件布局入门
    IOS小组件(2):小组件框架解析
    IOS小组件(1):概述
    python函数作用域
  • 原文地址:https://www.cnblogs.com/ai-developers/p/4387510.html
Copyright © 2011-2022 走看看