如何在设备重启后获取小部件大小(适用于Android 4.4.4)
我有一个小部件,它的布局应该根据当前小部件的大小而改变。我使用以下代码来处理此类需求如何在设备重启后获取小部件大小(适用于Android 4.4.4),android,android-widget,Android,Android Widget,我有一个小部件,它的布局应该根据当前小部件的大小而改变。我使用以下代码来处理此类需求 public void onAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager, int appWidgetId,
public void onAppWidgetOptionsChanged(Context context,
AppWidgetManager appWidgetManager,
int appWidgetId,
Bundle newOptions) {
int heightInDp = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT);
int heightInCell = getCellSize(heightInDp);
RemoteViews remoteViews = org.yccheok.jstock.gui.widget.Utils.getRemoteViews(appWidgetId, getWidgetWatchlistFragmentResourceId(context, appWidgetId));
if (heightInCell >= 3) {
remoteViews.setViewVisibility(R.id.header, View.VISIBLE);
} else {
remoteViews.setViewVisibility(R.id.header, View.GONE);
}
appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
}
这很有效。直到我在安卓4.4.4中意识到,当你关闭和打开设备电源时,只会触发onUpdate
但是,在4.1.2中,将触发OnAppWidgetOptions更改。在这种情况下,根据小部件的大小处理UI布局对我来说要容易得多。与OnAppWidgetOptions更改一样,我们收到了Bundle newOptions。从bundle中,我们可以查询当前小部件的大小
然而,如何在onUpdate中获得小部件大小?或者,换言之,在设备重新启动后,我们如何获得小部件的大小?这只适用于具有Jelly Bean及更高版本的设备 似乎有一个API可以达到这样的目的
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
Bundle bundle = appWidgetManager.getAppWidgetOptions(appWidgetId);
heightInDp = bundle.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT);
}