android動畫水波
① 求Android 楓葉水波紋動態壁紙
首先要看你的手機支持不支持動態壁紙
② 如何在Android中自定義動畫
在Android中自定義動畫按照下面的步驟。
1、首先定義一個動畫,如下圖:
③ android開發中如何實現播放聲音時根據聲音大小做一個動態能量條
音量變化是比較頻繁的,通常是低於50毫秒。
所以你取得的音量大小是一條密集的點組成的曲線,要動態的展示這些密集的點,有兩種不同的實現方式,效果也不一致。
把這些點分成不同的區間。比如5個區間,每個區間對應一張圖片(也可以是動態的圖片AnimationDrawable),取得音量後判斷是哪個區間,設置對應的圖片。打個比方,如果是用格數來表示,就有五張圖片表示1-5格,音量最大值可以通過mediaRecorder.getMaxAmplitude()獲得。分成五個區間,每個區間顯示對應格數的圖片。當然,這個圖片也可以是類似水波在盪漾的動態圖片,用AnimationDrawable來播放。
平滑的處理這些點。把上一次的位置與這一次的位置做一個動畫,如果採集頻率為50毫秒,動畫的ration就是50ms。比如是做一個圓圈,隨著音量大小變化,那麼可以參照如下的屬性動畫:
PropertyValuesHolder pvhX = PropertyValuesHolder.ofFloat("scaleX", lastScale, scale);
PropertyValuesHolder pvhY = PropertyValuesHolder.ofFloat("scaleY", lastScale, scale);
valumeAnimator = ObjectAnimator.ofPropertyValuesHolder(speakVolumeImageV, pvhX, pvhY);
valumeAnimator.setDuration(MIN_TIME).start();
通過放大和縮小speakVolumeImageV來展示當前音量。其中scale是此次的縮放比,lastScale是上次的縮放比。縮放比初始為1.0f,如果最大隻能放大到speakVolumeImageV的兩倍大,那麼可以這樣計算
Float scale = 1.0f;
if (volume == 0) {
scale = 1.0f;
} else {
scale = 1.0f + (volume / MAX_VOLUME * 1.0f);
}
④ 我想要在android程序中,出現一副動畫,怎麼做
在Android的FrameWork中,提供三種動畫的實現方式:逐幀(Frame)動畫、視圖動畫(View Animation)和屬性動畫(Property Animation)。
根據SDK中的描述,這三者的功能強大程度為:逐幀動畫<視圖動畫<屬性動畫。
一、逐幀動畫:
該動畫的方式就是將動畫的過程的每一張靜態圖片都收集起來,然後依次顯示這些圖片,利用人眼的「視覺停留」的原理,給用戶產生動畫的效果。
二、視圖動畫:
也稱為補間(Tween)動畫,根據這兩個定義可以看出該動畫方式的一些特徵:
1)該動畫方式只是針對於View對象,例如ImageView、Button等;
2)實現該動畫時,只需要給出兩個關鍵幀的相關屬性,Android會給你生給定成時間段內的兩關鍵幀的動畫漸變過程。
三、屬性動畫:
Android在3.0中引入了屬性動畫。和視圖動畫專注與視圖效果不同,它更專注於對象的屬性的變化,通過改變對象的屬性而實現動畫,不論該對象是否可見。例如:你使用視圖動畫將一個Button放大一倍,在界面上的效果可以實現,但是該Button的觸摸響應區域還是和原來的一樣,也就是說,視圖動畫並不是真正的將該Button放大一倍。
http://www.linuxidc.com/Linux/2013-01/78069.htm
⑤ Android 動畫詳解
android中酷炫的效果,都離不開動畫的支持。這里我們詳細介紹一下android中動畫的分類。android的中動畫分為幀動畫、補間動畫、屬性動畫。原理各不相同,實現的效果也大不相同。下面一一講解三種動畫。
幀動畫顧名思義就是通過順序一幀一幀播放圖片從而產生動畫效果,效果類似放電影。該動畫缺點比較明顯,就是如果圖片過大過多會導致OOM。幀動畫xml文件放置在drawable目錄下而非anim文件夾下。
補間動畫是通過對view進行旋轉、縮放、漸變、透明度變化,而達到的一種動畫效果。是一種漸進式動畫。並且可以通過組合以上四種操作,完成復雜的自定義動畫效果。缺點就是只是改變的view的展示狀態,但是不會改變view的位置。例如我們將一個button通過位移想左移動100dp,然後停留在終點。但是我們可以發現展示的位置button點擊無效果,不可以交互。而在button原始位置空白的地方點擊會觸發button的點擊效果。也就是button本質還是在原來位置,只是展示左移了100dp。
透明度動畫,通過改變view的透明度展示動畫。對應AlphaAnimation和<alpha>xml標簽
縮放動畫,通過修改view的大小展示動畫。對應ScaleAnimation類和<scale>xml表情
通過旋轉view展示動畫。對應RotateAnimation類和<rotate>xml標簽
平移動畫,更改view的展示位置展示動畫。對應TranslateAnimation類和<translate>xml表情
應用動畫xml配置
使用java類配置動畫,具體參數類同xml參數,建議使用xml配置動畫
屬性動畫本質是通過改變對象的屬性(例如:x,y等屬性),來實現動畫的,所以基本上是無所不能的,只要對象有這個屬性,就能實現動畫效果。屬性動畫是在api11的新特性,通過動態的改變view的屬性從而達到動畫效果。雖然可以使用nineoldandroid庫向下兼容,但是兼容本質是使用補間動畫完成,也就是說不會更改view的屬性,也不會更改view的位置。屬性動畫比較常用的類: ValueAnimator、ObjectAnimator、AnimationSet,其中ObjectAnimator是ValueAnimator的子類,而AnminationSet是動畫集合
動畫配置同樣可以使用xml配置,參數類似,這里不做詳細說明。
根據時間流逝百分比計算當前屬性改變百分比。同xml配置動畫中的 android:interpolator 屬性配置,常見有LinearInterpolator(線性差值器)、(加速減速差值器)
等。自定義需要實現 Interpolator 或者 TimeInterpolator 。Interpolator介面繼承TimeInterpolator。
根據當前屬性改變百分比計算改變後的屬性值。屬性動畫特有的屬性。自定義估值器需要實現 TypeEvaluator 介面。
可以對任意屬性做屬性動畫,屬性動畫要求動畫作用的對象提供該屬性的get()和set()方法。因為屬性動畫本質就是根據外界傳遞的對象屬性的初始值和終點值,然後根據估值器和差值器計算屬性值,不斷調用屬性的set方法,通過時間的推移所傳遞的值,越來越近終點值。
注意:
使用ValueAnimator通過監聽動畫過程,自己改變對象屬性完成動畫
⑥ 【Android 動畫】動畫詳解之補間動畫(一)
之前很早就想寫寫Android 的動畫,最近剛好有時間,大概聊一聊安卓動畫。
個人習慣將動畫分為:補間動畫(透明度、旋轉、位移、縮放)、幀動畫、和屬性動畫,這一篇,我們先說說補間動畫。
補間動畫這個詞出於flash,在兩個關鍵幀( 可以理解成動畫開始和結束 )中間需要做「補間動畫」,才能實現圖畫的運動;插入補間動畫後兩個關鍵幀之間的插補幀是由計算機自動運算而得到的。
實際上,Android 的補間動畫也是由我們指定動畫開始、動畫結束2個關鍵點,中間部分的動畫由系統完成
在正式開始之前,我們先說下Android 系統的坐標系,屏幕左上角為坐標原點,假如屏幕為1080*1980,那麼左上角為(0,0),右上角為(1080,0),左下角為(0,1980),右下角為(1080,1980)
所有動畫有以下公共屬性,注釋比較詳細,這里就不在詳述了
ScaleAnimation有3種構造方法
我們先看第一種,其起始比例為0,縮放比例為1.4,即放大到1.4倍
效果如下:
第二種,pivotx,pivotY分別代表起始位置的x、y方向的坐標,我們設置為(100,100)
效果如下:
第三種,pivotXType和pivotYType有2種模式,RELATIVE_TO_SELF(相對於自身)和RELATIVE_TO_PARENT(相對於父布局),如果設置這個,pivotx,pivotY的值就應該是0-1的浮點數,這里分別對應xml中的%(自身)和%p(父布局)
TranslateAnimation有2種構造方法,和ScaleAnimation類似
效果如下:
效果如下:
RELATIVE_TO_PARENT
效果如下:
RotateAnimation有3種構造方法
順時針720度
效果如下:
逆時針720度
效果如下:
效果如下:
再來RELATIVE_TO_PARENT
效果如下:
這是什麼鬼???怎麼跑到屏幕外面去了?
原來設置為RELATIVE_TO_PARENT時,旋轉中心x方向應該為該空間離左邊的邊距+父布局寬度/2,y方向同理,而此時,我們布局中紅色的Textview為居中狀態,所以旋轉中心為屏幕右下角。讓我們來看個例子
修改布局如下:
效果如下:
這時,我們看到旋轉中心x方向為離左邊100dp處
AlphaAnimation只有1種構造方法
其中fromAlpha為動畫開始的透明度;toAlpha為動畫結束的透明度
效果如下:
效果如下:
AnimationSet是一個動畫的集合,可以按照添加的順序播放動畫,讓我們來看個例子,通過組合動畫,實現旋轉漸入動畫
效果如下:
到這里,補間動畫就介紹完了
參考資料: 自定義控制項三部曲之動畫篇