Android開(kāi)發(fā)中提供了一種模仿實(shí)際物理效果的動(dòng)畫(huà)方法,被稱(chēng)之為物理動(dòng)畫(huà)。在Android Developer學(xué)習(xí)網(wǎng)站中提供了兩種動(dòng)畫(huà)方法:
? ? 彈簧動(dòng)畫(huà)SpringAnimation
? ? 投擲動(dòng)畫(huà)FlingAnimation
大家可以去Android Developer中看一些理論知識(shí)和方法含義
彈簧動(dòng)畫(huà)主要通過(guò)設(shè)置阻尼比Damping_Ratio和剛度Stiffness兩個(gè)物理屬性的值來(lái)模仿物理動(dòng)畫(huà)效果。通俗講就是點(diǎn)擊一個(gè)視圖或者窗口時(shí),讓視圖實(shí)現(xiàn)類(lèi)似彈簧效果,使動(dòng)畫(huà)不會(huì)顯得太突兀。我們通過(guò)Demo看下效果,可以看到下圖中的ImageView有一個(gè)彈跳的效果,就如同你把ImageView視圖放在彈簧上,然后拉拽這根彈簧時(shí)的效果。

準(zhǔn)備工作:
? ? build.gradle中加入SpringAnimation依賴(lài)
一.? ? dynamic_animation_main_activity.xml主頁(yè)布局
? ? 布局中主要需要視圖ImageView元素和Button按鈕,點(diǎn)擊Button按鈕后視圖ImageView實(shí)現(xiàn)SpringAnimation動(dòng)畫(huà)效果。
? ? 將Button控件放入到一個(gè)LinearLayout中,只是為了方便后期添加其他組件拓展應(yīng)用

二.? ? dynamicAnimationActivity.java代碼
? ? 1.? ? 通過(guò)findViewById方法關(guān)聯(lián)Button和ImageView視圖
? ? 2.? ? ?-????為Button控件添加點(diǎn)擊監(jiān)聽(tīng)事件
? ? ? ? ? ? -????當(dāng)點(diǎn)擊Button后,實(shí)例化SpringAnimation類(lèi),將spring_imageView(要實(shí)現(xiàn)動(dòng)畫(huà)的視圖)作為參數(shù)
? ? ? ? ? ? -????調(diào)用setupSpringAnimation()方法
? ? ? ? ? ? ? ? - 方法中實(shí)例化SpringForce類(lèi),自定義一些基本屬性Damping_Ratio,Stiffness和finalPosition
? ? ? ? ? ? ? ? - return 自定義的SpringForce類(lèi)
? ? ? ? ? ? -? ? SpringAnimation實(shí)例set自定義的SpringForce
? ? ? ? ? ? -? ? App主進(jìn)程中調(diào)用start()方法開(kāi)始動(dòng)畫(huà)

上述Demo基本上是沒(méi)有任何拓展的基本方法