2010-06-04 139 views
1

我的應用程序有一個小的網絡視圖,我想在頁面加載完成後進行動畫處理。我的代碼看起來像這樣:控制動畫速度

view.setVisibility(View.VISIBLE); 
TranslateAnimation anim=new TranslateAnimation(0.0f, 0.0f, 
            view.getLayoutParams().height, 0.0f); 
anim.setDuration(5); 
anim.setInterpolator(new LinearInterpolator()); 
view.startAnimation(anim); 

它動畫好,但我似乎無法控制速度。我已經將setDuration()的值設置爲5,500,5000,5000000 - 全部沒有可察覺的效果。

我還需要做些什麼來控制動畫持續時間?

順便說一句,我的基礎SDK是1.6。

回答

1

我使用XML方法爲佈局設置動畫。

translate.xml

<?xml version="1.0" encoding="utf-8"?> 
<set 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/accelerate_interpolator" > 
     <translate 
     android:fromYDelta="-100%" 
     android:toYDelta="0" 
     android:duration="500" />" 
     /> 
</set> 

控制動畫時間,你可以嘗試改變android:duration ="500"到您所需要的值。

layout_anim_controller.xml

<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" 
     android:animationOrder="reverse" 
     android:animation="@anim/translate" /> 

設置動畫的佈局

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    > 

    <WebView 
     android:id="@+id/webview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layoutAnimation="@anim/layout_anim_controller" 
    /> 

</LinearLayout> 

也許這有助於在正確的方向一點點。

+0

這確實有幫助,但我仍然無法使其工作,直到我停止在WebView上調用setVisibility。請在下面的答案中查看更多擴展的評論。 – deSelby 2010-06-05 13:44:23

0

這是我在測試中發現的。

  1. 這可能是也可能不是特定於WebViews。我的原始代碼是從一個爲LinearLayout設置動畫的例子中複製的。
  2. 如果您嘗試在WebView上使用setVisibility(View.GONE)和setVisibility(View.Visible),則設置動畫的持續時間不會產生影響。我可以使動畫正常工作的唯一方法是在WebView上禁用這些方法。
  3. 如果使用Java創建動畫,則無論使用setVisibility做什麼,設置動畫的持續時間都不會產生影響。再次,這可能只適用於WebViews。
  4. 我可以讓動畫在WebView上工作的唯一方法是消除對setVisibility的調用,並使用前面答案中primalpop建議的基於XML的動畫。

再次,YMMV和這可能只適用於WebViews。