我正在使用最新版本的支持庫,以允許在運行版本爲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速度。有沒有人注意到類似的結果?有沒有一種方法可以設置它,以便在閱讀文檔後預期的動畫速度在各個設備之間保持一致?