【问题标题】:Android new fragment appears below old one during fragment animation在片段动画期间,Android 新片段出现在旧片段下方
【发布时间】:2017-04-12 20:21:11
【问题描述】:

我在片段之间使用动画:

从左侧滑入:

<?xml version="1.0" encoding="utf-8"?>
<set>
<objectAnimator
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="600"
    android:propertyName="x"
    android:valueFrom="2000"
    android:valueTo="0"
    android:valueType="floatType"
    android:fillAfter="true"/>
</set>

从右侧滑入:

<?xml version="1.0" encoding="utf-8"?>
<set>
    <objectAnimator
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="600"
        android:propertyName="x"
        android:valueFrom="0"
        android:valueTo="-400"
        android:valueType="floatType"/>
</set>

此动画将前一个片段向左移动,新片段从右侧移动。我将它与片段事务一起使用。

transaction.setCustomAnimations(R.animator.slide_in_from_left,R.animator.slide_in_from_right);

当新片段滑到旧片段下方时我遇到了麻烦,为了解决这个问题,我在我的新片段上放置了一个高度,但我想要一个低于 21 的 API 的解决方案。 是否可以强制新片段高于旧片段

【问题讨论】:

    标签: android android-fragments android-elevation


    【解决方案1】:

    如果我理解正确,您在新片段上使用了android:elevation 属性(如果没有,请随意写下您的方法)——尽管它只适用于 Lollipop 及更高版本,正如您所提到的。但是,根据下面的链接主题,有几种方法可以在棒棒糖之前的设备上实现提升效果。

    "android:elevation=" doesn't work on devices pre-Lollipop with compile API21


    第一次评论后编辑:好的,很抱歉误解了您的问题... :)

    当我在该主题中进行一些搜索时,有一些有趣的示例,其中新片段与旧片段重叠,它们在下面列出。前 2 个示例需要一些特殊的布局设计和现有视图类的扩展,但也许其中一个就是您正在寻找的。​​p>

    此外(没有源代码)我可以建议您另外两种方法:

    • 您搜索的动画可以通过使用完美实现 用于显示 UI 和 overridePendingTransition()startActivity(intent) 之后的活动内的方法。但是,如果 你真的很想使用片段,也许你会跳过这个。
    • 最后一个(也是我认为最简单的)解决方案可能是通过添加一个新片段来重叠旧片段 片段而不是替换它。但是我认为这是最糟糕的 由于可能存在内存使用问题的解决方案(较旧 碎片不会被移除,只是被较新的碎片淡化)。

    希望我能帮上忙……:)

    【讨论】:

    • 我正在放置一个海拔高度,因为这是我在动画期间将新片段置于前一个片段之上的唯一方法。您向我展示的链接解释了如何重现阴影效果以及立面的外观,但这并不能解决我的问题
    • elevation 工作正常,但是当我使用backstack() 时,情况相反。所以我在交易前动态改变海拔高度。
    【解决方案2】:

    如果fragment出现在另一个下面是因为fragment容器不是好的容器类型

    你需要把fragment放在FrameLayout或者RelativeLayout里面,如果你想测试你可以把你的fragment布局代码粘贴到fragment容器的底部进行预览

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      相关资源
      最近更新 更多