这是我的问题。我有一个appwidget,可以在纵向屏幕方向完美地工作。但是,当我将屏幕方向更改为横向时,我的appWidget的宽度和高度会自动由主屏幕启动器更改,而问题是在横向模式下,主屏幕启动器未正确设置窗口小部件的高度。 因此,我需要检测屏幕方向是否已更改并重新调整appwidget的大小。我用谷歌搜索了它,但我仍然不知道我该怎么做。如果这是一项活动,那很简单,但事实并非如此。如果有人对此有所了解,我将不胜感激。
答案 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)
在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>
通过代码
中的Context.getResources()获取布尔值private static boolean isPortrait(Context context) {
return context.getResources().getBoolean(R.bool.portrait);
}