当我通过此次尝试确定活动中的屏幕尺寸时,我得到 800x480 :
@SuppressWarnings("deprecation")
private void initSpecs()
{
WindowManager windowManager = (WindowManager)this.getSystemService(Context.WINDOW_SERVICE);
Point size = new Point();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2)
{
windowManager.getDefaultDisplay().getSize(size);
effectiveWidth = size.x;
effectiveHeight = size.y;
}
else
{
Display display = windowManager.getDefaultDisplay();
effectiveWidth = display.getWidth();
effectiveHeight = display.getHeight();
}
}
当我通过以下尝试确定游戏视图(类扩展视图)中的屏幕尺寸时,我得到 800x442 。
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = MeasureSpec.getSize(heightMeasureSpec);
}
没有标题栏。这种差异是如何产生的?
答案 0 :(得分:1)
问题是,在第一种方式中,您实际上获得了“屏幕/显示”大小,但是,第二种方式,您获得的是视图的宽度/高度测量值,您覆盖了“onMeasure” “,这并不一定等于屏幕大小,特别是如果另一个视图在其生命周期中影响视图的大小。这是一种观点的生命周期。
请注意,如果另一个View更改了它的大小,并且操作系统认为刷新视图是个好主意,那么这个生命周期有可能重复。
希望它有帮助!
问候!