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