Почему ProgressBar останавливает анимацию во время замены макета в Android? - PullRequest
3 голосов
/ 28 декабря 2010

Я использую линейный макет. Сюда входит файл progressbar.xml, показывающий пользователю индикатор ожидания. Есть 2 кнопки с надписями «abc» и «xyz». Когда в данный момент кнопка «abc» находится в нажатом состоянии. Когда начинается действие, отображается индикатор выполнения (индикатор выполнения находится в анимации с помощью этого свойства android: indeterminate = "true") для пользователя. Пользователь нажимает кнопку «xyz». Я храню ссылку на расположение индикатора выполнения с помощью findViewById (int id); А затем INFLATE с помощью LayoutInflater другой макет формы data.xml. Я удаляю mainLinearview.removeAllView (); Затем добавьте mainLinearview.addView (dataview); И отображать другие данные. После того, как пользователь нажал на кнопку «abc», тот же шаг применяется к mainLinearview.addView (progressbar).

Основная проблема в том, что на этот раз индикатор прогресса не анимируется Не могли бы вы помочь? Еще 1 вещь, которую я ищу, как изменить цвет индикатора прогресса. Но я не нашел ничего хорошего. Заранее спасибо.

Ответы [ 3 ]

5 голосов
/ 13 февраля 2011

Позвоните, когда индикатор прогресса появится снова, и он должен снова оживиться.

public static void resumeProgressBarAnimation(ProgressBar pb) {
    if (pb.getVisibility() == View.VISIBLE) {
        pb.setVisibility(View.INVISIBLE);
        pb.setVisibility(View.VISIBLE);
    }
}
1 голос
/ 04 февраля 2011

У меня была та же проблема, но я переставляю кнопку с неопределенным ProgressBar, поэтому я посмотрел на источник ProgressBar , и они используют startAnimation() и stopAnimation() для неопределенного ProgressBar, но методыневидимы для Activity, поэтому используемый мной быстрый обходной путь - setVisibility(int), они запускают и останавливают анимацию в зависимости от состояния видимости ProgressBar, но ключ к этому заключается в том, что вы должны остановить анимацию перед изменением макетаи запустите его, когда вернется родительский макет ProgressBar ... наконец, я сделал следующее:

/**
 * Replace a button with the specified view. The view will be set
 * with the button layout parameters. Use {@link #revert(HeaderButton, View)}
 * to rollback this operation
 * @param button
 * @param with
 */
public void replace(HeaderButton button, View with){
    with.setVisibility(View.VISIBLE);
    mHeaderView.replace(button, with);
}

/**
 * Restores a button that was previously replaced
 * @param button
 * @param with
 */
public void revert(HeaderButton button, View with){
    with.setVisibility(View.GONE);
    mHeaderView.revert(button, with);
}

Переданный with View в настоящее время является неопределенным ProgressBar, и кнопка заменяется на OnClick и возвращается, когдафоновый процесс завершается.

Надеюсь, это поможет

0 голосов
/ 28 декабря 2010

Во-первых, размещение вашего кода поможет вам получить помощь.Похоже, вы не правильно отредактировали свой файл манифеста для фактического отображения ProgressBar, поэтому начните с публикации того, как это выглядит.Это довольно просто.

Проверьте свой класс активности ... Вы установили видимость на true?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...