0

我正在尝试使用以下代码从小部件获取屏幕尺寸:

WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

我想它应该给我以像素为单位的屏幕尺寸。

我正在尝试在 Nexus 7 平板电脑 (1280 x 800) 和 LGE610(320 x 480) 上获取尺寸;

怎么可能,第一个得到 482 像素,第二个得到 480 像素?在 Galaxy Nexus (Maguro) 上,我得到了 526...

有可能还是我做错了什么?

4

2 回答 2

0

http://developer.android.com/reference/android/view/Display.html#getSize(android.graphics.Point)

获取显示的大小,以像素为单位。

请注意,此值不应用于计算布局,因为设备通常会在显示屏边缘具有屏幕装饰(例如状态栏),这会减少此处返回的大小可用的应用程序空间量。布局应改为使用窗口大小。

大小根据显示器的当前旋转进行调整。

此方法返回的尺寸不一定代表显示器的实际原始尺寸(原始分辨率)。可以调整返回的大小以排除某些始终可见的系统装饰元素。它还可以扩展以提供与最初为较小显示器设计的旧应用程序的兼容性。

换句话说,您从 getSize 获得的内容是不一致的,具体取决于标题栏等的存在。买者自负。

这里有一个更彻底的讨论:

如何获取 android Honeycomb 系统的屏幕宽度和高度?

于 2013-04-23T16:46:56.830 回答
-1

您可以在 dp 中获取小部件大小,但我不知道如何调整大小的小部件高度和宽度。

public class MyProvider extends AppWidgetProvider {
 @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
                         int[] appWidgetIds) {
        super.onUpdate(context, appWidgetManager, appWidgetIds);
        for (int i : appWidgetIds) {
            updateWidget(context, appWidgetManager, i);
            AppWidgetProviderInfo info = appWidgetManager.getAppWidgetInfo(i);
            int highResize = info.minResizeHeight;
            int weighResize = info.minResizeWidth;
            int high = info.minHeight;
            int weigh = info.minWidth;
        }
    }
}
于 2014-01-23T15:10:26.070 回答