Android復(fù)習(xí)(二)應(yīng)用資源-->動畫-創(chuàng)新互聯(lián)

沒什么好總結(jié)的 復(fù)制自 https://developer.android.google.cn/guide/topics/resources/animation-resource 有需要的可以查看官方文檔Android復(fù)習(xí)(二)應(yīng)用資源
-->動畫

動畫資源

一個動畫資源可以定義以下兩種動畫類型之一:

創(chuàng)新互聯(lián)公司專注于湖州網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供湖州營銷型網(wǎng)站建設(shè),湖州網(wǎng)站制作、湖州網(wǎng)頁設(shè)計(jì)、湖州網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務(wù),打造湖州網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供湖州網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
屬性動畫
通過使用 Animator 在設(shè)定的時(shí)間段內(nèi)修改對象的屬性值來創(chuàng)建動畫。
視圖動畫

使用視圖動畫框架可以創(chuàng)建兩種類型的動畫:

  • 補(bǔ)間動畫:通過使用 Animation 對單張圖片執(zhí)行一系列轉(zhuǎn)換來創(chuàng)建動畫
  • 幀動畫:通過使用 AnimationDrawable 按順序顯示一系列圖片來創(chuàng)建動畫。

屬性動畫

在 XML 中定義的動畫,用于在設(shè)定的一段時(shí)間內(nèi)修改目標(biāo)對象的屬性,例如背景顏色或 Alpha 值。

文件位置:
res/animator/filename.xml
該文件名將用作資源 ID。
編譯后的資源數(shù)據(jù)類型:
指向 ValueAnimator、ObjectAnimator 或 AnimatorSet 的資源指針。
資源引用:
在 Java 或 Kotlin 代碼中:R.animator.filename
在 XML 中:@[package:]animator/filename
語法:
<set android:ordering=["together" | "sequentially"]> <objectAnimator android:propertyName="string" android:duration="int" android:valueFrom="float | int | color" android:valueTo="float | int | color" android:startOffset="int" android:repeatCount="int" android:repeatMode=["repeat" | "reverse"] android:valueType=["intType" | "floatType"]/> <animator android:duration="int" android:valueFrom="float | int | color" android:valueTo="float | int | color" android:startOffset="int" android:repeatCount="int" android:repeatMode=["repeat" | "reverse"] android:valueType=["intType" | "floatType"]/> <set> ... </set> </set>
 

該文件必須具有一個根元素,可以是 <set><objectAnimator> 或 <valueAnimator>。您可以將動畫元素(包括其他 <set> 元素)組合到 <set> 元素中。

元素:
<set>
容納其他動畫元素(<objectAnimator>、<valueAnimator> 或其他 <set> 元素)的容器。代表 AnimatorSet。

您可以指定嵌套的 <set> 標(biāo)記來將動畫進(jìn)一步組合在一起。每個 <set> 都可以定義自己的 ordering 屬性。

屬性:

android:ordering
關(guān)鍵字。指定此集合中動畫的播放順序。
說明
sequentially依序播放此集合中的動畫
together(默認(rèn))同時(shí)播放此集合中的動畫。
<objectAnimator>
在特定的一段時(shí)間內(nèi)為對象的特定屬性創(chuàng)建動畫。代表 ObjectAnimator。

屬性:

android:propertyName
字符串。必需。要添加動畫的對象屬性,通過其名稱引用。例如,您可以為 View 對象指定 "alpha" 或 "backgroundColor"。 但是,objectAnimator 元素不包含 target 屬性,因此您無法在 XML 聲明中設(shè)置要添加動畫的對象。您必須通過調(diào)用 loadAnimator() 來擴(kuò)充您的動畫 XML 資源,然后調(diào)用 setTarget() 來設(shè)置包含此屬性的目標(biāo)對象。
android:valueTo
浮點(diǎn)數(shù)、整數(shù)或顏色。必需。動畫屬性的結(jié)束值。顏色以六位十六進(jìn)制數(shù)字表示(例如,#333333)。
android:valueFrom
浮點(diǎn)數(shù)、整數(shù)或顏色。動畫屬性的開始值。如果未指定,則動畫將從屬性的 get 方法獲得的值開始。顏色以六位十六進(jìn)制數(shù)字表示(例如,#333333)。
android:duration
整數(shù)。動畫的時(shí)間,以毫秒為單位。默認(rèn)為 300 毫秒。
android:startOffset
整數(shù)。調(diào)用 start() 后動畫延遲的毫秒數(shù)。
android:repeatCount
整數(shù)。動畫的重復(fù)次數(shù)。設(shè)為 "-1" 表示無限次重復(fù),也可設(shè)為正整數(shù)。例如,值 "1" 表示動畫在初次播放后重復(fù)播放一次,因此動畫總共播放兩次。默認(rèn)值為 "0",表示不重復(fù)。
android:repeatMode
整數(shù)。動畫播放到結(jié)尾處的行為。android:repeatCount 必須設(shè)置為正整數(shù)或 "-1",該屬性才有效。設(shè)置為 "reverse" 可讓動畫在每次迭代時(shí)反向播放,設(shè)置為 "repeat" 則可讓動畫每次從頭開始循環(huán)播放。
android:valueType
關(guān)鍵字。如果值為顏色,則不要指定此屬性。動畫框架會自動處理顏色值
說明
intType指定動畫值為整數(shù)
floatType(默認(rèn))指定動畫值為浮點(diǎn)數(shù)
<animator>在指定的時(shí)間段內(nèi)執(zhí)行動畫。代表 ValueAnimator。

屬性:

android:valueTo浮點(diǎn)數(shù)、整數(shù)或顏色。必需。動畫的結(jié)束值。顏色以六位十六進(jìn)制數(shù)字表示(例如,#333333)。android:valueFrom浮點(diǎn)數(shù)、整數(shù)或顏色。必需。動畫的開始值。顏色以六位十六進(jìn)制數(shù)字表示(例如,#333333)。android:duration整數(shù)。動畫的時(shí)間,以毫秒為單位。默認(rèn)為 300ms。android:startOffset整數(shù)。調(diào)用 start() 后動畫延遲的毫秒數(shù)。。android:repeatCount整數(shù)。動畫的重復(fù)次數(shù)。設(shè)為 "-1" 表示無限次重復(fù),也可設(shè)為正整數(shù)。例如,值 "1" 表示動畫在初次播放后重復(fù)播放一次,因此動畫總共播放兩次。默認(rèn)值為 "0",表示不重復(fù)。android:repeatMode整數(shù)。動畫播放到結(jié)尾處的行為。android:repeatCount 必須設(shè)置為正整數(shù)或 "-1",該屬性才有效。設(shè)置為 "reverse" 可讓動畫在每次迭代時(shí)反向播放,設(shè)置為 "repeat" 則可讓動畫每次從頭開始循環(huán)播放。android:valueType關(guān)鍵字。如果值為顏色,則不要指定此屬性。動畫框架會自動處理顏色值。
說明
intType指定動畫值為整數(shù)
floatType(默認(rèn))指定動畫值為浮點(diǎn)數(shù)
示例:保存在 res/animator/property_animator.xml 的 XML 文件: <set android:ordering="sequentially"> <set> <objectAnimator android:propertyName="x" android:duration="500" android:valueTo="400" android:valueType="intType"/> <objectAnimator android:propertyName="y" android:duration="500" android:valueTo="300" android:valueType="intType"/> </set> <objectAnimator android:propertyName="alpha" android:duration="500" android:valueTo="1f"/> </set>
 

為了運(yùn)行此動畫,您必須將代碼中的 XML 資源擴(kuò)充為 AnimatorSet 對象,然后在開始運(yùn)行動畫集之前為所有動畫設(shè)置目標(biāo)對象。為方便起見,調(diào)用 setTarget() 即可設(shè)置一個用于 AnimatorSet 的所有子項(xiàng)的目標(biāo)對象。以下代碼展示了如何執(zhí)行此操作:

java代碼: AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext, R.animator.property_animator); set.setTarget(myObject); set.start(); kotlin代碼: val set: AnimatorSet = AnimatorInflater.loadAnimator(myContext, R.animator.property_animator) .apply { setTarget(myObject) start() }  另請參閱:
  • 屬性動畫
  • 有關(guān)如何使用屬性動畫系統(tǒng)的示例,請參閱 API 演示。

視圖動畫

視圖動畫框架可支持補(bǔ)間動畫和逐幀動畫,兩者都可以在 XML 中聲明。以下幾個部分介紹如何使用這兩種方法。

補(bǔ)間動畫

在 XML 中定義的動畫,用于對圖形執(zhí)行旋轉(zhuǎn)、淡出、移動和拉伸等轉(zhuǎn)換。

文件位置:
res/anim/filename.xml
該文件名將用作資源 ID。
編譯后的資源數(shù)據(jù)類型:
指向 Animation 的資源指針。
資源引用:
在 Java 中:R.anim.filename
在 XML 中:@[package:]anim/filename
語法:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@[package:]anim/interpolator_resource" android:shareInterpolator=["true" | "false"] > <alpha android:fromAlpha="float" android:toAlpha="float" /> <scale android:fromXScale="float" android:toXScale="float" android:fromYScale="float" android:toYScale="float" android:pivotX="float" android:pivotY="float" /> <translate android:fromXDelta="float" android:toXDelta="float" android:fromYDelta="float" android:toYDelta="float" /> <rotate android:fromDegrees="float" android:toDegrees="float" android:pivotX="float" android:pivotY="float" /> <set> ... </set> </set>
 

該文件必須具有一個根元素,可以是 <alpha>、<scale><translate>、<rotate> 或包含一組(或多組)其他動畫元素(甚至是嵌套的 <set> 元素)的 <set> 元素。

元素:
<set>
容納其他動畫元素(<alpha>、<scale>、<translate>、<rotate>)或其他 <set> 元素的容器。代表 AnimationSet

屬性:

android:interpolator
插值器資源。 要應(yīng)用于動畫的 Interpolator。 該值必須是對指定插值器的資源的引用(而不是插值器類名稱)。您可以使用平臺提供的默認(rèn)插值器資源,也可以創(chuàng)建自己的插值器資源。有關(guān)插值器的詳細(xì)信息,請參閱以下說明。
android:shareInterpolator
布爾值。如果要在所有子元素中共用同一插值器,則為“true”。
<alpha>
淡入或淡出動畫。代表 AlphaAnimation。

屬性:

android:fromAlpha
浮點(diǎn)數(shù)。起始不透明度偏移,0.0 表示透明,1.0 表示不透明。
android:toAlpha
浮點(diǎn)數(shù)。結(jié)束不透明度偏移,0.0 表示透明,1.0 表示不透明。

要了解 <alpha> 支持的更多屬性,請參閱 Animation 類引用(其中所有 XML 屬性均由此元素繼承)。

<scale>
大小調(diào)整動畫。您可以通過指定 pivotX 和 pivotY,來指定圖片向外(或向內(nèi))擴(kuò)展的中心點(diǎn)。例如,如果這兩個值為 0、0(左上角),則所有擴(kuò)展均向右下方向進(jìn)行。代表 ScaleAnimation

屬性:

android:fromXScale
浮點(diǎn)數(shù)。起始 X 尺寸偏移,其中 1.0 表示不變。
android:toXScale
浮點(diǎn)數(shù)。結(jié)束 X 尺寸偏移,其中 1.0 表示不變。
android:fromYScale
浮點(diǎn)數(shù)。起始 Y 尺寸偏移,其中 1.0 表示不變。
android:toYScale
浮點(diǎn)數(shù)。結(jié)束 Y 尺寸偏移,其中 1.0 表示不變。
android:pivotX
浮點(diǎn)數(shù)。在對象縮放時(shí)要保持不變的 X 坐標(biāo)。
android:pivotY
浮點(diǎn)數(shù)。在對象縮放時(shí)要保持不變的 Y 坐標(biāo)。

要了解 <scale> 支持的更多屬性,請參閱 Animation 類引用(其中所有 XML 屬性均由此元素繼承)。

<translate>
垂直和/或水平移動。支持采用以下三種格式之一的以下屬性:從 -100 到 100 的以“%”結(jié)尾的值,表示相對于自身的百分比;從 -100 到 100 的以“%p”結(jié)尾的值,表示相對于其父項(xiàng)的百分比;不帶后綴的浮點(diǎn)值,表示絕對值。代表 TranslateAnimation。

屬性:

android:fromXDelta
浮動數(shù)或百分比。起始 X 偏移。表示方式:相對于正常位置的像素?cái)?shù)(例如 "5"),相對于元素寬度的百分比(例如 "5%"),或相對于父項(xiàng)寬度的百分比(例如 "5%p")。
android:toXDelta
浮動數(shù)或百分比。結(jié)束 X 偏移。表示方式:相對于正常位置的像素?cái)?shù)(例如 "5"),相對于元素寬度的百分比(例如 "5%"),或相對于父項(xiàng)寬度的百分比(例如 "5%p")。
android:fromYDelta
浮動數(shù)或百分比。起始 Y 偏移。表示方式:相對于正常位置的像素?cái)?shù)(例如 "5"),相對于元素高度的百分比(例如 "5%"),或相對于父項(xiàng)高度的百分比(例如 "5%p")。
android:toYDelta
浮動數(shù)或百分比。結(jié)束 Y 偏移。表示方式:相對于正常位置的像素?cái)?shù)(例如 "5"),相對于元素高度的百分比(例如 "5%"),或相對于父項(xiàng)高度的百分比(例如 "5%p")。

要了解 <translate> 支持的更多屬性,請參閱 Animation 類引用(其中所有 XML 屬性均由此元素繼承)。

<rotate>
旋轉(zhuǎn)動畫。代表 RotateAnimation。

屬性:

android:fromDegrees
浮點(diǎn)數(shù)。起始角度位置,以度為單位。
android:toDegrees
浮點(diǎn)數(shù)。結(jié)束角度位置,以度為單位。
android:pivotX
浮動數(shù)或百分比。旋轉(zhuǎn)中心的 X 坐標(biāo)。表示方式:相對于對象左邊緣的像素?cái)?shù)(例如 "5"),相對于對象左邊緣的百分比(例如 "5%"),或相對于父級容器左邊緣的百分比(例如 "5%p")。
android:pivotY
浮點(diǎn)數(shù)或百分比。旋轉(zhuǎn)中心的 Y 坐標(biāo)。表示方式:相對于對象上邊緣的像素?cái)?shù)(例如 "5"),相對于對象上邊緣的百分比(例如 "5%"),或相對于父級容器上邊緣的百分比(例如 "5%p")。

要了解 <rotate> 支持的更多屬性,請參閱 Animation 類引用(其中所有 XML 屬性均由此元素繼承)。

示例:
保存在 res/anim/hyperspace_jump.xml 的 XML 文件: <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <scale android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:fromXScale="1.0" android:toXScale="1.4" android:fromYScale="1.0" android:toYScale="0.6" android:pivotX="50%" android:pivotY="50%" android:fillAfter="false" android:duration="700" /> <set android:interpolator="@android:anim/accelerate_interpolator" android:startOffset="700"> <scale android:fromXScale="1.4" android:toXScale="0.0" android:fromYScale="0.6" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:duration="400" /> <rotate android:fromDegrees="0" android:toDegrees="-45" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:duration="400" /> </set> </set>

 

以下應(yīng)用代碼會將動畫應(yīng)用到 ImageView 并啟動動畫:

  java 代碼: ImageView image = (ImageView) findViewById(R.id.image); Animation hyperspaceJump = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump); image.startAnimation(hyperspaceJump); kotlin 代碼: val image: ImageView = findViewById(R.id.image) val hyperspaceJump: Animation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump) image.startAnimation(hyperspaceJump) 
另請參閱:
  • 2D 圖形:補(bǔ)間動畫

插值器

插值器是在 XML 中定義的動畫修改器,它會影響動畫的變化率。插值器可對現(xiàn)有的動畫效果執(zhí)行加速、減速、重復(fù)、退回等。

插值器通過 android:interpolator 屬性應(yīng)用于動畫元素,該屬性的值是對插值器資源的引用。

Android 中提供的所有插值器都是 Interpolator 類的子類。為便于您使用 android:interpolator 屬性將插值器應(yīng)用于動畫,Android 針對每個插值器類包含了一個可供您引用的公共資源。下表指定了每個插值器要使用的資源:

插值器類資源 ID
AccelerateDecelerateInterpolator@android:anim/accelerate_decelerate_interpolator
AccelerateInterpolator@android:anim/accelerate_interpolator
AnticipateInterpolator@android:anim/anticipate_interpolator
AnticipateOvershootInterpolator@android:anim/anticipate_overshoot_interpolator
BounceInterpolator@android:anim/bounce_interpolator
CycleInterpolator@android:anim/cycle_interpolator
DecelerateInterpolator@android:anim/decelerate_interpolator
LinearInterpolator@android:anim/linear_interpolator
OvershootInterpolator@android:anim/overshoot_interpolator

您可以通過以下方式使用 android:interpolator 屬性應(yīng)用上述某個插值器:

<set android:interpolator="@android:anim/accelerate_interpolator"> ... </set>
 

自定義插值器

如果您對平臺提供的插值器(在上表中列出)不滿意,則可以使用修改過的屬性創(chuàng)建自定義插值器資源。例如,您可以調(diào)整 AnticipateInterpolator 的加速率或調(diào)整 CycleInterpolator 的循環(huán)次數(shù)。為此,您需要在 XML 文件中創(chuàng)建自己的插值器資源。

文件位置:
res/anim/filename.xml
該文件名將用作資源 ID。
編譯后的資源數(shù)據(jù)類型:
指向相應(yīng)插值器對象的資源指針。
資源引用:
在 XML 中:@[package:]anim/filename
語法:
<?xml version="1.0" encoding="utf-8"?> <InterpolatorName xmlns:android="http://schemas.android.com/apk/res/android" android:attribute_name="value" />  

如果您不應(yīng)用任何屬性,則您的插值器的運(yùn)作方式將與平臺提供的插值器(在上表中列出)完全相同。

元素:
請注意,在 XML 中定義的每個 Interpolator 實(shí)現(xiàn)的名稱都以小寫字母開頭。
<accelerateDecelerateInterpolator>
變化率在開始和結(jié)束時(shí)緩慢,但在中間會加快。

沒有屬性。

<accelerateInterpolator>
變化率在開始時(shí)較為緩慢,然后會加快。

屬性:

android:factor
浮點(diǎn)數(shù)。加速率(默認(rèn)為 1)。
<anticipateInterpolator>
先反向變化,然后再急速正向變化。

屬性:

android:tension
浮點(diǎn)數(shù)。要應(yīng)用的張力(默認(rèn)為 2)。
<anticipateOvershootInterpolator>
先反向變化,再急速正向變化并超過目標(biāo)值,然后以最終值結(jié)束。

屬性:

android:tension
浮點(diǎn)數(shù)。要應(yīng)用的張力(默認(rèn)為 2)。
android:extraTension
浮點(diǎn)數(shù)。張力要乘以的倍數(shù)(默認(rèn)值為 1.5)。
<bounceInterpolator>
變化會在結(jié)束時(shí)退回。

沒有屬性。

<cycleInterpolator>
按指定的循環(huán)次數(shù)重復(fù)動畫。變化率符合正弦曲線圖。

屬性:

android:cycles
整數(shù)。循環(huán)次數(shù)(默認(rèn)值為 1)。
<decelerateInterpolator>
變化率開始時(shí)很快,然后減慢。

屬性:

android:factor
浮點(diǎn)數(shù)。減速率(默認(rèn)值為 1)。
<linearInterpolator>
變化率恒定不變。

沒有屬性。

<overshootInterpolator>
先急速正向變化,再超過最終值,然后回到最終值。

屬性:

android:tension
浮點(diǎn)數(shù)。要應(yīng)用的張力(默認(rèn)為 2)。
示例:

保存在 res/anim/my_overshoot_interpolator.xml 的 XML 文件:

<?xml version="1.0" encoding="utf-8"?> <overshootInterpolator xmlns:android="http://schemas.android.com/apk/res/android" android:tension="7.0" />  

此動畫 XML 將應(yīng)用插值器:

<scale xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@anim/my_overshoot_interpolator" android:fromXScale="1.0" android:toXScale="3.0" android:fromYScale="1.0" android:toYScale="3.0" android:pivotX="50%" android:pivotY="50%" android:duration="700" />  

幀動畫

在 XML 中定義的按順序顯示一系列圖片的動畫(如電影)。

文件位置:
res/drawable/filename.xml
該文件名將用作資源 ID。
編譯后的資源數(shù)據(jù)類型:
指向 AnimationDrawable 的資源指針。
資源引用:
在 Java 中:R.drawable.filename
在 XML 中:@[package:]drawable.filename
語法:
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot=["true" | "false"] > <item android:drawable="@[package:]drawable/drawable_resource_name" android:duration="integer" /> </animation-list>
 
元素:
<animation-list>
必需。此元素必須是根元素。包含一個或多個 <item> 元素。

屬性:

android:oneshot
布爾值。如果您想要執(zhí)行一次動畫,則為“true”;如果要循環(huán)播放動畫,則為“false”。
<item>
單幀動畫。必須是 <animation-list> 元素的子元素。

屬性:

android:drawable
可繪制資源。要用于此幀的可繪制對象。
android:duration
整數(shù)。顯示此幀的持續(xù)時(shí)間,以毫秒為單位。
示例:
保存在 res/drawable/rocket.xml 的 XML 文件:
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/rocket_thrust1" android:duration="200" /> <item android:drawable="@drawable/rocket_thrust2" android:duration="200" /> <item android:drawable="@drawable/rocket_thrust3" android:duration="200" /> </animation-list>
以下應(yīng)用代碼會將該動畫設(shè)置為 View 的背景,然后播放動畫:
java 代碼: ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image); rocketImage.setBackgroundResource(R.drawable.rocket_thrust); rocketAnimation = rocketImage.getBackground(); if (rocketAnimation instanceof Animatable) { ((Animatable)rocketAnimation).start(); } kotlin 代碼: val rocketImage: ImageView = findViewById(R.id.rocket_image) rocketImage.setBackgroundResource(R.drawable.rocket_thrust) val rocketAnimation = rocketImage.background if (rocketAnimation is Animatable) { rocketAnimation.start() }

本文標(biāo)題:Android復(fù)習(xí)(二)應(yīng)用資源--&gt;動畫-創(chuàng)新互聯(lián)
本文路徑:http://bm7419.com/article10/dsccgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、品牌網(wǎng)站制作、營銷型網(wǎng)站建設(shè)標(biāo)簽優(yōu)化、用戶體驗(yàn)、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)