在小部件中显示进度轮
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在小部件中显示进度轮相关的知识,希望对你有一定的参考价值。
我有一个小部件,当我按下它时会更新,但我想在小部件更新时显示进度轮。
//remove text
updateViews.setViewVisibility(R.id.widget_textview, View.GONE);
updateViews.setViewVisibility(R.id.widget_dkk, View.GONE);
// show progress wheel
updateViews.setViewVisibility(R.id.widget_Pross, View.VISIBLE);
// task that take time are locatet here a GetHTTP function
//Show text again
updateViews.setViewVisibility(R.id.widget_textview, View.VISIBLE);
updateViews.setViewVisibility(R.id.widget_dkk, View.VISIBLE);
// Remove progress wheel
updateViews.setViewVisibility(R.id.widget_Pross, View.GONE);
所有这些都在我的widget更新类中找到了:
public static RemoteViews buildUpdate(Context context) {
但进度轮没有显示。这就像小部件只会更新一次,因此在GetHttp中计算时不会显示进度轮。
编辑:
// Remove rext and show progress wheel
updateViews.setViewVisibility(R.id.widget_textview, View.GONE);
updateViews.setViewVisibility(R.id.widget_dkk, View.GONE);
updateViews.setViewVisibility(R.id.widget_Pross, View.VISIBLE);
ComponentName thisWidget = new ComponentName(context, SaldoWidget.class);
AppWidgetManager manager = AppWidgetManager.getInstance(context);
manager.updateAppWidget(thisWidget, updateViews);
// GetHttp code here / long computing task her
//Show text and remove progress wheel
updateViews.setViewVisibility(R.id.widget_textview, View.VISIBLE);
updateViews.setViewVisibility(R.id.widget_dkk, View.VISIBLE);
updateViews.setViewVisibility(R.id.widget_Pross, View.GONE);
manager.updateAppWidget(thisWidget, updateViews);
答案
每次要更改布局时都必须调用AppWidgetManager.updateAppWidget()
。
这意味着您必须隐藏原始窗口小部件视图并在RemoteViews
中显示进度条。之后,调用updateAppWidget()
更改布局并显示进度条。然后执行你的下载任务。之后,使用获取的数据填充视图,隐藏进度指示器并再次调用updateAppWidget()
以将其更改回正常布局。
RemoteViews
这个名字可能会让你在开始时有点混乱。它实际上不是你可以从你的应用程序远程控制的一堆Views
。这是一组根据您的需求构建的视图,然后您将其提供给AppWidgetManager以发布它。
以上是关于在小部件中显示进度轮的主要内容,如果未能解决你的问题,请参考以下文章
如何在小部件中显示来自 QColorDialog 的 QColor?
如何在小部件的容器内显示 pdf [flutter-web]
通过 addPostFrameCallback 访问 Flutter Provider 时说小部件在小部件树之外,但颤振检查器显示其他情况