2011-08-25 71 views
0

我想提出兩個與他們翻譯在android系統有問題的動畫和:的Android動畫定位問題

  1. 我試圖顯示圖像從一個側面進入和退出等,並重復幾分鐘。我可以看到一個移動的,但每次動畫開始 - 我看到一個毫秒的圖像閃爍。

這是我的佈局XML:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:background="@drawable/bg" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 

    <ImageView android:id="@+id/anim_image" android:src="@drawable/movimage" 
       android:layout_width="wrap_content" android:layout_height="wrap_content" 
       android:visibility="invisible" android:layout_marginTop="30dp" 
    /> 

</FrameLayout> 

這是我的動畫XML:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<rotate 
android:fromDegrees="40" android:toDegrees="-40" android:toYScale="0.0" 
android:pivotX="40%" android:pivotY="30%" android:duration="4000" /> 
    <set> 
     <translate 
      android:fromXDelta="200%p" android:toXDelta="-150%p" android:fromYDelta="20%" 
      android:toYDelta="10%" android:duration="4000" android:zAdjustment="bottom" /> 
    </set> 
</set> 

在我的Java類,我已經創建了每onTick調用countdowntimer: 圖像.startAnimation(阿尼姆);我試着聽動畫: anim.setAnimationListener(this);

並添加到onAnimationEnd: image.setVisibility(View.GONE);

但它沒有幫助我。 有誰知道我能做些什麼來解決它?

-

  1. 我試圖表現出「流星」的形象 - 我創建了一個小的PNG文件(* 30像素30像素)和IM試圖將它定位在屏幕的一個邊緣讓它移動到另一個並消失。但是我在動畫XML中編寫的每個代碼都沒有這樣做! 任何人都可以幫我正確寫出動畫嗎?

我寫道:翻譯 機器人:fromXDelta = 「100%p」 的機器人:toXDelta = 「 - 100%P」 機器人:fromYDelta = 「0%P」 機器人:toYDelta =「100%P 「機器人:時間=」 500"

,並沒有工作..


編輯:我已經找到了解決辦法:

我發現什麼是錯誤的。我用CountDownTimer編寫了一個代碼來重複使用,而不是使用動畫的重複選項。我已經將我的XML更改爲:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" android:startOffset="1000" 
> 
    <rotate 
      android:repeatCount="infinite" android:repeatMode="restart" android:fillAfter="false" 
      android:fromDegrees="40" android:toDegrees="-40" android:toYScale="0.0" 
      android:pivotX="40%" android:pivotY="30%" android:duration="4000" /> 
    <set> 
     <translate 
      android:repeatCount="infinite" android:repeatMode="restart" android:fillAfter="false" 
      android:fromXDelta="100%p" android:toXDelta="-100%p" android:fromYDelta="20%" 
      android:toYDelta="10%" android:duration="4000" android:zAdjustment="bottom" /> 
    </set> 
</set> 

現在它的工作方式沒有在屏幕上閃爍。 同樣的流星,我已經改變了XML這樣:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate 
      android:repeatCount="infinite" android:repeatMode="restart" android:fillAfter="false" 
      android:fromXDelta="100%p" android:toXDelta="-100%p" android:fromYDelta="0%p" 
      android:toYDelta="100%p" android:duration="2500" android:zAdjustment="bottom" /> 
    <set> 
    <alpha 
     android:repeatCount="infinite" android:repeatMode="restart" android:fillAfter="false" 
     android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="2500" /> 
    </set> 
</set> 

,現在,它完美的作品!

回答

1

我認爲imageView在動畫完成後回到原來的位置。您可以嘗試在翻譯動畫的xml中使用android:fillAfter="true|false"(嘗試其中之一)。或者如果您使用AnimationUtils加載動畫對象,請嘗試setFillAfter(boolean)

+1

好的,我找到了一個解決方案。我試圖寫我自己的循環顯示,而不是使用android的代碼。我刪除了計時器,並添加到動畫以下代碼:android:repeatCount =「infinite」android:repeatMode =「restart」android:fillAfter =「false」它的效果很好。 – Ofershap

+0

啊這很好。重複動畫並讓它重新開始。 – Varun

+0

我發現另一個問題 - onAnimationRepeat方法永遠不會被調用。我認爲它是一個android平臺的bug。 – Ofershap