在一个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>
答案 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)