我通常更喜欢使用类而不是XML。
现在这是创建场景的常用方法:
TransitionInflater inflater = TransitionInflater.from(this);
ViewGroup mSceneRoot = (ViewGroup) findViewById(R.id.sceneRoot);
Scene mScene2 = Scene.getSceneForLayout(mSceneRoot, R.layout.transition_event,this);
TransitionManager mTransitionManager = inflater.inflateTransitionManager(R.anim.transitions_mgr, mSceneRoot);
mTransitionManager.transitionTo(mScene2);
非常整洁。由于R.layout.transition_event
只是一个TextView,因此它会创建以下布局。 LinearLayout是根。
为了以编程方式实现目标,我们可以使用Scene(ViewGroup sceneRoot, ViewGroup layout)
构造函数而不是Scene.getSceneForLayout(..)
。
我的问题是ViewGroup layout
参数。由于我想只有一个textview,如果我创建一个FrameLayout并添加textview ,这将创建一个额外的视图,如上面的截图,这是不一样的。
我要么需要<merge/>
之类的东西,要么是编程式的,要么是&#34;转换&#34;将TextView导入ViewGroup。
到目前为止,这是我最好的尝试:
# I try to do the equivalent of .getSceneForLayout() here
ViewGroup vg = new ViewGroup(MainActivity.this) {
@Override
protected void onLayout(boolean b, int i, int i2, int i3, int i4) {
}
};
TextView tv = new TextView(MainActivity.this);
tv.setText("YOLO!");
vg.addView(tv,0);
mScene2 = new Scene(mSceneRoot, vg);
btw产生了什么:
不确定是否值得喧嚣,但我想弄明白。