Eug*_*gen 18 mvp android android-transitions android-5.0-lollipop
假设我使用基于视图的方法来开发Android应用程序,例如以下文章中描述的内容:http://corner.squareup.com/2014/10/advocating-against-android-fragments.html
所以现在我有两个全屏视图.一个是可见的,包含一个图像网格.另一个是隐藏的,是待点击图像的详细视图.如果在单击网格中的图像时没有转换,则将隐藏网格视图并显示详细视图.现在,如果我想要一些类似于网格视图中的小图像和详细视图中的较大图像之间的共享元素过渡的内容.这样的事情可能吗?
.gif)
Geo*_*unt 20
是的,转换允许这样做.
在您的示例中,您的层次结构中已包含网格视图和详细视图.要使用转换,如果详细信息视图未在View层次结构中启动,则效果会更好.您需要交换两个视图.
有两种(类似的)方法可以做到这一点.第一种是在场景中使用网格视图.然后使用TransitionManager.go(detailScene,transition).
第二种方法是使用TransitionManager.beginDelayedTransition,然后交换网格布局的详细布局.
让共享视图有共同点非常重要.通常它是View ID或transitionName.即使视图是不同的实例,此链接也将告诉转换系统.
您要使用的转换是@android:transition/move.它结合了ChangBounds,ChangeTransform,ChangeImageTransform和ChangeClipBounds.您必须在共享元素视图中将其作为目标.看起来您需要进入和/或退出视图的另一个转换(淡入淡出?).
像这样的东西:
TransitionSet shared = ...
shared.addTarget("sharedName");
gridElement.setTransitionName("sharedName");
Fade fade = new Fade();
fade.excludeTarget("sharedName", true);
TransitionSet set = new TransitionSet();
set.addTransition(shared)
.addTransition(fade);
TransitionManager.go(detailScene, set);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8555 次 |
| 最近记录: |