帅气的属性动画赏析(Property Animation)

HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载) 主要介绍了HTML5游戏引擎LTweenLite实现的超帅动画效果,详细分析了LTweenLite的下载,动画效果的实现步骤,并附带完整的demo实例源码供读者下载,需要的朋友可以参考下 立即下载

权利声明:转载请注明出处http://blog.youkuaiyun.com/hello_chillax/article/details/44992787

今天我们来学习Android中的一个比较好玩的动画效果:Property Animation、でわ、はじめましょう。

一,初めに:动画的分类
Android动画分类:View Animation,Drawable Animation,Property Animation。

各自能实现的效果:View Animation比较简单,能且只能实现View的基本动画效果,如translation(移动),alpha(淡入淡出),rotate(旋转),scale(缩放)。如果你想实现其他的特效的话,就应该考虑使用Property Animation了。

二、次に:Property Animation的简单使用。

1.ObjectAnimator.

.提供了ofInt、ofFloat、ofObject,这几个方法都是设置动画作用的元素、作用的属性、动画开始、结束、以及中间的任意个属性值。
下面我们通过一个Demo来细致地讲一下ObjectAnimator。
首先我们新建一个工程,在main.xml中写一个Button。在main函数中写下如下代码

我们实现这样一个动画:点击Button,让Button向右下角移动一段距离:于是我们有一下四种实现方法。

//实现方法一:animation动画只是有了动画效果,控件本身的位置并未移动
        TranslateAnimation animationX=new TranslateAnimation(0, 500, 0, 0);
        TranslateAnimation animationY=new TranslateAnimation(0,0,0,500);
        AnimationSet set=new AnimationSet(false);
        set.addAnimation(animationX);
        set.addAnimation(animationY);
        set.setDuration(3000);
        set.setFillAfter(true);
        button.startAnimation(set);
//实现方法二:   这种方法实际上已经改变了控件的位置!!!
        ObjectAnimator.ofFloat(button, "translationX", 0F,500F).setDuration(3000).start();
        ObjectAnimator.ofFloat(button, "translationY", 0F,500F).setDuration(3000).start();
//第三种实现方法: 用PropertyValuesHolder实现动画(比 方法二效率更高)
        PropertyValuesHolder holder1=PropertyValuesHolder.ofFloat("translationX", 0,500);
        PropertyValuesHolder holder2=PropertyValuesHolder.ofFloat("translationY", 0,500);
        ObjectAnimator.ofPropertyValuesHolder(button, holder1,holder2).setDuration(3000).start();
//第四种实现方法:用AnimatorSet实现动画效果,自定义动画执行顺序
        ObjectAnimator animator1=ObjectAnimator.ofFloat(button, "translationX", 0F,500F);
        ObjectAnimator animator2=ObjectAnimator.ofFloat(button, "translationY", 0F,500F);
        AnimatorSet set=new AnimatorSet();
        set.playTogether(animator1,animator2);//同时播放
//      set.playSequentially(animator1,animator2);//顺序播放
//      set.play(animator1).with(animator2);//同时播放
//      set.play(animator2).after(animator1);//让animator2在animator1后面播放
        set.setDuration(3000);
        set.start();

怎么样,我们不仅实现了动画,而且用简短的代码实现了四种方式。

下面我们来看一下对动画事件的监听:
我们让Button移动结束后调用一个Toast,show出“animator over”的 字样.
我们选用方法4来添加监听效果,其他的类似:
添加如下代码:

set.addListener(new AnimatorListener() {

            @Override
            public void onAnimationStart(Animator animation) {

            }

            @Override
            public void onAnimationRepeat(Animator animation) {

            }

            @Override
            public void onAnimationEnd(Animator animation) {
                Toast.makeText(MainActivity.this, "animator over", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onAnimationCancel(Animator animation) {

            }
        });

当然,如果你感觉这个监听器代码太多,不想实现那么多的方法,你可以用下面这个方法:

set.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
            Toast.makeText(MainActivity.this, "animator over", Toast.LENGTH_SHORT).show();
            }
        });

是不是简洁多了。。

2.ValueAnimator
下面我们来进入另一个重要的animator。首先,让我们先看一下它和ObjectAnimator的关系:

public final class ObjectAnimator extends ValueAnimator {
    private static final boolean DBG = false;

    // The target object on which the property exists, set in the constructor
   。。。。。。。

显然,ObjectAnimator继承自ValueAnimator,即,ObjectAnimator包装了ValueAnimator;

注意:ValueAnimator本身并不能实现任何动画,它其实是一个产生动画变化的变化值,
下面我们来实现一个功能:让button的text从0随着动画的进度增加到100的效果:添加如下代码:

ValueAnimator animator=ValueAnimator.ofInt(0,100);
        animator.setDuration(3000);
        animator.addUpdateListener(new AnimatorUpdateListener() {

            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                Integer integer=(Integer) animation.getAnimatedValue();
                button.setText(""+integer);
            }
        });
        animator.start();

ok,就这样了

3.Layout Animation
过渡的类型一共有四种:

LayoutTransition.APPEARING 当一个View在ViewGroup中出现时,对此View设置的动画

LayoutTransition.CHANGE_APPEARING 当一个View在ViewGroup中出现时,对此View对其他View位置造成影响,对其他View设置的动画

LayoutTransition.DISAPPEARING 当一个View在ViewGroup中消失时,对此View设置的动画

LayoutTransition.CHANGE_DISAPPEARING 当一个View在ViewGroup中消失时,对此View对其他View位置造成影响,对其他View设置的动画

LayoutTransition.CHANGE 不是由于View出现或消失造成对其他View位置造成影响,然后对其他View设置的动画。

注意动画到底设置在谁身上,此View还是其他View。

最后,Demo下载地址:http://download.youkuaiyun.com/detail/nsgsbs/8525995

ESP32 开发实战:VS Code 头文件波浪线及编译错误的终极解决方案 本文针对ESP32开发者在VS Code中常见的头文件红色波浪线和fatal error编译错误,提供了终极解决方案。通过详细讲解如何配置c_cpp_properties.json文件来修复编辑器智能提示,以及如何修改CMakeLists.txt来修正编译器路径,帮助开发者彻底解决环境配置问题,提升开发效率。 阅读详情

相关推荐

MFC界面库BCGControlBar v32.0 - 对话框、仪表盘控件升级

亲爱的BCGSoft用户,我们非常高兴地宣布BCGControlBar Professional for MFC和BCGSuite for MFCv32.0正式发布!新版本支持Windows 11、增强功能区简化模式、改进控件外观等,以及其他新功能和改进。需要最新版的可以点击这里【BCG下载】 BCGControlBar Pro for MFC v32.0正式版下载 对话框和表单 1. 添加了一个新的全局标志globalData.m_bAutoPrepareComboListStyles:如果您希望.

需要界面开发、IDE工具研发中文教程资料的小伙伴,记得私信我~ 1147

常用的几个动画代码

使用前 需引入QuartzCore.framework, 并在相关文件中加入 #import "QuartzCore/QuartzCore.h" 定义 shakeFeedbackOverlay为UIImageView 设置 self.shakeFeedbackOverlay.alpha = 0.0; se

simon699的专栏 1771

深度强化学习-D3QN算法原理与代码

Dueling Double Deep Q Network(D3QN)算法结合了Double DQN和Dueling DQN算法的思想,进一步提升了算法的性能。如果对Doubel DQN和Dueling DQN算法还不太了解的话,可以参考我的这两篇博文:深度强化学习-Doubel DQN算法原理与代码和深度强化学习-Dueling DQN算法原理与代码,分别详细讲述了这两个算法的原理以及代码实现。本文就带领大家了解一下D3QN算法,代码链接见下方。 代码:https://github.com/indigo

weixin_46133643的博客 2万+

HTML5超帅动画制作-LTweenLite的妙用

lufylegend.js是一个开源的HTML5游戏引擎,在游戏中往往会有各种的动画,这些动画有些是flash文件,有些是视频文件,本次就来利用lufylegend制作一个帅气的游戏动画,如下图。测试连接如下 http://lufylegend.com/demo/effects01/ 一,准备工作 准备工作当然就是引擎的下载了。 lufylegend.js引擎官网 http://lufylegen...

20386053 279

uniapp 记录运动轨迹 开发_智能手环穿戴设备APP开发解决方案

智能手环是一种穿戴式智能设备,是目前备受关注的科技产品。目前智能手环具有的功能有记录日常生活中的运动数据、移动轨迹,定位等,有些还可以进行睡眠质量的检测,并将这些数据传送至移动端如手机、平板等,可对数据进行分析,指导健康生活的作用。而智能手环开发方案就是将这些功能实现,将算法烧录到主控板上。智能手环都有哪些功能  1、记录运动数据  对于喜欢健身的用户来说,智能手环记录的运动数据功能...

weixin_39678493的博客 1764

光伏发电系统模拟及其发电预测开源python工具pvlib

本文介绍光伏发电系统模拟及其发电预测开源python工具pvlib,以及举例介绍获取辐照度方法、光伏发电预测思路。

肖永威的专栏 1万+

8个超炫酷仿HTML5动画源码

1.jQuery万年历插件 带农历老皇历功能 这是一款基于jQuery的日历插件,这款日历插件和之前分享的日历控件有很大差异,它是一本万年历,包含了农历已经老皇历的功能,是一个挑好日子的工具。同时日历还可以查看本年度的放假安排,功能非常强大。有兴趣的朋友可以下载学习。 在线演示 源码下载 2.CSS3发光进度条动画 超炫酷的样式 这次我们要来分享一款非常炫酷的CSS3进度条动画,其样...

weixin_33724659的博客 955

axi ps读写pl_PL读写DDR:Datamover能干什么

最近发现工程项目中一直在用AXI-DMA。这玩意儿搬数据倒是没问题,就是用axi-lite配置起来非常反人类。。。简单的办法其实是用datamover ip核。这个ip核能干嘛呢。准备写个文章解析一下。由于好多feature没用过,所以仅仅看文档可能理解有误,欢迎指出错误。首先扫个盲:MM2S指的是Memory map to stream. 读DDR. S2MM指的是steam to memory...

weixin_35908791的博客 1597

html5炫酷作品源代码,8个超炫酷的HTML5动画演示及源码

利用HTML5可以绘制很多静态的图像,也可以制作一些炫酷的动画,本文分享了8个利用HTML5和CSS3实现的动画演示,同时也分享了源代码供大家下载参考。1、HTML53D点阵列波浪翻滚动画这个HTML5 Canvas动画非常壮观,给人一种破浪起伏的视觉效果。2、纯CSS3实现发光开关切换按钮这款按钮非常有个性,它的外观酷似以前老式的点灯开关,但是由于其黑色的背景,让整个按钮给人发光的效果。3、纯...

weixin_36482670的博客 2766

11、改进的加权轮询调度算法

本文详细介绍了对传统加权轮询(WRR)调度算法的改进方法,包括动态权重调整、优先级调度和预测机制,旨在提升系统的公平性、响应速度和适应性。通过设计与实现改进算法,并结合实验验证其在响应时间、资源利用率和公平性方面的显著提升,同时列举了该算法在数据中心、云服务平台、CDN及电商平台等实际场景中的应用案例。

day7的博客 190

CSP - 2024 普及组初赛试题及解析

CSP - 2024 普及组初赛试题及解析

QD_Jason的博客 2911

切换Activity时的动画overridePendingTransition(A,B)解析

声明:转载请注明出处:http://blog.youkuaiyun.com/hello_chillax目的: Android中不同Activity之间的切换是不可避免的事情,那么怎么才能让Acitivity的切换更优雅呢,Android中提供了一个方法来解决这个问题,即overridePendingTransition(A,B)函数。效果: 用一张图来表示该函数能实现的效果、 效果一:新的Activity从左

企鹅肖 9933

Modis数据处理工具:MRT百度网盘下载和手把手图文安装教程

如下图所示为MODIS Reprojection Tool(MRT)的软界面,看似简单,却是Modis遥感影像必不可少的处理工具,如投影变换等。本文以图文并茂的形式,详细讲解MRT软件在Windows10平台上的安装过程,并附MRT软件百度网盘下载地址。 Modis Tool主界面: 一、安装过程 1、安装Java运行环境 双击Java.exe,安装运行环境。默认的安装路径为C:\Program Files (x86)\Java\jre6\bin,后面需要用到这个路径。 等待...

智慧空间实验室 2623

Android Apk 代码混淆与资源文件混淆实战

Android项目在完工发布时,需要对代码和资源文件进行混淆,目的有两个:1⃣️减小压缩包的体积 2⃣️防止代码被反编译后恶意利用Android Apk混淆分两步走: 1⃣️混淆代码 2⃣️混淆资源文件本人的开发环境为: Operation System:Mac OS 10.10.5 Android Studio:2.0 Preview 5 Gradle Plugin:2.0.

企鹅肖 8584

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Git--团队开发必备神器

花了两天时间专门搞了一下git,整理一下分享给大家。下面我们开始。。。 转载请注明出处: http://blog.youkuaiyun.com/Hello_Chillax/article/details/47405887 更多精彩请访问:http://blog.youkuaiyun.com/hello_chillax,谢谢 一.学习使用git之前的准备(Windows环境下)。 在本地装一个git,并装上GitBash。(

企鹅肖 5292

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

正则表达式~~检索匹配的利器

今天来介绍一下正则表达式,以及其在Android中 扮演的重要角色一.揭开正则表达式的神秘面纱 正则表达式的特点 表现形式比较高冷: 随便来一串: ^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)

企鹅肖 3261

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ViewPager+下拉刷新ListView超强组合(实现360手机助手首页的效果)

想必大家都用过360手机助手,效果是不是很绚丽,其实很好实现喽。今天就来说一说怎么去实现喽~(PS:咱们是讲原理和思路,我这里是用的不是360助手的界面,懒得去扒那些图片喽,太懒,见谅~~)首先,上图: 先看一下工程目录结构: 其中有两个包,第一个里面分别是: Data:工程里面的数据,本来想用几个textview填充ListView的,最后感觉这样会效果好一点,米啥用~ MainActiv

企鹅肖 2840

Android四大组件之~~BroadcastReceiver

声明:转载请注明出处:http://blog.youkuaiyun.com/hello_chillax开题:对android稍微有些了解的朋友都知道,android中有四大组件,分别是:Activity,Service,ContentProvider,BroadcastReceiver。今天来介绍其一:BroadcastReceiver。BroadcastReceiver:顾名思义,广播接收者,可以接收系统,其

企鹅肖 1888

总体把握Android中的触摸事件处理

先看几个函数:提到Android的触摸事件处理,不少人都会立刻想到某些令人头疼的函数,这里列举一下,刺激一下你的小神经: @Override public boolean onTouchEvent(MotionEvent event) { return super.onTouchEvent(event); } @Override public b

企鹅肖 1603

Android四大组件之~~ContentProvider

声明:转载请注明出处:http://blog.youkuaiyun.com/hello_chillax开题:对android稍微有些了解的朋友都知道,android中有四大组件,分别是:Activity,Service,ContentProvider,BrocastReserver。今天来介绍其一:ContentProvider。ContentProvider: 顾名思义,内容提供者。实现了不同程序之间数据的

企鹅肖 1467

注解机制 androidannotations 让编程更随性,更轻松(一)

Google开源框架androidannotations深入学习2.annotations的配置 对着项目名称点击右键,找到倒数第二项,Properties,点击进去, 会看到上图,点击标号1的位置,在右侧把标号3的位置勾上,把4的位置选择成1.6以上(包括1.6)。。然后点击上图标号2,得到下图的样子。 上面三个打上红色箭头的全部选中,然后在最后一行apply一下,再选择Factory Pa

企鹅肖 1344

JNI开发最佳实践

今天逛论坛时意外发现一个很给力的小视频,嘿嘿嘿。传送门 。这是一个美国的哥们录制的一个JNI开发入门的小案例。看了一遍,还不错,把整个流程记录一下。然后补充一些知识。恩。Let’s begin. 转载请注明出处: 优快云:天道酬勤 本文地址: 软件开发,环境很重要,说一下我的编程环境: Operation System:Mac OS 10.10.4 JDK:jdk1.8

企鹅肖 1241

Android四大组件之~~Service

声明:转载请注明出处:http://blog.youkuaiyun.com/hello_chillax开题:对android稍微有些了解的朋友都知道,android中有四大组件,分别是:Activity,Service,ContentProvider,BroadcastReceiver。今天来介绍其一:Service。一.Service和Thread有什么区别和联系,以及使用Service的必要性。Servic

企鹅肖 1235

注解机制 androidannotations 让编程更随性,更轻松(二)

上一个博文讲了androidannotations的配置与使用,以及常见错误的解决。注解机制 androidannotations 让编程更随性,更轻松今天来详细地说明如何在代码中使用annotations进行注解。关于注解的方法,官方文档的地址(英文好的朋友可以去尝试着学习一下):https://github.com/excilys/androidannotations/wiki/Availabl

企鹅肖 1232
上一篇: synchronized静态代码块,以及其中的wait,notify和notifyAll
下一篇: 数据结构上机题目答案大集合(全部通过助教的检查)
肖小的人儿
博客等级 码龄12年 29粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值