我正在为Android编写应用程序,但我在编程方面支持多个屏幕时遇到了困难。我有一个随机跳到屏幕上的按钮。这是代码:
Random r = new Random();
x = r.nextInt(250 - 80);
y = r.nextInt(300 - 80);
btn.setX(x);
btn.setY(y);
我正在努力的是为每个屏幕尺寸做这件事。现在,你可以看到我的按钮跳到一个随机的地方,但只有250 * 300大小的屏幕。如何识别屏幕尺寸并更改数字?或者我应该使用其他代码?
答案 0 :(得分:0)
您需要以编程方式获取屏幕的尺寸。
Point size = new Point();
WindowManager w = getWindowManager();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
w.getDefaultDisplay().getSize(size);
mWindowWidth = size.x;
mWindowHeight = size.y;
} else {
Display d = w.getDefaultDisplay();
mWindowWidth = d.getWidth();
mWindowHeight = d.getHeight();
}
重要的是,不要忘记检查方向。
private String getScreenOrientation(){
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
return "ORIENTATION_PORTRAIT";
else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
return "ORIENTATION_LANDSCAPE";
else
return "";
}
但更好的研究this code。
答案 1 :(得分:0)
嗨,请看下面的代码希望它能帮到你
int x ,y ;
int width,height;
DisplayMetrics displayMetrics = MainActivity.this.getResources().getDisplayMetrics();
width = displayMetrics.widthPixels;
height = displayMetrics.heightPixels;
Random r = new Random();
x = r.nextInt(width - 80);
y = r.nextInt(height - 80);
Log.d("","============= Random X :-> " + x);
Log.d("","============= Random y :-> " + y);
答案 2 :(得分:0)
要获取屏幕宽度和屏幕高度,请在主要活动中使用以下代码:
final Point sizePoint = new Point();
getWindowManager().getDefaultDisplay().getSize(sizePoint);
int mScreenWidth = sizePoint.x;
int mScreenHeight = sizePoint.y;
您可以使用它来初始化随机数生成器。
答案 3 :(得分:0)
您可以查看正在使用的屏幕
int screenSize = getResources().getConfiguration().screenLayout
& Configuration.SCREENLAYOUT_SIZE_MASK;
DisplayMetrics dm = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
switch (screenSize) {
case Configuration.SCREENLAYOUT_SIZE_LARGE:
//for large screen
break;
case Configuration.SCREENLAYOUT_SIZE_XLARGE:
//for xlarge
break;
case Configuration.SCREENLAYOUT_SIZE_SMALL:
//for small
break;
case Configuration.SCREENLAYOUT_SIZE_NORMAL:
//for normal
break;
}
您可以从 dm
获取x和y坐标的值