Android Transitions(API 19) - 如何在转换之前在TextView上设置Text()?

时间:2015-04-15 18:22:47

标签: android android-transitions

我使用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不是很有经验,所以任何帮助都表示赞赏。

3 个答案:

答案 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()更改了文本。