从activity获得window及windowmanager及Display简单说起

1先看代码,要分析的代码如下:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE); //A
        // 设置全屏
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN); //B
        DisplayMetrics metric = new DisplayMetrics(); //C
        // 获取屏幕高度、宽度
        getWindowManager().getDefaultDisplay().getRealMetrics(metric); //C
        windowwidth = metric.widthPixels;  // 屏幕宽度 C
        windowheight = metric.heightPixels;  // 屏幕搞度 C
        getWindow().setSoftInputMode(
                WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
        setContentView(R.layout.activity_main);  //D
        Log.i("mydate" , "  " + windowwidth + "   " + windowheight);
        res = getResources();
    }

A:

Activity.requestWindowFeature(Window.常量);

requestWindowFeature(Window.FEATURE_NO_TITLE)

启用扩展窗口特性: 标记为“无标题”功能,关闭屏幕顶部的标题

参数是Window类中的一些int常量,其中还有其它int常量:如下:

window是什么可以看一下:https://blog.csdn.net/qq_38261174/article/details/79760905

DEFAULT_FEATURES :默认窗口特性

其他int 常量请看:http://www.android-doc.com/reference/android/view/Window.html

B:

Window = Activity.getWindow()

WindowManager = Window.getWindowManager() 或者

WindowManager = Activity.getWindowManager(); 

// 设置全屏
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

window.setflags(int , int)设置窗口的标志,如WindowManager.LayoutParams 标志,

WindowManager.LayoutParams  : http://www.android-doc.com/reference/android/view/WindowManager.LayoutParams.html

这里用的是全屏标志:

WindowManager.LayoutParams.FLAG_FULLSCREEN
:隐藏所有屏幕装饰(如状态栏),同时显示这个窗口

C:

DisplayMetrics metric = new DisplayMetrics(); //C
        // 获取屏幕高度、宽度
        getWindowManager().getDefaultDisplay().getRealMetrics(metric); //C
        windowwidth = metric.widthPixels;  // 屏幕宽度 C
        windowheight = metric.heightPixels;  // 屏幕搞度 C
DisplayMetrics : 描述显示器的一般信息的结构,如其大小、密度和字体缩放

但是DisplayMetrics它要初始化被赋值才能使用:

getWindowManager().getDefaultDisplay().getMetrics(metrics)
或者

getWindowManager().getDefaultDisplay().getRealMetrics(metric)

这里要用到另一个类:DisPlay = getWindowManager.getDefaultDisplay

display.getmetrics( metric ) :相当于获取获取display的metrics并传给参数metrics接收

参数用来接收保存display.metrics信息,并使用.

display.getrealmetrics( metrics ) 与getmetrics 的区别很明显,加了一个real.

意思是:返回手机屏幕真正的metrics,不加一些装饰,如navigationbar 和 staturebar,

有时候手机屏幕尺寸计算

metric.widthPixels;
需要这两个不同的方法.

D:

为该窗口设置显示的软输入模式

getWindow().setSoftInputMode(
                WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

参数为:

WindowManager.LayoutParams  : http://www.android-doc.com/reference/android/view/WindowManager.LayoutParams.html

通常有3种:

//默认设置,通常由系统自行决定是隐藏还是显示
public static final int SOFT_INPUT_ADJUST_UNSPECIFIED
//该Activity总是调整屏幕的大小以便留出软键盘的空间
public static final int SOFT_INPUT_ADJUST_RESIZE
//当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分
public static final int SOFT_INPUT_ADJUST_PAN





猜你喜欢

转载自blog.csdn.net/qq_38261174/article/details/80090251