Android 无需绘图即可获得画布高度

Android 无需绘图即可获得画布高度,android,Android,在我需要创建画布或在画布上绘制之前,我希望了解画布的尺寸 我所知道的(或不太了解的)唯一画布代码是: 但是这看起来对于简单地获得高度来说做得太多了。是否有一个函数类似于makeOne()时MyCanvas将是什么 编辑:…如果没有这样的功能,那么临时获取画布足够长的时间来询问其高度,然后将其丢弃(如果需要)的最小代码是什么。除非覆盖onDraw并进行画布锁定和发布,否则无法将画布大小调整到可绘制屏幕区域。(据我所知) 现在,当您在循环中调用draw时,您正在向它发送画布。现在只需在自定义视图中实

在我需要创建画布或在画布上绘制之前,我希望了解画布的尺寸

我所知道的(或不太了解的)唯一画布代码是:

但是这看起来对于简单地获得高度来说做得太多了。是否有一个函数类似于makeOne()时MyCanvas将是什么


编辑:…如果没有这样的功能,那么临时获取画布足够长的时间来询问其高度,然后将其丢弃(如果需要)的最小代码是什么。

除非覆盖onDraw并进行画布锁定和发布,否则无法将画布大小调整到可绘制屏幕区域。(据我所知)

现在,当您在循环中调用draw时,您正在向它发送画布。现在只需在自定义视图中实现onDraw方法

@Override
protected void onDraw(Canvas canvas) {
    int h = canvas.getHeight();
    int w = canvas.getWidth();

}
这也可以在没有画布的情况下完成。首先,声明一个包含一些静态持有者的类

public class Window {
    public static int WINDOW_HEIGHT; // = to screen size
    public static int WINDOW_WIDTH; // = to screen size

}
接下来,在您的主要启动活动中调用一些特殊功能。我们之所以要求这些,是因为我从未见过有人想画画布,不想全屏无栏。如果您计划不使用全屏,请忽略这些选项。所以为了得到准确的测量结果,我们也需要把它们藏在这里

public void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); // <--- or here you can call your custom view

    Display display = getWindowManager().getDefaultDisplay(); 
    int width = display.getWidth();
    int height = display.getHeight();
    Window.WINDOW_HEIGHT = height;
    Window.WINDOW_WIDTH = width;
}
public class Window {
    public static int WINDOW_HEIGHT; // = to screen size
    public static int WINDOW_WIDTH; // = to screen size

}
public void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); // <--- or here you can call your custom view

    Display display = getWindowManager().getDefaultDisplay(); 
    int width = display.getWidth();
    int height = display.getHeight();
    Window.WINDOW_HEIGHT = height;
    Window.WINDOW_WIDTH = width;
}
private void CreateWindow(Context context) {
    Display display = ((WindowManager)     context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
    int width = display.getWidth(); 
    int height = display.getHeight();


    Window.WINDOW_HEIGHT = height; // = to screen size
    Window.WINDOW_WIDTH = width; // = to screen size

}