0

这是我的问题。我有一个可以在纵向屏幕方向上完美运行的 appwidget。但是,当我将屏幕方向更改为横向时,主屏幕启动器会自动更改 appWidget 的宽度和高度,而问题是在横向模式下,主屏幕启动器未正确设置小部件的高度。所以,我需要检测屏幕方向是否改变并重新调整我的 appwidget 的大小。我已经用谷歌搜索了它,但我仍然不知道我该怎么做。如果这是一项活动,那很简单,但事实并非如此。如果有人对此有任何想法,我将不胜感激。

4

2 回答 2

0

当屏幕方向改变时,您的 AppWidgetProvider onUpdate 方法会被调用。您可以使用以下功能来获取您是处于纵向还是横向模式,然后基于此更新您的远程视图。

private static boolean isPortrait (Context cx) {
Display d = ((WindowManager) cx.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();

if (d.getWidth() == d.getHeight()) {
    return false;
} else if (d.getWidth() < d.getHeight()) {
    return true;    
} else {
    return false;
}
}

希望这可以帮助。

于 2013-01-09T19:31:04.853 回答
0
  1. 在 values-port 和 values-land 中定义 bools.xml

    在值端口/bools.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <bool name="portrait">true</bool>
    </resources>
    

    在 values-land/bools.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <bool name="portrait">false</bool>
    </resources>
    
  2. 通过代码中的 Context.getResources() 获取布尔值

    private static boolean isPortrait(Context context) {
        return context.getResources().getBoolean(R.bool.portrait);
    }
    
于 2016-05-04T03:14:47.783 回答