android放大動畫
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);
}
}