2016-07-26 23 views
3

例如,XML動畫:如何使動畫編程

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
android:fillAfter="true"> 

<!-- Rotate --> 
<rotate 
    android:duration="500" 
    android:fromDegrees="30" 
    android:interpolator="@android:anim/linear_interpolator" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:repeatCount="4" 
    android:repeatMode="reverse" 
    android:toDegrees="0"/> 

<!--Move--> 
<translate 
    android:duration="1000" 
    android:fromXDelta="0%" 
    android:fromYDelta="150%" 
    android:interpolator="@android:anim/linear_interpolator" 
    android:toXDelta="0%" 
    android:toYDelta="0%"/> 

<!--Fade In--> 
<alpha 
    android:duration="2000" 
    android:fromAlpha="0.0" 
    android:interpolator="@android:anim/decelerate_interpolator" 
    android:toAlpha="1.0"/> 

</set> 

是否有可能通過Java代碼來創建這個?

+0

要回答你的問題,是的! :D – Razgriz

回答

2

你有沒有嘗試過這樣的:

// when getting anims 
Animation animRotate = AnimationUtils.loadAnimation(context, R.anim.rotate); 
Animation animMove = AnimationUtils.loadAnimation(context, R.anim.move); 
Animation animFadeIn = AnimationUtils.loadAnimation(context, R.anim.fade_in); 

如果你想這樣做編程:

我在我的項目中使用這種方式:

view.animate() 
      .scaleY(1) 
      //just wanted to show you possible methods you can add more 
      .rotationY() 
      .alpha() 
      .setStartDelay(100) 
      .rotationX() 
      .setDuration(200) 
      .setInterpolator(new DecelerateInterpolator()) 
      .setListener(new Animator.AnimatorListener() { 
       @Override 
       public void onAnimationStart(Animator animation) { 
       } 

       @Override 
       public void onAnimationEnd(Animator animation) { 

       } 

       @Override 
       public void onAnimationCancel(Animator animation) { 

       } 

       @Override 
       public void onAnimationRepeat(Animator animation) { 

       } 
      }).start(); 

也有一些其他的方法根據到您的XML:

// scale animation 
ScaleAnimation scaleanim = new ScaleAnimation(float fromX, float toX, float fromY, float toY); 
scaleanim.setDuration(500); 

// create translation animation 
TranslateAnimation translateanim = new TranslateAnimation(0, 0, 
     TranslateAnimation.ABSOLUTE, xTo - getLeft(), 0, 0, 
     TranslateAnimation.ABSOLUTE, yTo - getTop()); 
translateanim.setDuration(700); 

你可以使用RotateAnimation,AlphaAnimation等嘗試使用它們,如果你失敗或更具體的幫助,我會給你我現有的項目的代碼。

@Edit:樣品TranslateAnimation構造:

Animation animation = new TranslateAnimation(
float fromXDelta, float toXDelta, float fromYDelta, float toYDelta); 
animation.setDuration(1500); 
animation.setFillAfter(true); 
view.startAnimation(animation); 
+0

是的,但問題 - 如何程序設計? – Andreyua

+0

@Andreyua我編輯了我的答案。如果你有更多的問題可以告訴我,那麼我會提供幫助。 –

+0

謝謝,在哪裏放'android:fromYDelta =「150%」'? – Andreyua

1

您可以嘗試使用該Java函數

yourPicture.animate()的scaleX(0.3f).scaleY動畫您的照片( 0.3f).setDuration(2000);

有很多選項可以選擇動畫類型。在編寫yourPiture.animate()後,只需按Ctrl +空格鍵即可。爲更多可能的類型。 注意:yourPicture是你想要動畫的圖片的名稱