Change your code as follows:
public class Main extends Activity {
private ImageView hImageViewPic;
private Button iButton, gButton;
private int currentImage = 0;
private Handler handler = null;
private ProgressDialog progressDialog = null;
int[] images = { R.drawable.r1, R.drawable.r2, R.drawable.r3, R.drawable.r4,
R.drawable.r5, R.drawable.r6, R.drawable.r7, R.drawable.r8, R.drawable.r9, R.drawable.r10 };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
handler = new Handler();
hImageViewPic = (ImageView)findViewById(R.id.idImageViewPic);
hImageViewPic.setImageResource(images[currentImage]);
iButton = (Button) findViewById(R.id.bnext);
gButton = (Button) findViewById(R.id.bprev);
//Just set one Click listener for the image
iButton.setOnClickListener(iButtonChangeImageListener);
gButton.setOnClickListener(gButtonChangeImageListener);
}
private void changeImage(View v){
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setMessage("Please Wait...");
progressDialog.show();
new Thread(new Runnable() {
public void run() {
long starttime = SystemClock.currentThreadTimeMillis();
long stopwatch = 0;
//Use Handler to change your Image here
handler.post(new Runnable() {
@Override
public void run() {
if (currentImage < 0)
currentImage = images.length - 1;
currentImage = currentImage % images.length;
hImageViewPic.setImageResource(images[currentImage]);
}
});
do{
stopwatch =(SystemClock.currentThreadTimeMillis()-starttime);
if(stopwatch > 500)
break;
}while(true);
//The loop will always execute for 5000 milliseconds
progressDialog.dismiss();
}
}).start();
}
View.OnClickListener iButtonChangeImageListener = new OnClickListener() {
public void onClick(View v) {
//Increase Counter to move to next Image
currentImage++;
changeImage(v);
}
};
View.OnClickListener gButtonChangeImageListener = new OnClickListener() {
public void onClick(View v) {
//Decrease Counter to move to next Image
currentImage--;
changeImage(v);
}
};
}