嗨我想让我的应用程序适合所有屏幕尺寸,这样做我需要获得屏幕宽度和高度。 但如果我使用此代码
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels
它给了我像素,所以可能会出现这样的情况:它为平板电脑和小手机提供了相同的尺寸。 我怎样才能得到实际的屏幕尺寸?
另外一件事,我有一个用位图制作的游戏,在我的手机上它工作正常,但在平板电脑上的位图太小,我怎么能根据屏幕尺寸调整它们的大小?
答案 0 :(得分:1)
您需要屏幕密度和像素大小。 (像素数)/(每英寸点数)给出屏幕尺寸(英寸)。
请参阅:getting the screen density programmatically in android?
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels
int realWidth = (int)((float)width/metrics.density);
int realHeight = (int((float)height/metrics.density);
第二个问题的答案取决于你如何加载你的位图。您应该为不同的设备提供多种尺寸。然后你可以使用内置的缩放机制 - 只需将位图放在匹配的drawable-(dpi) - (屏幕大小)文件夹中。其他方式您必须从assets文件夹加载图像并在必要时进行缩放。
答案 1 :(得分:1)
对于您在平板电脑上显示的位图太小的第二个问题,请尝试对图像进行九次修补,然后将这些图像放在各自的文件夹中(hdpi,mdpi,xhdpi,xxhdpi) 确保使用高质量分辨率图像进行九次修补,否则图像会变得拉伸(质量差)。 你也可以在这里修补你的图像nine patching image
答案 2 :(得分:-1)
试试这个:
Display display = activity.getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
答案 3 :(得分:-1)
您可以使用以下代码获取屏幕尺寸:
public int getScreenHeight() { return getDisplay().getHeight(); } private Display getDisplay() { return ((WindowManager) getContext().getSystemService( Context.WINDOW_SERVICE)).getDefaultDisplay(); } public int getScreenWidth() { return getDisplay().getWidth(); }
答案 4 :(得分:-1)
试试这个。
将此添加到onCreate()方法。宣告点!
WindowManager wm = ((WindowManager) getSystemService(WINDOW_SERVICE));
Display display = wm.getDefaultDisplay();
point = getDisplaySize(display);
//这是获取设备大小的方法。
@Deprecated
@SuppressLint("NewApi")
private static Point getDisplaySize(final Display display) {
final Point point = new Point();
try {
display.getSize(point);
} catch (java.lang.NoSuchMethodError ignore) { // Older device
point.x = display.getWidth();
point.y = display.getHeight();
}
return point;
}