4

我正在使用最新版本的支持庫,以允許在運行版本爲Android < 3.0的設備上使用碎片。任何時候,我想改用我這樣做使用此代碼的當前片段:在XML定義的動畫中指定的持續時間是否真的以毫秒爲單位?

public void displayFragmentInMainView(Fragment f) { 
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 

    transaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, 
      android.R.anim.slide_in_left, android.R.anim.slide_out_right); 
    transaction.replace(R.id.fragment_holder, f); 

    transaction.commit(); 
} 

這裏是定義過渡動畫中的一個XML:

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate android:fromXDelta="-50%p" android:toXDelta="0" 
     android:duration="500"/> 
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" 
     android:duration="500" /> 
</set> 

正如你可以在上面的XML見,動畫的持續時間設置爲500.根據開發人員文檔,此處指定的單位以毫秒(度量時間)爲單位。

我注意到通過測試發現設備之間的動畫持續時間不同。爲什麼會出現這種情況,如果我指定了持續時間的ms值?

下面是我測試上的設備,並且將結果(主觀):

HTC圖例:(低端電話具有慢的CPU,機器人2.3.3)的動畫是平滑的,並持續正好和我想要的一樣長。

三星Galaxy S:(中檔CPU,Android 2.1系統)動畫是有點斷斷續續,去比對聯想

模擬器更快:(在四核運行的iMac電腦,Android 4.0版本)動畫速度非常快,有時如此之快,以至於你甚至沒有看到它

基於此看來,持續時間並非真正以ms爲單位進行測量,而是取決於CPU速度。有沒有人注意到類似的結果?有沒有一種方法可以設置它,以便在閱讀文檔後預期的動畫速度在各個設備之間保持一致?

回答

0

的Android定義了3個整數資源

android.R.integer.config_shortAnimTime 
android.R.integer.config_mediumAnimTime 
android.R.integer.config_longAnimTime 

,你可以在XML或Java代碼中使用。

相關問題