Android属性动画---Property Animation
- 格式:docx
- 大小:161.36 KB
- 文档页数:11
bootanimation 参数摘要:一、bootanimation 参数简介1.什么是bootanimation2.bootanimation 的作用二、bootanimation 参数详解1.animation-name2.iteration-count3.play-on-boot4.fade-in-boot-animation5.animation-resume-on-boot6.animation-delay-on-boot三、bootanimation 参数设置方法1.系统设置2.第三方软件设置四、bootanimation 参数对系统的影响1.提高开机速度2.省电效果正文:bootanimation 参数是Android 系统中一个与开机动画相关的设置项。
它可以让我们自定义开机动画的效果,提高开机速度,节省电量。
一、bootanimation 参数简介bootanimation 是Android 系统中负责开机动画的设置项。
开机动画是在手机开机时,显示的一段动画效果。
这个设置项可以让用户自定义开机动画的效果,从而提高手机的个性化程度。
二、bootanimation 参数详解1.animation-name:这个参数用于指定开机动画的名称。
用户可以根据自己的喜好,选择不同的动画效果。
2.iteration-count:这个参数用于指定开机动画的播放次数。
用户可以根据自己的需求,设置动画播放一次或多次。
3.play-on-boot:这个参数用于指定开机动画是否在开机时自动播放。
用户可以根据自己的需求,选择是否开启此功能。
4.fade-in-boot-animation:这个参数用于指定开机动画是否采用淡入效果。
用户可以根据自己的喜好,选择是否使用淡入效果。
5.animation-resume-on-boot:这个参数用于指定开机动画是否在开机时继续播放。
用户可以根据自己的需求,选择是否开启此功能。
(完整版)Android应⽤开发期末考试题试题⼀、选择题1 android虚拟设备的缩写是(AVD)2 Android SDK⽬前⽀持的操作系统(DOS)3 Android开发⼯具插件(ADT)没有提供的开发功能(⾃动更新)4Android SDK提供⼀些开发⼯具可以把应⽤软件打包成Android格式⽂件(APK)5 Android当中基本的所有的UI都是由(view)或者其⼦类实现的6以下不是Android中调试项⽬的正确步骤(测试⽤例)7下列不是Activity的⽣命周期⽅法之⼀的是(OnResume)8以下可以做EditText编辑框的提⽰信息是(adroid:hint)9以下不是Activity启动的⽅法是(gotoActivity)10以下不是⼿机操作系统的是(windows vista)⼆、填空题1 Android平台由操作系统,中间件,⽤户界⾯和应⽤软件组成的。
2 Android平台提供了2D,3D的图形⽀持,数据库⽀持SQLite,并且集成了浏览器3⽬前已知的可以⽤来搭建Android开发环境的系统有windows,Linux,Mac 等4开发中推荐使⽤的IDE开发组合为IDE,eclipse,ADI来开发5 Android SDK主要以java语⾔为基础6创建⼯程时需要填写的信息名称有⼯程名,包的名字,Activity的名字还有应⽤的名字7 Android.jar是⼀个标准的压缩包,其内容包含的是编译后的class,包含了全部的API三、简答题1 Android SDK中API的包结构的划分?⾄少五个android.util,android.os,android.content,android.view,android.graphics,android.text 2 Android软件框架结构⾃上⽽下可分为哪些层?应⽤程序(Application)、应⽤程序框架(Application Framework)、各种库(Libraries)和Android运⾏环境(RunTime)、操作系统层(OS)3 Android应⽤程序的4⼤组件是什么?Activity、Broadcast Intent Receiver、Service、Content Provider4 Android应⽤⼯程⽂件结构有哪些?源⽂件(包含Activity),R.java⽂件,Android Library,assets⽬录res⽬录,drawble⽬录,layout⽬录,values⽬录,AndroidManifest.xml5 Android开发应⽤程序最有可能使⽤到的应⽤框架部分是哪些?⼀组View(UI)组件,Content Providers,Resource Manger,Notification Manger,Activiy Manger6 Android底层库包含哪些?系统C库,媒体库,Surface Manager,LibWebCore,SGL四、编程1实现点击⼀个按钮,结束当前Activity并将需要返回的数据放置并关闭当前窗体请编写核⼼代码Bundle bundle = new Bundle ( );Bundle.putString(“store”,”数据来⾃Activity1”) ;Intent mIntent = new Intent( );mIntent.putExtras(bundle);setResult(RESULT_OK, mIntent);finish( );选择题1 android虚拟设备的缩写是(AVD)2 Android SDK⽬前⽀持的操作系统(Linux)3 Android开发⼯具插件(ADT)没有提供的开发功能(⾃动更新)4 Android SDK提供⼀些开发⼯具可以把应⽤软件打包成Android格式⽂件(APK)5 Android当中基本的所有的UI都是由(view)或者其⼦类实现的8以下可以做EditText编辑框的提⽰信息是(adroid:hint)以下不是⼿机操作系统的是(windows vista)下列哪个属性是专⽤于相对布局的(D)A.android.orientation 线性vertical 垂直horizontalB.android:stretchColumnsC.android:layout_alignParentRightD.android:layout_toRightOf定义LinearLayout垂直⽅向布局时设置的属性( D )A.android:layout_heightB.B.android:gravityC.android:layoutD. android:orientation vertical 垂直为了使android适应不同分辨率的机型,布局时字体单位应⽤( D )A.dpB.dip 像素C.pxD.sp下⾯属于android的动画分类的有( AB)A.TweenB.FrameC.DrawD.Animation Property Animation属性动画android 关于service⽣命周期的onCreate()和onStart()说法正确的是( AD )A.当第⼀次启动的时候先后调⽤onCreate()和onStart()⽅法B.当第⼀次启动的时候只会调⽤onCreate()⽅法C.如果service已经启动,将先后调⽤onCreate()和onStart()⽅法D.如果service已经启动,只会执⾏onStart()⽅法,不在执⾏onCreate()⽅法在android中使⽤Menu时可能需要重写的⽅法有(AC)A、onCreateOptionsMenu()三种菜单:选项菜单、上下⽂菜单、⼦菜单B、onCreateMenu()C、onOptionsItemSelected()D、onItemSelected()Intent传递数据时,下列的数据类型哪些可以被传递(ABCD)A、SerializableB、charsequenceC、ParcelableD、Bundlejava.io包中的( A )和( B )类主要⽤于对对象Object的读写。
Qt动画效果的实现,QPropertyAnimation Qt动画架构中的主要类如下图所⽰:动画框架由基类QAbstractAnimation和它的两个⼉⼦QVariantAnimation和QAnimationGroup组成。
QAbstractAnimation是所有动画类的祖宗。
它包含了所有动画的基本属性。
⽐如开始,停⽌和暂停⼀个动画的能⼒。
它也可以接收时间改变通知。
动画框架⼜进⼀步提供了QProertyAnimation类。
它继承⾃QVariantAnimation并对某个Qt属性(它须是Qt的”元数据对象系统”的⼀部分,见/nkmnkm/article/details/8225089)执⾏动画。
此类对属性执⾏⼀个宽松曲线插值。
所以当你想去动画⼀个值时,你可以把它声明为⼀个属性,并且让你的类成为⼀个QObject。
这给予我们极⼤的⾃由度来动画那些已存在的widget和其它QObject。
复杂的动画可以通过建⽴⼀个QAbstractAnimation的树来构建。
这个树通过使⽤QAnimationGroups来创建,QAnimationGroups作为其它动画的容器。
注意动画组也是从QAbstractAnimation派⽣的,所以动画组可以再包含其它动画组。
动画框架可以单独使⽤,同时也被设计为状态机框架的⼀部分。
状态机提供了⼀个特定的状态可以⽤来播放动画。
在进⼊或退出某个状态时QState也可以设置属性们,并且这个特定的动画状态将在指定QPropertyAnimation时给予的值之间做插值运算。
后⾯我们要进⼀步介绍此问题。
在场景的背后,动画被⼀个全局定时器收集,这个定时器发送update到所有的正在播放的动画中。
动画框架中的类们QAbstractAnimation 所有动画类的基类QAnimationGroup 动画组的基类QEasingCurve 控制动画的宽松曲线类QParallelAnimationGroup 并⾏动画组类QPauseAnimation 串⾏动画组类的暂停类QPropertyAnimation 动画Qt属性的类QSequentialAnimationGroup 串⾏动画组类QTimeLine 控制动画的时间线类QVariantAnimation 各动画类的虚基类动画Qt属性们如前⾯所讲,QPropertyAnimation类可以修改Qt属性们。
Android⾼级UI特效仿直播点赞动画效果本⽂给⼤家分享⾼级UI特效仿直播点赞效果—⼀个优美炫酷的点赞动画,具体实现代码⼤家参考本⽂。
效果图如下:攻克难点:⼼形图⽚的路径等⾛向⼼形图⽚的控制范围部分代码如下:通过AbstractPathAnimator定义飘⼼动画控制器@Overridepublic void start(final View child, final ViewGroup parent) {parent.addView(child, new youtParams(mConfig.heartWidth, mConfig.heartHeight));FloatAnimation anim = new FloatAnimation(createPath(mCounter, parent, 2), randomRotation(), parent, child);anim.setDuration(mConfig.animDuration);anim.setInterpolator(new LinearInterpolator());//启动动画anim.setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationEnd(Animation animation) {mHandler.post(new Runnable() {@Overridepublic void run() {parent.removeView(child);}});mCounter.decrementAndGet();}@Overridepublic void onAnimationRepeat(Animation animation) {}@Overridepublic void onAnimationStart(Animation animation) {mCounter.incrementAndGet();}});anim.setInterpolator(new LinearInterpolator());child.startAnimation(anim);}/*** 根据图⽚设置bitmap* @param color* @return*/public Bitmap createHeart(int color) {if (sHeart == null) {sHeart = BitmapFactory.decodeResource(getResources(), mHeartResId);}if (sHeartBorder == null) {sHeartBorder = BitmapFactory.decodeResource(getResources(), mHeartBorderResId);}Bitmap heart = sHeart;Bitmap heartBorder = sHeartBorder;Bitmap bm = createBitmapSafely(heartBorder.getWidth(), heartBorder.getHeight());if (bm == null) {return null;}Canvas canvas = sCanvas;canvas.setBitmap(bm);Paint p = sPaint;canvas.drawBitmap(heartBorder, 0, 0, p);p.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP));float dx = (heartBorder.getWidth() - heart.getWidth()) / 2f;float dy = (heartBorder.getHeight() - heart.getHeight()) / 2f;canvas.drawBitmap(heart, dx, dy, p);p.setColorFilter(null);canvas.setBitmap(null);return bm;}如何创建⼀个pathpublic Path createPath(AtomicInteger counter, View view, int factor) {Random r = mRandom;int x = r.nextInt(mConfig.xRand);int x2 = r.nextInt(mConfig.xRand);int y = view.getHeight() - mConfig.initY;int y2 = counter.intValue() * 15 + mConfig.animLength * factor + r.nextInt(mConfig.animLengthRand); factor = y2 / mConfig.bezierFactor;//随机xPointint xPointFactor = mRandom.nextInt(mConfig.xPointFactor);x = xPointFactor + x;x2 = xPointFactor + x2;int y3 = y - y2;y2 = y - y2 / 2;Path p = new Path();p.moveTo(mConfig.initX, y);p.cubicTo(mConfig.initX, y - factor, x, y2 + factor, x, y2);p.moveTo(x, y2);p.cubicTo(x, y2 - factor, x2, y3 + factor, x2, y3);return p;}Activity中代码:下⾯给⼤家分享⼀个源码:总结以上所述是⼩编给⼤家介绍的Android⾼级UI特效仿直播点赞动画效果,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
objectanimator 原理ObjectAnimator 是 Android 提供的一个用于实现属性动画的类。
它可以通过改变目标对象的属性值来实现动画效果。
在理解 ObjectAnimator 的原理之前,我们先来了解一下属性动画的基本概念。
属性动画是指可以改变目标对象的属性值,并在一定时间内平滑地过渡到目标值的动画效果。
例如,我们可以使用属性动画来改变一个 View 的透明度、位置、旋转角度等。
属性动画在 Android 中是通过不断改变目标对象的属性值,然后在每个时间间隔内重新绘制界面,从而实现流畅的动画效果。
ObjectAnimator 具体实现属性动画的原理如下:1. 创建 ObjectAnimator 对象我们需要创建一个 ObjectAnimator 对象,并指定要改变的目标对象、属性名称以及目标值。
例如,我们可以创建一个 ObjectAnimator 对象来改变一个 View 的透明度属性:```javaObjectAnimator animator = ObjectAnimator.ofFloat(view, "alpha", 0f, 1f);```这里的 view 是目标对象,"alpha" 是要改变的属性名称,0f 和 1f 分别是透明度的起始值和目标值。
2. 属性动画框架工作原理ObjectAnimator 基于属性动画框架工作。
在动画开始时,框架会调用目标对象的 set 方法来设置属性的起始值。
然后,在每个时间间隔内,框架会根据动画的进度计算出当前属性值,并调用目标对象的 set 方法来设置这个属性的值。
最后,当动画结束时,框架会调用目标对象的 set 方法来设置属性的目标值。
3. 计算属性值的过程在每个时间间隔内,属性动画框架会根据动画的进度(0 到 1 的浮点值)计算出当前属性的值。
计算过程使用了插值器(Interpolator)和估值器(TypeEvaluator)。
Android自定义属性,attr format取值类型分类:android 2011-11-21 16:10 131人阅读评论(0) 收藏举报1. reference:参考某一资源ID。
(1)属性定义:<declare-styleable name = "名称"><attr name = "background" format = "reference" /> </declare-styleable>(2)属性使用:<ImageViewandroid:layout_width = "42dip"android:layout_height = "42dip"android:background = "@drawable/图片ID"/>2. color:颜色值。
(1)属性定义:<declare-styleable name = "名称"><attr name = "textColor" format = "color" /></declare-styleable>(2)属性使用:<TextViewandroid:layout_width = "42dip"android:layout_height = "42dip"android:textColor = "#00FF00"/>3. boolean:布尔值。
(1)属性定义:<declare-styleable name = "名称"><attr name = "focusable" format = "boolean" /></declare-styleable>(2)属性使用:<Buttonandroid:layout_width = "42dip"android:layout_height = "42dip"android:focusable = "true"/>4. dimension:尺寸值。
Android8.1系统修改开机logo和开机动画修改开机logo1. 在device\qcom\common\display\logo下找到logo_gen.py2. 如果没有安装Python,先执⾏以下命令 sudo apt-get install python-imaging3. 将需要制作logo的图⽚拷贝到logo_gen.py的同级⽬录需要注意的是图⽚分辨率应该与设备屏分辨率⼀致4. 运⾏如下命令⽣成splash.img,执⾏ python ./logo_gen.py logo.png5. 连上设备运⾏如下命令adb reboot bootloaderfastboot flash splash splash.imgfastboot reboot6. 检查logo是否替换成功修改开机动画1. 开机动画和关机动画的存储路径为:vendor\qcom\proprietary\qrdplus\Extension\apps\BootAnimation;2. 将制作好的动画替换路径下的zip包(bootanimation.zip 和shutdownanimation.zip)3. 需要将动画路径拷贝到/system/media⽂件⽬录下:路径:拷贝⽂件添加这⼀⾏:PRODUCT_COPY_FILES +=vendor/qcom/proprietary/qrdplus/Extension/apps/BootAnimation/bootanimation.zip:system/media/bootanimation.zip4. 修改之后编译系统,system即可;编译:source build/envsetup.shlunchm cleanm -j16编译成功之后查看⽣成的⽂件system下⾯有以下zip⽂件:实质上就是将⽂件拷贝到这个路径下是关键;之前有将zip包⽤adb命令推到设备的/system/media路径下,测试开机动画是ok的,所以拷贝⽂件使其编译到system中是关键;5. 刷系统检查修改是否成功刷系统:adb reboot bootloaderfastboot flash system system.imgfastboot -wfastboot reboot。
HTML里animation用法一、概述在H TM L中,我们可以利用a ni ma ti on动画效果为网页添加生动活泼的元素。
an im at ion属性是CS S3中的一项重要特性,通过它可以实现各种各样的动画效果,如渐变、旋转、平移等。
本文将介绍H TML中a n im at io n的用法以及一些常用的a nim a ti on属性。
二、基本用法1.在元素上添加动画效果要为一个元素添加动画效果,需要使用`a n im at io n`属性。
其语法如下:a n im at io n:动画名称持续时间延迟时间迭代次数动画播放方式;通过上述语法,我们可以指定动画的名称、持续时间、延迟时间、迭代次数和动画播放方式。
例如,要实现一个名称为"m yA ni ma ti o n",持续时间为2秒,延迟时间为1秒的动画效果,代码如下:a n im at io n:my An ima t io n2s1s;2.定义关键帧在C SS中,关键帧(K ey fr am es)是用于定义动画序列的关键点。
关键帧由一系列百分比值(0%到100%)组成,在这些位置上可以定义元素的样式。
我们可以通过`@k ey fr am es`规则来定义关键帧序列,如下所示:@k ey fr am es my An ima t i o n{0%{/*初始状态*/}50%{/*中间状态*/}100%{/*结束状态*/}}通过上述代码,我们定义了一个名为"myA n im at io n"的关键帧序列,包含了初始状态、中间状态和结束状态。
在这些状态下,我们可以指定元素的样式,从而实现动画效果。
三、常用a nimatio n属性1.a n i m a t i o n n a m e-描述:指定要使用的关键帧的名称。
-值:关键帧的名称或多个关键帧的名称组合,用逗号分隔。
-示例:`a ni ma ti on-na me:m yA ni ma tio n;`2.a n i m a t i o n d u r a t i o n-描述:指定动画的持续时间。
属性动画系统是一个健壮的框架,它几乎可以允许把任何对象变成动画。
可以根据时间的推移来改变任何对象的属性来定义一个动画,而不用关心该对象是否要绘制在屏幕上。
属性动画是在指定的时间长度上改变一个属性(对象中的一个成员字段)的值。
要让某些对象变成动画,就要给该对象指定想要的动画属性,如果对象在屏幕上的位置、动画的停留时间以及动画之间的值等。
属性动画系统可以定义以下动画特性:1.持续时间(Duration):指定动画的持续时间。
默认长度是300毫秒。
2.时间插值(Time interpolation):这个值能够做为计算当前动画运行时间的函数的属性值来指定,它决定动画的变化频率。
3.重复次数和行为(Repeat count and behavior)这个属性能够指定在动画结束时是否重新播放动画,以及重复播放的次数。
还能够指定动画是否能够反向回播,如果设置了反向回播,那么动画就会先向前再向后,重复播放,直到达到播放次数。
4.动画集合(Animator sets):你能够把动画组织到一个逻辑集合中,然后或者同时、或者顺序的、或者延迟播放它们。
5.帧刷新延迟(Frame refresh delay):你能够指定动画帧的刷新频率。
默认是每10秒中刷新一次,但是应用程序最终的刷新帧的速度依赖与系统的繁忙程度以及系统能够提供的底层定时器的反应速度。
属性动画是如何工作的首先,让我们用一个简单的例子来看一下动画的工作方式。
图1绘制了一个假想的动画对象,它用x属性来表示其在屏幕上的水平位置。
动画的持续时间被设置为40毫秒,并且移动的距离是40个像素。
每10毫秒,是默认的帧刷新频率,即每10毫秒对象水平移动10个像素。
在40毫秒结束时,动画停止,并且动画要停留在水平40像素点的位置上。
这是一个线性插值的动画示例,意味着动画匀速运动。
图1.线性动画示例还可以指定非线性差值的动画。
图2假设了一个加速开始、减速结束的动画对象,该对象依然在40毫秒内移动了40个像素,但是非线性的。
在开始的时候,这个动画加速运动到一半的位置,然后开始减速运动直到动画结束。
如图2所示,对象运行的距离在开始和结束阶段要比中间部分短。
图2.非线性动画的示例接下来让我们更详细的了解属性动画系统的重要组件是如何计算上图所示动画。
图3绘制了主类和其他类是如何一起工作的。
图3.动画的计算方式ValueAnimator对象保持着动画的时间轨迹,如动画的运行时间,以及动画属性的当前值。
ValueAnimator类封装了一个TimeInterpolator类,这个类定义了动画的差值,和一个TypeEvaluator类,这个类定义动画属性值的计算方式。
例如,在图2中TimeInterpolator对象使用AccelerateDecelerateInterpolator定义,TypeEvaluator使用了IntEvaluator定义。
要启动一个动画,就要创建一个ValueAnimator对象,并且要给该对象设置想要的动画的属性的开始和结束值,以及动画的持续时间。
在调用start()方法开始动画的时候,整个动画期间,V alueAnimator对象会根据动画的持续时间和已经执行的时间,在0和1之间,计算一个elapsed fraction(过去系数)。
这个系数代表了动画已经完成的百分比,0意味着0%、1意味着100%。
例如,图1中,在t = 10毫秒处的过去系数是0.25,因为总的持续时间是t = 40毫秒。
当ValueAnimator对象完成过去系数的计算时,它会调用当前设置的TimeInterpolator对象,来计算一个差值系数(interpolated fraction)。
差值系数(interpolated fraction)把过去系数(elapsed fraction)映射到一个新的考虑设置时间差值的系数。
例如,在图2中,因为动画是慢慢的加速,因此在t=10毫秒时,差值系数大约是0.15,它比过去系数(elapsed fraction)0.25要小。
在图1中,差值系数(interpolated fraction)与过去系数(elapsed fraction)始终相同。
在计算差值系数(interpolated fraction)时,ValueAnimator对象会调用相应的TypeEvaluator 对象,基于差值系数、动画的开始值、结束值,来计算动画的属性值。
例如,在图2中,在t = 10毫秒处,差值系数是0.15,因此在此时的属性值应该是0.15*(40 – 0)= 6。
在API Demos示例工程中的com.example.android.apis.animation包,提供了很多如何使用属性动画系统的例子。
(/tools/samples/index.html)属性动画与视图动画的差异视图动画提供了只让View对象具有动画效果的能力,因此想要非View对象具有动画效果,就得自己实现动画效果的代码。
事实上,视图动画系统也受到了限制,它只会把很少的View 对象的特征暴露给动画效果,如例如,View对象的缩放和旋转,但是没有背景色,等等。
视图动画的另一个缺点是,它仅能够在绘制View对象时被修改,并且不是实际的View对象本身。
例如,如果要让一个按钮,以动画的形式穿越屏幕,按钮正确的绘制了,但是点击按钮的实际位置却不会改变,因此必须自己来实现这种处理逻辑。
在属性动画系统中,这些现在被彻底删除,并且能够让任何对象的任何属性具有动画效果(View对象和非View对象),并且能够实际修改对象自身。
属性动画在动画执行方面也更加健壮。
在高层次上,可以给想要动画效果的属性分配动画执行器,如颜色、位置、尺寸以及能够定义的动画特性(如插值和多个动画的同步等)。
但是,视图动画系统需要较少的创建时间和编写较少的代码。
如果视图动画能够满足需求,或者既存的代码已经做了想要完成的动画效果,就不需要使用属性动画效果了。
针对不同的情况来选择使用这两种不同的动画系统。
API概要在android.animation包中能够找大多数属性动画系统的API。
因为视图动画系统已经在android.view.animation包中定义了很多插值,因此在属性动画系统中也能够使用这些插值。
下列表格中介绍了属性动画系统的主要组件。
Animator类提供了创建动画的基本架构。
通常不会直接使用这个类,因为它只提供了基本功能,因此要完全的支持动画值就必须扩展这个类,下表列出了Animator的子类。
表1.Animators评价器会告诉属性动画系统如何计算给定属性的值。
它们利用Animator类提供时序数据:动画的开始和结束值,以及基于这些数据计算得来的属性动画值。
属性动画系统提供了下列评价器:时间差值给动画中的时间函数定义了一个用于计算的具体的值。
例如,一个线性过渡的动画,意味着整个动画期间动画都会均匀的移动,或者例如加速开始,减少结束的非线性动画。
表3介绍了被包含在android.view.animation包中差值。
如果那里没有适合你需要的差值,你可以实现TimeInterpolator接口,创建自己的差值。
如何编写自定义差值的更多信息,请看“使用差值”。
用ValueAnimator来制作动画ValueAnimator类通过设定动画过程中的int、float或颜色值,来指定动画播放期间的某些类型的动画值。
通过V alueAnimator类的一个工厂方法来获取一个ValueAnimator对象:ofInt()、ofFloat()、ofObject()。
例如:ValueAnimator animation = ValueAnimator.ofFloat(0f, 1f);animation.setDuration(1000);animation.start();在这段代码中,当start()方法开始执行时,ValueAnimator对象会在1000毫秒的动画期间内,在0和1之间开始计算动画的值。
还可以通过下面的做法来指定自定义的动画类型:ValueAnimator animation = ValueAnimator.ofObject(new MyTypeEvaluator(), startPropertyValue, endPropertyValue);animation.setDuration(1000);animation.start();在这段代码中,在start()方法开始执行的时候,ValueAnimator对象会在1000毫秒的动画期间内,使用由MyTypeEvaluator对象提供的逻辑,在startPropertyValue和endPropertyValue之间,开始计算动画的值。
但是,在前一个代码片段中,不会对一个对象形成实际的影响,因为ValueAnimator对象没有直接在对象或属性上执行操作。
这么做的最大可能是用这些计算值来修改那些想要动画效果的对象。
通过定义ValueAnimator类中响应的事件监听器,来处理动画执行期间的重要事件,如帧更新等。
当监听器执行的时候,就能够通过调用getAnimateValue()方法获得指定帧的刷新的计算值。
有关监听器的更多信息,请看“动画监听器”。
用ObjectAnimator来制作动画ObjectAnimator类是ValueAnimator类的一个子类,并且把时序引擎和ValueAnimator对象的计算值组合到一起,让目标对象的命名属性具备动画能力。
这样使得让任意对象具有动画效果变的更加容易,如不在需要实现ValueAnimator.AnimatorUpdateListener接口,因为被动画的属性会自动的更新。
实例化一个ObjectAnimator对象与实例化一个ValueAnimator对象类似,但是,它还需要跟动画期间的参数一起,指定动画对象和对象动画属性(用一个字符串)的名字:ObjectAnimator anim = ObjectAnimator.ofFloat(foo, "alpha", 0f, 1f); anim.setDuration(1000);anim.start();要正确的更新ObjectAnimator对象的属性,必须做以下事情:1.动画效果的属性必须有一个set<propertyName>格式的设置器方法。
因为在动画处理期间,ObjectAnimator对象会自动的更新对应的动画效果属性,所以它必须使用这个设置器方法来访问对应的属性。
例如,如果属性名是foo,那么就需要有一个setFoo()方法,如果这个设置器方法不存在,你有三种选择:A.如果你权利这么做,就要在这个类中添加设置器方法;B.使用一个你有权改变的包装器类,并且这个包装器能够用一个有效的设置方法来接收动画值,而且还要能够把这个值转发给初始对象。