2010-08-11 3 views
1

Мне нужно отобразить значок прогресса в кнопке, чтобы пользователь мог взаимодействовать с другими элементами GUI во время обработки фоновой задачи.Как отобразить значок прогресса в кнопке

Я искал на сайте разработчика Android и обнаружил, что мы можем использовать анимированные чертежи, но не знаем, как их использовать. Пожалуйста, сообщите об этом.

+0

ли вы выяснить, как это сделать? – Emmanuel

+0

Очень простой способ сделать это без использования анимированного drawable - использовать компонент «PregressBar» в макете дизайна xml. Когда вам нужно показать его, просто установите его видимость на видимое, и когда вам нужно скрыть его, вы можете установить его свойство видимости в GONE. Но помните, что это задача пользовательского интерфейса, поэтому, когда вам нужно делать это с помощью потока, отличного от UI, вам нужно использовать Handler для установки статуса компонента «ProgressBar» во время выполнения. – Maneesh

ответ

0

Если индикатор хода по умолчанию достаточно хорош для вас (т. Е. Вращающееся колесо), вы можете просто использовать ProgressBar. Чтобы изменить его с нормальной полосы хода на прялку, используйте progressBar.setIndeterminate(true).

2

Самый простой способ сделать это без использования анимированного чертежа - использовать компонент «PregressBar» в макете дизайна xml. Когда вам нужно показать его, просто установите его видимость на видимое, и когда вам нужно скрыть его, вы можете установить его свойство видимости в GONE. Но помните, что это задача пользовательского интерфейса, поэтому, когда вам нужно делать это с помощью потока, отличного от UI, вам нужно использовать Handler для установки статуса компонента «ProgressBar» во время выполнения.

Ниже идентификатора компонента в файле макета.

<ProgressBar 
android:id="@+id/progressBar1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"> 
</ProgressBar> 

Ниже код, написанный в Java файл

ProgressBar prg; 
@Override  
    public void onCreate(Bundle savedInstanceState) 
    {   
     super.onCreate(savedInstanceState);   
     setContentView(R.layout.main1); 
     prg=(ProgressBar)findViewById(R.id.ProgressBar1); 
     prg.setVisibility(ProgressBar.GONE); 
    } 
public void start_background_process() 
{ 
// starting the process 
prg.setVisibility(ProgressBar.VISIBLE); 

new Thread(new Runnable() 
     { public void run() 
     { 
     // Do your background stuff here which takes indefinite time 
     mHandlerUpdateProgress.post(mUpdateUpdateProgress); 

     } 
     }).start(); 
} 
final Handler mHandlerUpdateProgress= new Handler(); 

    final Runnable mUpdateUpdateProgress = new Runnable() { 
     public void run() { 
// ending the process 
      prg.setVisibility(ProgressBar.GONE); 
     } 
    }; 
Смежные вопросы