在小部件中显示进度轮

问题描述 投票:2回答:1

我有一个小部件,当我按下它时会更新,但我想在小部件更新时显示进度轮。

//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);
android widget android-widget progress android-wheel
1个回答
3
投票

每次要更改布局时都必须调用AppWidgetManager.updateAppWidget()

这意味着您必须隐藏原始窗口小部件视图并在RemoteViews中显示进度条。之后,调用updateAppWidget()更改布局并显示进度条。然后执行你的下载任务。之后,使用获取的数据填充视图,隐藏进度指示器并再次调用updateAppWidget()以将其更改回正常布局。

RemoteViews这个名字可能会让你在开始时有点混乱。它实际上不是你可以从你的应用程序远程控制的一堆Views。这是一组根据您的需求构建的视图,然后您将其提供给AppWidgetManager以发布它。

© www.soinside.com 2019 - 2024. All rights reserved.