Animation集合(入門)
補間動畫Tween Animation
AlphaAnimtaion(透明)
/**
* 構造方法:
* AlphaAnimation(fromAlpha, toAlpha)
* fromAlpha:開始時的透明度
* toAlpha:結束時的透明度
* */
AlphaAnimation animation = new AlphaAnimation(0, 1);
animation.setDuration(1000);//設定動畫執行時間
v.startAnimation(animation);
RotateAnimation(旋轉)
/**
* 構造方法:
* RotateAnimation(fromDegrees, toDegrees)
* RotateAnimation(fromDegrees, toDegrees, pivotX, pivotY)
* RotateAnimation(fromDegrees, toDegrees, pivotXType,pivotXValue, pivotYType, pivotYValue)
* fromDegrees:從哪個旋轉角度開始
* toDegrees:轉到什麼角度 後4個引數用於設定圍繞著旋轉的圓的圓心在哪裡
* pivotXType:確定x軸座標的型別,有ABSOLUT絕對座標、RELATIVE_TO_SELF相對於自身座標、RELATIVE_TO_PARENT相對於父控制元件的座標
* pivotXValue:x軸的值,0.5f表明是以自身這個控制元件的一半長度為x軸 pivotYType:確定y軸座標的型別
* pivotYType:確定y軸座標的型別,有ABSOLUT絕對座標、RELATIVE_TO_SELF相對於自身座標、RELATIVE_TO_PARENT相對於父控制元件的座標
* pivotYValue:y軸的值,0.5f表明是以自身這個控制元件的一半長度為x軸
* */
RotateAnimation rotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotateAnimation.setDuration(1000);// 設定動畫執行時間
v.startAnimation(rotateAnimation);
ScaleAnimation(縮放)
/**
* 構造方法:
* ScaleAnimation(fromX, toX, fromY, toY)
* ScaleAnimation(fromX, toX, fromY, toY, pivotX, pivotY)
* ScaleAnimation(fromX, toX, fromY, toY, pivotXType, pivotXValue, pivotYType, pivotYValue)
* fromX:x軸的初始值
* toX:x軸收縮後的值
* fromY:y軸的初始值
* toY:y軸收縮後的值
* pivotXType:確定x軸座標的型別,有ABSOLUT絕對座標、RELATIVE_TO_SELF相對於自身座標、RELATIVE_TO_PARENT相對於父控制元件的座標
* pivotXValue:x軸的值,0.5f表明是以自身這個控制元件的一半長度為x軸 pivotYType:確定y軸座標的型別
* pivotYType:確定y軸座標的型別,有ABSOLUT絕對座標、RELATIVE_TO_SELF相對於自身座標、RELATIVE_TO_PARENT相對於父控制元件的座標
* pivotYValue:y軸的值,0.5f表明是以自身這個控制元件的一半長度為x軸
*/
ScaleAnimation scaleAnimation = new ScaleAnimation(0, 1f, 0, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
scaleAnimation.setDuration(1000);// 設定動畫執行時間
v.startAnimation(scaleAnimation);
TranslateAnimation(位移)
/**
* 構造方法:
* TranslateAnimation(fromXDelta, toXDelta, fromYDelta, toYDelta)
* TranslateAnimation(fromXType, fromXValue, toXType, toXValue, fromYType, fromYValue, toYType, toYValue)
* fromXType:確定x軸座標的型別,有ABSOLUT絕對座標、RELATIVE_TO_SELF相對於自身座標、 RELATIVE_TO_PARENT相對於父控制元件的座標
* fromXValue:x軸的初始值
* toXType:確定x軸座標的型別,有ABSOLUT絕對座標、RELATIVE_TO_SELF相對於自身座標、RELATIVE_TO_PARENT相對於父控制元件的座標
* toXValue:x軸的結束值
* fromYType:確定y軸座標的型別,有ABSOLUT絕對座標、RELATIVE_TO_SELF相對於自身座標、RELATIVE_TO_PARENT相對於父控制元件的座標
* fromYValue:y軸的初始值
* toYType:確定y軸座標的型別,有ABSOLUT絕對座標、RELATIVE_TO_SELF相對於自身座標、RELATIVE_TO_PARENT相對於父控制元件的座標
* toYValue:y軸的結束值
* */
TranslateAnimation translateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0.5f);
translateAnimation.setDuration(1000);// 設定動畫執行時間
v.startAnimation(translateAnimation);
AnimationSet(動畫集合)
/**
* 是否使用統一interpolator,即動畫的變化速率
* */
AnimationSet animationSet = new AnimationSet(true);
//可以設定動畫集合的執行時間,那麼單獨的動畫執行時間就會變為無效
//animationSet.setDuration(5000);
AlphaAnimation alphaAnimation = new AlphaAnimation(0, 1);
alphaAnimation.setDuration(1000);// 設定動畫執行時間
animationSet.addAnimation(alphaAnimation);
RotateAnimation rotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotateAnimation.setDuration(1000);// 設定動畫執行時間
animationSet.addAnimation(rotateAnimation);
ScaleAnimation scaleAnimation = new ScaleAnimation(0, 1f, 0, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
scaleAnimation.setDuration(1000);// 設定動畫執行時間
animationSet.addAnimation(scaleAnimation);
TranslateAnimation translateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0.5f);
translateAnimation.setDuration(1000);// 設定動畫執行時間
animationSet.addAnimation(translateAnimation);
v.startAnimation(animationSet);
Interpolator(動畫變化速率)
RotateAnimation rotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotateAnimation.setDuration(1000);// 設定動畫執行時間
rotateAnimation.setRepeatCount(1000);// 設定動畫執行次數
/**
* Interpolator 定義了動畫的變化速度,可以實現勻速、正加速、負加速、無規則變加速等
* AccelerateDecelerateInterpolator 在動畫開始與結束的地方速率改變比較慢,在中間的時候加速
* AnticipateInterpolator 開始的時候向後然後向前甩
* AnticipateOvershootInterpolator 開始的時候向後然後向前甩一定值後返回最後的值
* BounceInterpolator 動畫結束的時候彈起
* CycleInterpolator 動畫迴圈播放特定的次數,速率改變沿著正弦曲線
* DecelerateInterpolator 在動畫開始的地方快然後慢
* LinearInterpolator 以常量速率改變
* OvershootInterpolator 向前甩一定值後再回到原來位置
* */
rotateAnimation.setInterpolator(new LinearInterpolator());//勻速不變的
v.startAnimation(rotateAnimation);
其他常用方法:
**setRepeatMode **設定動作結束後,將怎樣處理
預設是Animation.RESTART,回到動作開始時的座標 。引數應是Animation.RESTART或Animation.REVERSE或Animation.INFINITE。REVERSE是反轉的意思,如果repeatCount大於1,repeatMode為Animation.REVERSE那麼動作將會回來不斷執行,即由a點去到b點後,會從b點和原來的動作相反的相同時間...
**setRepeatCount(repeatCount) **動畫執行次數
引數是Animation.INFINITE則表示不斷重複該動作,只有在repeatCount大於0或為INFINITE的時候setRepeatMode才會生效。
</br>
幀動畫Frame Animation
- 動畫檔案
<?xml version="1.0" encoding="utf-8"?>
<!--
根標籤為animation-list,其中oneshot代表著是否只展示一遍,設定為false會不停的迴圈播放動畫
根標籤下,通過item標籤對動畫中的每一個圖片進行宣告
android:duration 表示展示所用的該圖片的時間長度
-->
<animation-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false"
>
<item android:drawable="@drawable/ico0" android:duration="150"></item>
<item android:drawable="@drawable/ico1" android:duration="150"></item>
<item android:drawable="@drawable/ico2" android:duration="150"></item>
<item android:drawable="@drawable/ico3" android:duration="150"></item>
<item android:drawable="@drawable/ico4" android:duration="150"></item>
<item android:drawable="@drawable/ico5" android:duration="150"></item>
</animation-list>
- 佈局檔案
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/frame_animation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/anima"
android:layout_centerInParent="true"/>
</RelativeLayout>
- 程式碼
ImageView iv = (ImageView) findViewById(R.id.frame_animation);
AnimationDrawable animationDrawable = (AnimationDrawable) iv.getDrawable();
animationDrawable.start();
相關文章
- Web Animation API從入門到上座WebAPI
- Java 集合類入門篇Java
- 集合與函式入門函式
- Python入門(九):集合Python
- Redis 入門 - 3(集合 set、有序集合 sort set)Redis
- MySQL小白入門04 - 集合運算MySql
- Java入門教程十二(集合與泛型)Java泛型
- Java入門學習-深入理解集合Java
- Expression Blend例項中文教程(7) - 動畫基礎快速入門AnimationExpress動畫
- Redis 入門指南九:Redis 有序集合(sorted set)Redis
- 帶你入門 JavaScript ES6 (五) 集合JavaScript
- C#快速入門教程(22)—— 常用集合型別C#型別
- Go快速入門 07 | 集合型別: array、slice 和 map的使用Go型別
- Mac電腦新手入門:Mac系統啟動圖示指南集合Mac
- java集合入門和深入學習,看這篇就差不多了Java
- 入門入門入門 MySQL命名行MySql
- Android Animation 系列——屬性動畫(Property Animation)Android動畫
- Python函式每日一講 - frozenset集合函式入門及例項Python函式
- CSS animation 動畫CSS動畫
- SVG SMIL AnimationSVG
- SVG animation 動畫SVG動畫
- animation總結
- angularjs animationAngularJS
- 集合框架-靜態匯入框架
- Android基礎動畫之Tween Animation和Frame AnimationAndroid動畫
- Python列表、元組、集合、字典的區別是什麼?入門知識!Python
- 如何入CTF的“門”?——所謂入門就是入門
- 何入CTF的“門”?——所謂入門就是入門
- scala 從入門到入門+
- makefile從入門到入門
- ACM入門之新手入門ACM
- Python 入門學習 -----變數及基礎型別(元組,列表,字典,集合)Python變數型別
- Animation Spinner【專案】
- Core Animation總結
- Flutter動畫之AnimationFlutter動畫
- Animation元件的使用元件
- Core Animation 之 ViewView
- Material Design AnimationMaterial Design