说起动画,其实一点也不陌生,在使用一款app的时候为了优化用户体验,多多少少的,都会加入动画。

安卓中的动画,分为两大类:补间动画和属性动画。本篇博文会详细介绍总结这两大动画,希望本篇博文对你的学习和生活有所帮助。

**补间动画**

补间动画分为四类:平移动画,旋转动画,缩放动画和渐变动画。这几类动画用法都差不多,只是对象参数不同这里我统一展示出来。以下是效果图:

实现代码很简单:

       btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//平移动画
TranslateAnimation translate=new TranslateAnimation(Animation.RELATIVE_TO_SELF,300,
Animation.RELATIVE_TO_SELF,300);
translate.setDuration(3000);
translate.setFillAfter(true);
img.startAnimation(translate);
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//旋转动画
RotateAnimation rotate=new RotateAnimation(0,360, Animation.RELATIVE_TO_SELF,0.5f,
Animation.RELATIVE_TO_SELF,0.5f);
rotate.setFillAfter(true);
rotate.setDuration(3000);
img.startAnimation(rotate);
}
});
btn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//缩放动画
ScaleAnimation scale=new ScaleAnimation(0,2,0,2,Animation.RELATIVE_TO_SELF,0.5f,
Animation.RELATIVE_TO_SELF,0.5f);
scale.setDuration(3000);
img.startAnimation(scale);
}
});
btn4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//渐变动画
AlphaAnimation alpha =new AlphaAnimation(0,1);
alpha.setDuration(3000);
img.startAnimation(alpha);
}
});

总结以下:

AlphaAnimation:渐变动画,0.0f完全透明,1.0f完全显示。

RotateAnimation:旋转动画。起始角度,结束角度,相对值,横坐标的比例,相对值,纵坐标的比例。(结束角度为正就为顺时针,负数为逆时针)

ScaleAnimation:比例动画,x的位置比例起始,x的位置比例结束,y的位置比例起始,y的位置比例结束,x的锚点,x的参数,y的锚点,y的参数

setDuration:设置动画播放时间。
setFillAfter(true):界面停留在动画结束的状态·而不是初始化状态。
 除此之外我们还可以将这几个动画效果组合起来,实现组合动画。
效果图:
代码也是简单易懂:
 AnimationSet animationSet=new AnimationSet(false);
TranslateAnimation translate=new TranslateAnimation(Animation.RELATIVE_TO_SELF,300,
Animation.RELATIVE_TO_SELF,300);
translate.setDuration(3000);
translate.setFillAfter(true);
animationSet.addAnimation(translate);
RotateAnimation rotate=new RotateAnimation(0,360, Animation.RELATIVE_TO_SELF,0.5f,
Animation.RELATIVE_TO_SELF,0.5f);
rotate.setFillAfter(true);
rotate.setDuration(3000);
animationSet.addAnimation(rotate);
ScaleAnimation scale=new ScaleAnimation(0,2,0,2,Animation.RELATIVE_TO_SELF,0.5f,
Animation.RELATIVE_TO_SELF,0.5f);
scale.setDuration(3000);
animationSet.addAnimation(scale);
AlphaAnimation alpha =new AlphaAnimation(0,1);
alpha.setDuration(3000);
animationSet.addAnimation(alpha);
img.startAnimation(animationSet);

AnimationSet通过addAnimation()方法,可以将动画结合起来,实现更多的动画效果。

**属性动画**

早起的补间动画是没有改变view的参数的,view在刷新的时候会变回原来的样子。所以,在安卓3.0之后,谷歌推出了属性动画。

而属性动画的实质就是通过例如:translationX,translationY,scaleX,scaleY,rotationX,rotationY等等,这些新增的属性,记录View的值

从而使View的动画可以得到保存,刷新后不会消失。

下面是一个简单例子,通过属性动画改变x上的缩放值:

接下来是实现代码:

  btn6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ObjectAnimator objectAnimator= ObjectAnimator.ofFloat(img,"scaleX",0.5f);
objectAnimator.setDuration(3000);
objectAnimator.setStartDelay(1000);
objectAnimator.start();
}
});

如果这样实现,其实是有很多弊端的。因为,属性动画只有在3.0的版本之后能用,版本过低,是没法使用的。并且,实现一个属性动画,参数也过于繁琐。所以,这里推荐

使用开源框架:nineoldandroids。

如果你使用的是Android studio 在gradle中加入:dependencies {
compile 'com.nineoldandroids:library:2.4.0'
}

使用这个开源框架,不但能在低版本中使用属性动画,而且,实现更为简单更加方便。

   btn6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//NIneOldAndroid中的一个类实现
ViewPropertyAnimator
.animate(img)
.scaleX(0.5f)
.setInterpolator(new OvershootInterpolator())//超过一点回来
.setDuration(3000)
.start();
}
});

一个简单的例子:

怎么样,是不是更加好看了?

代码也是非常简单:

  ViewPropertyAnimator
.animate(img)
.translationY(600)
.setInterpolator(new BounceInterpolator())//弹性掉落
.setDuration(1500)
.start();

还可以这样:

代码:

      ViewPropertyAnimator
.animate(img)
.translationX(40)
.setInterpolator(new CycleInterpolator(6))//左右来回抖动
.setDuration(1500)
.start();

好了,关于动画就介绍到这里,如果懂得了基本方法,如何酷炫的动画都可以通过自己组合起来,如果本篇博文有什么写的不对的地方,欢迎留言,互相探讨,最后,希望

你通过这篇博文对你的学生和生活有所帮助。

 
 

Android开发实战之补间动画和属性动画的更多相关文章

  1. Android开发UI之补间动画-Tween Animation

    Tween Animation-补间动画 官网链接-http://developer.android.com/reference/android/view/animation/Animation.ht ...

  2. Android开发UI之补间动画-布局添加动画

    布局添加动画 使用步骤: 1.获取到布局的id RelativeLayout ly=(RelativeLayout)findViewById(R.id.layout); 2.设置动画样式 ScaleA ...

  3. Android中四种补间动画的使用示例(附代码下载)

    场景 Android中四种补间动画. 透明度渐变动画 旋转动画 缩放动画 平移动画 注: 博客: https://blog.csdn.net/badao_liumang_qizhi关注公众号 霸道的程 ...

  4. 我的 Android 开发实战经验总结

    我的 Android 开发实战经验总结 字数4440 阅读5137 评论43 喜欢250 曾经一直想写一篇总结 Android 开发经验的文章,预计当时的我还达不到某种水平,所以思路跟不上,下笔又捉襟 ...

  5. android104 帧动画,补间动画,属性动画

    ##帧动画FrameAnimation* 多张图片快速切换,形成动画效果* 帧动画使用xml定义 package com.itheima.frameanimation; import android. ...

  6. Android开发——View动画、帧动画和属性动画详解

    0. 前言   Android动画是面试的时候经常被问到的话题.我们都知道Android动画分为三类:View动画.帧动画和属性动画. 先对这三种动画做一个概述: View动画是一种渐进式动画,通过图 ...

  7. Xamarin Android开发实战(上册)大学霸内部资料

    Xamarin Android开发实战(上册)大学霸内部资料   试读文档下载地址:http://pan.baidu.com/s/1jGEHhhO 密码:vcfm 介绍: 本教程是国内唯一的Xamar ...

  8. Android开发实战(申明:来源于网络)

    Android开发实战(申明:来源于网络) 地址:http://so.csdn.net/so/search/s.do?q=Android%E5%BC%80%E5%8F%91%E5%AE%9E%E6%8 ...

  9. 阅读《名师讲坛--Android开发实战经典》

    一,专心,快速阅读一本书,直到深入理解,把书读厚,再读薄,你定会有收获. 二,20171214开始阅读<名师讲坛--Android开发实战经典>,但愿自己有所收获.从今天开始养成刻录学习写 ...

随机推荐

  1. python 之 list,tuple,dict,set

    基本类型,  其中set好像提到的很少 list : []  根据字面, 是一个列表,  所以有序, 可以通过序号方位 tuple: ()  是不变的list, 通过序号访问 dict: {},  字 ...

  2. Tencent Server Web 安装试用

    Tencent Server Web 安装试用 私有环境搭建,使用docker-compose 进行memcache 安装 参考github 代码 https://github.com/rongfen ...

  3. 使用 Excel 可以很方便的做程序原型

    使用 Excel 可以很方便的做程序原型 比如计算 单片机的端口模式,可以使用 Excel 很方便的计算出来,花了 15 分钟做好. 还可以使用函数自动根据二进制计算出 十六进制. 然后如果再使用软件 ...

  4. adobe reader DC 字体设置

    adobe reader DC 字体设置 一直使用adobe reader阅读pdf文档,系统提醒我升级一个reader助手, 升级之后: 感觉字体颜色变浅,笔画也变细了,整体有些模糊不清. goog ...

  5. HDFS(一)

    HDFS的概念 HDFS首先是文件系统(FileSystem,FS),尽管这个FS是基于OS原生的文件系统之上:而且这个文件系统是一个抽象概念,HDFS作为一个整体出现,对外(client)隐藏了其内 ...

  6. bzoj 3994 [SDOI2015]约数个数和——反演

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3994 \( d(i*j)=\sum\limits_{x|i}\sum\limits_{y|j ...

  7. Python——基础数据类型(补充)

    1.基础数据类型汇总补充 (1)小数据池:   为了节省空间,数字和字符串有,其他的没有[了解]   数字:-5---256之间的数字共用一个内存地址 #(1)i1 = i2 id(i1) == id ...

  8. Arduino+A4988驱动两相四线步进电机

    先吐槽一下,在某宝买东西这么多年碰到的不靠谱的卖家也没这几天多.丝杆发短,42电机只有32大,碳杆上的鱼眼粘的没法再歪了还死紧……所以组装还得几天.于是先玩了一下DC-DC降压模块和A4988,规划了 ...

  9. 推动FPGA发展箭在弦上,国内厂商须走差异化之路

    7月25日,由中国电子报与深圳投资推广署共同举办的“第六届(2018)中国FPGA产业发展论坛”在深圳召开. 作为四大通用集成电路芯片之一,FPGA(现场可编程门阵列)的重要性与CPU.存储器.DSP ...

  10. Oracle合并某一列

    本文转载自:https://www.cnblogs.com/LeiYang5237/p/6761183.html 一.oracle11g使用listagg() within group()函数 如图一 ...