android動畫之補間動畫

2021-07-12 05:49:13 字數 4276 閱讀 8692

補間動畫(移動補間動畫,縮放補間動畫,旋轉補間動畫,透明補間動畫):

1.移動補間動畫(translateanimation):

指定移動的絕對位置(以自己的左上角為參照點):

translateanimation translateanimation = new translateanimation(0, 0, 0, 500);

translateanimation.setduration(5000);

imageview.startanimation(translateanimation);

2.指定移動的相對位置(相對父控制項):

translateanimation translateanimation = new translateanimation(

animation.relative_to_parent,

0.0f,

animation.relative_to_parent,

0.0f,

animation.relative_to_parent,

0.0f,

animation.relative_to_parent,

0.5f);

translateanimation.setfillafter(true);

translateanimation.setduration(5000);

imageview.startanimation(translateanimation);

3.指定移動的相對位置(相對自己)

translateanimation translateanimation = new translateanimation(

animation.relative_to_self,

0.0f,

animation.relative_to_self,

0.0f,

animation.relative_to_self,

0.0f,

animation.relative_to_self,

4.0f);

translateanimation.setfillafter(true);

translateanimation.setduration(5000);

imageview.startanimation(translateanimation);

4.在xml中定義動畫:

<?xml version="1.0" encoding="utf-8"?>

<?xml version="1.0" encoding="utf-8"?>

<?xml version="1.0" encoding="utf-8"?>

translateanimation translateanimation = (translateanimation) animationutils.loadanimation(this, r.anim.anim_translate);

imageview.startanimation(translateanimation);

2.縮放補間動畫:

以自己的左上角為圓心縮放:

scaleanimation scaleanimation = new scaleanimation(

1.0f,

1.5f, 

1.0f,

1.5f);

scaleanimation.setfillafter(true);

scaleanimation.setduration(5000);

imageview.startanimation(scaleanimation);

xml:

<?xml version="1.0" encoding="utf-8"?>

以自己的中心點為圓心進行縮放:

scaleanimation scaleanimation = new scaleanimation(

1.0f,

1.5f,

1.0f,

1.5f,

animation.relative_to_self,

0.5f,

animation.relative_to_self,

0.5f);

scaleanimation.setfillafter(true);

scaleanimation.setduration(5000);

imageview.startanimation(scaleanimation);

xml:

<?xml version="1.0" encoding="utf-8"?>

以父控制項為參照:

scaleanimation scaleanimation = new scaleanimation(

1.0f,

1.5f,

1.0f,

1.5f,

animation.relative_to_parent,

0.5f,

animation.relative_to_parent,

0.5f);

scaleanimation.setfillafter(true);

scaleanimation.setduration(5000);

imageview.startanimation(scaleanimation);

xml:

<?xml version="1.0" encoding="utf-8"?>

如果imageview在父控制項中間,上面兩種設定的效果並不一樣,後面這個中心點並不在父控制項中心,它是以imageview的左上角為參照,偏移父控制項寬高的一半,這時候,動畫的中心點並不在父控制項的中心

3.旋轉補間動畫

以左上角為原點旋**

rotateanimation rotateanimation =

new rotateanimation(

0,180);

rotateanimation.setfillafter(true);

rotateanimation.setduration(5000);

imageview.startanimation(rotateanimation);

以自己的中心為原點旋**

rotateanimation rotateanimation = 

new rotateanimation(

0,180,

animation.relative_to_self,

0.5f,

animation.relative_to_self,

0.5f);

rotateanimation.setfillafter(true);

rotateanimation.setduration(5000);

imageview.startanimation(rotateanimation);

4.透明補間動畫:

animation animation = new alphaanimation(1f,0.1f);

animation.setfillafter(true);

animation.setduration(5000);

imageview.startanimation(animation);

5.多個動畫同時進行:

animationset set = new animationset(false);

alphaanimation alphaanimation = new alphaanimation(1f,0.1f);

alphaanimation.setduration(5000);

set.addanimation(alphaanimation);

translateanimation translateanimation = new translateanimation(0,0,0,300);

translateanimation.setduration(5000);

set.addanimation(translateanimation);

set.setfillafter(true);

imageview.startanimation(set);

xml:

<?xml version="1.0" encoding="utf-8"?>

animationset animation = (animationset) animationutils.loadanimation(this, r.anim.anim_set);

animation.setfillafter(true);

imageview.startanimation(animation);

Android動畫 補間 Tween 動畫

android動畫的兩種方式,其中幀動畫上篇文章已經講了,這次主要講解的就是補間動畫,補間動畫就是動畫業務場景中常用的旋轉,平移,縮放,和漸變效果,幀動畫是通過輪播動畫實現動畫效果,補間動畫通過在兩個關鍵幀之間補充漸變的動畫效果來實現的,相對而言補間動畫的暫用的空間更小,補間動畫有兩種方式,一種是直...

動畫 補間動畫

translateanimation 平移動畫 1.1靜態實現 1.1.1 res anim在該資料夾中建立動畫的xml資源檔案 動畫資源檔案中設定xy方向上的距離時,可以設定畫素值,也可以設定百分比 translate xmlns android android fromxdelta 0 andr...

Android補間動畫 逐幀動畫

逐幀動畫 補間動畫補間動畫補間動畫 分為四種 1.透明度變化 2.旋轉 3.平移 4.放大縮小透明度變化 步驟 1.new alphaanimation fromalpha,toalpha 1.fromalpha 透明度的初始值 0.0f 1.0f之間 2.toalpha 結束時的透明度的值 0.0...