首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android -片段事务未运行时的自定义动画

Android -片段事务未运行时的自定义动画
EN

Stack Overflow用户
提问于 2012-06-15 05:04:47
回答 5查看 56K关注 0票数 84

我使用的是带有支持包v4的Google API8(Android2.2)。

它不会给出任何错误或动画。

事务:

代码语言:javascript
复制
FragmentTransaction transaction = manager.beginTransaction();       
transaction.replace(R.id.content, myFragment);
transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
transaction.commit();

动画:

slide_in_left.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="700"
        android:fromXDelta="-100%"
        android:toXDelta="0%" >
    </translate>
</set>

slide_out_right.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="700"
        android:fromXDelta="0%"
        android:toXDelta="100%" >
    </translate>
</set>

有人知道这里发生了什么吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-06-20 03:48:57

在我设置动画之前,管理器正在堆叠我的事务,所以它堆叠了没有动画的事务(可悲,但这是真的),即使我在setCustomAnimations()之后提交事务,这种情况也会发生。

解决方案是首先设置动画:

代码语言:javascript
复制
FragmentTransaction transaction = manager.beginTransaction();       
transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
transaction.replace(R.id.content, myFragment);
transaction.commit();
票数 263
EN

Stack Overflow用户

发布于 2016-02-12 22:17:47

如上所述,单独的语句肯定会起作用。但是在这里,的技巧是在设置事务类型(即addreplace等)之前先执行setCustomAnimation,否则就不会这样做。因此,应用相同的逻辑,method chaining也可以工作。例如:

代码语言:javascript
复制
getSupportFragmentManager()
        .beginTransaction()
        .setCustomAnimations(R.anim.a_slide_up,
                             R.anim.a_slide_down,
                             R.anim.a_slide_up,
                             R.anim.a_slide_down)
        .add(R.id.root_layout, 
             MyFrag.newInstance())
        .addToBackStack("MyFrag")
        .commit();

把它放在这里,这样喜欢method chaining的人就会发现它很有帮助。干杯!

票数 25
EN

Stack Overflow用户

发布于 2017-10-09 23:36:45

把这个留在这里,因为这是最受欢迎的问题。我也有同样的问题,片段事务不是动画。罪魁祸首是在包含布局中将属性android:animateLayoutChanges设置为true

我希望它能帮助人们节省一些寻找解决方案的时间,因为在不同的文件中嵌套布局可能很难注意到。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11041325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档