我有一个 DialogFragment,它的视图中有一些布局的动画。当我关闭对话框时,我想执行一个动画,当动画结束时,执行关闭操作。
Step1:从我的活动中调用片段:
myDialog.show(getSupportFragmentManager(), "");
第 2 步:用户使用对话框完成任务后,按下按钮。该按钮调用动画,然后我希望对话框消失:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View layout = inflater.inflate(R.layout.my_layout, null);
layMain = (LinearLayout) layout.findViewById(R.id.layMain);
TextView btnCancel = (TextView) layout.findViewById(R.id.btnCancel);
btnCancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
final Animation anim = AnimationUtils.loadAnimation(getActivity(), R.anim.translate_to_bottom);
anim.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
dismiss();
}
});
layMain.startAnimation(anim);
}
});
.....
动画结束时,对话框被关闭,但我在 logcat 上收到此错误
E/ViewRootImpl(25507): 试图在绘图时破坏窗口!E/ViewRootImpl(25507):window=android.view.ViewRootImpl@427348e0,title=com.mypackage/com.mypackage.MyActivity
我怎样才能防止这种情况?
稍后编辑:如果我在没有任何动画的情况下使用它,一切正常,logcat 上不会显示错误。所以我想它必须与动画有关。
我正在使用的动画:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromYDelta="0%p"
android:interpolator="@android:anim/accelerate_interpolator"
android:toYDelta="80%p" />
</set>