当前位置: 首页 > 面试题库 >

Android-带有调用活动finish()的共享元素过渡

松钊
2023-03-14
问题内容

我正在努力使应用程序更具实质性,而我仅停留在如何实现一些共享元素转换上。我有一个活动A,该活动A开始另一个B,然后调用finish()以便将其从后堆栈中删除。就我而言,我想在两个活动之间共享一个元素,但是一旦将其从A传递到B,A就不再重要了。如果在startActivity(ctx,intent,bundle)之后不调用finish(),则退出/输入动画效果很好。但是,如果我确实打完,动画开始之前会有一个非常丑陋的闪烁。

有什么我要忽略的事情吗?或者只是无法做我想做的事情?


问题答案:

您可以在onStop函数中完成活动,如果只希望在从A过渡到B时发生这种情况,然后创建一个标志并在调用startActivity(ctx,intent,bundle)后进行设置:

@Override
public void onStop() {
    super.onStop();
    if(mShouldFinish)
         finish();
}

确保完成活动B后再调用finish()而不是finishAfterTranstion(),因为活动A不再存在

完成活动A后,如果您按回去,则B中的共享元素可能会挂在屏幕上。ActivityB.onEnterAnimationComplete为了避免这种情况,请将transitionName设置为null



 类似资料:
  • 我一直在尝试实现这个共享元素转换,并在单击转换时不断出现“java.lang.IllegalArgumentException:共享元素不能为null”错误。请帮忙。 这是下面给出的MainActive onCreate方法。请检查我的代码。 这是recyclerView的onClickListener。 图像的过渡名称相同。这里的bug修复在使用共享元素的活动转换中出现问题并不是问题所在。 我卡

  • 我正在尝试使用Glide图像加载库进行共享元素转换。我有一个具有数百个图像的RecyclerView,因此我想保存内存(如果可能的话),并使动画工作。 Glide创建了一个具有目标图像大小的绘图对象,因此共享元素转换不能很好地工作,因为最终图像具有不同的大小(但图像具有相同的url)。 如何使用Glide实现共享元素转换?是否可以同时保存内存和动画?

  • 我希望采用Glide库来代替通用图像加载器,但在共享元素转换方面遇到了问题。 在我的简单沙盒中,我使用UIL创建了以下过渡:https://dl.dropboxusercontent.com/u/97787025/device-2015-06-18-113333.mp4 非常简单,而且效果很好。但当我使用Glide时,它看起来不太好看:https://dl.dropboxusercontent.c

  • 问题内容: 我目前正在编写一些Android单元测试,虽然我已经按照自己想要的方式完成了大多数工作,但有一件事让我有些困惑。 我的测试活动中包含以下代码: 我试图弄清楚如何使用Instrumentation(或其他工具)来读取活动的结果,或者在活动完成后获得意图。有人可以帮忙吗? 问题答案: 您可以使用反射并直接从活动中获取值。

  • 我已经研究这个问题几个星期了,但我仍然无法解决这个问题。 我有一个CardView,它包含一个带有ImageView的线性布局。 没有那个半径共享元素过渡可以无缝工作。但是,当我将半径(app: cardCornerRadius="25dp")添加到CardView时,共享元素过渡看起来很难看,因为它首先删除半径,然后开始动画。 第一种方法:ObjectAnimator 我创建ObjectAnim