日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > > 充電吧
[導(dǎo)讀]1 背景不能只分析源碼呀,分析的同時也要整理歸納基礎(chǔ)知識,剛好有人微博私信讓全面說說Android的動畫,所以今天來一發(fā)Android應(yīng)用的各種Animation大集合。英文厲害的請直接移步參考And

1 背景

不能只分析源碼呀,分析的同時也要整理歸納基礎(chǔ)知識,剛好有人微博私信讓全面說說Android的動畫,所以今天來一發(fā)Android應(yīng)用的各種Animation大集合。英文厲害的請直接移步參考Android Developer。

Android系統(tǒng)提供了很多豐富的API去實現(xiàn)UI的2D與3D動畫,最主要的劃分可以分為如下幾類:

View Animation:?視圖動畫在古老的Android版本系統(tǒng)中就已經(jīng)提供了,只能被用來設(shè)置View的動畫。

Drawable Animation:?這種動畫(也叫Frame動畫、幀動畫)其實可以劃分到視圖動畫的類別,專門用來一個一個的顯示Drawable的resources,就像放幻燈片一樣。

Property Animation:?屬性動畫只對Android 3.0(API 11)以上版本的Android系統(tǒng)才有效,這種動畫可以設(shè)置給任何Object,包括那些還沒有渲染到屏幕上的對象。這種動畫是可擴展的,可以讓你自定義任何類型和屬性的動畫。

可以看見,當前應(yīng)用程序開發(fā)涉及的主要動畫也就這三大類,我們接下來以類別為基礎(chǔ)來慢慢展開說明。

2 View Animation(視圖動畫)使用詳解 2-1 視圖動畫概述

視圖動畫,也叫Tween(補間)動畫可以在一個視圖容器內(nèi)執(zhí)行一系列簡單變換(位置、大小、旋轉(zhuǎn)、透明度)。譬如,如果你有一個TextView對象,您可以移動、旋轉(zhuǎn)、縮放、透明度設(shè)置其文本,當然,如果它有一個背景圖像,背景圖像會隨著文本變化。

補間動畫通過XML或Android代碼定義,建議使用XML文件定義,因為它更具可讀性、可重用性。

如下是視圖動畫相關(guān)的類繼承關(guān)系:

AlphaAnimation?放置在res/anim/目錄下 漸變透明度動畫效果 RotateAnimation?放置在res/anim/目錄下 畫面轉(zhuǎn)移旋轉(zhuǎn)動畫效果 ScaleAnimation?放置在res/anim/目錄下 漸變尺寸伸縮動畫效果 TranslateAnimation?放置在res/anim/目錄下 畫面轉(zhuǎn)換位置移動動畫效果 AnimationSet?放置在res/anim/目錄下 一個持有其它動畫元素alpha、scale、translate、rotate或者其它set元素的容器

通過上圖和上表可以直觀的看出來補間動畫的關(guān)系及種類了吧,接下來我們就詳細一個一個的介紹一下各種補間動畫。

2-2 視圖動畫詳細說明

可以看出來Animation抽象類是所有補間動畫類的基類,所以基類會提供一些通用的動畫屬性方法,如下我們就來詳細看看這些屬性

2-2-1 Animation屬性詳解android:detachWallpaper setDetachWallpaper(boolean) 是否在壁紙上運行 android:duration setDuration(long) 動畫持續(xù)時間,毫秒為單位 android:fillAfter setFillAfter(boolean) 控件動畫結(jié)束時是否保持動畫最后的狀態(tài) android:fillBefore setFillBefore(boolean) 控件動畫結(jié)束時是否還原到開始動畫前的狀態(tài) android:fillEnabled setFillEnabled(boolean) 與android:fillBefore效果相同 android:interpolator setInterpolator(Interpolator) 設(shè)定插值器(指定的動畫效果,譬如回彈等) android:repeatCount setRepeatCount(int) 重復(fù)次數(shù) android:repeatMode setRepeatMode(int) 重復(fù)類型有兩個值,reverse表示倒序回放,restart表示從頭播放 android:startOffset setStartOffset(long) 調(diào)用start函數(shù)之后等待開始運行的時間,單位為毫秒 android:zAdjustment setZAdjustment(int) 表示被設(shè)置動畫的內(nèi)容運行時在Z軸上的位置(top/bottom/normal),默認為normal


也就是說,無論我們補間動畫的哪一種都已經(jīng)具備了這種屬性,也都可以設(shè)置使用這些屬性中的一個或多個。

那接下來我們就看看每種補間動畫特有的一些屬性說明吧。

2-2-2 Alpha屬性詳解android:fromAlpha AlphaAnimation(float fromAlpha, …) 動畫開始的透明度(0.0到1.0,0.0是全透明,1.0是不透明) android:toAlpha AlphaAnimation(…, float toAlpha) 動畫結(jié)束的透明度,同上 2-2-3 Rotate屬性詳解android:fromDegrees RotateAnimation(float fromDegrees, …) 旋轉(zhuǎn)開始角度,正代表順時針度數(shù),負代表逆時針度數(shù) android:toDegrees RotateAnimation(…, float toDegrees, …) 旋轉(zhuǎn)結(jié)束角度,正代表順時針度數(shù),負代表逆時針度數(shù) android:pivotX RotateAnimation(…, float pivotX, …) 縮放起點X坐標(數(shù)值、百分數(shù)、百分數(shù)p,譬如50表示以當前View左上角坐標加50px為初始點、50%表示以當前View的左上角加上當前View寬高的50%做為初始點、50%p表示以當前View的左上角加上父控件寬高的50%做為初始點) android:pivotY RotateAnimation(…, float pivotY) 縮放起點Y坐標,同上規(guī)律 2-2-4 Scale屬性詳解android:fromXScale ScaleAnimation(float fromX, …) 初始X軸縮放比例,1.0表示無變化 android:toXScale ScaleAnimation(…, float toX, …) 結(jié)束X軸縮放比例 android:fromYScale ScaleAnimation(…, float fromY, …) 初始Y軸縮放比例 android:toYScale ScaleAnimation(…, float toY, …) 結(jié)束Y軸縮放比例 android:pivotX ScaleAnimation(…, float pivotX, …) 縮放起點X軸坐標(數(shù)值、百分數(shù)、百分數(shù)p,譬如50表示以當前View左上角坐標加50px為初始點、50%表示以當前View的左上角加上當前View寬高的50%做為初始點、50%p表示以當前View的左上角加上父控件寬高的50%做為初始點) android:pivotY ScaleAnimation(…, float pivotY) 縮放起點Y軸坐標,同上規(guī)律 2-2-5 Translate屬性詳解android:fromXDelta TranslateAnimation(float fromXDelta, …) 起始點X軸坐標(數(shù)值、百分數(shù)、百分數(shù)p,譬如50表示以當前View左上角坐標加50px為初始點、50%表示以當前View的左上角加上當前View寬高的50%做為初始點、50%p表示以當前View的左上角加上父控件寬高的50%做為初始點) android:fromYDelta TranslateAnimation(…, float fromYDelta, …) 起始點Y軸從標,同上規(guī)律 android:toXDelta TranslateAnimation(…, float toXDelta, …) 結(jié)束點X軸坐標,同上規(guī)律 android:toYDelta TranslateAnimation(…, float toYDelta) 結(jié)束點Y軸坐標,同上規(guī)律 2-2-6 AnimationSet詳解

AnimationSet繼承自Animation,是上面四種的組合容器管理類,沒有自己特有的屬性,他的屬性繼承自Animation,所以特別注意,當我們對set標簽使用Animation的屬性時會對該標簽下的所有子控件都產(chǎn)生影響。

2-3 視圖動畫使用方法

通過上面對于動畫的屬性介紹之后我們來看看在Android中這些動畫如何使用(PS:這里直接演示xml方式,至于java方式太簡單了就不說了),如下

上面就是一個標準的使用我們定義的補間動畫的模板。至于補間動畫的使用,Animation還有如下一些比較實用的方法介紹:

reset() 重置Animation的初始化 cancel() 取消Animation動畫 start() 開始Animation動畫 setAnimationListener(AnimationListener listener) 給當前Animation設(shè)置動畫監(jiān)聽 hasStarted() 判斷當前Animation是否開始 hasEnded() 判斷當前Animation是否結(jié)束


既然補間動畫只能給View使用,那就來看看View中和動畫相關(guān)的幾個常用方法吧,如下:

...
ImageView?spaceshipImage?=?(ImageView)?findViewById(R.id.spaceshipImage);
Animation?hyperspaceJumpAnimation?=?AnimationUtils.loadAnimation(this,?R.anim.hyperspace_jump);
spaceshipImage.startAnimation(hyperspaceJumpAnimation);

startAnimation(Animation animation) 對當前View開始設(shè)置的Animation動畫 clearAnimation() 取消當View在執(zhí)行的Animation動畫

到此整個Android的補間動畫常用詳細屬性及方法全部介紹完畢,如有特殊的屬性需求可以訪問Android Developer查閱即可。如下我們就來個綜合大演練。

2-4 視圖動畫注意事項

關(guān)于視圖動畫(補間動畫)的例子我就不介紹了,網(wǎng)上簡直多的都泛濫了。只是強調(diào)在使用補間動畫時注意如下一點即可:

特別特別注意:補間動畫執(zhí)行之后并未改變View的真實布局屬性值。切記這一點,譬如我們在Activity中有一個Button在屏幕上方,我們設(shè)置了平移動畫移動到屏幕下方然后保持動畫最后執(zhí)行狀態(tài)呆在屏幕下方,這時如果點擊屏幕下方動畫執(zhí)行之后的Button是沒有任何反應(yīng)的,而點擊原來屏幕上方?jīng)]有Button的地方卻響應(yīng)的是點擊Button的事件。

2-5 視圖動畫Interpolator插值器詳解 2-5-1 插值器簡介

介紹補間動畫插值器之前我們先來看一幅圖,如下:

可以看見其實各種插值器都是實現(xiàn)了Interpolator接口而已,同時可以看見系統(tǒng)提供了許多已經(jīng)實現(xiàn)OK的插值器,具體如下:

AccelerateDecelerateInterpolator @android:anim/accelerate_decelerate_interpolator 動畫始末速率較慢,中間加速 AccelerateInterpolator @android:anim/accelerate_interpolator 動畫開始速率較慢,之后慢慢加速 AnticipateInterpolator @android:anim/anticipate_interpolator 開始的時候從后向前甩 AnticipateOvershootInterpolator @android:anim/anticipate_overshoot_interpolator 類似上面AnticipateInterpolator BounceInterpolator @android:anim/bounce_interpolator 動畫結(jié)束時彈起 CycleInterpolator @android:anim/cycle_interpolator 循環(huán)播放速率改變?yōu)檎仪€ DecelerateInterpolator @android:anim/decelerate_interpolator 動畫開始快然后慢 LinearInterpolator @android:anim/linear_interpolator 動畫勻速改變 OvershootInterpolator @android:anim/overshoot_interpolator 向前彈出一定值之后回到原來位置 PathInterpolator ? 新增,定義路徑坐標后按照路徑坐標來跑。

如上就是系統(tǒng)提供的一些插值器,下面我們來看看怎么使用他們。

2-5-2 插值器使用方法

插值器的使用比較簡單,如下:

...


2-5-3 插值器的自定義

有時候你會發(fā)現(xiàn)系統(tǒng)提供的插值器不夠用,可能就像View一樣需要自定義。所以接下來我們來看看插值器的自定義,關(guān)于插值器的自定義分為兩種實現(xiàn)方式,xml自定義實現(xiàn)(其實就是對現(xiàn)有的插值器的一些屬性修改)或者java代碼實現(xiàn)方式。如下我們來說說。

先看看XML自定義插值器的步驟:

在res/anim/目錄下創(chuàng)建filename.xml文件。修改你準備自定義的插值器。


在你的補間動畫文件中引用該文件即可。

可以看見上面第二步修改的是現(xiàn)有插值器的一些屬性,但是有些插值器卻不具備修改屬性,具體如下:

無可自定義的attribute。

android:factor 浮點值,加速速率(默認值為1)。

android:tension 浮點值,起始點后拉的張力數(shù)(默認值為2)。

android:tension 浮點值,起始點后拉的張力數(shù)(默認值為2)。?
android:extraTension 浮點值,拉力的倍數(shù)(默認值為1.5)。

無可自定義的attribute。

android:cycles 整形,循環(huán)的個數(shù)(默認為1)。

android:factor 浮點值,減速的速率(默認為1)。

無可自定義的attribute。

android:tension 浮點值,超出終點后的張力(默認為2)。

再來看看Java自定義插值器的(Java自定義插值器其實是xml自定義的升級,也就是說如果我們修改xml的屬性還不能滿足需求,那就可以選擇通過Java來實現(xiàn))方式。

可以看見上面所有的Interpolator都實現(xiàn)了Interpolator接口,而Interpolator接口又繼承自TimeInterpolator,TimeInterpolator接口定義了一個float getInterpolation(float input);方法,這個方法是由系統(tǒng)調(diào)用的,其中的參數(shù)input代表動畫的時間,在0和1之間,也就是開始和結(jié)束之間。

如下就是一個動畫始末速率較慢、中間加速的AccelerateDecelerateInterpolator插值器:

public?class?AccelerateDecelerateInterpolator?extends?BaseInterpolator
????????implements?NativeInterpolatorFactory?{
????......
????public?float?getInterpolation(float?input)?{
????????return?(float)(Math.cos((input?+?1)?*?Math.PI)?/?2.0f)?+?0.5f;
????}
????......
}


到此整個補間動畫與補間動畫的插值器都分析完畢了,接下來看下別的動畫。

【工匠若水?http://blog.csdn.net/yanbober?轉(zhuǎn)載請注明出處。點我開始Android技術(shù)交流】

3 Drawable Animation(Drawable動畫)使用詳解 3-1 Drawable動畫概述

Drawable動畫其實就是Frame動畫(幀動畫),它允許你實現(xiàn)像播放幻燈片一樣的效果,這種動畫的實質(zhì)其實是Drawable,所以這種動畫的XML定義方式文件一般放在res/drawable/目錄下。具體關(guān)于幀動畫的xml使用方式翻墻點擊我查看,java方式翻墻點擊我查看。

如下圖就是幀動畫的源碼文件:

可以看見實際的真實父類就是Drawable。

3-2 Drawable動畫詳細說明

我們依舊可以使用xml或者java方式實現(xiàn)幀動畫。但是依舊推薦使用xml,具體如下:

?必須是根節(jié)點,包含一個或者多個元素,屬性有:

android:oneshot?true代表只執(zhí)行一次,false循環(huán)執(zhí)行。?類似一幀的動畫資源。

?animation-list的子項,包含屬性如下:

android:drawable?一個frame的Drawable資源。android:duration?一個frame顯示多長時間。 3-3 Drawable動畫實例演示

關(guān)于幀動畫相對來說比較簡單,這里給出一個常規(guī)使用框架,如下:



ImageView?rocketImage?=?(ImageView)?findViewById(R.id.rocket_image);
rocketImage.setBackgroundResource(R.drawable.rocket_thrust);

rocketAnimation?=?(AnimationDrawable)?rocketImage.getBackground();
rocketAnimation.start();

特別注意,AnimationDrawable的start()方法不能在Activity的onCreate方法中調(diào)運,因為AnimationDrawable還未完全附著到window上,所以最好的調(diào)運時機是onWindowFocusChanged()方法中。

至此幀動畫也就說明完成了。讓我們接下來進入Android更牛叉的動畫類型。

4 Property Animation(屬性動畫)使用詳解

在使用屬性動畫之前先來看幾個常用的View屬性成員:

translationX,translationY:控制View的位置,值是相對于View容器左上角坐標的偏移。rotationX,rotationY:控制相對于軸心旋轉(zhuǎn)。x,y:控制View在容器中的位置,即左上角坐標加上translationX和translationY的值。alpha:控制View對象的alpha透明度值。

這幾個常用的屬性相信大家都很熟悉,接下來的屬性動畫我們就從這里展開。

4-1 屬性動畫概述

Android 3.0以后引入了屬性動畫,屬性動畫可以輕而易舉的實現(xiàn)許多View動畫做不到的事,上面也看見了,View動畫無非也就做那幾種事情,別的也搞不定,而屬性動畫就可以的,譬如3D旋轉(zhuǎn)一張圖片。其實說白了,你記住一點就行,屬性動畫實現(xiàn)原理就是修改控件的屬性值實現(xiàn)的動畫。

具體先看下類關(guān)系:


/**
?*?This?is?the?superclass?for?classes?which?provide?basic?support?for?animations?which?can?be
?*?started,?ended,?and?have?AnimatorListeners?added?to?them.
?*/
public?abstract?class?Animator?implements?Cloneable?{
????......
}

所有的屬性動畫的抽象基類就是他。我們看下他的實現(xiàn)子類:?
?
其實可以看見,屬性動畫的實現(xiàn)有7個類(PS,之所以類繼承關(guān)系列表會出來那么多是因為我下載了所有版本的SDK,你只用關(guān)注我紅點標注的就行,妹的,ubuntu下圖片處理工具怎么都這么難用),進去粗略分析可以發(fā)現(xiàn),好幾個是hide的類,而其他可用的類繼承關(guān)系又如下:

ValueAnimator?放置在res/animator/目錄下 在一個特定的時間里執(zhí)行一個動畫 TimeAnimator 不支持/點我查看原因 時序監(jiān)聽回調(diào)工具 ObjectAnimator?放置在res/animator/目錄下 一個對象的一個屬性動畫 AnimatorSet?放置在res/animator/目錄下 動畫集合

所以可以看見,我們平時使用屬性動畫的重點就在于AnimatorSet、ObjectAnimator、TimeAnimator、ValueAnimator。所以接下來我們就來依次說說如何使用。

4-2 屬性動畫詳細說明 4-2-1 屬性動畫計算原理

參看Android官方文檔,英文原版詳情點我查看!

Android屬性動畫(注意最低兼容版本,不過可以使用開源項目來替代低版本問題)提供了以下屬性:

Duration:動畫的持續(xù)時間;TimeInterpolation:定義動畫變化速率的接口,所有插值器都必須實現(xiàn)此接口,如線性、非線性插值器;TypeEvaluator:用于定義屬性值計算方式的接口,有int、float、color類型,根據(jù)屬性的起始、結(jié)束值和插值一起計算出當前時間的屬性值;Animation sets:動畫集合,即可以同時對一個對象應(yīng)用多個動畫,這些動畫可以同時播放也可以對不同動畫設(shè)置不同的延遲;Frame refreash delay:多少時間刷新一次,即每隔多少時間計算一次屬性值,默認為10ms,最終刷新時間還受系統(tǒng)進程調(diào)度與硬件的影響;Repeat Country and behavoir:重復(fù)次數(shù)與方式,如播放3次、5次、無限循環(huán),可以讓此動畫一直重復(fù),或播放完時向反向播放;

接下來先來看官方為了解釋原理給出的兩幅圖(其實就是初中物理題,不解釋):

?
上面就是一個線性勻速動畫,描述了一個Object的X屬性運動動畫,該對象的X坐標在40ms內(nèi)從0移動到40,每10ms刷新一次,移動4次,每次移動為40/4=10pixel。?
?
上面是一個非勻速動畫,描述了一個Object的X屬性運動動畫,該對象的X坐標在40ms內(nèi)從0移動到40,每10ms刷新一次,移動4次,但是速率不同,開始和結(jié)束的速度要比中間部分慢,即先加速后減速。

接下來我們來詳細的看一下,屬性動畫系統(tǒng)的重要組成部分是如何計算動畫值的,下圖描述了如上面所示動畫的實現(xiàn)作用過程。

其中的ValueAnimator是動畫的執(zhí)行類,跟蹤了當前動畫的執(zhí)行時間和當前時間下的屬性值;ValueAnimator封裝了動畫的TimeInterpolator時間插值器和一個TypeEvaluator類型估值,用于設(shè)置動畫屬性的值,就像上面圖2非線性動畫里,TimeInterpolator使用了AccelerateDecelerateInterpolator、TypeEvaluator使用了IntEvaluator。

為了執(zhí)行一個動畫,你需要創(chuàng)建一個ValueAnimator,并且指定目標對象屬性的開始、結(jié)束值和持續(xù)時間。在調(diào)用start后,整個動畫過程中, ValueAnimator會根據(jù)已經(jīng)完成的動畫時間計算得到一個0到1之間的分數(shù),代表該動畫的已完成動畫百分比。0表示0%,1表示100%,譬如上面圖一線性勻速動畫中總時間 t = 40 ms,t = 10 ms的時候是 0.25。

當ValueAnimator計算完已完成動畫分數(shù)后,它會調(diào)用當前設(shè)置的TimeInterpolator,去計算得到一個interpolated(插值)分數(shù),在計算過程中,已完成動畫百分比會被加入到新的插值計算中。如上圖2非線性動畫中,因為動畫的運動是緩慢加速的,它的插值分數(shù)大約是 0.15,小于t = 10ms時的已完成動畫分數(shù)0.25。而在上圖1中,這個插值分數(shù)一直和已完成動畫分數(shù)是相同的。

當插值分數(shù)計算完成后,ValueAnimator會根據(jù)插值分數(shù)調(diào)用合適的 TypeEvaluator去計算運動中的屬性值。

好了,現(xiàn)在我們來看下代碼就明白這段話了,上面圖2非線性動畫里,TimeInterpolator使用了AccelerateDecelerateInterpolator、TypeEvaluator使用了IntEvaluator。所以這些類都是標準的API,我們來看下標準API就能類比自己寫了,如下:

首先計算已完成動畫時間分數(shù)(以10ms為例):t=10ms/40ms=0.25。

接著看如下源碼如何實現(xiàn)計算差值分數(shù)的:


public?class?AccelerateDecelerateInterpolator?extends?BaseInterpolator
????????implements?NativeInterpolatorFactory?{
????public?AccelerateDecelerateInterpolator()?{
????}
????......
????//這是我們關(guān)注重點,可以發(fā)現(xiàn)如下計算公式計算后(input即為時間因子)插值大約為0.15。
????public?float?getInterpolation(float?input)?{
????????return?(float)(Math.cos((input?+?1)?*?Math.PI)?/?2.0f)?+?0.5f;
????}
????......
}

其實AccelerateDecelerateInterpolator的基類接口就是TimeInterpolator,如下,他只有g(shù)etInterpolation方法,也就是上面我們關(guān)注的方法。


public?interface?TimeInterpolator?{
????float?getInterpolation(float?input);
}

接著ValueAnimator會根據(jù)插值分數(shù)調(diào)用合適的TypeEvaluator(IntEvaluator)去計算運動中的屬性值,如下,因為startValue = 0,所以屬性值:0+0.15*(40-0)= 6。


public?class?IntEvaluator?implements?TypeEvaluator{
????public?Integer?evaluate(float?fraction,?Integer?startValue,?Integer?endValue)?{
????????int?startInt?=?startValue;
????????return?(int)(startInt?+?fraction?*?(endValue?-?startInt));
????}
}

這就是官方給的一個關(guān)于屬性動畫實現(xiàn)的過程及基本原理解釋,相信你看到這里是會有些迷糊的,沒關(guān)系,你先有個大致概念就行,接下來我們會慢慢進入實戰(zhàn),因為Android的屬性動畫相對于其他動畫來說涉及的知識點本來就比較復(fù)雜,所以我們慢慢來。

4-2-2 XML方式屬性動畫

在xml中可直接用的屬性動畫節(jié)點有ValueAnimator、ObjectAnimator、AnimatorSet。如下是官方的一個例子和解釋(詳情點我):


...

屬性解釋:

android:ordering 控制子動畫啟動方式是先后有序的還是同時進行。sequentially:動畫按照先后順序;together(默認):動畫同時啟動;


屬性解釋:

android:propertyName String類型,必須要設(shè)置的節(jié)點屬性,代表要執(zhí)行動畫的屬性(通過名字引用),辟如你可以指定了一個View的”alpha” 或者 “backgroundColor” ,這個objectAnimator元素沒有對外說明target屬性,所以你不能在XML中設(shè)置執(zhí)行這個動畫,必須通過調(diào)用loadAnimator()方法加載你的XML動畫資源,然后調(diào)用setTarget()應(yīng)用到具備這個屬性的目標對象上(譬如TextView)。 android:valueTo float、int或者color類型,必須要設(shè)置的節(jié)點屬性,表明動畫結(jié)束的點;如果是顏色的話,由6位十六進制的數(shù)字表示。 android:valueFrom 相對應(yīng)valueTo,動畫的起始點,如果沒有指定,系統(tǒng)會通過屬性的get方法獲取,顏色也是6位十六進制的數(shù)字表示。 android:duration 動畫的時長,int類型,以毫秒為單位,默認為300毫秒。 android:startOffset 動畫延遲的時間,從調(diào)用start方法后開始計算,int型,毫秒為單位。 android:repeatCount 一個動畫的重復(fù)次數(shù),int型,”-1“表示無限循環(huán),”1“表示動畫在第一次執(zhí)行完成后重復(fù)執(zhí)行一次,也就是兩次,默認為0,不重復(fù)執(zhí)行。 android:repeatMode 重復(fù)模式:int型,當一個動畫執(zhí)行完的時候應(yīng)該如何處理。該值必須是正數(shù)或者是-1,“reverse”會使得按照動畫向相反的方向執(zhí)行,可實現(xiàn)類似鐘擺效果。“repeat”會使得動畫每次都從頭開始循環(huán)。 android:valueType 關(guān)鍵參數(shù),如果該value是一個顏色,那么就不需要指定,因為動畫框架會自動的處理顏色值。有intType和floatType(默認)兩種:分別說明動畫值為int和float型。


屬性解釋:?
同上屬性,不多介紹。

XML屬性動畫使用方法:


AnimatorSet?set?=?(AnimatorSet)?AnimatorInflater.loadAnimator(myContext,
????R.animtor.property_animator);
set.setTarget(myObject);
set.start();

4-2-3 Java方式屬性動畫

1、ObjectAnimator:繼承自ValueAnimator,允許你指定要進行動畫的對象以及該對象的一個屬性。該類會根據(jù)計算得到的新值自動更新屬性。大多數(shù)的情況使用ObjectAnimator就足夠了,因為它使得目標對象動畫值的處理過程變得足夠簡單,不用像ValueAnimator那樣自己寫動畫更新的邏輯,但是ObjectAnimator有一定的限制,比如它需要目標對象的屬性提供指定的處理方法(譬如提供getXXX,setXXX方法),這時候你就需要根據(jù)自己的需求在ObjectAnimator和ValueAnimator中看哪種實現(xiàn)更方便了。

<pre style="font-family:'Source Code Pro', monospace;font-size:14px;l

java類名xml關(guān)鍵字描述信息
xml屬性java方法解釋
xml屬性java方法解釋
xml屬性java方法解釋
xml屬性java方法解釋
xml屬性java方法解釋
Animation類的方法解釋
View類的常用動畫操作方法解釋
java類xml id值描述
java類名xml關(guān)鍵字描述信息
xml屬性解釋
xml屬性解釋
本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉