how*_*ttl 5 android android-animation android-fragments android-support-library
我正在使用最新版本的支持库,允许在运行Android <3.0版本的设备上使用Fragments.每当我想切换当前片段时,我都会使用以下代码:
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();
}
Run Code Online (Sandbox Code Playgroud)
以下是定义其中一个过渡动画的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>
Run Code Online (Sandbox Code Playgroud)
正如您在上面的XML中所看到的,动画的持续时间设置为500.根据开发人员文档,此处指定的单位是ms(时间的度量).
我通过测试注意到设备之间的动画持续时间不同.如果我在持续时间内指定ms值,为什么会这样呢?
以下是我测试过的设备和结果(主观):
HTC Legend :(低端手机,CPU速度慢,Android 2.3.3)动画流畅,持续时间与我想要的一样长.
三星Galaxy S :(中档CPU,Android 2.1)动画有点不稳定,比Legend更快
模拟器 :(在四核iMac,Android 4.0上运行)动画非常快,有时候太快,你甚至看不到它
基于此,似乎持续时间不是以ms为单位真正测量的,而是取决于CPU速度.有没有人注意到类似的结果?有没有办法设置它,以便动画速度在设备上是统一的,就像阅读文档后所期望的那样?
Android定义了3种整数资源
android.R.integer.config_shortAnimTime
android.R.integer.config_mediumAnimTime
android.R.integer.config_longAnimTime
Run Code Online (Sandbox Code Playgroud)
您可以在 XML 或 Java 代码中使用。
| 归档时间: |
|
| 查看次数: |
1259 次 |
| 最近记录: |