Отображение колеса прогресса в виджете - PullRequest
2 голосов
/ 29 августа 2011

У меня есть виджет, который обновляется при нажатии на него, но я хотел бы показать колесо прогресса, пока виджет обновляется.

//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);

ВСЕ это находится в моем классе обновления виджетов:

public static RemoteViews buildUpdate(Context context) {

Но колесо прогресса не показывает. Это похоже на то, что виджет обновляется только один раз, и поэтому при вычислении в GetHttp не отображается колесо прогресса.

EDIT:

// 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);

1 Ответ

3 голосов
/ 29 августа 2011

Вам нужно звонить AppWidgetManager.updateAppWidget() каждый раз, когда вы хотите изменить макет.

Это означает, что вам нужно скрыть исходные виды виджетов и показать индикатор выполнения в вашем RemoteViews.После этого позвоните updateAppWidget(), чтобы изменить макет и отобразить индикатор выполнения.Затем выполните вашу задачу загрузки.После этого заполните представления извлеченными данными, скройте индикатор прогресса и снова вызовите updateAppWidget(), чтобы изменить его на нормальный макет.

Имя RemoteViews может немного запутать в начале,На самом деле это не куча Views, которыми вы можете управлять удаленно из своего приложения.Это группа представлений, которую вы создаете в соответствии со своими потребностями, а затем передаете ее в AppWidgetManager для публикации.

...