【问题标题】:Android Material design transitionsAndroid 材料设计过渡
【发布时间】:2014-09-19 17:28:15
【问题描述】:

我想按照 Google 的 Material design 中的说明复制过渡。 这是link for the preview,但基本上我关心的视频是那两个:

  1. http://material-design.storage.googleapis.com/videos/animations-meaningfultransitions-hierarchical_transitions_topLevel_large_xhdpi.webm
  2. http://material-design.storage.googleapis.com/videos/animation-meaningfultransitions-view_contact_large_xhdpi.webm

我的问题是 UI 的容器是什么?这是一个新的活动,它的 onCreate 每个元素都有动画,还是一个片段?

特别是在第二个示例中,第一个活动有一些运动,所以在 onClick 内部是否有一个动画也创建了第二个活动? (注意点击的名字也会移动,所以这不应该是一个新的活动)

换句话说,如果我想复制它,布局(+Activity、片段)应该是什么?

【问题讨论】:

  • 这也是我的问题!
  • 我也很想知道这是如何做到的,尤其是第一个动画,它有一个同样扩展的帧,它碰到边缘,然后只垂直扩展。我想将它与 Fragment 一起使用,但我怀疑在 Jelly Bean 和更早的时候这是不可能的。
  • 这些转换基本上是在场景中工作。场景不过是布局。因此,在一项活动中,您可以拥有任意数量的场景,具体取决于您的点击。看看你发给material-design.storage.googleapis.com/videos/…的这个视频,你看到的第一个布局是SCENE 1,当点击发生并打开其他布局时,就是SCENE 2。所以这两个场景所在的活动是相同的。这就是我对这个概念的理解。但是这个概念是新的,所以需要更多的研究
  • 最有趣的是,即使添加了过渡框架,您也无法创建像提供的示例 xD Phony 东西那样流畅的动画...

标签: android android-fragments material-design


【解决方案1】:

这个有过渡。

希望你能从那里提取过渡。

指南 - http://antonioleiva.com/material-design-everywhere/
代码-https://github.com/antoniolg/MaterialEverywhere

【讨论】:

    【解决方案2】:

    也许为时已晚,但我发现支持库包含 ActivityOptionsCompat: https://developer.android.com/reference/android/support/v4/app/package-summary.html
    它包含活动动画,如放大动画。希望这会有所帮助。

    【讨论】:

    • 我认为这是一个很好的答案。我正在研究makeCustomAnimation() 的可能性。会回来找你的
    • 这不能回答原来的问题?
    • ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(....) 然后startActivity(activity, intent, options.toBundle()) 就可以了
    【解决方案3】:

    第 1 步:考虑到您正在从一个活动转移到另一个活动。因此为按钮定义 onclick 方法

       button= (Button) findViewById(R.id.button);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(getApplicationContext(), Animation.class);
                   startActivity(intent, options.toBundle());
                        startActivity(intent);
                   overridePendingTransition  (R.anim.right_slide_in, R.anim.right_slide_out);
                }
            });
    

    第 2 步:现在定义启动时第二个 Activity 所需的动画

    anim.right_slide_in

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator">
        <translate
            android:fromXDelta="100%p"
            android:toXDelta="0"
            android:duration="700"
            />
    </set>
    

    【讨论】:

    • 在动画过程中导致前一个activity的布局变黑。
    【解决方案4】:

    我想它们可以用片段来实现,但我可能怀疑它们会是单独的活动。 Android L 引入了 Activity Transitions 作为动画框架的一部分。特别是,过渡可以包含共享 UI 元素,它们指示调用者和被调用活动中的“对应”视图之间的映射。然后将转换作为传递给startActivity()ActivityOptions 对象的一部分包含在内。

    我们的想法是在这些视频中实现视觉效果(即特定视图的位置或尺寸作为活动转换的一部分而改变)。当从显示所有图像的网格过渡到显示特定图像时,典型示例是 Gallery 应用程序。

    这个可以以前实现(请查看this answerthis DevBytes video by Chet Haase),但它相当复杂/hacky,因此它被作为标准资源包含在 Android L 中。

    在 L 预览文档中查看 Activity Transitions 的文档,或作为 android-L 示例的一部分包含的 ActivitySceneTransitionBasic(还请记住,您可以从 here 下载 L 参考预览以获取文档新方法)。

    【讨论】:

    • 这是否也适用于支持包中的 ActivityOptionsCompat?我试过了,没成功
    猜你喜欢
    • 2015-08-18
    • 1970-01-01
    • 2021-02-25
    • 2019-02-02
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多