android在activity内禁止状态栏菜单下拉

小白 2019-12-14 原创文章


禁止下拉菜单栏


需求:,禁止用户下拉状态栏。

    温馨提示:如果有的地方变量报红,请用android studio 运行手续代码自动不全引用!

    代码已写好如下:

package com.allmoeny;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.PixelFormat;
import android.os.Build;
import android.os.Bundle;
import android.view.Gravity;
import android.view.PixelCopy;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.webkit.WebChromeClient;
import com.facebook.react.ReactActivity;
import java.lang.reflect.Method;

public class MainActivity extends ReactActivity {

  /**
   * Returns the name of the main component registered from JavaScript. This is used to schedule
   * rendering of the component.
   */
  @Override
  protected String getMainComponentName() {
    return "allmoeny";
  }
        //方法一
      @Override
       protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
           prohibitDropDown();
       
       }
            private void prohibitDropDown() {
                WindowManager 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);
                localLayoutParams.format = PixelFormat.TRANSPARENT;//CustomViewGroup //ViewGroup
                manager.addView(new customViewGroup(this), localLayoutParams);
            }

}


中间的调用是我自己封装的

new customViewGroup(this)

    具体代码如下:

package com.allmoeny;
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) {
    }
    //MotionEvent
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        Log.v("customViewGroup", "**********Intercepted");
        return true;
    }
}


总结:自己辛苦搞了一天才研究出来的,

另一片文章是讲:平板禁用调底部菜单栏的:



来源:http://stackoverflow.com/questions/25284233/prevent-status-bar-for-appearing-android-modified

站点信息