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