我使用以下方法获取屏幕尺寸:
public static Point getScreenSize(Context context)
{
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
int w = wm.getDefaultDisplay().getWidth();
int h = wm.getDefaultDisplay().getHeight();
return new Point(w, h);
}
在我的三星Galaxy s6上,此方法返回1080x1920 ...虽然我的设备的分辨率为1440x2560。
为什么呢?有没有更好的方法来获得适用于较新手机的屏幕分辨率?
修改
我在服务中需要这个方法!我没有帮助的视图/活动,只有应用程序上下文!我需要REAL像素
答案 0 :(得分:7)
获得屏幕分辨率的最佳方法是DisplayMetrics
:
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int width = displayMetrics.widthPixels;
int height = displayMetrics.heightPixels;
答案 1 :(得分:5)
如果您要定位API> = 17,请尝试使用getRealSize
类的Display
方法:
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Point size = new Point();
wm.getDefaultDisplay().getRealSize(size);
String resolution = size.x + "x" + size.y;
对我来说,它有效。
答案 2 :(得分:2)
使用这个:
$output = array_merge($output, $c);
答案 3 :(得分:1)
API会返回应用可以使用的像素数,因此这是正确的结果。
答案 4 :(得分:0)
Use this.
DisplayMetrics metrics;
int width = 0, height = 0;
In your onCreate method.
metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
height = metrics.heightPixels;
width = metrics.widthPixels;
答案 5 :(得分:0)
试试这个:
Display mDisplay = context.getWindowManager().getDefaultDisplay();
mDisplay.getWidth();
mDisplay.getHeight();
请注意,此代码使用 已弃用的 API。