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

Android视图动画怎么实现

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

Android视图动画怎么实现

本文小编为大家详细介绍“Android视图动画怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android视图动画怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

介绍

视图动画主要有两种:

一、Tween Animation译为“补间动画”
1、scale译为“规模、比例”,是对View进行特定范围的缩放
2、alpha通过改变View的透明度实现View隐现的效果
3、translate译为"转移",是对View进行位置的移动
4、rotate译为“旋转”,是让View围绕特定的点进行旋转
PS:所有View的移动、隐藏、旋转仅仅是看到的动画效果,实际View的位置/大小/比例并没有发生本质上的改变(比如说View的位置通过动画进行移动后你注册的点击事件还是需要点击到View的原始位置才可以被触发)。

二、Frame Animation译为逐帧动画
这个比较容易理解就是将多个具有特定连贯动作的图片在短时间内进行快速的切换达到动画的效果,本质上所有的动画效果都是这种思想。

如何创建视图动画文件目录

动画文件要存放在res/anim文件夹下,访问时采用R.anim.XXX的方式。默认是没有这个文件夹的需要手动创建(右键res目录-->New-->Android Resource Directory-->确定。)

Android视图动画怎么实现

image

动画文件的创建方式为:右键anim文件夹选择new,然后点击Animation Resource file,选择动画类型即可创建。

Android视图动画怎么实现

image

输入后会自动提示动画名称,然后输入名称,确定即可。

Android视图动画怎么实现

image

scale(缩放) 动画

这个动画参数相对来说比较多, 就我个人而言在学习这个动画的时候花费时间是最长的。

这个动画主要是实现View的缩放,首先要想,要实现一个缩放的动画首先要确定什么参数/信息(好比说想切割一张特定大小的纸张要确定宽和高一样),那么第一个就是要确定要围绕哪个点(pivot)进行缩放。

还需要知道在动画开始(from)时View的大小(比例),以及动画结束(to)时View要处于的大小(比例)。就是要确定以下六个参数才可以完成一次缩放动画。

X则指定控件的宽度,Y则指定控件的高度,值越大则控件所占位置越大。

Android坐标从左上角开始算起。

Android视图动画怎么实现

image

其中fromXScaletoXScalefromYScaletoYScale使用浮点类型,1.0表使原始大小,0.5则是缩放一半,1.5则是扩大原大小的一半。举例:原View宽高100、150,1.0:(100,150),0.5:(50,75),1.5:(150,225)。也可以使用精确值(DP/PX)。

pivotXpivotY有三种表使方法,第一是采用像素值,第二则是较自身的百分比,第三则是较父View的百分比。

为了方便观察,使用两个同等位置和大小不同颜色的View来进行观察。动画的播放代码在最下文已给出。

<?xml version="1.0" encoding="utf-8"?><RelativeLayout        xmlns:android="http://schemas.android.com/apk/res/android"        android:orientation="vertical"        android:layout_width="match_parent"        android:layout_height="match_parent">    <Button android:layout_width="match_parent" android:layout_height="wrap_content"            android:text="播放动画"            android:id="@+id/btnOpenAnimation"    />    <TextView android:layout_width="300dp" android:layout_height="300dp"              android:layout_centerInParent="true"              android:layout_gravity="center"              android:background="#03A9F4"/>    <TextView android:layout_width="300dp" android:layout_height="300dp"              android:layout_centerInParent="true"              android:id="@+id/txtAnimation"              android:layout_gravity="center"              android:background="#FF00"/></RelativeLayout>

示例1:使用像素值确定Pivot点

<?xml version="1.0" encoding="utf-8"?><scale xmlns:android="http://schemas.android.com/apk/res/android"       android:fromXScale="0.5"       android:toXScale="1.0"       android:duration="3000"       android:fromYScale="0.5"       android:toYScale="1.0"       android:pivotX="200"       android:pivotY="200"></scale>

这里我们分别设置了pivotXpivotY为200(px),这个是从View本身来算起的,View的左上角为(0,0)点,然后X轴坐标向右,Y则向下分别走200像素,最终得到了箭头指向的点(Pivot),那么开始点确定了。

再看其它参数,fromXScale指定的是在动画开始时X坐标也就是宽度的大小(这里是按照比例计算的),0.5则代表View原始宽度的一半,fromYScale则是高度了。

既然是向特定的比例进行缩放,仅仅确定开始的大小是不够的,还要确定在动画播放到最后所要达到的大小,所以就有了toXScaletoYScale,这两个则是指定在动画播放完成后View所处的大小。

这里我们是从View的0.5缩放到1.0,也就是从原始View的一半经过3秒(duration用来控制动画时长,1000为1秒。)后变成原始View的大小也就是1.0。

Android视图动画怎么实现

image

Android视图动画怎么实现

image

示例2:百分比Pivot

使用百分比确定Pivot也很简单,那么Pivot的位置就是:以View的左上角即(0,0)点为基础加上View特定的宽高百分比。

<?xml version="1.0" encoding="utf-8"?><scale xmlns:android="http://schemas.android.com/apk/res/android"       android:fromXScale="0.0"       android:toXScale="1.0"       android:duration="5000"       android:fromYScale="0.0"       android:toYScale="1.0"       android:pivotX="70%"       android:pivotY="70%"></scale>

Android视图动画怎么实现

image

Android视图动画怎么实现

image

示例3:父View百分比Pivot

<?xml version="1.0" encoding="utf-8"?><scale xmlns:android="http://schemas.android.com/apk/res/android"       android:fromXScale="0.0"       android:toXScale="1.0"       android:duration="5000"       android:fromYScale="0.0"       android:toYScale="1.0"       android:pivotX="50%p"       android:pivotY="50%p"></scale>

这个计算和上边那个其实是一样的,只是基于的点不同而已,上边是基于自身来算起,那么这个则是基于View的父布局来计算的。那么Pivot的位置就是:以View的左上角即(0,0)点为基础加上父View特定的宽高百分比。

Android视图动画怎么实现

image

Android视图动画怎么实现

image

alpha动画

这个可以说就非常简单了,主要是实现颜色的过度效果,fromAlpha则是动画开始的透明度,toAlpha则是在动画最后显示的透明度。0.0代表完全透明1.0则是View的原色。

<?xml version="1.0" encoding="utf-8"?><alpha xmlns:android="http://schemas.android.com/apk/res/android"       android:fromAlpha="0.0"       android:duration="3000"       android:toAlpha="1.0"></alpha>

Android视图动画怎么实现

image

rotate(旋转) 动画

首先要想完成旋转要确定那些参数?肯定要确定旋转要围绕的点也就是pivot,这个在scale动画也用到了,用法都一样,不在多说。这里出现了名为degrees也就是角度的概念,也就是以特定点(pivot)为中心从多少度(fromDegrees),旋转到多少度(toDegrees)。以下示例是从0转到360度,正好一圈。

<?xml version="1.0" encoding="utf-8"?><rotate xmlns:android="http://schemas.android.com/apk/res/android"        android:fromDegrees="0"        android:toDegrees="360"        android:pivotY="50%"        android:pivotX="50%"        android:duration="3000"></rotate>

Android视图动画怎么实现

image

translate(位移) 动画

说白了就是移动View的位置,就是从一个点移动到另一个点,最重要的就是确定两个点,那么则需要确定两对X,Y坐标了。

以下参数的使用方式和在最上边提到的pivot是一样的都可以使用精确值和百分比。

<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android"           android:fromXDelta="10%"           android:toXDelta="70%"           android:fromYDelta="0%"           android:toYDelta="70%"           android:duration="3000"></translate>

其中黑色线条框住的是View的原始位置,黄色框住的是View动画开始时的位置,紫色线条则是整个View的70%的占比,最后集中到的点就是View要移动到的最终的位置也就是结束点。

Android视图动画怎么实现

image

Set(集合动画)

如何理解Set(集合动画),其实很简单,比如现在有一个需求,我们既要旋转又要有渐渐出现的效果,那么就要使用set了,说白了就是将多个动画组合起来。只要把上边几个都学会了,使用这个set简直so easy。

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"     android:duration="3000">    <alpha            android:fromAlpha="0.0"            android:toAlpha="1.0"    ></alpha>    <rotate            android:pivotX="50%"            android:pivotY="50%"            android:fromDegrees="0"            android:toDegrees="180"    ></rotate></set>

Android视图动画怎么实现

image

动态创建动画

上边所展示的都是通过xml文件写的动画,都是静态写好了的。那么想要动态的创建动画对象又该如何?其实很简单,通过代码的方式创建动画它们的名称和使用xml文件创建时名称都是对应的,提供的构造函数也都是必备的参数值。

 //创建Alpha动画var alpha = AlphaAnimation(0.0F, 1.0F)alpha.duration = 3000this.txtAnimation.startAnimation(alpha)//创建Rotate动画var rotate = RotateAnimation(0F, 360F, Animation.RELATIVE_TO_SELF, 50F, Animation.RELATIVE_TO_SELF, 50F)//创建Scale动画var scale = ScaleAnimation(0F, 1F, 0F, 1F, Animation.RELATIVE_TO_SELF, 50F, Animation.RELATIVE_TO_SELF, 50F)//创建translate动画var translate = TranslateAnimation(    Animation.RELATIVE_TO_SELF,    10F,    Animation.RELATIVE_TO_SELF,    80F,    Animation.RELATIVE_TO_SELF,    0F,    Animation.RELATIVE_TO_SELF,    70F)//创建Set动画var set = AnimationSet(this, null)set.duration = 3000set.addAnimation(alpha)set.addAnimation(rotate)

从Animation继承的属性

以上所有的动画对象都是从Animation类继承来的,所有有一些公共的属性也会继承过来。

Android视图动画怎么实现

image

动画的播放

//加载动画this.btnOpenAnimation.setOnClickListener {    var animation = AnimationUtils.loadAnimation(this, R.anim.translate_anim)    this.txtAnimation.startAnimation(animation)}

Tween Animation(逐帧动画)

这个是Drawable形式的动画,存放在drawable文件夹中,使用animation-list节点来表示。图片素材是提前准备好的。自己动手尝试下马上就会理解了。

<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android">    <item android:duration="100" android:drawable="@drawable/a001"></item>    <item android:duration="100" android:drawable="@drawable/a002"></item>    <item android:duration="100" android:drawable="@drawable/a003"></item>    <item android:duration="100" android:drawable="@drawable/a004"></item>    <item android:duration="100" android:drawable="@drawable/a005"></item>    <item android:duration="100" android:drawable="@drawable/a006"></item>    <item android:duration="100" android:drawable="@drawable/a007"></item>    <item android:duration="100" android:drawable="@drawable/a008"></item>    <item android:duration="100" android:drawable="@drawable/a009"></item>    <item android:duration="100" android:drawable="@drawable/a010"></item>    <item android:duration="100" android:drawable="@drawable/a011"></item>    <item android:duration="100" android:drawable="@drawable/a012"></item>    <item android:duration="100" android:drawable="@drawable/a013"></item>    <item android:duration="100" android:drawable="@drawable/a014"></item>    <item android:duration="100" android:drawable="@drawable/a015"></item>    <item android:duration="100" android:drawable="@drawable/a016"></item>    <item android:duration="100" android:drawable="@drawable/a017"></item>    <item android:duration="100" android:drawable="@drawable/a018"></item></animation-list>

这里我们给一个TextView设置了background属性。

<?xml version="1.0" encoding="utf-8"?><RelativeLayout        xmlns:android="http://schemas.android.com/apk/res/android"        android:orientation="vertical"        android:layout_width="match_parent"        android:layout_height="match_parent">    <Button android:layout_width="match_parent" android:layout_height="wrap_content"            android:text="播放动画"            android:id="@+id/btnOpenAnimation"    />    <TextView android:layout_width="300dp" android:layout_height="300dp"              android:layout_centerInParent="true"              android:id="@+id/txtAnimation"              android:background="@drawable/anim_refresh"              android:layout_gravity="center"    /></RelativeLayout>

具体调用

var animationDrawable = this.txtAnimation.background as AnimationDrawableanimationDrawable.start()

显示效果

Android视图动画怎么实现

读到这里,这篇“Android视图动画怎么实现”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

免责声明:

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

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

Android视图动画怎么实现

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

下载Word文档

猜你喜欢

Android视图动画怎么实现

本文小编为大家详细介绍“Android视图动画怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android视图动画怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。介绍视图动画主要有两种:一、Twe
2023-06-04

Android怎么实现加载视差动画效果

本篇内容主要讲解“Android怎么实现加载视差动画效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android怎么实现加载视差动画效果”吧!基础知识继 Android实现旋转动画的两种方式
2023-06-20

Android视图动画集合AndoridViewAnimations

Android视图动画集合AndoridViewAnimations
2023-06-05

Android怎么用动画显示或隐藏视图

这篇文章主要介绍“Android怎么用动画显示或隐藏视图”,在日常操作中,相信很多人在Android怎么用动画显示或隐藏视图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android怎么用动画显示或隐藏视图
2023-06-26

iOS实现逐帧动画做loading视图

本文实例为大家分享了iOS实现逐帧动画做loading视图的具体代码,供大家参考,具体内容如下 我封装了一个可复用的loading视图组件,用于按照一定周期逐帧播放加载动画。代码如下: .h文件#import
2022-06-01

android转场动画怎么实现

要实现Android转场动画,可以使用Android提供的转场动画框架或自定义转场动画。1. 使用Android转场动画框架:- 在res目录下创建anim文件夹,然后在文件夹中创建转场动画的XML文件,例如fade_in.xml和fade
2023-08-17

android欢迎动画怎么实现

Android欢迎动画可以通过使用动画资源文件和代码来实现。下面是一个简单的示例:1. 创建一个动画资源文件(比如`anim/welcome_animation.xml`),并定义欢迎动画的属性。例如:```xmlandroid:inter
2023-08-17

android加载动画怎么实现

在Android中,可以使用Animation类来实现加载动画。以下是使用Animation类实现加载动画的步骤:1. 创建动画资源文件:在res目录下的anim文件夹中创建一个XML文件,定义你想要的动画效果。例如,你可以使用透明度动画、
2023-08-18

Android开场动画怎么实现

要实现Android开场动画,可以使用以下方法:1. 使用帧动画(Frame Animation):创建一个包含多个帧图片的动画资源文件,然后通过ImageView在XML布局文件中引用该动画资源文件,并设置动画属性。在代码中通过Image
2023-08-08

Android如何实现带动画柱状图

这篇文章主要为大家展示了“Android如何实现带动画柱状图”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android如何实现带动画柱状图”这篇文章吧。为何要用带动画的柱状图呢?最近,项目中遇
2023-05-30

iOS如何实现逐帧动画做loading视图

这篇文章给大家分享的是有关iOS如何实现逐帧动画做loading视图的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下我封装了一个可复用的loading视图组件,用于按照一定周期逐帧播放加载动画。代码如下
2023-06-15

android怎么实现加载动画效果

Android中实现加载动画效果可以通过以下几种方式:1. 使用ProgressBar:ProgressBar是Android系统提供的一种加载动画控件,可以在布局文件中直接添加,并通过设置其属性来实现不同的加载动画效果。例如,在布局文件中
2023-08-08

Android怎么实现点赞动画效果

今天小编给大家分享一下Android怎么实现点赞动画效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、前言对接下来功能实
2023-06-29

怎么在Android中实现透明动画

这篇文章给大家介绍怎么在Android中实现透明动画,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。首页是有一个 Activitypublic class AlphaAnimationActivity extends A
2023-06-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录