在from matplotlib import pyplot as plt
import numpy as np
import mpl_toolkits.mplot3d.axes3d as p3
from matplotlib import animation
import mpl_toolkits.mplot3d.art3d as art3d
%config InlineBackend.figure_format = 'svg'
%matplotlib notebook
import ipywidgets as widgets
from ipywidgets import HBox, VBox, interact, interactive, fixed,
interact_manual
from IPython.display import display
play = widgets.Play(
interval=10,
value= 0,
min=0,
max=100,
step=1,
description="Press play",
disabled=False
)
slider = widgets.IntSlider()
widgets.jslink((play, 'value'), (slider, 'value'))
widgets.HBox([play, slider])
display(play, slider)
fig = plt.figure()
ax = p3.Axes3D(fig)
x = np.linspace(-1,1,100)
y = np.linspace(-1,1,100)
ax.plot(x, y, x*y * slider.value, lw = '2')
plt.show()
中有AppCompatActivity
的片段(RecyclerView
)中,myFragment1
依此类推,因此,如果我单击某个项目,则{{1} }将显示并显示项目的详细信息。在此阶段,我想在两个具有共享元素的片段之间创建动画。
重现该行为的步骤:
viewholders
在(a)代码中,图像过渡是正确的,并且动画在共享元素之间完美地发生,但是我不需要这样做。
在(b)代码中,唯一的区别是myFragment2
被隐藏并添加了import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
[...]
public class AppActivity extends AppCompatActivity
myFragment1.setSharedElementReturnTransition(new MyNewTransition());
myFragment1.setSharedElementEnterTransition(new MyNewTransition());
[...]
a) getSupportFragmentManager().beginTransaction()
.addSharedElement(myImage, "mytransition")
.replace(R.id.recycler_view_container, myFragment2)
.commit();
b) getSupportFragmentManager().beginTransaction()
.addSharedElement(myImage, "mytransition")
.add(R.id.recycler_view_container, myFragment2)
.hide(myFragment1)
commit();
,在这种情况下,enter过渡和return过渡都被破坏了,并且没有动画发生。
我需要(b)代码,因为“替换”-片段将破坏myFragment1
,而重建它是一个繁重的过程。
我认为这是androidx库的错误
编辑:
我基于Bryan Herbst的演示构建了一个示例:
FragmentTransitionSample,并重新适应了androidx,here是源。
答案 0 :(得分:0)
尝试添加setReorderingAllowed(true)
例如:
getSupportFragmentManager().beginTransaction()
.setReorderingAllowed(true)
.addSharedElement(myImage, "mytransition")
.add(R.id.recycler_view_container, myFragment2)
.hide(myFragment1)
commit();