一、问题说明
遇到一个很奇怪的问题,dialog 入场动画一直展示不出来,但是出场动画可以正常呈献。
我尝试了修改动画相关代码,也尝试调整 dialog 中的主题,但一直不行。
经过长时间排查和对比,终于找到解决方案。
二、问题解决
解决方案:只需要给 dialog 的宽度减少 2 个 px 即可解决。
主要代码:
private void show() {
Dialog bottomDialog = new Dialog(this, R.style.BottomDialog);
View contentView = LayoutInflater.from(this).inflate(R.layout.dialog_content_normal, null);
bottomDialog.setContentView(contentView);
ViewGroup.LayoutParams layoutParams = contentView.getLayoutParams();
layoutParams.width = getResources().getDisplayMetrics().widthPixels - 2;
contentView.setLayoutParams(layoutParams);
bottomDialog.getWindow().setGravity(Gravity.BOTTOM);
bottomDialog.setCanceledOnTouchOutside(true);
bottomDialog.getWindow().setWindowAnimations(R.style.BottomDialog_Animation);
bottomDialog.show();
}
三、问题分析
如果你的视图部分的宽度本身不是占满全屏的,不会存在不展示入场动画的问题,但如果宽度是占满全屏的话就会不展示入场动画。
靠,了解后真是想骂街!!!
Android 为什么要这样设计呢,视图宽度为屏幕宽度的时候干嘛就不给人展示入场动画呢?
我现在还没来得及从源码的角度去分析这个问题的原因,等有时间得好好看看 Android 为啥要这样搞!
四、遗留问题
- 为什么 dialog 宽度占满全屏时不展示入场动画?
|