检测设备屏幕大小

时间:2014-04-30 12:17:03

标签: android

嗨我想让我的应用程序适合所有屏幕尺寸,这样做我需要获得屏幕宽度和高度。 但如果我使用此代码

 DisplayMetrics displaymetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
int height = displaymetrics.heightPixels; 
int width = displaymetrics.widthPixels

它给了我像素,所以可能会出现这样的情况:它为平板电脑和小手机提供了相同的尺寸。 我怎样才能得到实际的屏幕尺寸?

另外一件事,我有一个用位图制作的游戏,在我的手机上它工作正常,但在平板电脑上的位图太小,我怎么能根据屏幕尺寸调整它们的大小?

5 个答案:

答案 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;
}