You should create the Handler() ahead of time and keep it in scope.
Also, you could sleep the thread:
for( int i=0 ; i<damage ; i++){
new Handler().postDelayed(new Runnable(){
@Override
public void run(){
try {
Thread.sleep(40);
} catch (InterruptedException e) { }
--curHp;
hpBar.setProgress(curHp);
}
},40);
}
It should be said that you're likely to be get better mileage with a custom view than trying to get the ProgressBar to be your HP meter:
http://developer.android.com/training/custom-views/index.html