使用WindowManager添加View覆盖掉通知栏来实现禁止下拉通知栏功能:

import android.content.Context;import android.graphics.PixelFormat;import android.view.Gravity;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.view.ViewGroup;import android.view.WindowManager;import android.widget.LinearLayout;public class DisableNotiView {    private WindowManager.LayoutParams mLayoutParam;    private Context mContext;    private WindowManager wm;    private LinearLayout relative;    public DisableNotiView(Context context) {        mContext = context;    }    public void createView(){        wm = ((WindowManager)mContext.getApplicationContext()                .getSystemService("window"));        int mScreenWidth = wm.getDefaultDisplay().getWidth();        mLayoutParam = new WindowManager.LayoutParams();        mLayoutParam.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;        mLayoutParam.format = PixelFormat.RGBA_8888;        mLayoutParam.windowAnimations = 16973828;        mLayoutParam.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |                  WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR |                  WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH;          mLayoutParam.gravity = Gravity.TOP;        mLayoutParam.width = mScreenWidth;        mLayoutParam.height = getStatusBarHeight(mContext);        LayoutInflater inflater = LayoutInflater.from(mContext.getApplicationContext());        relative = (LinearLayout)inflater.inflate(R.layout.state_bat_linearlayout, null, false);        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT                , getStatusBarHeight(mContext));        relative.setLayoutParams(params);        relative.setOnTouchListener(new OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                return false;            }        });        wm.addView(relative, mLayoutParam);    }    public static int getStatusBarHeight(Context context) {          int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");          return context.getResources().getDimensionPixelSize(resourceId);      }      public void removeView(){        wm.removeView(relative);    }}

更多相关文章

  1. Android沉浸式通知栏的一个开源库SystemBarTint简单使用,android
  2. Android(安卓)通知之 Notification
  3. Android(安卓)Bad notification for startForeground: java.lang
  4. Android(安卓)发送通知 notification
  5. Android(安卓)关于下接框(spinner)的使用
  6. Android(安卓)判断通知栏权限的问题
  7. Android几种FrameWork(Manager)的用法
  8. Android最佳实践之Notification、下拉刷新、内存及性能建议等
  9. Android下拉刷新总结

随机推荐

  1. Golang 能不能打包为 dll ?
  2. golang可以写网站吗
  3. Golang 免费的吗?
  4. 区块链实战-Hyperledger Fabric(一) 10分钟
  5. Golang 哪个 Web 框架好用?
  6. golang可以做些什么?
  7. Golang 是面向对象还是面向过程?
  8. golang吉祥物是啥?
  9. Golang 和 PHP 哪个性能更强?
  10. golang会代替java吗?