2010-12-28 2 views
3

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

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

ответ

5

Зову это когда индикатор появляется снова, и он должен быть анимировать снова.

public static void resumeProgressBarAnimation(ProgressBar pb) { 
    if (pb.getVisibility() == View.VISIBLE) { 
     pb.setVisibility(View.INVISIBLE); 
     pb.setVisibility(View.VISIBLE); 
    } 
} 
0

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

Проверьте свой класс активности ... вы установили видимость, чтобы быть правдой?

1

У меня была такая же проблема, но я перестановка Кнопки с неопределенным ProgressBar, так что я посмотрел на ProgressBar source и они используют startAnimation() и stopAnimation() для неопределенного ProgressBar, но методы не видны для деятельности так быстрые обходной Я использую is at 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 Посмотреть у.е. редко является неопределенным ProgressBar, и кнопка заменяется OnClick и возвращается, когда фоновый процесс заканчивается.

Надеется, что это помогает

Смежные вопросы