android studio上的基本动画实现(第一篇)
hello,各位小伙伴们,在很多小伙伴们刚刚开始学习android的时候,常常会有一些project里面需要有一些基本动画的插入,那么具体是要怎么实现呢?我们接下一起分析一下在android中的几种基本动画。
(这里我们默认是用个人觉得比eclipse更智能一些的Android Studio来实现。ps:方法是一样的,没有区别,喜欢常用eclipse的朋友们别见怪哦。)
在我们进行具体学习android动画前首先,我们要知道:在android中的动画一般是与事件的操作处理相关的,比如说通过触发某个事件而产生。好下面我们正式开始:
第一:首先我们要知道在android中基础动画中主要分为四种:
1:Tween Animation.变换动画
2:Layout Animation 布局动画
3:Frame Animation.帧动画
4:Property Animation 属性动画
在本篇中先学习前两种方法。
第二:动画学习
一:Tween Animation变换动画:
在变换动画中分为基本的四种:
1:Alpha:渐变透明度动画类型
2:Scale:渐变尺寸动画类型
3:Translate:位置移动动画类型
4:Rotate:旋转动画类型
其中这四种方法所通用的属性是一样的,属性如下:
1,Duration:表示动画持续时间,其单位为毫秒 ,一般在java中实现的是按照比如 button.setDuration(1000);(其中button为一个引用,1000为毫秒,也就是动画持续时间。)
2,fillAfter:表示动画转换在动画结束后被应用状态,也就是说比如在Translate中可能动画运行为一段平移,fillAfter就是说在动画结束后确定动画对象所处的位置。其返回值为一个boolean值,为true时表示结束就定在结束的位置,如果为false就说明结束后跳回动画开始前的位置。
3,fillBefore:动画转化在动画开始前的位置,可以理解与fillAfter相互理解。
4,interpolator:动画插入器(用于对一个动画进行一个加速,减速插入器的作用)
5:repeatcount:动画重复的次数,对于重复动画的定义。
6:repeatmode:决定动画重复是顺序还是倒序重复。
7,startoffset:动画与动画之间的时间间隔(一般用于两个或者多个动画的连续播放,也可以设置监听器来代替此功能)
那么在动画实现这一块上,除了可以用java来实现,也可以用布局调用来实现(下文将讲)
在java里,有如下几种类型:
1,AlphaAnimation有参数fromAlpha:起始时的透明度,toAlpha:结束后的透明度用(0.0f到1.0f表示)f表示浮点数。
2,ScaleAniamtion有fromX,toX,和fromY,toY,以及pirotX,priotY等参数,分别表示起始和结束时坐标的大小位置,以及对于x,y坐标开始的位置。
3,TranslateAnimation有参数fromxDelta,fromyDelta为移动前x,y的起始坐标,toxDelta,toyDelta分别为结束时的x,y坐标。
4,RotateAnimation有设置参数fromDegrees起始角度,toDegrees终止角度,以及pirotX,priotY参数。
好,接下来让我们用一个例子展开讲解:
首先用Java语言来实现一个简单的Alpha动画,
Animation zhangch = new AlphaAnimation(0.1f,1.0f);
zhangch.setDuration(5000);
image.startAnimation(zhangch);
第一行中的参数因为用的是浮点数,所以要在每一个数字后面加字母f,这两个参数的意思是说,第一个指在运行这个动画时动画的这个对象是从0.1的透明度开始变成第二个参数的1.0的透明度,1.0也就是正常照片了,0.0就是全部透明。
第二行是是设置动画的运行时间为2秒,2000毫秒。
第三行是指对象image开始执行动画。
但是,在android中除了可以用java纯代码来实现外,还可以用res文件下新建布局文件来调用实现,
Animation zhangch = AnimationUtils.loadAnimation(this, R.anim.scale);
image.startAnimation(zhangch);
第一行的AnimationUtils是一个系统自带的工具类,loadAnimation是加载动画,里面的参数是指从当前界面调用res里面的anim文件夹里的scale文件,下图第一张为res文件设置,第二张为scale里面的布局:


具体事例如下:

按照UI界面所示执行对上方图标的动画演示,
其中continue_btn和continue_btn2为两个基本动画的组合,先看一下所需的构造

共需要两个java文件,两个layout文件,这里我们只用java代码来实现动画而没有用布局调用是因为,java代码的动画可以更加适应于动态变换和管理,作为一名代码人应该保证代码优先选择。
首先进行layout布局

然后接着再来两个relativelayout就可以了,记得设置id名称。
下面进行代码部分:


其中这里需要有一个简单的讲解,对于上图这个连续动画的实现:我们这里用的是一个设置监听器的过程,在case执行的内容里写下两个动画,start一个动画并且对这个动画设置一个Animation
监听器,系统会自动生成如下三个状态,我们从字面意义上看出,只要在这个结束状态的执行命令中加入一句说明,start另一个动画就可以实现连续的两个动画播放,如果有多个的话,可以再多设置。
当然还有常用的在一个页面跳转另一个页面时的动画,如下所示,其中:
overridePendingTransition里面第一个参数表示第一个activity退出的动画,第二个参数表示第二activity进入的动画,这里用了布局调用,

其rotate布局如下:

interpolator为之前讲的属性里面的动画插入器。
好,这就是基本的第一个基础动画的实现,下面我们说第二个基础动画,FrameAnimation
逐帧动画原理就是将很个图片对象按一定的速度播放让人产生好像连续动画的错觉。在这里就用一个例子来讲解
在drawable下建立一个xml文件,在xml文件里写入list的多个对象,并加入确定的值进去,

代码部分和第三个基础动画放到一起,LayoutAnimation
布局动画有分setOrder控制顺序和LayoutAnimationCotroller布局控制器
具体看例题java中的route为布局动画名:,move为逐帧动画名。

在一个新的Main3Activity中写下:

并在布局文件中写好list文件
就可运行。
好全部的代码包会在下面分析下载,关于属性动画比较复杂,下一讲中将专门讲解,希望可以帮助到大家,O(∩_∩)O谢谢。
源android文件地址为 https://pan.baidu.com/s/1jHEi9Hs
如有不足之处,欢迎各位批评指正。
android studio上的基本动画实现(第一篇)的更多相关文章
- Android Studio上NDK/JNI开发环境问题
基础环境: 操作系统 —— Windows 7 Android Studio —— 1.5.1(android-studio-bundle-141.2456560-windows.exe) NDK — ...
- Android Studio 上传GitHub项目失败后的一些问题
在Android Studio上传项目到GitHub时候多上传了了一些项目,想删除,但是报诸如 Remote project is already on GitHub 一些乱七八糟的问题,而且,提示p ...
- Android Studio上方便使用butterknife注解框架的偷懒插件Android Butterknife Zelezny
首先提下ButterKnifey已经更新到版本7.0.1了,现在注解已经不叫@InjectView了,而叫@Bind,感觉更贴合语义.同时注册的方式也从 ButterKnife.inject(this ...
- 如何在Android Studio上使用Github
首先,登陆到Github上并创建一个新repository.在屏幕右上角,点击“+”标记,并且选择“New repository”. 现在完成这个表格以新建一个叫做testproject的新repos ...
- tensorflow lite的demo在android studio上环境搭建
由于很久没有接触过Android开发,而且最早用的是eclipse,所以这个demo在android studio上的搭建过程,真的是踩了不少坑.记录这篇文章,纯粹是给自己一点收获. 环境搭建的过程, ...
- Android Studio 上传本地项目到 GitHub 上
•准备工作 注册 GitHub 账号 [GitHub官网] [视频教程] 安装 Git [官方链接] [极速下载链接] 创建本地代码仓库 在桌面上,鼠标右击,选择 Git Bash Here : 接 ...
- Android Studio 上传aar(Library)到JCenter
目的 这篇文章介绍通过Gradle把开源项目发布到公共仓库JCenter中,发布自己的android library(也就是aar)到公共的jcenter仓库. 为什么选择JCenter,因为JCen ...
- 通过android studio上传项目到github
第一步,下载git客户端,并且安装 下载地址:https://git-for-windows.github.io/ 第二步,在android studio中配置git(注意第一张图中的C:\Progr ...
- Android Studio之Activity切换动画(三)
1.上一篇文章"Android Studio之多个Activity的滑动切换(二)"中实现了多个activity之间的滑动切换,可是新切换出的activity大多是从右側进入 2. ...
随机推荐
- OpenCV(三) 之 基本数据结构 CvMat和 IplImage
OpenCV(三) 之 基本数据结构 CvMat和 IplImage CvMat IplImage OpenCv中基本的数据类型 类型 参数 表示 CvPoint int x,y 像素点 CvPoin ...
- java运行时内存模式学习
学习java运行时内存模式: 各区介绍: 方法区(线程共享):用于存放被虚拟机加载的类的元数据:静态变量,常量,以及编译和的代码(字节码),也称为永久代(所有该类的实例被回收,或者此类classLoa ...
- Web API 之CRUD
注:例子来自微软Web API官网(https://www.asp.net/web-api/overview/data/using-web-api-with-entity-framework/part ...
- iOS特性一 关闭系统日志打印
解决办法 (1)Product -->Scheme -->Edit Scheme -->Run -->Arguments (2)添加一个属性值OS_ACTIVITY_MODE: ...
- redis的面试题,没答出来,直接被pass
redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略.redis 提供 6种数据淘汰策略: volatile-lru:从已设置过期时间的数据集(server.db[i].expire ...
- 搭建OpenStack,kvm环境准备
一.KVM简介 KVM全称是kernel-based virtual machine(基于内核的虚拟机),是一个开源的系统虚拟化模块,基于硬件的完全虚拟化,不过需要硬件支持(如Intel VT技术或者 ...
- Jenkins 集成打包和上传 App Store 的冲突
周一下午用 Jenkins 集成打包,遇到了一个很奇怪的问题,之前上传到 APP Store 的时候 Build Settings->“Code Signing Resource Rules P ...
- Python操作Mysql数据库时SQL语句的格式问题
一.概述 近日使用Python对Mysql数据库进行操作,遇到SQL语句死活出问题的情况.由于最初没有将异常打印出来,一直不知道原因.随后,将异常打印出来之后,通过异常信息,对代码进行修改.最终,成功 ...
- HDu--我要拿走你的蜡烛
我要拿走你的蜡烛 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- 快速安装Percona pt工具
yum install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-Time-HiRes perl-IO-Socket-SSLwget http://pk ...