Android获取屏幕尺寸不起作用?

时间:2015-03-04 05:53:07

标签: android canvas

我通过执行以下操作在画布上绘制矩形:

canvas.drawRect(0, 0, Screen.getCenterX(), Screen.getCenterY(), paint);

屏幕设置方式如下:

public static int width;
public static int height;

public static void setupScale(Context context) {
    WindowManager wm = (WindowManager) context
            .getSystemService(Context.WINDOW_SERVICE);
    DisplayMetrics displaymetrics = new DisplayMetrics();
    wm.getDefaultDisplay().getMetrics(displaymetrics);
    height = displaymetrics.heightPixels;
    width = displaymetrics.widthPixels;
    Log.e("TEST", "TEST");
}

public static int getCenterX() {
    return width / 2;
}

public static int getCenterY() {
    return height / 2;
}

似乎Log:" TEST"有时候不会被召唤。 Screen.setup()函数在我的MainActivity中调用:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.game_layout);

    // SETUP ONCE:
    context = this;
    Screen.setupScale(context);

屏幕应显示一个填充屏幕四分之一的矩形。但是,这是结果: enter image description here

如您所见,矩形出现在左上角。最糟糕的是,有时矩形显示它应该的方式,所以它感觉随机。当我记录Screen.width时,由于某种原因它返回16。

这是我的相关舱单信息:

minSdkVersion 13
targetSdkVersion 21

这可能是什么问题?请帮忙。似乎有时会显示日志并设置分辨率。但其他时候它不起作用。这是什么问题。感觉非常随机。 非常感谢你。

1 个答案:

答案 0 :(得分:0)

在答案here下工作,为什么不尝试在getWindowManager()函数内调用setupScale(),而不是将其作为参数传递。

public static void setupScale() {
    DisplayMetrics displaymetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
    height = displaymetrics.heightPixels;
    width = displaymetrics.widthPixels;
    Log.e("TEST", "TEST");
}