窗口输入转换在android

时间:2019-01-28 16:52:15

标签: android android-animation

在一个Android应用中,我正在尝试实现windowEnterTransition

activity A中打开activity B,在activity B中,我有一个TextView,我想将其从屏幕顶部滑到屏幕中央 activity B打开时

问题

打开activity B时,TextView停留在其位置。

问题

我在做什么错,我该如何解决?

代码

活动B

public class SecondaryActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_secondary);

        setWindowTransition();
    }

    private void setWindowTransition() {
        Slide textSlideDown = new Slide(Gravity.TOP);
        textSlideDown.addTarget(R.id.helloText);
        textSlideDown.setDuration(1000);
        getWindow().setEnterTransition(textSlideDown);
    }
}

从活动A打开活动B的代码

Intent openSecondActivity = new Intent(MainActivity.this, SecondaryActivity.class);
ActivityOptions op = ActivityOptions.makeSceneTransitionAnimation(MainActivity.this);
startActivity(openSecondActivity, op.toBundle());

styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowContentTransitions">true</item>
</style>

2 个答案:

答案 0 :(得分:0)

我没用过幻灯片,但是我认为Gravity.Top中的Slide textSlideDown = new Slide(Gravity.TOP);会显示幻灯片的方向,而不是起点。尝试使用Gravity.Bottom,因为这是为了将视图从其所在位置移至其容器的底部。

Source

更新的答案: 确保在主题中启用了窗口内容转换。查看developer's guide中定义的步骤:

在您的清单中

<!-- enable window content transitions -->
<item name="android:windowActivityTransitions">true</item>

答案 1 :(得分:0)

您应该在设置过渡之前请求功能,我认为在Java中是这样的  getWindow()。requestFeature(Window.FEATURE_CONTENT_TRANSITIONS)