AppWidget屏幕方向

时间:2012-06-23 21:48:42

标签: android android-widget

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

2 个答案:

答案 0 :(得分: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;
}
}

希望这有帮助。

答案 1 :(得分:0)

  1. 在values-port和values-land

    中定义bools.xml

    在values-port / 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);
    }