我想知道怎么做
SurfaceView
我已经制作的类,并从SurfaceView的构造函数中获取曲面的高度和宽度。 (高度和宽度,以像素为单位)
我认为这应该很容易,但结果很难。
我知道Google不鼓励使用高度和宽度属性,但我觉得我需要它们。
任何帮助将不胜感激, 谢谢!
答案 0 :(得分:2)
SurfaceView并没有那么好用。
SurfaceView有两个部分,Surface和View。视图由视图层次结构创建,并遵循常用的布局机制。
Surface由Window Manager创建。这需要IPC到图形合成器(SurfaceFlinger)。由于可能存在延迟,SurfaceView实例化具有异步组件,并且在SurfaceView构造函数退出之前,Surface通常不会存在。
处理此问题的正确方法是设置SurfaceHolder回调并等待调用surfaceChanged()
方法。回调接受表面宽度和高度作为参数。
您可以在Grafika中看到一些示例,例如" hardware scaler exerciser"活动跟踪宽度和高度的变化。
答案 1 :(得分:1)
尝试这样:
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Width = metrics.widthPixels;
Height = metrics.heightPixels;