在ActionBar上绘制的Alpha动画会留下痕迹

时间:2014-01-29 12:13:53

标签: android android-actionbar android-animation

上下文:我有一个活动ItemDetailActivity和两个片段,ItemDetailFrontFragmentItemDetailBackFragment。这两个片段被托管在ItemDetailActivity中,就像卡片的前面和后面一样(想想普通卡片组),我在它们之间切换,以便用户在后面看到更多信息。卡。我还有片段交易附加的动画:前进,后进,前进,后退;并使用它们:

 getFragmentManager()
            .beginTransaction().setCustomAnimations(
                    R.animator.card_flip_back_in, R.animator.card_flip_front_out,
                    R.animator.card_flip_front_in, R.animator.card_flip_back_out)

作为动画的一个例子,这里是card_flip_front_out

<set xmlns:android="http://schemas.android.com/apk/res/android">

<objectAnimator
        android:valueFrom="0"
        android:valueTo="-180"
        android:propertyName="rotationY"
        android:interpolator="@android:interpolator/accelerate_decelerate"
        android:duration="@integer/card_flip_time_full"/>

<objectAnimator
        android:valueFrom="1.0"
        android:valueTo="0.0"
        android:propertyName="alpha"
        android:duration="@integer/card_flip_time_half"/>

<objectAnimator
        android:valueFrom="1.0"
        android:valueTo="0.8"
        android:valueType="floatType"
        android:propertyName="scaleY"
        android:duration="@integer/card_flip_time_quarter"/>

<objectAnimator
        android:valueFrom="1.0"
        android:valueTo="0.6"
        android:valueType="floatType"
        android:propertyName="scaleX"
        android:duration="@integer/card_flip_time_quarter"/>

问题:除了视觉故障外,上述实施的每个部分都能按计划完美运行。当卡片的顶部旋转到ActionBar以上时,该片段的布局轨迹仍然会在ActionBar的顶部绘制。例如,如果在该片段中我有一个红色ImageView并且其中一部分在ActionBar之上旋转,那么它上面仍然存在红色轨迹。

我添加alpha动画时遇到了这个问题。如果我从集合中删除它,则此问题消失。不幸的是,我需要alpha动画,所以我无法删除它。

我尝试将ActionBar设置为叠加层,然后在布局中添加填充以将其推送到正确的位置,但这并没有改变任何内容。动画仍然在ActionBar

之上绘制

1 个答案:

答案 0 :(得分:0)

由于此问题仍然存在,我建议稍微更改动画,以免与ActionBar重叠。例如,调整要为其设置动画的内容的大小,以便在ActionBar下移动。这就是我最终所做的,它不仅解决了问题,而且看起来更加清晰。

我还建议您使用新的Support Lib v21和工具栏API进行尝试,并检查他们是否设法通过这两个更新解决了这个问题。可能会工作,可能无法正常工作。无论如何都值得一试。