让你的动画不再生硬 Android插值器Interpolator使用秘籍
有木有厌烦生硬的动画效果,想不想让你的动画变得圆滑且
欢迎收看本期的走进科学。。。
停,停,别打了,(。﹏。*) 我错了……
我们要达到的效果:
先来回顾一下普通动画的用法吧。
* 缩放动画
ScaleAnimation sa = new ScaleAnimation(0.1f,1f,0.1f,1f);
sa.setDuration(1000);
tx.startAnimation(sa);
相信大家都已经会了。这个动画的效果是这样的:
看起来就只是线性变化啊!!!! 好生硬啊!!!!! 有没有一种方法可以让动画的变化不是线性的呢,看起来有弹性。
废话。当然有啊…不然我还在这里叽里呱啦什么捏。。那就是插值器Interpolator。
看标题就知道这不是一个具体讲插值器的博文,而是讲秘籍。。。到底是啥呢。。其实就是一个可以在线预览插值器效果的网站啦。。
插值器预览
这个网站可以预览各种插值器的效果,并且内置了几种常见的效果:
比如这个spring效果,他根据这条曲线进行插值的。。 那么我们对代码进行一下改造,应用到安卓上。
转载请注明出处:http://blog.csdn.net/wingichoy/article/details/50667025
新建一个Interpolator类,实现getInterpolation()方法
为动画集添加动画效果
//由网站改造的插值器
public class MyInterpolator implements Interpolator {
@Override
//返回为float值 也就是实时的值
public float getInterpolation(float input) {
float factor = 0.4f;
return (float) (Math.pow(2, -10 * input) * Math.sin((input - factor / 4) * (2 * Math.PI) / factor) + 1);
}
float bounce(float t) {
return t * t * 8;
}
}
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView tx = (TextView) findViewById(R.id.txt);
tx.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ScaleAnimation sa = new ScaleAnimation(0.1f,1f,0.1f,1f);
sa.setDuration(1000);
RotateAnimation ra = new RotateAnimation(0,360, Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
ra.setDuration(1000);
AnimationSet as = new AnimationSet(true);
as.setInterpolator(new MyInterpolator());
// as.addAnimation(ra);
as.addAnimation(sa);
tx.startAnimation(as);
}
});
}
}
此时缩放的动画效果如下:
这个…… 呃~~ -__-” 这个helloworld在颤抖。。有点邪恶(懂得面壁五分钟!)。。
改成旋转动画试试:
呃呃呃。。确实好看多了。很平滑的感觉
说了半天其实就是:你可以把自己写好的插值器或者在网上找的在这个网站上预览,然后进行微调,最后达到满意的效果。
如果本文对你有帮助就点个顶吧~
让你的动画不再生硬 Android插值器Interpolator使用秘籍的更多相关文章
- 动画_ _ Android应用开发之所有动画使用详解
转载: http://blog.csdn.net/yanbober/article/details/46481171 题外话:有段时间没有更新博客了,这篇文章也是之前写了一半一直放在草稿箱,今天抽空把 ...
- Android动画学习笔记-Android Animation
Android动画学习笔记-Android Animation 3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ...
- [原][粒子特效][spark]插值器interpolator
深入浅出spark粒子特效连接:https://www.cnblogs.com/lyggqm/p/9956344.html 插值器是体现粒子生命周期变化的功能 group使用到插值器的方式: 可以看到 ...
- 让动画不再僵硬:Facebook Rebound Android动画库介绍
introduction official site:http://facebook.github.io/reboundgithub : https://github.com/facebook/reb ...
- Android动画之旅-Android动画基本介绍
在上一篇博客中.我们简单了解了在Android中的动画特效.小伙伴们是不是意犹未尽呀. 还没有看的猛戳这里:Android动画之旅一开篇动画简单介绍 本篇博客.将和大家一起来分析Android中的四大 ...
- Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/44171115 大家好,欢迎继续回到Android属性动画完全解析.在上一篇文章当中 ...
- android.view.animation(2) - 插值器Interpolator
public interface Interpolator implements TimeInterpolator android.view.animation.Interpolator Known ...
- Android动画学习(一)——Android动画系统框架简介
2015-11-09补充:Drawable Animation极有可能是Frame Animation 这几天在找工作,面试的时候被问到了Android动画,之前完全没接触过这部分,直接给懵了,当然其 ...
- android之interpolator的用法详解
Android:interpolator Interpolator 被用来修饰动画效果,定义动画的变化率,可以使存在的动画效果accelerated(加速),decelerated(减速),repea ...
随机推荐
- Java内存泄漏分析系列之一:使用jstack定位线程堆栈信息
原文地址:http://www.javatang.com 前一段时间上线的系统升级之后,出现了严重的高CPU的问题,于是开始了一系列的优化处理之中,现在将这个过程做成一个系列的文章. 基本概念 在对J ...
- Kafka系列之-自定义Producer
前面已经讲到了,在Kafka中,Message是由Producer产生的,Producer产生的Message会发送到Topic的指定Partition中.Producer可以有多种形式,也可以由用户 ...
- [OpenCV] How to install opencv by compiling source code
Introduction Install OpenCV and its dependence ! STEPs 1, compiler sudo apt-get install build-essent ...
- Linux 高性能服务器编程——Linux服务器程序规范
问题聚焦: 除了网络通信外,服务器程序通常还必须考虑许多其他细节问题,这些细节问题涉及面逛且零碎,而且基本上是模板式的,所以称之为服务器程序规范. 工欲善其事,必先利其器,这篇主要来探 ...
- 详解EBS接口开发之采购订单导入
采购订单常用标准表简介 1.1 常用标准表 如下表中列出了与采购订单导入相关的表和说明: 表名 说明 其他信息 po.po_headers_all 采购订单头 采购订单号,采购类型,供应商,地点, ...
- Spring MVC Junit4 单元测试 JunitTest
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "/config/spring3/ap ...
- springMVC系列之(三) spring+springMVC集成(annotation方式)
个人认为使用框架并不是很难,关键要理解其思想,这对于我们提高编程水平很有帮助.不过,如果用都不会,谈思想就变成纸上谈兵了!!!先技术,再思想.实践出真知. 1.基本概念 1.1.Spring Spri ...
- 【ShaderToy】基础篇之再谈抗锯齿(antialiasing,AA)
写在前面 在之前的基础篇中,我们讲到了在绘制点线时如何处理边缘的锯齿,也就是使用smoothstep函数.而模糊参数是一些定值,或者是跟屏幕分辨率相关的数值,例如分辨率宽度的5%等等.但这种方法其实是 ...
- 02_MyBatis项目结构,所需jar包,ehcache.xml配置,log4j.properties,sqlMapConfig.xml配置,SqlMapGenerator.xml配置
项目结构(所需jar包,配置文件) sqlMapConfig.xml的配置内容如下: <?xmlversion="1.0"encoding="UTF-8&qu ...
- scala学习笔记3(trait)
// trait 类似于 Java8 中可以带 default method 的接口. // trait 中可以带有实现的方法,也可以带有抽象的方法,使用 trait 的方式是 with 而混入类中 ...