前言:
项目开发中遇到关于PopupWindow适配性的问题,特别是在华为手机上显示就会出现类似的情况。
下面这段PopupWindow弹出时背景变暗效果的代码在网上随处可见:
private void setBackgroundAlpha(float bgAlpha){
WindowManager.LayoutParams layoutParams = MainActivity.this.getWindow().getAttributes();
layoutParams.alpha = bgAlpha;
MainActivity.this.getWindow().setAttributes(layoutParams);
}
解决方法:
在相关的PopupWindow方法中加入这个方法,问题完美解决。
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
private void setBackgroundAlpha(float bgAlpha){
WindowManager.LayoutParams layoutParams = MainActivity.this.getWindow().getAttributes()
layoutParams.alpha = bgAlpha
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
MainActivity.this.getWindow().setAttributes(layoutParams)
}
控件:自定义popwindow
机型:mi4
闪屏事件:拖动popupwindow中的listview时会导致闪屏
闪屏原因:一般而言, GPU 的帧速率应高于刷新率,才不会卡顿或掉帧。如果屏幕刷新率比帧速率还快,
屏幕会在两帧中显示同一个画面,这种断断续续情况持续发生时,用户将会很明显地感觉到动画的卡顿或者掉帧,
然后又恢复正常,我们常称之为闪屏、跳帧、延迟。
解决方案:在当前的Activity配置中添加android:hardwareAccelerated="true"
注意事项:如果把这句代码放到application中,那么会在三星部分手机上报错