【问题标题】:Android Transitions (API 19) - How to setText() on TextView before transition?Android 转换 (API 19) - 如何在转换前在 TextView 上设置文本()?
【发布时间】:2015-04-15 18:22:47
【问题描述】:

我正在使用 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 不是很有经验,因此感谢您提供任何帮助。

【问题讨论】:

标签: android android-transitions


【解决方案1】:

定义场景进入动作,然后调用TransitionManager中的go()方法。这是代码sn-p

   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);

【讨论】:

    【解决方案2】:

    如果您尝试通过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);
        }
    });
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-19
        • 2014-01-18
        • 2012-01-21
        相关资源
        最近更新 更多