你好家伙我正在简单的应用程序,它基本上有一个按钮功能,当按下时,显示进度栏,然后切换图像。我有问题,点击该按钮后,该代码立即切换图像。我需要在进度条的末尾切换图像。更改图片和文字后点击
这是我到目前为止的代码:
package com.example.testapp;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.view.View;
import android.view.View.OnClickListener;
public class MainActivity extends Activity {
ImageView image;
Button btnStartProgress;
ProgressDialog progressBar;
private int progressBarStatus = 0;
private Handler progressBarHandler = new Handler();
private long fileSize = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addListenerOnButton();
}
public void addListenerOnButton() {
image = (ImageView) findViewById(R.id.imageView1);
btnStartProgress = (Button) findViewById(R.id.button1);
btnStartProgress.setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
progressBar = new ProgressDialog(v.getContext());
progressBar.setCancelable(true);
progressBar.setMessage("Scanning ...");
progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressBar.setProgress(0);
progressBar.setMax(100);
progressBar.show();
progressBarStatus = 0;
fileSize = 0;
new Thread(new Runnable() {
public void run() {
while (progressBarStatus < 100) {
progressBarStatus = doSomeTasks();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// Update the progress bar
progressBarHandler.post(new Runnable() {
public void run() {
TextView textView = (TextView) findViewById(R.id.textView1);
textView.setText("Completed!");
textView.setTextColor(0xFF00FF00);
image.setImageResource(R.drawable.yes_small);
progressBar.setProgress(progressBarStatus);
}
});
}
if (progressBarStatus >= 100) {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
progressBar.dismiss();
}
}
}).start();
}
});
}
public int doSomeTasks() {
while (fileSize <= 1000000) {
fileSize++;
if (fileSize == 100000) {
return 10;
} else if (fileSize == 200000) {
return 20;
} else if (fileSize == 300000) {
return 30;
} else if (fileSize == 400000) {
return 40;
} else if (fileSize == 500000) {
return 50;
} else if (fileSize == 600000) {
return 60;
} else if (fileSize == 700000) {
return 70;
} else if (fileSize == 800000) {
return 80;
} else if (fileSize == 900000) {
return 90;
}
}
return 100;
}
}
您可以创建自己的AsyncTask子类,然后在onPostExecute()中更新您的图像和文本。我认为这将是一个更好的解决方案为你.http://developer.android.com/reference/android/os/AsyncTask.html – Dyrborg