我正在尝试使用以下代码从小部件中获取屏幕大小:
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 ......
是否可能或我做错了什么?
答案 0 :(得分:0)
http://developer.android.com/reference/android/view/Display.html#getSize(android.graphics.Point)
获取显示的大小(以像素为单位)。
请注意,此值不应用于计算布局,因为a 设备通常会有屏幕装饰(如状态栏) 沿着显示器的边缘,减少了应用程序的数量 从这里返回的尺寸可用的空间。布局应该改为 使用窗口大小。
根据显示器的当前旋转调整尺寸。
此方法返回的大小不一定代表 显示的实际原始大小(原始分辨率)。返回的大小 可以调整以排除某些系统装饰元素 始终可见。它也可以缩放以提供兼容性 较旧的应用程序,最初设计用于较小的显示器。
换句话说,你从getSize得到的东西是不一致的,这取决于标题栏的存在等等。注意事项。
这是一个更彻底的讨论:
How can I get android Honeycomb system's screen width and height?
答案 1 :(得分:-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;
}
}
}