Android 属性动画Animator
做个记录,之前项目中用得比较少
一、Activity中代码段
/*** 动态生成ValueAnimator* 执行后不断改变view得最小宽度*/private fun animationBigger() {//属性从300递增到500val anim = ValueAnimator.ofInt(300, 400).apply {this.duration = 2000 //执行时长this.repeatCount = 0this.repeatMode = ValueAnimator.RESTART}anim.addUpdateListener {// 获得改变后的值val currentValue = it.animatedValue as Int// 步骤4:将改变后的值赋给对象的属性值,下面会详细说明binding.btn1.minWidth = currentValue// 步骤5:刷新视图,即重新绘制,从而实现动画效果binding.btn1.requestLayout();}anim.addListener(object : Animator.AnimatorListener {override fun onAnimationStart(animation: Animator?) {}override fun onAnimationEnd(animation: Animator?) {startAnimset()}override fun onAnimationCancel(animation: Animator?) {}override fun onAnimationRepeat(animation: Animator?) {}})anim.start()//开始执行动画startAnimXml()}/*** 动态生成ObjectAnimator,AnimatorSet* 执行:沿Y轴旋转后位移300*/private fun startAnimset() {val anim = ObjectAnimator.ofFloat(binding.btn1, "translationX", 0f, 300f)val animRotate = ObjectAnimator.ofFloat(binding.btn1, "rotationY", 0f, 360f)val animatorSet = AnimatorSet()animatorSet.playSequentially(anim)animatorSet.duration = 2000//通过animatorSet的play方法获取 感兴趣的话 可以都试试 看一下效果animatorSet.play(anim).after(animRotate)/*** 系统自带BounceInterpolator,AccelerateInterpolator加速,DecelerateInterpolator减速,LinearInterpolator匀速* CycleInterpolator(0.5f)来回,OvershootInterpolator* http://inloop.github.io/interpolator/ 插值器示例*/animatorSet.interpolator = MInterpolator(0.5f)//自定义插值器
// animatorSet.interpolator = CycleInterpolator(0.5f)
// animatorSet.interpolator = OvershootInterpolator(2.0f)animatorSet.addListener(object : Animator.AnimatorListener {override fun onAnimationStart(animation: Animator?) {}override fun onAnimationEnd(animation: Animator?) {
// translate()//重复执行}override fun onAnimationCancel(animation: Animator?) {}override fun onAnimationRepeat(animation: Animator?) {}})animatorSet.start()}private var startTime = 0L/*** 根据静态文件生成Animator* 执行:旋转后位移* 注意:静态文件配置得duration并不完全生效(有一定得效果)*/private fun startAnimXml() {AnimatorInflater.loadAnimator(this, R.animator.anim_first).apply {this.setTarget(binding.text)this.interpolator = LinearInterpolator()
// this.startDelay = 5000//start后延迟5秒执行
// this.duration = 10000;//生效this.addListener(object : Animator.AnimatorListener {override fun onAnimationStart(animation: Animator?) {startTime = System.currentTimeMillis()"开始执行".d()}override fun onAnimationEnd(animation: Animator?) {"timelong=${(System.currentTimeMillis() - startTime)}".d()}override fun onAnimationCancel(animation: Animator?) {}override fun onAnimationRepeat(animation: Animator?) {}})}.start()}
二、自定义插值器
import android.animation.TimeInterpolator
import kotlin.math.pow
import kotlin.math.sin/*** @author Liushihua* @date 2022-5-17 16:51* @desc*/
class MInterpolator(var factor: Float = 0.15f) : TimeInterpolator {// 因子数值越小振动频率越高override fun getInterpolation(input: Float): Float {return (2.0.pow(-10 * input.toDouble()) * sin((input - factor / 4) * (2 * Math.PI) / factor) + 1).toFloat()}
}
三、values中新建animator文件夹,anim_first.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"android:ordering="sequentially"><!-- sequentially按顺序执行 together同时执行 --><objectAnimatorandroid:duration="5000"android:propertyName="rotation"android:valueFrom="0"android:valueTo="360" /><objectAnimatorandroid:duration="7000"android:propertyName="translationX"android:valueFrom="0"android:valueTo="560" />
</set>
参考:
https://blog.csdn.net/weixin_45558166/article/details/110310651
https://www.jianshu.com/p/39ee86df9e5a
Android 属性动画Animator相关推荐
- android 属性动画实例,Android 属性动画Animator工具类代码案例
代码分享-> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ packa ...
- android动画封装,Android属性动画封装,快速构建动画
Android实现动画效果的方式主要有帧动画.补间动画.属性动画.关于安桌动画的基础知识可以查看这篇文章Android属性动画完全解析 这里我要讲的是如何快速构建出一个动画效果,如下图: 如果我们用属 ...
- Android属性动画 ObjectAnimator
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/118709616 本文出自[赵彦军的博客] 文章目录 ObjectAnimator ...
- Android 系统(196)---Android 属性动画
Android 属性动画 属性动画 总结&攻略 前言 动画的使用 是 Android 开发中常用的知识 本文将详细介绍 Android 动画中 属性动画的原理 & 使用 动画类型 关于 ...
- Android 属性动画Property Animation(中)
Android 属性动画Property Animation(上)介绍了属性动画的概念以及相关的类和接口,本篇来看下具体肿么使用. ValueAnimator ValueAnimator指定整形.浮点 ...
- Android 属性动画(一)新手入门
一.属性动画简介 Android 中动画有很多种,属性动画就是其中的一种.所谓的属性动画,就是在指定的时间内,通过改变对象的属性达到变化效果的动画.在 Android 中,属性动画系统是一个强健的框架 ...
- Android 属性动画 详解
Android 属性动画 详解 Android动画类型: View Animation(即所谓的Tween Animation补间动画):View Animation相当简单,不过只能支持简单的缩放. ...
- Android属性动画完全解析(上),初识属性动画的基本用法
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/43536355 在手机上去实现一些动画效果算是件比较炫酷的事情,因此Android系 ...
- Android属性动画完全解析(上),初识属性动画的基本用法(转)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/43536355 在手机上去实现一些动画效果算是件比较炫酷的事情,因此Android系 ...
最新文章
- MapReduce框架Mapper和Reducer类源码分析
- 提交响应后无法调用sendredirect_微服务的那些事(三),微服务的远程调用方式。RPC和HTTP...
- 简单的PHP和MYSQL做投票系统_php mysql简单投票系统
- Redis - 事务操作与详解
- 想快速拥有个人网站?来试试这个...
- python求100以内的素数和(只作新手参考)
- [回顾]事件对象——event
- C++数据类型基础知识
- iOS 使用iPhone配置实用工具 创建桌面快捷方式
- 改进的各向异性湿法蚀刻工艺
- 16.4 weak_ptr简介、weak_ptr常用操作与尺寸问题
- 微信小程序正式上线,服务端请求必须HTTPS
- OSChina 周五乱弹 ——程序员的爱情观
- Unity3D--控制鼠标的显示与隐藏
- HTML——表格table
- 【5G架构】5G 接入网架构概述
- 『最小表示法 Necklace』
- KITTI数据集测试 - 3 calib 相机参数
- 黑龙江省佳木斯市谷歌高清卫星地图下载
- 用 python selenium 爬简书,Python自动化领域之 Selenium WebDriver 学习第2篇