Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 顺利展开和收缩视图_Android_User Interface_Android 5.0 Lollipop_Material Design - Fatal编程技术网

Android 顺利展开和收缩视图

Android 顺利展开和收缩视图,android,user-interface,android-5.0-lollipop,material-design,Android,User Interface,Android 5.0 Lollipop,Material Design,在材料设计视频中,视图扩展和收缩确实很顺利。早在旧的安卓API时代,我就试图实现这一点,但这确实代价高昂且速度缓慢 Android-L中是否有新的API来实现这些效果 具有效果的视频您可以使用android-L中的新动画API轻松创建此视频中看到的大部分效果 显示效果 可以设置剪切圆的动画以显示或隐藏视图。 这是您在视频中单击播放按钮时看到的内容。按钮展开并显示媒体播放器 显示隐藏视图的代码() 如果遵循上述链接,您可以找到隐藏视图的代码 活动进入和退出转换 可以指定视图进入或退出场景的方式 当

在材料设计视频中,视图扩展和收缩确实很顺利。早在旧的安卓API时代,我就试图实现这一点,但这确实代价高昂且速度缓慢

Android-L中是否有新的API来实现这些效果


具有效果的视频

您可以使用android-L中的新动画API轻松创建此视频中看到的大部分效果

显示效果
可以设置剪切圆的动画以显示或隐藏视图。 这是您在视频中单击播放按钮时看到的内容。按钮展开并显示媒体播放器

显示隐藏视图的代码()

如果遵循上述链接,您可以找到隐藏视图的代码

活动进入和退出转换
可以指定视图进入或退出场景的方式

当前支持的过渡是分解、滑动和淡入。还支持扩展android.transition.Visibility的任何转换

在整个视频中可以看到许多例子

分解退出转换的代码()

活动共享元素转换
您可以指定在两个活动之间共享的元素如何在它们之间转换

支持的转换包括:

  • changeBounds-设置目标视图布局边界更改的动画
  • changeClipBounds-为目标视图的剪辑边界中的更改设置动画
  • changeTransform-为目标视图的缩放和旋转更改设置动画
  • changeImageTransform-为图像视图的大小和比例类型更改设置动画
要进行共享元素转换,需要执行以下操作:()

  • 在样式中启用窗口内容转换
  • 在样式中指定共享元素过渡
  • 将转换定义为XML资源
  • 使用android:viewName属性为两个布局中的共享元素分配一个公共名称
  • 使用
    ActivityOptions.makeSceneTransitionAnimation
    方法

    // get the element that receives the click event
    final View imgContainerView = findViewById(R.id.img_container);
    
    // get the common element for the transition in this activity
    final View androidRobotView = findViewById(R.id.image_small);
    
    // define a click listener
    imgContainerView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(this, Activity2.class);
            // create the transition animation - the images in the layouts
            // of both activities are defined with android:viewName="robot"
            ActivityOptions options = ActivityOptions
                .makeSceneTransitionAnimation(this, androidRobotView, "robot");
            // start the new activity
            startActivity(intent, options.toBundle());
        }
    });
    
我还没有弄清楚的一个动画是同一活动中的展开/收缩动画,可以在日历应用程序中看到


我能说的唯一一件事是他们使用了仰角,因为我们可以看到阴影。我会尝试破解一下,看看是否可以重新创建它。

是否有新的API来实现这些效果?
是的,新的“L”API级别?!你的问题自相矛盾。我忘了澄清我是在Android LNice write up中要求API的。我想问的是,在链接的视频中,视图是如何扩展和收缩的,第二个26。不知怎的,当我打开链接时,视频从一开始就开始了,我没有注意到你链接到了一个特定的时间。这是我在回答末尾提到的日历动画。哦!我懂了!很明显,任何地方都没有记录。试图深入阅读文档,但没有:/moveImage已被更改为changeImageTransform。所有L至21 API更改可在此处获得:
// inside your activity
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);

// set an exit transition
getWindow().setExitTransition(new Explode());
// get the element that receives the click event
final View imgContainerView = findViewById(R.id.img_container);

// get the common element for the transition in this activity
final View androidRobotView = findViewById(R.id.image_small);

// define a click listener
imgContainerView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent = new Intent(this, Activity2.class);
        // create the transition animation - the images in the layouts
        // of both activities are defined with android:viewName="robot"
        ActivityOptions options = ActivityOptions
            .makeSceneTransitionAnimation(this, androidRobotView, "robot");
        // start the new activity
        startActivity(intent, options.toBundle());
    }
});