android– 在共享元素活动过渡中动画嵌套视图时出现故障?

android– 在共享元素活动过渡中动画嵌套视图时出现故障?,第1张

概述我一直在搞乱Android5.0中的新API,并且一直试图弄清楚是否有可能在Activitytransition期间将ViewGroup和其中一个子项分别设置为共享元素.下面的屏幕截图给出了我想要实现的简化示例: 在第一个活动中,深灰色框是以屏幕为中心的ViewGroup,红色框是其子视图(我正在使用的布局XML

我一直在搞乱Android 5.0中的新API,并且一直试图弄清楚是否有可能在Activity transition期间将VIEwGroup和其中一个子项分别设置为共享元素.

下面的屏幕截图给出了我想要实现的简化示例:

 

在第一个活动中,深灰色框是以屏幕为中心的VIEwGroup,红色框是其子视图(我正在使用的布局XML代码可以在here中找到).当用户点击深灰色框时,深灰色框应逐渐向上扩展以填充第二个活动的背景.同时,红色框应逐渐缩放并重新定位在第二个活动的左上角.

活动&动画代码

我用来执行转换的Activity代码很简单:

/** FirstActivity.java */public class FirstActivity extends Activity implements VIEw.OnClickListener {    private VIEw mOuterBox, mInnerBox;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        getwindow().requestFeature(Window.FEATURE_ACTIVITY_TransitionS);        getwindow().setSharedElementExitTransition(new ChangeBounds());        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_first);        mOuterBox = findVIEwByID(R.ID.outer_Box);        mInnerBox = findVIEwByID(R.ID.inner_Box);        mOuterBox.setonClickListener(this);    }    @OverrIDe    public voID onClick(VIEw v) {        Pair<VIEw, String> outerBox = Pair.create(mOuterBox, mOuterBox.getTransitionname());        Pair<VIEw, String> innerBox = Pair.create(mInnerBox, mInnerBox.getTransitionname());        Bundle bundle = ActivityOptions.makeSceneTransitionAnimation(this, outerBox, innerBox).toBundle();        startActivity(new Intent(this, SecondActivity.class), bundle);    }}/** SecondActivity.java */public class SecondActivity extends Activity {    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        getwindow().requestFeature(Window.FEATURE_ACTIVITY_TransitionS);        getwindow().setSharedElementEnterTransition(new ChangeBounds());        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_second);    }}

问题

当我点击第一个活动中的深灰色框时,共享元素过渡开始,深灰色框很好地缩放以填充第二个活动的背景.但是,红色框似乎根本没有动画效果.一旦过渡开始,红色框突然调整大小并将其自身定位在第二个活动中的最终位置,然后灰色框甚至完成动画.

我的问题

是否可以将VIEwGroup及其一部分/全部子视图独立地设置为活动转换中的共享元素?如果是这样,我做错了什么,我该怎样做才能确保孩子的观点也是动画的呢?

如果您在跟踪我的描述时遇到问题,则此示例项目的完整源代码可在GitHub获得,并且可运行的APK可供下载here(您需要运行AndroID 5.0的物理设备或模拟器才能运行APK).

解决方法:

是的,您可以单独转换组及其内容.但是您刚刚发现了一个将在L MR1中修复的错误.

看来这在L中得不到很好的支持.我建议你在第二个Activity中创建共享元素兄弟:

<FrameLayout     xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent">    <VIEw        androID:layout_wIDth="match_parent"        androID:layout_height="match_parent"        androID:background="@color/dark_gray"        androID:Transitionname="outer_Box"/>    <relativeLayout        androID:ID="@+ID/outer_Box"        androID:layout_wIDth="match_parent"        androID:layout_height="match_parent">        <VIEw            androID:ID="@+ID/inner_Box"            androID:layout_wIDth="100dp"            androID:layout_height="100dp"            androID:layout_marginleft="50dp"            androID:layout_margintop="50dp"            androID:background="@color/red"            androID:Transitionname="inner_Box" />    </relativeLayout></FrameLayout>
总结

以上是内存溢出为你收集整理的android – 在共享元素活动过渡中动画嵌套视图时出现故障?全部内容,希望文章能够帮你解决android – 在共享元素活动过渡中动画嵌套视图时出现故障?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1098258.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存