2011-08-12 187 views
3

我試圖設置一個簡單的動畫,在屏幕右上角拍攝一張圖像,將它移動到30%點,移動一圈,然後移回到邊緣。見下圖。然而,當前的劇本會做一些奇怪的事情,雖然它會在正確的地方結束,但在此之前幾乎沒有任何事情可以做到。另外,根據Android版本和屏幕大小,它可能會做更多的事情。任何幫助將非常感激。謝謝!動畫問題

enter image description here

幾個關鍵點。我希望開始時的左邊始終面向運動方向。我希望從左向右移動一圈,但如果不能完成,只要第一部分成立,我就不會設置它。

<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/linear_interpolator" 
    android:shareInterpolator="true"> 
    <set> 
     <translate 
      android:fromXDelta="0%p" android:toXDelta="0%p" 
      android:fromYDelta="00%p" android:toYDelta="20%p" 
      android:duration="001" android:startOffset="0"/> 
     <translate 
      android:fromXDelta="0%p" android:toXDelta="-80%p" 
      android:fromYDelta="00%p" android:toYDelta="0%p" 
      android:duration="2000" android:startOffset="1"/> 
    </set> 
    <set> 
     <rotate 
      android:fromDegrees="180" 
      android:toDegrees="0" 
      android:pivotY="20%p" 
      android:duration="1000" 
      android:startOffset="2000"/> 
     <translate 
      android:fromXDelta="0%p" android:toXDelta="70%p" 
      android:fromYDelta="00%p" android:toYDelta="0%p" 
      android:duration="100" 
      android:startOffset="3000"/> 
    </set> 
</set> 

回答

2

我在做這個使用的代碼新的android項目,在主xml佈局中有一個按鈕。有效。相對於視圖的位置,所有百分比均爲父級大小。

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

<set xmlns:android="http://schemas.android.com/apk/res/android" > 

<translate android:fromXDelta="0%p" android:toXDelta="-80%p" 
    android:fromYDelta="0%p" android:toYDelta="0%p" 
    android:duration="2000" /> 

<rotate android:fromDegrees="0" android:toDegrees="-180" 
     android:pivotX="-70%p" android:pivotY="10%p" android:duration="1000" 
     android:startOffset="2000" /> 

<translate 
    android:fromXDelta="0%p" android:toXDelta="80%p" 
    android:fromYDelta="0%p" android:toYDelta="0%p" android:duration="2000" 
    android:startOffset="3000" /> 

</set> 
+0

我以爲我曾嘗試過這種組合,但關於它的一些事情並不奏效......也許使用線性插值導致了一些問題。我會盡力獎賞賞金。謝謝您的幫助! – PearsonArtPhoto

+0

其實,只是在所有版本上檢查過它。它在2.1和更早的版本上工作得很好,它在2.2和更高版本中做了有趣的事情...具體地說,第一次翻譯的方向是錯誤的(儘管它確實在最後的正確位置)。不過,到目前爲止,這是對我所擁有的改進。 – PearsonArtPhoto

+0

你定位的是哪個版本? – Ronnie

0

我試着在您的繪圖中創建動畫。我在2個文件 拆分動畫left_down.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/linear_interpolator" 
    android:shareInterpolator="true"> 
    <set> 
     <translate 
      android:fromXDelta="0%p" android:toXDelta="-80%p" 
      android:fromYDelta="00%p" android:toYDelta="0%p" 
      android:duration="2000" android:startOffset="0"/> 
     <translate 
      android:fromXDelta="0%p" android:toXDelta="0%p" 
      android:fromYDelta="00%p" android:toYDelta="20%p" 
      android:duration="2000" android:startOffset="2000"/>   
    </set> 
</set> 

right.xml

<?xml version="1.0" encoding="utf-8"?> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromXDelta="-80%p" android:toXDelta="0%p" android:fromYDelta="20%p" 
    android:toYDelta="20%p" android:duration="2000" android:fillAfter="true"/> 

這是我在活動

image = (ImageView)findViewById(R.id.image); 

     anim = AnimationUtils.loadAnimation(this, R.anim.left_down); 
     goBack = AnimationUtils.loadAnimation(this, R.anim.right); 
     anim.setAnimationListener(new AnimationListener() {    
      @Override 
      public void onAnimationStart(Animation animation) {} 

      @Override 
      public void onAnimationRepeat(Animation animation) {} 

      @Override 
      public void onAnimationEnd(Animation animation) { 
       image.startAnimation(goBack);  
      } 
     }); 
image.startAnimation(anim); 
+0

我想我沒有畫的不夠好,但我非常希望有對象循環,使得它從面向左向右在平緩的動作,則依然面臨着另一個方向去了,感動在右邊。換句話說,總是面向運動的方向。將編輯我的問題來解釋更好。 – PearsonArtPhoto