我在我的片段之间使用动画:
从左侧滑入:
<?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解决方案。 是否可以强制新片段高于旧片段
答案 0 :(得分:0)
如果我理解正确,您在新片段上使用android:elevation
属性(如果没有,请随时写下您的方法) - 尽管它只适用于Lollipop及以上,正如您所提到的那样。但是,根据下面的链接主题,有几种方法可以实现对Lollipop前设备的提升效果。
"android:elevation=" doesn't work on devices pre-Lollipop with compile API21
第一次评论后编辑:好的,抱歉误解了你的问题......:)
当我在主题中稍微搜索一下时,有一些有趣的例子,其中一个新片段与旧片段重叠,它们列在下面。前两个示例需要一些特殊的布局设计和现有视图类的扩展,但也许其中一个是您正在寻找的。 p>
FrameLayout
来替换片段,它包含{{1}的片段} tag;在代码中你可以使用简单的过渡动画;你可以在主题的末尾找到源代码)<fragment>
视图类的扩展,其中包含用于实现动画的内置函数;源代码也在末尾提供主题)此外(没有源代码)我可以建议你两种方式:
RelativeLayout
之后活动内的overridePendingTransition()
方法。但是如果
你真的想用片段,也许你会跳过这个。我希望我能帮忙...... :)
答案 1 :(得分:0)
如果碎片出现在另一个碎片下面是因为碎片容器不是好的容器类型
您需要将片段放置在FrameLayout或RelativeLayout中,如果要进行测试,可以将片段布局代码粘贴到片段容器的底部以进行预览