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. ...
随机推荐
- 使用 Redis 实现排行榜功能
排行榜功能是一个很普遍的需求.使用 Redis 中有序集合的特性来实现排行榜是又好又快的选择. 一般排行榜都是有实效性的,比如“用户积分榜”.如果没有实效性一直按照总榜来排,可能榜首总是几个老用户,对 ...
- XCode6.3上使用opencv教程(MacOSX 10.10)
OpenCV 是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows和Mac OS操作系统上.它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Pyth ...
- windows 10 开始菜单和cortana无法工作的问题
过了个周末,到了实验室一开机发现报了个关键错误:开始菜单和cortana无法工作. 经过一番google ,发现问题,原来是360禁用了一个服务导致,这个服务是UserManager. 我直接去开启发 ...
- 网络流dinic实现总结
太羞耻了,搞了半天居然没发现自己写的不是dinic,直到被一道时限紧的题目卡掉才发现 int dfs(int now,int flow,int sum) { if(now==n) return flo ...
- 怎么将java web 项目导入idea 中
1.将 java web 项目导 入idea 中, 显示 然后进行 Configure 配置. 2. 点击 open module settings. 3. 4. 选择jar包. 5. 6. 配置to ...
- javaweb初学记录
原文 链接 http://blog.csdn.net/iojust/article/details/52429805 - ---热情依旧 - 环境搭建: - jdk环境配置 jdk下载: http:/ ...
- Windows多线程多任务设计初步(转)
Windows多线程多任务设计初步 [前言:]当前流行的Windows操作系统,它能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程 ...
- 判断是PC端还是移动端
http://detectmobilebrowsers.com/ 此网站提供了各种编程语言(包括 Apache.ASP.ASP.NET.C#. IIS. JSP. JavaScript. jQuery ...
- Nginx模块参考手册:HTTP核心模块
FROM: http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=17238776&id=2982697 这些模块默认会全部编 ...
- 如何在arcmap中调试addin或者插件
1. 首先,在arcmap中,依次点击“自定义”->"加载项管理器",加载dll或者tlb文件 2. 其次,在vs中,依次点击“工具”->“附加到进程",在对 ...