属性动画基础之ValueAnimator
概述
屬性動(dòng)畫是谷歌在android3.0(API level 11)時(shí)候給我們帶來了屬性動(dòng)畫,真正意義上帶來了”動(dòng)畫“,以前的幀動(dòng)畫也就4中效果的組合(旋轉(zhuǎn)、淡入淡出、放大縮小、平移),而且只是表面的動(dòng)畫,最經(jīng)典的比如,把一個(gè)button按鈕移動(dòng)到另一個(gè)位置,然后去點(diǎn)擊,一點(diǎn)反應(yīng)都沒有,但是點(diǎn)擊原來空白位置仍然有點(diǎn)擊事件觸發(fā)前一篇博客就提到這個(gè)問題(傳動(dòng)動(dòng)畫)。而屬性動(dòng)畫徹徹底底解決這個(gè)問題。屬性動(dòng)畫分為valueAnimator和ObjectAnimator兩大類,這里簡(jiǎn)單總結(jié)下valueAnimator,畢竟基礎(chǔ)不牢地動(dòng)山搖。
使用
- 創(chuàng)建實(shí)例
可以使用ofInt,ofFloat,ofArgb,復(fù)雜的有還有倆個(gè)ofObject,ofPropertyValuesHolder?
- 添加監(jiān)聽?
主要分為倆大類?
(1)addUpdateListener監(jiān)聽值的變化通過getAnimatedValue()就可以獲取當(dāng)前變化的值
(2)監(jiān)聽動(dòng)畫狀態(tài)變化?
主要分為start,end,cancel,repeat
有時(shí)候我們僅僅需要對(duì)其中一個(gè)狀態(tài)進(jìn)行監(jiān)聽,這時(shí)可以使用AnimatorListenerAdapter()
//增加指定的監(jiān)聽器valueAnimator.addListener(new AnimatorListenerAdapter() {@Overridepublic void onAnimationEnd(Animator animation) {Log.d("xsf", "animation end");}ofObject
ofInt和ofFloat傳遞整形和浮點(diǎn)型數(shù)值,ofArgb傳遞顏色數(shù)值,若是有自定義類型則可以使用ofObjetc
public static ValueAnimator ofObject(TypeEvaluator evaluator, Object... values);這里需要自定義的Evaluator和Object類型的可變長(zhǎng)參數(shù)。由于object是自己定義的,因此從當(dāng)前動(dòng)畫執(zhí)行進(jìn)度到下次對(duì)應(yīng)值的過稱系統(tǒng)并不會(huì)知道,因此需要實(shí)現(xiàn)TypeEvaluator接口demo中valueOfObjActivity有個(gè)小例子
ofPropertyValuesHolder()
通??梢杂脕硗瑫r(shí)變化一個(gè)View的多個(gè)屬性,可以使用這個(gè)方法,這個(gè)目前沒有深入研究,基本用法如下
PropertyValuesHolder valuesHolder = PropertyValuesHolder.ofFloat('translationX', 0.0f, 300.0f); PropertyValuesHolder valuesHolder1 = PropertyValuesHolder.ofFloat('scaleX', 1.0f, 1.5f); PropertyValuesHolder valuesHolder2 = PropertyValuesHolder.ofFloat('rotationX', 0.0f, 90.0f, 0.0F); PropertyValuesHolder valuesHolder3 = PropertyValuesHolder.ofFloat('alpha', 1.0f, 0.3f, 1.0F);ObjectAnimator objectAnimator = ObjectAnimator.ofPropertyValuesHolder(imageView, valuesHolder, valuesHolder1, valuesHolder2, valuesHolder3);objectAnimator.setDuration(2000).start()可以參考?
http://www.cnblogs.com/mengdd/archive/2013/09/06/3305698.html?
http://www.admin10000.com/document/4926.html
插值器
可以參考我以前的一篇博文http://blog.csdn.net/xsf50717/article/details/50472341
其他
- setDuration()、getAnimatedValue()、start()
-
setRepeatCount()、setRepeatMode()、cancel()?
其中setRepeatCount(int value)用于設(shè)置動(dòng)畫循環(huán)次數(shù),設(shè)置為0表示不循環(huán),設(shè)置為ValueAnimation.INFINITE表示無限循環(huán)。 setRepeatMode(int value)用于設(shè)置循環(huán)模式,取值為ValueAnimation.RESTART時(shí),表示正序重新開始,當(dāng)取值為ValueAnimation.REVERSE表示倒序重新開始。 -
setStartDelay(long startDelay)、clone()?
第一個(gè)非常容易理解,就是設(shè)置多久后動(dòng)畫才開始。clone表示復(fù)制出來一個(gè)完全一樣的新的ValueAnimator實(shí)例出來
例子
輸入一個(gè)數(shù)字,然后從0到數(shù)字逐漸增大的示例?
demo傳送門
轉(zhuǎn)載:http://blog.csdn.net/xsf50717/article/details/51153480
總結(jié)
以上是生活随笔為你收集整理的属性动画基础之ValueAnimator的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做计算机的小卫士教案,小卫士在行动小班教
- 下一篇: 有高级计算机证可以入户东莞吗,本科有学位