【问题标题】:I can't get the same animation between activity and fragments我无法在活动和片段之间获得相同的动画
【发布时间】:2017-02-20 14:50:46
【问题描述】:

对于片段之间的动画,我使用带有翻译标签的文件夹动画,我有 4 个文件: 从左侧滑入

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <translate
        android:fromXDelta="-100%" android:toXDelta="0%"
        android:fromYDelta="0%" android:toYDelta="0%"
        android:duration="230"/>
</set>

向左滑出

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <translate
        android:fromXDelta="0%"
        android:toXDelta="-100%"
        android:fromYDelta="0%"
        android:toYDelta="0%"
        android:duration="230" />
</set>

从右侧滑入

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <translate
        android:fromXDelta="100%" android:toXDelta="0%"
        android:fromYDelta="0%" android:toYDelta="0%"
        android:duration="230"/>
</set>

向右滑动

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <translate
        android:fromXDelta="0%" android:toXDelta="100%"
        android:fromYDelta="0%" android:toYDelta="0%"
        android:duration="230" />
</set>

这在活动之间运作良好,前一个活动向左平移,新活动从右侧出现。

但是当我从活动中调用片段时,我无法获得相同的动画。 我没有使用支持片段,所以我需要像这样使用对象动画师的动画:

<objectAnimator
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="400"
    android:propertyName="x"
    android:valueFrom="2000"
    android:valueTo="0"
    android:valueType="floatType" />

我又得到了 4 个动画文件,我正在这样使用它:

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

但是对于这个动画,片段来自右侧并位于活动上方我希望活动转换到左侧 我尝试在调用片段之前为活动设置动画,但这不起作用:

findViewById(R.id.main_view).startAnimation( AnimationUtils.loadAnimation(MatchActivity.this, R.anim.slide_out_to_left));

当我调用新片段时如何翻译活动我希望在所有视图之间具有相同的过渡动画

【问题讨论】:

  • 有一个地方你应该执行setCustomAnimations()。如果您在add()replace() 之后设置该行,则不会尊重这些动画。
  • 我的片段动画效果很好我只是想知道当我使用对象动画师时如何通过翻译获得相同的动画。因为实际上当我调用片段动画时,片段位于活动上方,我希望上一个活动在左侧滑动

标签: android android-fragments animation android-activity fragment


【解决方案1】:

你需要像这样调用你的片段 getSupportFragmentManagr().beginTransaction().setCustomAnimations(R.anim.enter_from_left, R.anim.exit_to_right, R.anim.enter_from_left, R.anim.exit_to_right).replace(R.id.frame, new Settings_Fragment(), "YOUR_TARGET_FRAGMENT_TAG ").addToBackStack("4").commit();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多