我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android之 动画总结

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android之 动画总结

一 动画种类

1 动画在Android中运用也非常广泛,如点击按钮,加载框,Activity的转场等都有动画的身影

2 常用的动画有以下以下几种

逐帧动画【Frame Animation】,即顺序播放事先准备的图片

补间动画【Tween Animation】,View的动画效果可以实现简单的平移、缩放、旋转。

属性动画【Property Animation】,补间动画增强版,支持对对象执行动画。

过渡动画【Transition Animation】,实现Activity或View过渡动画效果。包括5.0之后的MD过渡动画等。

二 逐帧动画 

1 定义一个动画xml,设置图片集合

                    

2 java设置动画

//定义组件ImageVIew ivImage = findViewById(R.id.iv_refresh_header);//开始动画ivImage.setImageResource(R.drawable.anim_loading);mAnimationDrawable = (AnimationDrawable) ivImage.getDrawable();mAnimationDrawable.start();//停止动画ivImage.clearAnimation();if (mAnimationDrawable != null){mAnimationDrawable.stop();}

三 补间动画

1 补间动画种类

透明度变化,大小缩放变化,位移变化,旋转变化

2 透明度动画,两种定义方式

xml定义

       

java定义

AlphaAnimation alpha = new AlphaAnimation(0, 1); alpha.setDuration(500);          //设置持续时间 alpha.setFillAfter(true);                   //动画结束后保留结束状态 alpha.setInterpolator(new AccelerateInterpolator());        //添加差值器 ivImage.setAnimation(alpha);

3 大小缩放动画,两种定义方式

xml定义

       

java定义

ScaleAnimation scale = new ScaleAnimation(1.0f, scaleXY, 1.0f, scaleXY, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); scale.setDuration(durationMillis); scale.setFillAfter(true); ivImage.setAnimation(scale);

4 位移动画,两种定义方式

xml定义

       

Java定义

TranslateAnimation translate = new TranslateAnimation(fromXDelta, toXDelta, fromYDelta, toYDelta); translate.setDuration(durationMillis); translate.setFillAfter(true); ivImage.setAnimation(translate);

5 旋转动画,两种定义方式

xml定义

       

java定义

RotateAnimation rotate = new RotateAnimation(fromDegrees, toDegrees, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); rotate.setDuration(durationMillis); rotate.setFillAfter(true); ivImage.setAnimation(rotate);

6 组合动画AnimationSet

RelativeLayout rlRoot = (RelativeLayout) findViewById(R.id.rl_root);//旋转动画RotateAnimation animRotate = new RotateAnimation(0, 360,Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f);animRotate.setDuration(1000);// 动画时间animRotate.setFillAfter(true);// 保持动画结束状态//缩放动画ScaleAnimation animScale = new ScaleAnimation(0, 1, 0, 1,Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f);animScale.setDuration(1000);animScale.setFillAfter(true);// 保持动画结束状态//渐变动画AlphaAnimation animAlpha = new AlphaAnimation(0, 1);animAlpha.setDuration(2000);// 动画时间animAlpha.setFillAfter(true);// 保持动画结束状态//动画集合AnimationSet set = new AnimationSet(true);set.addAnimation(animRotate);set.addAnimation(animScale);set.addAnimation(animAlpha);//启动动画rlRoot.startAnimation(set);

三 属性动画

1 xml+java调用方式

定义animator.xml

       

    java调用

Button button = (Button) findViewById(R.id.button); Animator mAnim = AnimatorInflater.loadAnimator(this, R.animator.animator); mAnim.setTarget(button); mAnim.start();

2 纯java方式

ObjectAnimator mAnimator = ObjectAnimator.ofFloat(view, type, start, end); // 设置动画重复播放次数 = 重放次数+1 // 动画播放次数 = infinite时,动画无限重复 mAnimator.setRepeatCount(ValueAnimator.INFINITE); // 设置动画运行的时长 mAnimator.setDuration(time); // 设置动画延迟播放时间 mAnimator.setStartDelay(0); // 设置重复播放动画模式 mAnimator.setRepeatMode(ValueAnimator.RESTART); // ValueAnimator.RESTART(默认):正序重放 // ValueAnimator.REVERSE:倒序回放 //设置差值器 mAnimator.setInterpolator(new LinearInterpolator()); return mAnimator; 

3 ValueAnimator值动画,主要负责值的计算和过度,以及动画的播放次数、播放模式和动画监听等

ValueAnimator animator = ValueAnimator.ofFloat(1, 0.5f, 1);animator.setDuration(3000);animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {    @Override    public void onAnimationUpdate(ValueAnimator animation) {        float value = (Float) animation.getAnimatedValue();        imageView.setScaleX(value);    }});animator.start();

4 ObjectAnimator对象动画,继承ValueAnimator,可以直接修改对象的属性

ObjectAnimator animator = ObjectAnimator.ofFloat(imageView, "scaleX", 1, 0.5f, 1);animator.setDuration(3000);animator.start();

5 PropertyValuesHolder,用来保存属性的值

PropertyValuesHolder xHolder = PropertyValuesHolder.ofFloat("scaleX", 1.0f, 0.5f, 1.0f);PropertyValuesHolder yHolder = PropertyValuesHolder.ofFloat("scaleY", 1.0f, 0.5f, 1.0f);ObjectAnimator.ofPropertyValuesHolder(imageView, xHolder, yHolder)        .setDuration(3000)        .start();

6 AnimatorSet,实现多个动画效果

ObjectAnimator xAnimator = ObjectAnimator.ofFloat(imageView, "scaleX", 1.0f, 0.5f, 1.0f);ObjectAnimator yAnimator = ObjectAnimator.ofFloat(imageView, "scaleY", 1.0f, 0.5f, 1.0f);AnimatorSet animator = new AnimatorSet();animator.playTogether(xAnimator, yAnimator);animator.setDuration(3000);animator.start();

AnimatorSet还可以指定动画的顺序,调用playSequentially()方法依次播放动画 

ObjectAnimator animator1 = ObjectAnimator.ofFloat(imageView, "alpha", 1.0f, 0.5f, 1.0f);animator1.setDuration(2000);ObjectAnimator xAnimator2 = ObjectAnimator.ofFloat(imageView, "scaleX", 1.0f, 0.5f, 1.0f);ObjectAnimator yAnimator2 = ObjectAnimator.ofFloat(imageView, "scaleY", 1.0f, 0.5f, 1.0f);AnimatorSet scaleAnimator = new AnimatorSet();scaleAnimator.playTogether(xAnimator2, yAnimator2);scaleAnimator.setDuration(2000);ObjectAnimator animator3 = ObjectAnimator.ofFloat(imageView, "rotation", 0f, 360f);animator3.setDuration(2000);AnimatorSet animator = new AnimatorSet();animator.playSequentially(animator1, scaleAnimator, animator3);animator.start();

7 Evaluator估值器,告诉动画系统如何从初始值过度到结束值

  • IntEvaluator :用于计算int类型属性值的计算器
  • FloatEvaluator :用于计算float类型属性值的计算器
  • ArgbEvaluator :用于计算十六进制形式表示的颜色值的计算器
  • TypeEvaluator:计算器的接口,我们可以实现该接口来完成自定义计算器

四 过渡动画,即Activity转场动画 

1 定义动画xml

        

2 设置style

3 java调用

startActivity(intent);overridePendingTransition(R.anim.bottom_top_anim, R.anim.alpha_hide);finish();overridePendingTransition(R.anim.alpha_show, R.anim.top_bottom_anim);

4 Android5.0之后,Android就自带几种动画特效。 3种转场动画 ,1种共享元素

   三种转场动画

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)public void explode(View view) {intent = new Intent(this, TransitionActivity.class);intent.putExtra("flag", 0);startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this).toBundle());}@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)public void slide(View view) {intent = new Intent(this, TransitionActivity.class);intent.putExtra("flag", 1);startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this).toBundle());}@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)public void fade(View view) {intent = new Intent(this, TransitionActivity.class);intent.putExtra("flag", 2);startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this).toBundle());}

共享动画

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)public void share(View view) {View fab = findViewById(R.id.fab_button);intent = new Intent(this, TransitionActivity.class);intent.putExtra("flag", 3);//创建单个共享    //startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this, view, "share")    //            .toBundle());//创建多个共享startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this, Pair.create(view, "share"),Pair.create(fab,"fab")).toBundle());}

来源地址:https://blog.csdn.net/qq_29848853/article/details/131355185

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android之 动画总结

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

android 帧动画,补间动画,属性动画的简单总结

帧动画——FrameAnimation 将一系列图片有序播放,形成动画的效果。其本质是一个Drawable,是一系列图片的集合,本身可以当做一个图片一样使用 在Drawable文件夹下,创建animation-list为根节点的资源文件
2022-06-06

Android动画探索之属性动画

这篇文章来总结下属性动画,通过下面几点来了解下属性动画的内容: 属性动画概述 属性动画工作原理 ValueAnimator ObjectAnimator ValueAnimator和ObjectAnimator区别 插值器 估值期 插值器和
2022-06-06

Android 动画之帧动画用法详解

本文目录帧动画概念帧动画实现方法1:xml实现帧动画第一步:导入帧动画素材第二步:创建帧动画文件第三步:布局文件和Activity方法2:用Java代码实现帧动画 帧动画概念 在Android中,帧动画的本质是把一组预先准备好的图片循环切换
2022-06-06

Android动画学习笔记之补间动画

本文实例为大家分享了Android补间动画展示的具体代码,供大家参考,具体内容如下 首先看看补间动画的共同属性: Duration:动画持续的时间(单位:毫秒) fillAfter:设置为true,动画转化在动画被结束后被应用 f
2022-06-06

Android切换动画之ViewPager

有过开发经验的程序员都知道这个效果,是当我们第一次安装一个软件时有一个使用说明的图片切换效果,他是如何实现的呢?我们一起学习一下吧,难度系数1.0,是只要你仔细分析,都可以学会。废话不多说,下面我们开始本篇的介绍。本篇我需要使用到ViewP
2022-06-06

Android编程根据系列图片绘制动画实例总结

本文实例讲述了Android编程根据系列图片绘制动画的方法。分享给大家供大家参考,具体如下: 一、采用系统提供的Animation类,用自带的方法其中的animation.xml文件如下:
2022-06-06

Android动画之补间动画(Tween Animation)实例详解

本文实例讲述了Android动画之补间动画。分享给大家供大家参考,具体如下: 前面讲了《Android动画之逐帧动画(Frame Animation)》,今天就来详细讲解一下Tween动画的使用。 同样,在开始实例演示之前,先引用官方文档中
2022-06-06

Android动画之逐帧动画(Frame Animation)实例详解

本文实例分析了Android动画之逐帧动画。分享给大家供大家参考,具体如下: 在开始实例讲解之前,先引用官方文档中的一段话: Frame动画是一系列图片按照一定的顺序展示的过程,和放电影的机制很相似,我们称为逐帧动画。Frame动画可以被定
2022-06-06

Android动画之补间动画用法最全详解

本文目录补间动画概述和分类各类补间动画实现xml实现补间动画透明度动画-AlphaAnimation缩放动画-ScaleAnimation位移动画-TranslateAnimation旋转动画-RotateAnimation动画组合-Ani
2022-06-06

Android动画之逐帧动画(Frame Animation)基础学习

前言 在Android中,动画Animation的实现有两种方式:Tween Animation(补间动画)和Frame Animation(帧动画)。渐变动画是通过对场景里的对象不断做图像变换(平移、缩放、旋转等)产生动画效果。帧动画则是
2022-06-06

Android动画之补间动画(Tween Animation)基础学习

前言 之前说过了在Android中,动画Animation的实现有两种方式:Tween Animation(渐变动画)和Frame Animation(帧动画)。渐变动画是通过对场景里的对象不断做图像变换(平移、缩放、旋转等)产生动画效果。
2022-06-06

我的Android开发之旅(四):Android三种动画效果的浅入之帧动画

我的Android开发之旅(四):Android三种动画效果的浅入之帧动画1. 前言2. 帧动画3. 如何使用3.1 AnimationDrawable3.2 Xml实现3.3 Java实现4. 淡入淡出动画5. 尾声 1. 前言 ​ A
2022-06-06

我的Android开发之旅(二):Android三种动画效果的浅入之View动画

我的Android开发之旅(二):Android三种动画效果的浅入之View动画前言View动画Animation类1. 平移动画2. 缩放动画3. 旋转动画4. 透明动画AnimationSet 动画集合自定义View动画补充 前言 在A
2022-06-06

浅析Android之Adapter用法总结

1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(ListView,GridView)等地方都需要用到Adapter。如下图直观的表达了Data、Adapter、Vi
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录