【关于适配】PopupWindow弹出时背景不变暗 或者 PopupWindow背景一闪一闪问题处理

前言: 
项目开发中遇到关于PopupWindow适配性的问题,特别是在华为手机上显示就会出现类似的情况。

下面这段PopupWindow弹出时背景变暗效果的代码在网上随处可见:

private void setBackgroundAlpha(float bgAlpha){  
       WindowManager.LayoutParams layoutParams = MainActivity.this.getWindow().getAttributes();  
       layoutParams.alpha = bgAlpha; //0.0-1.0  
       MainActivity.this.getWindow().setAttributes(layoutParams);  
}  
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

解决方法:

在相关的PopupWindow方法中加入这个方法,问题完美解决。

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);//多加这一句,问题就解决了!这句的官方文档解释是:让窗口背景后面的任何东西变暗 
 
 
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
private void setBackgroundAlpha(float bgAlpha){  
       WindowManager.LayoutParams layoutParams = MainActivity.this.getWindow().getAttributes();  
       layoutParams.alpha = bgAlpha; //0.0-1.0  

       getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

       MainActivity.this.getWindow().setAttributes(layoutParams);  
}  






 
 

控件:自定义popwindow

机型:mi4

闪屏事件:拖动popupwindow中的listview时会导致闪屏

闪屏原因:一般而言, GPU 的帧速率应高于刷新率,才不会卡顿或掉帧。如果屏幕刷新率比帧速率还快,  

屏幕会在两帧中显示同一个画面,这种断断续续情况持续发生时,用户将会很明显地感觉到动画的卡顿或者掉帧,

然后又恢复正常,我们常称之为闪屏、跳帧、延迟。

解决方案:在当前的Activity配置中添加android:hardwareAccelerated="true"

注意事项:如果把这句代码放到application中,那么会在三星部分手机上报错

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值