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