2014-09-26 36 views
1

我正在做一些視圖的翻譯動畫。我試着兩種方式:通過XML和編程。通過編程獲得Y位置百分比

這是我如何定義被XML翻譯:

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate android:fromYDelta="0%" android:toYDelta="-70%" android:duration="1000"/> 
</set> 

這樣,它工作得很好,但我意識到,我需要更好的編程方式使用animationListener我可以定義操作來occurr當動畫結束時。

這是我如何做到這一點編程:定義fromYDeltatoYDelta值(圖像只是移動Y軸)時

slide_up = new TranslateAnimation(valuesContainer.getX(), 
      valuesContainer.getX(), 
      valuesContainer.getY(), 
      valuesContainer.getY() - 70); 
    slide_up.setDuration(1000); 
    slide_up.setAnimationListener(new AnimationListener() { 
     @Override 
     public void onAnimationStart(Animation animation) { 
      // TODO Auto-generated method stub 
     } 
     @Override 
     public void onAnimationRepeat(Animation animation) { 

     } 
     @Override 
     public void onAnimationEnd(Animation animation) { 
      //SOMETHING HAPPENS 
     } 
    }); 

的問題就來了。在xml中,我使用百分比(%)做它,它以我需要的方式工作,但我不知道如何以相同方式但以編程方式設置值。

回答

0

我已經找到了結合這兩種方法的解決方案。

我在這樣的xml中定義了動畫,叫做f.e. slide_up_anim.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate android:fromYDelta="0%" android:toYDelta="-70%" android:duration="1000"/> 
</set> 

然後,我設置AnimationListener這個動畫是這樣的:

slide_up = AnimationUtils.loadAnimation(getActivity(), R.anim.slide_up_anim); 

slide_up.setAnimationListener(new AnimationListener() { 
     @Override 
     public void onAnimationStart(Animation animation) { 

     } 
     @Override 
     public void onAnimationRepeat(Animation animation) { 

     } 
     @Override 
     public void onAnimationEnd(Animation animation) { 

     } 
    }); 

這樣我可以定義fromYDelta和toYDelta百分比,也聽動畫事件。