當前位置:首頁 » 安卓系統 » android放大動畫

android放大動畫

發布時間: 2022-08-10 01:13:18

A. Android中的幾種動畫

幀動畫:指通過指定每一幀的圖片和播放時間,有序的進行播放而形成動畫效果,比如想聽的律動條。

補間動畫:指通過指定View的初始狀態、變化時間、方式,通過一系列的演算法去進行圖形變換,從而形成動畫效果,主要有Alpha、Scale、Translate、Rotate四種效果。注意:只是在視圖層實現了動畫效果,並沒有真正改變View的屬性,比如滑動列表,改變標題欄的透明度。

屬性動畫:在Android3.0的時候才支持,通過不斷的改變View的屬性,不斷的重繪而形成動畫效果。相比於視圖動畫,View的屬性是真正改變了。比如view的旋轉,放大,縮小。

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

Android包含三種動畫:

ViewAnimation、 Drawable Animation、Property Animation。

ViewAnimation(Tween Animation補間動畫):


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

C. 安卓手機設置里有動畫縮放選項改成x0.5感覺快多了。要是把動畫關了會怎樣

全部關閉後手機切換速度變快,但顯得比較僵硬。

D. 安卓手機設置里有動畫縮放選項,默認是x1,覺得不流暢,改成x0.5感覺快多了。要是把動畫關了會怎樣

前三個動畫是調節每個應用和桌面滑動的過渡動畫如果改成0 你會發現反應速度快了 但沒動畫了 強制gpu 是運行2d的東西時 不用cpu而是用gpu

E. android 屬性動畫和tween動畫有什麼區別

android支持兩種動畫模式,tween
animation,frame
animation
View
Animation(Tween
Animation):補間動畫,給出兩個關鍵幀,通過一些演算法將給定屬性值在給定的時間內在兩個關鍵幀間漸變。
View
animation只能應用於View對象,而且只支持一部分屬性,這種實現方式可以使視圖組件移動、放大、縮小以及產生透明度的變化.
另一種Frame動畫,傳統的動畫方法,通過順序的播放排列好的圖片來實現,類似電影補間動畫和幀動畫。
補間動畫和Frame動畫的定義:
所謂補間動畫,是指通過指定View的初末狀態和變化時間、方式,對View的內容完成一系列的圖形變換來實現動畫效果。主要包括四種效果:Alpha、Scale、Translate和Rotate。
幀動畫就是Frame動畫,即指定每一幀的內容和停留時間,然後播放動畫。

F. 請問Android手機更改窗口動畫縮放,選擇:0.5X;過渡動縮放,選擇:0.5x;動畫程序時長調

前三個動畫是調節每個應用和桌面滑動的過渡動畫如果改成0 你會發現反應速度快了 但沒動畫了 強制gpu 是運行2d的東西時 不用cpu而是用gpu

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

1.View Animation(Tween Animation):補間動畫,給出兩個關鍵幀,通過一些演算法將給定屬性值在給定的時間內在兩個關鍵幀間漸變。
View animation只能應用於View對象,而且只支持一部分屬性,這種實現方式可以使視圖組件移動、放大、縮小以及產生透明度的變化.

2.Frame動畫,傳統的動畫方法,通過順序的播放排列好的圖片來實現,類似電影補間動畫和幀動畫。
補間動畫和Frame動畫的定義:
所謂補間動畫,是指通過指定View的初末狀態和變化時間、方式,對View的內容完成一系列的圖形變換來實現動畫效果。主要包括四種效果:Alpha、Scale、Translate和Rotate。
幀動畫就是Frame動畫,即指定每一幀的內容和停留時間,然後播放動畫。。

3.屬性動畫
只是一個動畫效果,組件其實還在原來的位置上,xy沒有改變
###位移:
第一個參數target指定要顯示動畫的組件
第二個參數propertyName指定要改變組件的哪個屬性
第三個參數values是可變參數,就是賦予屬性的新的值
傳入0,代表x起始坐標:當前x + 0
傳入100,代表x終點坐標:當前x + 100
//具有get、set方法的成員變數就稱為屬性
ObjectAnimator oa = ObjectAnimator.ofFloat(bt, "translationX", 0, 100) ;

4.四種基本的動畫 ,透明/伸縮/移動/旋轉。

(1)XML中

alpha 漸變透明度動畫效果

scale 漸變尺寸伸縮動畫效果
translate畫面轉換位置移動動畫效果
rotate畫面轉移旋轉動畫效果
(2) JavaCode中

AlphaAnimation漸變透明度動畫效果
ScaleAnimation漸變尺寸伸縮動畫效果
TranslateAnimation畫面轉換位置移動動畫效果
RotateAnimation畫面轉移旋轉動畫效果
(3)Android動畫模式
Animation主要有兩種動畫模式:
一種是tweened animation(漸變動畫)

一種是frame by frame(畫面轉換動畫)

Tween動畫,這種實現方式可以使視圖組件移動、放大、縮小以及產生透明度的變化;
Frame動畫,傳統的動畫方法,通過順序的播放排列好的圖片來實現,類似電影。

H. 安卓手機關於窗口動畫縮放,過渡動畫縮放,動畫程序時長對應的源文件和代碼是什麼啊

Android Activity(窗口)調用 overridePendingTransition(R.anim.left_out, R.anim.left_in);可以實現過渡動畫,其中R.anim.left_out是當前 Activity 退出的動畫,R.anim.left_in是新打開 Activity進入的動畫,至於實現縮放,只需要修改R.anim.left_out, R.anim.left_in對應的動畫實現方式,IDE 中點擊方法可以進入到源碼中。

I. android 不用XML,怎樣在代碼里用animation同時實現圖片的縮放和移動。

1.在Java Code定義動畫

AlphaAnimation

漸變透明度動畫效果

ScaleAnimation

漸變尺寸伸縮動畫效果

TranslateAnimation

畫面轉換位置移動動畫效果

RotateAnimation

畫面轉移旋轉動畫效果

//定義變數

private Animation myAnimation_Alpha;

private Animation myAnimation_Scale;

private Animation myAnimation_Translate;

private Animation myAnimation_Rotate;

myAnimation_Alpha=new AlphaAnimation(0.1f, 1.0f);

//第一個參數fromAlpha為 動畫開始時候透明度

//第二個參數toAlpha為 動畫結束時候透明度

myAnimation_Scale =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);

//第一個參數fromX為動畫起始時 X坐標上的伸縮尺寸

//第二個參數toX為動畫結束時 X坐標上的伸縮尺寸

//第三個參數fromY為動畫起始時Y坐標上的伸縮尺寸

//第四個參數toY為動畫結束時Y坐標上的伸縮尺寸

//第五個參數pivotXType為動畫在X軸相對於物件位置類型

//第六個參數pivotXValue為動畫相對於物件的X坐標的開始位置

//第七個參數pivotXType為動畫在Y軸相對於物件位置類型

//第八個參數pivotYValue為動畫相對於物件的Y坐標的開始位置

myAnimation_Translate=new TranslateAnimation(30.0f, -80.0f, 30.0f, 300.0f);

//第一個參數fromXDelta為動畫起始時 X坐標上的移動位置

//第二個參數toXDelta為動畫結束時 X坐標上的移動位置

//第三個參數fromYDelta為動畫起始時Y坐標上的移動位置

//第四個參數toYDelta為動畫結束時Y坐標上的移動位置

myAnimation_Rotate=new RotateAnimation(0.0f,350.0f,Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIV E_TO_SELF, 0.5f);

//第一個參數fromDegrees為動畫起始時的旋轉角度

//第二個參數toDegrees為動畫旋轉到的角度

//第三個參數pivotXType為動畫在X軸相對於物件位置類型

//第四個參數pivotXValue為動畫相對於物件的X坐標的開始位

//第五個參數pivotXType為動畫在Y軸相對於物件位置類型

//第六個參數pivotYValue為動畫相對於物件的Y坐標的開始位置

2.3自定義動畫

除了以上4類動畫外,在代碼中繼承android.view.animation.Animation類來實現自定義效果。通過重寫Animation的applyTransformation(float interpolatedTime, Transformation t)函數來實現自定義動畫效果。

在繪制動畫的過程中會反復的調用applyTransformation函數,每次調用參數interpolatedTime值都會變化,該參數從0漸 變為1,當該參數為1時表明動畫結束。通過參數Transformation 來獲取變換的矩陣(matrix),通過改變矩陣就可以實現各種復雜的效果。

自定義圖片旋轉效果動畫代碼。

class ViewAnimation extends Animation

{

int mCenterX;

int mCenterY;

Camera camera = new Camera();

public ViewAnimation()

{

}

@Override

public void initialize(int width, int height, int parentWidth,

int parentHeight)

{

super.initialize(width, height, parentWidth, parentHeight);

mCenterX = width/2;

mCenterY = height/2;

setDuration(2500);

setFillAfter(true);

// setRepeatCount(100);

setInterpolator(new LinearInterpolator());

}

@Override

protected void applyTransformation(float interpolatedTime,

Transformation t)

{

final Matrix matrix = t.getMatrix();

camera.save();

camera.translate(0.0f, 0.0f, (1300 - 1300.0f * interpolatedTime));

camera.rotateY(360 * interpolatedTime);

camera.getMatrix(matrix);

matrix.preTranslate(-mCenterX, -mCenterY);

matrix.postTranslate(mCenterX, mCenterY);

camera.restore();

}

}

camera.translate(0.0f, 0.0f, (1300 - 1300.0f * interpolatedTime))在第一次調用的時候interpolatedTime值為0,相當於把ImageView在Z軸後移1300像素, 然後逐步的往前移動到0,同時camera.rotateY(360 * interpolatedTime)函數又把ImageView沿Y軸翻轉360度

2.4動畫實現

在代碼的一個activity中,將需要動畫的控制項與已定義的動畫關聯,開啟動畫

private Animation mAnimationXXX = null;//生明動畫

ImageView mAnimImageX = null;//生明 ImageView控制項(或者其它需要有動畫的控制項)

mAnimImageX = (ImageView) this.findViewById(R.id.anim_imageX);//取得圖片資源

mAnimImageX.startAnimation(mAnimationXXX);//基於xml文件,開啟動畫

mAnimImageX.startAnimation(new ViewAnimation());//基於自定義控制項,開啟動畫。

2.5圖片旋轉Demo

public class AnimationDemo extends Activity {

/** Called when the activity is first created. */

ImageView mAnimImage;

private Animation mAnimationAlpha = null;

private Animation mAnimationScale = null;

private Animation mAnimationTranslate = null;

private Animation mAnimationRotate = null;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mAnimImage = (ImageView) this.findViewById(R.id.anim_image1);

mAnimationAlpha = AnimationUtils.loadAnimation(this,R.anim.alpha_animation);

mAnimationScale = AnimationUtils.loadAnimation(this,R.anim.scale_animation);

mAnimationTranslate = AnimationUtils.loadAnimation(this,R.anim.translate_animation);

mAnimationRotate = AnimationUtils.loadAnimation(this,R.anim.rotate_animation);

}

public boolean onKeyUp(int keyCode, KeyEvent event)

{

switch ( keyCode )

{

case KeyEvent.KEYCODE_1:

mAnimImage.startAnimation(mAnimationAlpha);

break;

case KeyEvent.KEYCODE_2:

mAnimImage.startAnimation(mAnimationScale);

break;

case KeyEvent.KEYCODE_3:

mAnimImage.startAnimation(mAnimationTranslate);

break;

case KeyEvent.KEYCODE_4:

mAnimImage.startAnimation( mAnimationRotate);

break;

case KeyEvent.KEYCODE_5:

mAnimImage.startAnimation(new ViewAnimation());

break;

}

return true;

}

public boolean onKeyDown(int keyCode, KeyEvent event)

{

if ( keyCode == KeyEvent.KEYCODE_BACK)

{

this.finish();

return true;

}

return super.onKeyDown(keyCode, event);

}

}

3 Frame動畫

Frame 動畫是順序播放事先做好的圖片。可以在XML Resource定義,也可以使AnimationDrawable中的API定義。

3.1Frame動畫實現

定義XML文件

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

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"

android:oneshot="false">

<item android:drawable="@drawable/a1" android:ration="500" />

<item android:drawable="@drawable/a2" android:ration="500" />

<item android:drawable="@drawable/a3" android:ration="500" />

<item android:drawable="@drawable/a4" android:ration="500" />

<item android:drawable="@drawable/a5" android:ration="500" />

<item android:drawable="@drawable/a6" android:ration="500" />

<item android:drawable="@drawable/a7" android:ration="500" />

<item android:drawable="@drawable/a8" android:ration="500" />

<item android:drawable="@drawable/a9" android:ration="500" />

<item android:drawable="@drawable/a10" android:ration="500" />

<item android:drawable="@drawable/a11" android:ration="500" />

<item android:drawable="@drawable/a12" android:ration="500" />

<item android:drawable="@drawable/a13" android:ration="500" />

<item android:drawable="@drawable/a14" android:ration="500" />

<item android:drawable="@drawable/a15" android:ration="500" />

</animation-list>

定義動畫類

public class GameView extends View

{

private AnimationDrawable frameAnimation = null;

Context mContext = null;

public GameView(Context context)

{

super(context);

mContext = context;

ImageView img = new ImageView(mContext);

img.setBackgroundResource(R.anim.frameanimation);

frameAnimation = (AnimationDrawable) img.getBackground();

frameAnimation.setOneShot( false );

this.setBackgroundDrawable(frameAnimation);

}

public void onDraw(Canvas canvas)

{

super.onDraw(canvas);

}

public boolean onKeyUp(int keyCode, KeyEvent event)

{

switch ( keyCode )

{

case KeyEvent.KEYCODE_DPAD_UP:

frameAnimation.start();

break;

}

return true;

}

}

開啟動畫

public class Activity01 extends Activity

{

private GameView mGameView;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

mGameView = new GameView(this);

setContentView(mGameView);

}

public boolean onKeyUp(int keyCode, KeyEvent event)

{

if ( mGameView == null )

{

return false;

}

mGameView.onKeyUp(keyCode,event);

return true;

}

public boolean onKeyDown(int keyCode, KeyEvent event)

{

if ( mGameView == null )

{

return false;

}

if ( keyCode == KeyEvent.KEYCODE_BACK)

{

this.finish();

return true;

}

return super.onKeyDown(keyCode, event);

}

}

熱點內容
陌陌登陸密碼是什麼 發布:2025-01-18 14:36:54 瀏覽:847
海龜編譯器代碼 發布:2025-01-18 14:16:51 瀏覽:33
大閘蟹網站源碼 發布:2025-01-18 14:12:19 瀏覽:104
電腦伺服器日期怎麼改 發布:2025-01-18 14:05:03 瀏覽:686
用什麼方法打開密碼箱呢 發布:2025-01-18 14:04:08 瀏覽:427
net編程模式 發布:2025-01-18 13:54:20 瀏覽:690
手機上傳播病毒 發布:2025-01-18 13:49:20 瀏覽:503
空調壓縮機電路 發布:2025-01-18 13:42:42 瀏覽:545
空間訪問的記錄恢復 發布:2025-01-18 13:26:19 瀏覽:999
雲伺服器mysql怎麼連接 發布:2025-01-18 13:26:08 瀏覽:648