2010-07-06 277 views
1

我想我可能会问一个虚拟问题,但我仍然对Android编程有所了解,而且我无法(尽管我所做的全部努力)在Google上找到我的答案。获取SurfaceView尺寸

事情是,我试图用2D图形开发一个小游戏。我希望我的“游戏板”能够位于屏幕上的特定位置,以便我可以在框的上方和下方显示游戏中的信息。但是由于现在有很多Android手机,我一直在考虑获得“动态”的价值,这样我就可以将我的字体大小适应所有设备。

我的游戏不是全屏(但可能是,没什么大不了的),但是在没有标题栏的窗口中。

我使用默认SurfaceView类的扩展,实现SurfaceHolder.Callback。我试着写下面的方法:

public void getViewSize() 
    { 
     VIEW_WIDTH = this.getWidth(); 
     VIEW_HEIGHT = this.getHeight(); 
    } 

但是返回的值是零。

任何人都有想法(即使它意味着改变显示策略)? 非常感谢。

+0

如果SurfaceView的子类,而如果的onDraw(帆布油画)在子类重写,是执行的onDraw方法?看看你的问题,似乎是这样,但我做同样的事情,但控制不会进入onDraw。请指教。 – Namratha 2010-07-28 10:21:14

回答

4

你可以这样做:

public void onDraw(Canvas canvas) { 
    VIEW_WIDTH = canvas.getWidth(); 
    VIEW_HEIGHT = canvas.getHeight(); 
} 
+0

谢谢,我会在午餐时尝试这个,告诉你它是否有效 – 3rgo 2010-07-07 07:11:41

+0

是的,它工作得很好!非常感谢 ! – 3rgo 2010-07-11 15:19:42

+0

我想做同样的事情,但控制器永远不会进入我的onDraw()方法。请看看这个问题: http://stackoverflow.com/questions/3340847/subclassing-surfaceview-and-overriding-ondraw-to-change-surfaceview-parameters – Namratha 2010-07-28 08:01:18