我通过执行以下操作在画布上绘制矩形:
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);
屏幕应显示一个填充屏幕四分之一的矩形。但是,这是结果:
如您所见,矩形出现在左上角。最糟糕的是,有时矩形显示它应该的方式,所以它感觉随机。当我记录Screen.width时,由于某种原因它返回16。
这是我的相关舱单信息:
minSdkVersion 13
targetSdkVersion 21
这可能是什么问题?请帮忙。似乎有时会显示日志并设置分辨率。但其他时候它不起作用。这是什么问题。感觉非常随机。 非常感谢你。
答案 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");
}