2

我正在使用 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 不是很有经验,所以感谢任何帮助。

4

3 回答 3

3

定义场景进入动作,然后调用 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);
于 2015-08-10T15:21:08.953 回答
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);
    }
});
于 2015-04-15T19:15:04.350 回答
0

您可以尝试通过初始化场景变量 scene one 并使用 enter() 设置初始场景来创建初始场景。

然后,您可以从场景 1 过渡到场景 2,即您的目标场景。除此之外,我还注意到从场景 1 到场景 2 的文本更改过程中存在一些滞后。为了解决这个问题,我使用了 TransitionListener 类来检测场景何时完成过渡。然后,我在转换后使用 setText() 更改了文本。

于 2015-06-15T13:58:48.927 回答