搭建直播平臺,Android開發之禁止下拉通知欄的方法

zhibo系統開發發表於2023-01-11

搭建直播平臺,Android開發之禁止下拉通知欄的方法

思路:在狀態列上覆蓋一層透明view,點選時,直接消費掉,禁止繼續往下傳遞,接觸不到狀態列,就拉不出來,比較笨的一個辦法,但是也挺有效


廢話說的不少了,上程式碼把:

//禁止下拉
private void UnDropDown() {
    manager = ((WindowManager) 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 |
            // this is to enable the notification to recieve touch events
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
            // Draws over status bar
            WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
    localLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
    localLayoutParams.height = (int) (50 * getResources()
            .getDisplayMetrics().scaledDensity); //50高度這邊我是固定死了,也可以動態獲取狀態列高度,然後賦值
    localLayoutParams.format = PixelFormat.TRANSPARENT;
    view = new CustomViewGroup(this);
    manager.addView(view, localLayoutParams);
}


CustomViewGroup 程式碼:

import android.content.Context;
import android.util.Log;
import android.view.MotionEvent;
import android.view.ViewGroup;
public 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) {
        //直接消費,不向下傳遞
        return true;
    }
}


 不要忘記銷燬

@Override
protected void onDestroy() {
    super.onDestroy();
    if (view != null) {
        WindowManager manager = ((WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE));
        manager.removeView(view);
    }
}


 以上就是 搭建直播平臺,Android開發之禁止下拉通知欄的方法,更多內容歡迎關注之後的文章


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2931731/,如需轉載,請註明出處,否則將追究法律責任。

相關文章