Java Android上有两个级别的活动。无缝过渡

Java Android上有两个级别的活动。无缝过渡,java,android,android-activity,android-transitions,Java,Android,Android Activity,Android Transitions,该应用程序有3个活动:A、B和C。 “B”具有style=Theme.Dialog,因此它可以显示在“a”和“C”上方屏幕的一小部分中。 其想法是在顶部显示“B”,而“A”将被“C”取代,因此“A”和“C”之间的过渡对于用户来说是无缝的。 问题: 这是正确的方法吗(或者我应该使用PopupWindow等,而不是活动“B”) 启动活动“C”时,“B”被隐藏并再次显示(再次调用暂停/恢复),看起来“B”正在闪烁。有办法解决这个问题吗 插图: 初始状态。“A”启动,“B”在“A”之上启动 “A”已完成

该应用程序有3个活动:A、B和C。
“B”具有style=Theme.Dialog,因此它可以显示在“a”和“C”上方屏幕的一小部分中。
其想法是在顶部显示“B”,而“A”将被“C”取代,因此“A”和“C”之间的过渡对于用户来说是无缝的。

问题

  • 这是正确的方法吗(或者我应该使用PopupWindow等,而不是活动“B”)
  • 启动活动“C”时,“B”被隐藏并再次显示(再次调用暂停/恢复),看起来“B”正在闪烁。有办法解决这个问题吗
  • 插图

  • 初始状态。“A”启动,“B”在“A”之上启动
  • “A”已完成,“B”仍在顶部
  • “C”启动,“B”闪烁并被带到前面(因为
    launchMode=“singleInstance”

  • 当A和B是两种活动时,我认为你无法避免B的“眨眼”效应

    也许解决这个问题的办法是将a和C合并到同一个活动中。 管理状态以了解新活动是处于状态a还是状态C

    例如:

    boolean stateA = ...;
    if(stateA){
     setContentView(R.layout.a);
     //use code of A
     [...]
    }else{
     setContentView(R.layout.b);
     //use code of B
     [...]
    }
    

    对我来说,这似乎是一个更简单的解决方案。

    你能举个例子说明A和C包含什么吗?A-文件列表,C-图像编辑器(很重,已经作为一个单独的活动实现),B-编辑器的初始设置形式(这样用户可以在C在后台准备时花时间进行初始设置)。@RuslanSharifullin,它有用吗?