popupwindow 全屏遮罩并解决SDK>21窗口最上方状态栏无法遮罩
来源:互联网 发布:淘宝商品色差严重 编辑:程序博客网 时间:2024/04/28 21:19
sdk 版本小于21时,弹出的popupwindow时, 窗口最上方状态栏无法遮罩。
修复无法遮罩代码如下
import android.app.Activity;import android.content.Context;import android.os.Handler;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.animation.Animation;import android.view.animation.AnimationUtils;import android.view.animation.LinearInterpolator;import android.widget.PopupWindow;import android.widget.TextView;import com.blankj.utilcode.utils.ScreenUtils;/** * <b>类名称:</b> WaitScreen <br/> * <b>类描述:</b> 等待界面<br/> * <b>创建人:</b> Lincoln <br/> * <b>修改人:</b> Lincoln <br/> * <b>修改时间:</b> 16-9-28 下午5:35<br/> * <b>修改备注:</b> <br/> * * @version 1.0.0 <br/> */public class WaitScreen { private PopupWindow popupWindow; private Context context; private View view; private final View progress; private final View wait; private final TextView messageView; public WaitScreen(Activity context) { this.context = context; view = LayoutInflater.from(context).inflate(R.layout.weight_wait_screen , null); popupWindow = new PopupWindow(view, ScreenUtils.getScreenWidth(context), ScreenUtils.getScreenHeight(context)); //sdk > 21 解决 标题栏没有办法遮罩的问题 popupWindow.setClippingEnabled(false); progress = view.findViewById(R.id.progress); wait = view.findViewById(R.id.wait); messageView = (TextView) view.findViewById(R.id.message); } /** * 弹出等待提示框 */ public PopupWindow show() { //显示在界面0,0位置上 popupWindow.showAtLocation(view, Gravity.NO_GRAVITY,0,0); Animation rotateAnim = AnimationUtils.loadAnimation(context, R.anim.rotate_progress); LinearInterpolator lin = new LinearInterpolator(); rotateAnim.setInterpolator(lin); progress.startAnimation(rotateAnim); return popupWindow; } /** * 弹出等待提示框 */ public PopupWindow show(String message) { popupWindow.showAsDropDown(view); Animation rotateAnim = AnimationUtils.loadAnimation(context, R.anim.rotate_progress); LinearInterpolator lin = new LinearInterpolator(); rotateAnim.setInterpolator(lin); progress.startAnimation(rotateAnim); messageView.setText(message); return popupWindow; } /** * 以动画的方式关闭等待弹屏 */ public void close(OnAnimationEnd onAnimationEnd) { if (popupWindow != null && popupWindow.isShowing()) { popupWindow.setFocusable(false); Animation alphaAnim = AnimationUtils.loadAnimation(context, R.anim.alpha_hide_progress); LinearInterpolator lin = new LinearInterpolator(); alphaAnim.setInterpolator(lin); wait.startAnimation(alphaAnim); alphaAnim.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { new Handler().post(() -> popupWindow.dismiss()); onAnimationEnd.animationEnd(); } @Override public void onAnimationRepeat(Animation animation) { } }); } } /** * 以动画的方式关闭等待弹屏 */ public void close() { if (popupWindow != null && popupWindow.isShowing()) { popupWindow.setFocusable(false); Animation alphaAnim = AnimationUtils.loadAnimation(context, R.anim.alpha_hide_progress); LinearInterpolator lin = new LinearInterpolator(); alphaAnim.setInterpolator(lin); wait.startAnimation(alphaAnim); alphaAnim.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { new Handler().post(() -> popupWindow.dismiss()); } @Override public void onAnimationRepeat(Animation animation) { } }); } } /** * 关闭弹屏 */ public void dismiss() { if (popupWindow != null && popupWindow.isShowing()) { popupWindow.dismiss(); } } public interface OnAnimationEnd{ void animationEnd(); }}
关键代码
popupWindow.setClippingEnabled(false);
0 0
- popupwindow 全屏遮罩并解决SDK>21窗口最上方状态栏无法遮罩
- PopupWindow菜单实现父窗口遮罩
- Launch 启动全屏 隐藏上方状态栏
- Launch 启动全屏 隐藏上方状态栏
- PopupWindow无法全屏显示
- qt 窗口无法全屏
- 帝国时代3无法全屏、陷入窗口模式解决
- WPF: ShowDialog() 切换到其他应用窗口后,再切换回来无法让子窗口总在最上方。
- 窗口设置最顶端,全屏
- 窗口设置最顶端,全屏
- Win32 SDK中窗口全屏处理
- Win32 SDK中窗口全屏处理
- Win32 SDK中窗口全屏处理
- android popupwindow 弹出窗口在控件上方居中,比控件大一倍
- Win7远程桌面无法全屏解决
- Win7远程桌面无法全屏解决
- 点击链接后,弹出另一个浮动窗口,全屏变暗遮罩效果,适用于下载站
- 【android】让popupwindow显示在view的上方并与该view水平居中对齐
- 不正确地使用HashMap引发死循环及元素丢失
- 北大选课刷课脚本
- 虚函数和纯虚函数的区别
- 2016.09.28日志
- 第五周 项目4--数制转换
- popupwindow 全屏遮罩并解决SDK>21窗口最上方状态栏无法遮罩
- SQL的主键和外键约束
- iOS UILabel的自适应宽高和文本渐变色
- blade模块命令集
- 第五周 项目1:建立顺序栈算法库
- Unable to add window -- token null is not for an application
- 第五周-项目五 后缀表达式
- viewpager的使用技巧
- 支付宝(一)