29

我想复制谷歌材料设计中解释的过渡。这是预览的链接,但基本上我关心的视频是这两个:

  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 内部是否有一个动画也创建了第二个活动?(注意点击的名字也会移动,所以这不应该是一个新的活动)

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

4

4 回答 4

8

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

于 2014-09-25T05:02:15.380 回答
5

这个有过渡。

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

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

于 2015-01-15T10:30:34.697 回答
4

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

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

可以在之前实现(请查看此答案Chet Haase 的此 DevBytes 视频),但它相当复杂/hacky,因此它被作为标准资源包含在 Android L 中。

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

于 2014-08-02T03:14:34.297 回答
0

第 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 步:现在定义启动时第二个活动所需的动画

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>
于 2016-09-04T04:42:33.420 回答