【发布时间】:2018-04-02 13:34:59
【问题描述】:
我正在将一个 ConstraintLayout 设置为关闭屏幕的动画,然后再返回屏幕。但是,在将 ConstraintLayout 动画化回视图后,子元素(EditTexts 和 Button)被冻结。
我相信这是因为布局只是展示了自身的形象,而实际的元素则在后面。如何让布局“重绘”?
这是一个问题的例子:
这是我的代码:
slide_out_left.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate android:duration="200" android:fromXDelta="0%" android:toXDelta="-100%"/>
</set>
slide_in_left.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate android:duration="200" android:fromXDelta="-100%" android:toXDelta="0%"/>
</set>
查看代码:
public void slideCreateFormOutToLeft() {
Animation slideOutLeft = AnimationUtils.loadAnimation(getActivityContext(), R.anim.slide_out_left);
slideOutLeft.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
createTaskViewFormContainer.setVisibility(View.INVISIBLE);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
createTaskViewFormContainer.startAnimation(slideOutLeft);
}
public void slideCreateFormInFromLeft() {
createTaskViewFormContainer.setVisibility(View.VISIBLE);
Animation slideInLeft = AnimationUtils.loadAnimation(getActivityContext(), R.anim.slide_in_left);
slideInLeft.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
createTaskViewFormContainer.startAnimation(slideInLeft);
}
【问题讨论】:
-
你能在你的屏幕上给出一个完整的代码吗?我在上面测试过你的代码,没问题。顺便说一句,我怀疑您在“记录消息”弹出屏幕上设置了 INVISIBLE 而不是 GONE。
-
真的吗?很想知道我做错了什么!我已将我的代码添加为要点,但这是一个很大的中间测试混乱。
标签: android android-layout user-interface android-animation