我使用android的API19过渡动画一个TextView。我定义了一个我希望转换到的场景:
scene = Scene.getSceneForLayout(rootLayout, R.layout.my_scene, this);
我定义了我的过渡期:
myTransition = new ChangeBounds();
myTransition.setDuration(1000);
myTransition.setInterpolator(new BounceInterpolator());
我开始过渡:
TransitionManager.go(scene, myTransition);
只要我有android:text
硬编码,一切正常。以下是my_scene.xml
的样子:
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:id="@+id/textview1"
android:layout_width="100dp"
android:layout_height="100dp"
android:text="text1"/>
</merge>
具有相同ID的相同TextView位于activity_main.xml
中,但位于不同的位置。
当我尝试使用setText()
动态设置文本时,它不会更改文本。我对这个转换API不是很有经验,所以任何帮助都表示赞赏。
答案 0 :(得分:2)
定义场景输入操作,然后在TransitionManager中调用go()方法。这是代码段
scene = Scene.getSceneForLayout(rootLayout, R.layout.my_scene, this); scene.setEnterAction(new Runnable() {
@Override
public void run() {
TextView textView1 = (TextView)rootLayout.findViewById(R.id.textView1);
textView1.setText("Hello World");
}
}); TransitionManager.go(scene, myTransition);
答案 1 :(得分:0)
如果您尝试通过TextView
的事件队列延迟转换该怎么办?
final Scene scene = Scene.getSceneForLayout(rootLayout, R.layout.my_scene, this);
final ChangeBounds myTransition = new ChangeBounds();
myTransition.setDuration(1000);
myTransition.setInterpolator(new BounceInterpolator());
TextView tv;
tv.setText("Some text");
tv.post(new Runnable() {
@Override
public void run() {
TransitionManager.go(scene, myTransition);
}
});
答案 2 :(得分:0)
您可以通过初始化场景变量场景1并使用enter()设置初始场景来尝试初始场景。
然后,您可以从scene1转换为scene2,即目标场景。在此之上,我还注意到在从scene1到scene2的文本更改期间出现了一些延迟。为了抵消这种情况,我利用TransitionListener类来检测场景何时完成转换。然后,我在转换后使用setText()更改了文本。