當前位置:首頁 » 安卓系統 » android的補間動畫

android的補間動畫

發布時間: 2025-02-04 23:03:42

A. 【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是一個動畫的集合,可以按照添加的順序播放動畫,讓我們來看個例子,通過組合動畫,實現旋轉漸入動畫

效果如下:

到這里,補間動畫就介紹完了

參考資料: 自定義控制項三部曲之動畫篇

B. Android 中的動畫有哪幾類,它們的特點和區別是什麼

Android包含三種動畫:

ViewAnimation、 Drawable Animation、Property Animation。

ViewAnimation(Tween Animation補間動畫):


動畫的對象除了傳統的View對象,還可以是Object對象,動畫之後,Object對象的屬性值被實實在在的改變了。Property animation能夠通過改變View對象的實際屬性來實現View動畫。任何時候View屬性的改變,View能自動調用invalidate()來刷新。

C. android 補間動畫怎麼取消

9.1.4 cancel方法:取消動畫
【功能說明】該方法用於取消一個動畫的執行。該方法是取得一個正在執行中的動畫的主要方法。cancel方法和startNow方法結合可以實現對動畫執行過程的控制。需要注意的是,通過cancel方法取消的動畫,必須使用reset方法或者setAnimation方法重新設置,才可以再次執行動畫。
【基本語法】public void cancel ()
【實例演示】下面通過代碼來演示如何取消動畫效果執行。
public class firstActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { //重載onCreate方法 super.onCreate(savedInstanceState); setContentView(R.layout.main); final ImageView image=(ImageView)findViewById(R.id.imageView1); //ImageView對象 Button btn1=(Button)findViewById(R.id.button1); //按鈕對象 Button btn2=(Button)findViewById(R.id.button2); final Animation translateAnimation=new TranslateAnimation(0,200,0,200);//移動動畫效果 btn1.setOnClickListener(new View.OnClickListener() { //設置監聽器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.setDuration(3000); //設置動畫持續時間 image.setAnimation(translateAnimation); //設置動畫效果 translateAnimation.startNow(); //啟動動畫 } }); btn2.setOnClickListener(new View.OnClickListener() { //設置監聽器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.cancel(); //取消動畫執行 } }); } }

在這段代碼中,首先初始化了一個移動的動畫效果translateAnimation。然後,在第一個按鈕監聽器中,通過setDuration方法設置動畫持續時間,並為image對象設置動畫效果,最後使用startNow方法啟動動畫效果。在第二個按鈕監聽器中,調用cancel方法取消動畫執行。讀者執行這段代碼,可以在手機屏幕上看到如圖9.2所示的顯示效果。當點擊"執行動畫"按鈕時,圖片開始移動;當點擊"停止動畫"按鈕時,動畫被取消,重新返回起始位置。

D. android屬性動畫為什麼能改變屬性

Android之前的補間動畫機制其實還算是比較健全的,在android.view.animation包下面有好多的類可以供我們操作,來完成一系列的動畫效果,比如說對View進行移動、縮放、旋轉和淡入淡出,並且我們還可以藉助AnimationSet來將這些動畫效果組合起來使用,除此之外還可以通過配置Interpolator來控制動畫的播放速度等等等等。那麼這里大家可能要產生疑問了,既然之前的動畫機制已經這么健全了,為什麼還要引入屬性動畫呢?

  1. 其實上面所謂的健全都是相對的,如果你的需求中只需要對View進行移動、縮放、旋轉和淡入淡出操作,那麼補間動畫確實已經足夠健全了。但是很顯然,這些功能是不足以覆蓋所有的場景的,一旦我們的需求超出了移動、縮放、旋轉和淡入淡出這四種對View的操作,那麼補間動畫就不能再幫我們忙了,也就是說它在功能和可擴展方面都有相當大的局限性,那麼下面我們就來看看補間動畫所不能勝任的場景。

  2. 注意上面我在介紹補間動畫的時候都有使用「對View進行操作」這樣的描述,沒錯,補間動畫是只能夠作用在View上的。也就是說,我們可以對一個Button、TextView、甚至是LinearLayout、或者其它任何繼承自View的組件進行動畫操作,但是如果我們想要對一個非View的對象進行動畫操作,抱歉,補間動畫就幫不上忙了。可能有的朋友會感到不能理解,我怎麼會需要對一個非View的對象進行動畫操作呢?這里我舉一個簡單的例子,比如說我們有一個自定義的View,在這個View當中有一個Point對象用於管理坐標,然後在onDraw()方法當中就是根據這個Point對象的坐標值來進行繪制的。也就是說,如果我們可以對Point對象進行動畫操作,那麼整個自定義View的動畫效果就有了。顯然,補間動畫是不具備這個功能的,這是它的第一個缺陷。

熱點內容
雅馬哈天劍哪個配置好 發布:2025-02-05 02:00:35 瀏覽:170
我的世界國際服推薦118伺服器 發布:2025-02-05 01:50:48 瀏覽:46
普通電腦做伺服器怎麼操作 發布:2025-02-05 01:46:22 瀏覽:628
原神為什麼同伺服器加不起好友 發布:2025-02-05 01:41:03 瀏覽:337
android連接列印機 發布:2025-02-05 01:40:09 瀏覽:959
外國電腦代理伺服器地址埠 發布:2025-02-05 01:38:30 瀏覽:387
德意龍滑鼠宏怎麼配置 發布:2025-02-05 01:34:13 瀏覽:318
腳本程序功能 發布:2025-02-05 01:32:13 瀏覽:894
java棧存儲 發布:2025-02-05 01:30:03 瀏覽:987
三江主機的原始密碼多少 發布:2025-02-05 01:15:38 瀏覽:795