Android 禁用通知栏下拉

应用禁用通知栏下拉
做法是在通知栏区域弄一个透明的window,这样下拉的时候触摸的区域就是这个window,系统的就下拉不了了
改做法是需要在应用上方显示一个window 所以需要权限

 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
  public static final String STATUS_BAR_HEIGHT = "status_bar_height";
  public static final String DIMEN = "dimen";
  public static final String DEF_PACKAGE = "android";
   public static void preventStatusBarExpansion(Context context) {
    WindowManager manager = ((WindowManager) context.getApplicationContext()
                                                    .getSystemService(Context.WINDOW_SERVICE));

    WindowManager.LayoutParams localLayoutParams = new WindowManager.LayoutParams();
    localLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
    localLayoutParams.gravity = Gravity.TOP;
    localLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
        | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
        | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;

    localLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;

    int resId = context.getResources()
                       .getIdentifier(STATUS_BAR_HEIGHT, DIMEN, DEF_PACKAGE);
    int result;
    if (resId > 0) {
      result = context.getResources()
                      .getDimensionPixelSize(resId);
    } else {
      // Use Fallback size:
      result = 60; // 60px Fallback
    }

    localLayoutParams.height = result;
    localLayoutParams.format = PixelFormat.TRANSPARENT;

    if (view == null) {
      view = new CustomViewGroup(context);
    }

    try {
      if (manager != null) {
        manager.addView(view, localLayoutParams);
      }
    } catch (Exception ignored) {
    }
  }

  public static void allowStatusBarExpansion(Context context) {
    WindowManager manager = ((WindowManager) context.getApplicationContext()
                                                    .getSystemService(Context.WINDOW_SERVICE));
    try {
      if (manager != null) {
        manager.removeViewImmediate(view);
      }
    } catch (Exception ignored) {
    }
  }

  public static class CustomViewGroup extends ViewGroup {
    public CustomViewGroup(Context context) {
      super(context);
    }

    @Override
    protected void onLayout(boolean changed,
                            int l,
                            int t,
                            int r,
                            int b) {
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
      // Intercepted touch!
      return true;
    }
  }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值