【问题标题】:Ripple effect not occurring when also using makeSceneTransitionAnimation使用 makeSceneTransitionAnimation 时不会出现波纹效果
【发布时间】:2014-12-10 12:55:28
【问题描述】:

我有一个rippleDrawable,用作LinearLayout 的背景:

<LinearLayout
    android:id="@+id/card_layout"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_alignParentBottom="true"
    android:clickable="true"
    android:background="@drawable/ripple"
    android:orientation="vertical" >

我想在布局的单击上启动一个新活动。当我只是执行 startActivity() 时,涟漪效果很好 - 你可以看到大部分涟漪效果发生,然后显示新屏幕。

但是,如果我使用 ActivityOptionsCompat.makeSceneTransitionAnimation 启动 Activity,则在点击布局时不会出现涟漪效应。请注意,在这种情况下,长按仍然会显示波纹。

我在按钮上也试过这个,结果是一样的。

所以就像 makeSceneTransitionAnimation 发生得太快,或者覆盖了涟漪效应。我希望涟漪完成或至少在场景过渡动画发生之前看到其中的一些。我不确定这是否与渲染线程上的波纹和过渡竞争有关?

我尝试在被调用的活动上调用推迟输入转换。但这不起作用 - 被调用的活动仍然立即显示,然后过渡被推迟,直到您再次启动它。

有人知道我可能做错了什么吗?

我正在使用 API 21(无 AppCompat)。提前感谢您的帮助。

【问题讨论】:

  • 你有没有设法解决这个问题?
  • @ChristerNordvik 不,我还没有找到解决方案。
  • 我在使用 AppCompat 时遇到了同样的问题。

标签: android android-5.0-lollipop


【解决方案1】:

不是 100% 确定我正在回答您的问题,但我遇到了一个问题,这听起来与我开始新活动时未完成的涟漪效应相似,所以我最终使用了一个处理程序,但 OnClickListener 有延迟:

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
    @Override
    public void run() {
       startActivity(intent);
    }
}, 150);

【讨论】:

  • 谢谢 timothyjc。我尝试了 150 的延迟,但这通常会导致过渡不平滑,大多数情况下您可以清楚地看到 150 之后的停止。不过有趣的是,当我将延迟设置为 0 时,过渡更加平滑,而且我经常看到部分或全部波纹。没有处理程序,过渡很顺利,但我很少看到涟漪。
  • 我也有同样的问题
  • 这可行但不是最佳的。最好立即开始活动但延迟动画。这样我们就可以利用等待时间来构建活动,并且可以更顺利地完成以下动画。还没有找到它的实现,但我会继续寻找......
猜你喜欢
  • 2016-06-02
  • 1970-01-01
  • 1970-01-01
  • 2018-12-01
  • 1970-01-01
  • 2018-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多