Android動畫小結
Android動畫小結
一款App想與使用者之間產生的更多的互動,那麼就表現在它是否具備很多超炫的動畫效果。
今天對android系統自帶的動畫小小的學習運用了一下,在此我就個人的學習經驗小總結一下。
首先我們應該瞭解Android下三種常用的動畫分別是:
Tween Animation 補間動畫
Frame Animation 幀動畫
Property Animation 屬性動畫
其中Tween Animation 又分為常用的四種:
ScaleAnimation 縮放動畫
RotateAnimation 旋轉動畫
TranslateAnimation 平移動畫
AlphaAnimation 漸變動畫
這4中動畫分別都有兩種實現方式:一種是純程式碼形勢,一種是在res目錄下新建anim目錄(res/anim),下面就是最簡單的實現方式:
方式一:配置xml檔案實現
都是通過AnimationUtils這個工具類loadAnimation實現的,如下:
Animation animation=
AnimationUtils.loadAnimation(
this,
R.anim.continue_anim);
view.startAnimation(animation);
ScaleAnimation 縮放動畫
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<scale
android:duration="2000"
android:fillAfter="false"
android:fromXScale="0.0"
android:fromYScale="0.0" android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.0"
android:toYScale="1.0" />
</set>
RotateAnimation 旋轉動畫
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<rotate
android:duration="1000"
android:fromDegrees="0" 開始旋轉的角度
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
pivotX, pivotY均為50%表示以自身為中心旋轉
android:toDegrees="-360" />
<--toDegrees屬性的正負值決定了旋轉的方向-->
</set>
TranslateAnimation 平移動畫
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="1000" 動畫持續時間(ms)
android:fromXDelta="0" 開始的x座標
android:fromYDelta="0" 開始的y座標
android:toXDelta="100" 結束的x座標
android:toYDelta="-100" 結束的y座標
android:interpolator="@android:anim/cycle_interpolator"
插值器可以讓動畫按照一定的頻率運動,實現加速、加速、重複、回彈等效果。具體可以alt+/自己一個個測試一下
/>
</set>
AlphaAnimation 漸變動畫
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<alpha
android:duration="500"
android:fromAlpha="0.0"
android:toAlpha="1.0" >
</alpha>
</set>
方式二純程式碼實現
ScaleAnimation 縮放動畫
ScaleAnimation scaleAnimation=new ScaleAnimation(0.5f, 1.0f ,0.5f, 1.0f);
scaleAnimation.setRepeatMode(TRIM_MEMORY_BACKGROUND);
scaleAnimation.setDuration(1000);
view.startAnimation(scaleAnimation);
RotateAnimation 旋轉動畫
RotateAnimation rotateAnimation = new RotateAnimation(0f, 360f,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
rotateAnimation.setDuration(1000);
view.startAnimation(rotateAnimation);
TranslateAnimation 平移動畫
TranslateAnimation translateAnimation=
new TranslateAnimation(
Animation.RELATIVE_TO_SELF,1.0f,
Animation.RELATIVE_TO_SELF, 0f,
Animation.RELATIVE_TO_SELF, 1.0f,
Animation.RELATIVE_TO_SELF, 0f);
translateAnimation.setDuration(1000);
view.startAnimation(translateAnimation);
AlphaAnimation 漸變動畫
AlphaAnimation alphaAnimation = new AlphaAnimation(0, 1.0f);
alphaAnimation.setDuration(1000);
view.startAnimation(alphaAnimation);
Frame Animation 幀動畫
在drawable目錄下放入不同幀的圖片資源,然後建立一個.xml的資原始檔在animation-list 標籤中巢狀多個item實現
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/one"
android:duration="500"/>
<item
android:drawable="@drawable/two"
android:duration="500"/>
.......
</animation-list>
程式碼中 直接view.setXXXResource(R.drawable.anim_xxx);
Property Animation 屬性動畫
屬性動畫是真正改變view自身的性質的動畫,為了相容低版本我們一般用nineoldandroids-2.4.0.jar來實現我們想要的效果,像ViewHelper,ViewPropertyAnimator等類提供了強大的get和set方法。具體用法自己琢磨。
還有幾個動畫效果
Intent intent=new Intent(mContext,Test.class);
startActivity(intent);
//下面這個行程式碼可以實現介面在切換的時候各種動畫效果,也叫做轉場動畫吧,其中R.anim.in和R.anim.out是在res/anim下的兩個xml檔案
overridePendingTransition(R.anim.in,R.anim.out);
in.xml 進入新的介面執行的動畫。
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator" >
<scale
android:duration="1000"
android:fromXScale="0.1"
android:fromYScale="0.1"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.0"
android:toYScale="1.0" />
<alpha
android:duration="1000"
android:fromAlpha="0"
android:toAlpha="1.0" />
<rotate
android:duration="1000"
android:fromDegrees="0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="0%"
android:pivotY="100%"
android:toDegrees="-360" />
<translate
android:duration="1000"
android:fromXDelta="100%"
android:fromYDelta="100%"
android:interpolator="@android:anim/cycle_interpolator"
android:toXDelta="0"
android:toYDelta="0" />
</set>
out.xml 退出當前介面執行的動畫。
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:zAdjustment="top" >
<scale
android:duration="@android:integer/config_mediumAnimTime"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="50%p"
android:pivotY="50%p"
android:toXScale="0.1"
android:toYScale="0.1" />
<alpha
android:duration="@android:integer/config_mediumAnimTime"
android:fromAlpha="1.0"
android:toAlpha="0" />
<rotate
android:duration="1000"
android:fromDegrees="0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="100%"
android:pivotY="0%"
android:toDegrees="360" />
<!--
<translate
android:duration="1000"
android:fromXDelta="0"
android:fromYDelta="0"
android:startOffset="1000"
android:toXDelta="100%"
android:toYDelta="100%"
android:interpolator="@android:anim/cycle_interpolator"
/> -->
</set>
還有一種給ListView或GridView用的LayoutAnimationController
該類的三個常量分別:
ORDER_NORMAL 按順序填充條目
ORDER_RANDOM 隨機填充條目
ORDER_REVERSE 倒序填充條目
mlistView.setAdapter(adapter);
LayoutAnimationController mLac=newLayoutAnimationController(
AnimationUtils.loadAnimation(this, R.anim.zoom_in));
mLac.setOrder(LayoutAnimationController.ORDER_NORMAL);
mlistView.setLayoutAnimation(mLac);
mlistView.startLayoutAnimation();
相關文章
- Android技能樹 — 動畫小結Android動畫
- 安卓動畫使用小結安卓動畫
- android小結Android
- Android容器類小結Android
- [Android]aapt命令小結AndroidAPT
- Android MediaCodec小結Android
- Android Webview 使用小結AndroidWebView
- Android技能樹 — PopupWindow小結Android
- Android技能樹 — Activity小結Android
- Android技能樹 — View小結AndroidView
- Android技能樹 — Drawable小結Android
- Android Camera 使用小結Android
- Android:Sqlitedatabase學習小結AndroidSQLiteDatabase
- Android動畫Android動畫
- android 動畫Android動畫
- Android 動畫之屬性動畫Android動畫
- CSS 小結筆記之變形、過渡與動畫CSS筆記動畫
- Android 動畫詳解:屬性動畫、View 動畫和幀動畫Android動畫View
- Android斷點下載小結Android斷點
- android adapter的效能小結AndroidAPT
- 【Android 動畫】動畫詳解之屬性動畫(三)Android動畫
- 【Android 動畫】動畫詳解之補間動畫(一)Android動畫
- 【Android 動畫】動畫詳解之屬性動畫(五)Android動畫
- android動畫——屬性動畫(Property Animation)Android動畫
- android 動畫 ——檢視動畫(View Animation)Android動畫View
- Android屬性動畫:動畫流控制Android動畫
- Android之動畫Android動畫
- Android 動畫初探Android動畫
- Android 動畫原理Android動畫
- Android自定義View:一個精緻的打鉤小動畫AndroidView動畫
- 動畫封裝小案例動畫封裝
- Android技能樹 — LayoutInflater Factory小結Android
- Android技能樹 — Fragment總體小結AndroidFragment
- Android華為凹口屏適配小結Android
- Android UI 顯示原理分析小結AndroidUI
- Android Color 判斷色值小結Android
- android gradle 多渠道打包小結AndroidGradle
- Android ConstraintLayout 最新使用小結AndroidAI