本章节翻译自《Beginning-Android-4-Application-Development》,如有翻译不当的地方,敬请指出。
原书购买地址http://www.amazon.com/Beginning-Android-4-Application-Development/dp/1118199545/除了“对话框”进度条,也可以创建一个显示“操作进度”的对话框,例如显示正在下载的状态。
1. 创建一个工程:Dialog。
2. main.xml中的代码。
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
- <Button
- android:id="@+id/btn_dialog3"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:onClick="onClick3"
- android:text="Click to display a detailed progress dialog" />
- </LinearLayout>
- public class DialogActivity extends Activity {
- ProgressDialog progressDialog;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- }
- public void onClick3(View v) {
- showDialog(1);
- progressDialog.setProgress(0);
- new Thread(new Runnable() {
- public void run() {
- for (int i = 1; i <= 15; i++) {
- try {
- // ---simulate doing something lengthy---
- Thread.sleep(1000);
- // ---update the dialog---
- progressDialog.incrementProgressBy((int) (100 / 15));
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- progressDialog.dismiss();
- }
- }).start();
- }
- @Override
- protected Dialog onCreateDialog(int id) {
- switch (id) {
- case 1:
- progressDialog = new ProgressDialog(this);
- progressDialog.setIcon(R.drawable.ic_launcher);
- progressDialog.setTitle("Downloading files...");
- progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
- progressDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK",
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int whichButton) {
- Toast.makeText(getBaseContext(), "OK clicked!",
- Toast.LENGTH_SHORT).show();
- }
- });
- progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel",
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int whichButton) {
- Toast.makeText(getBaseContext(), "Cancel clicked!",
- Toast.LENGTH_SHORT).show();
- }
- });
- return progressDialog;
- }
- return null;
- }
- }
想要创建一个显示进度的对话框,首先要创建一个ProgressDialog类的实例,然后设置各种状态,图标、标题、样式等等:
- progressDialog = new ProgressDialog(this);
- progressDialog.setIcon(R.drawable.ic_launcher);
- progressDialog.setTitle("Downloading files...");
- progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
- progressDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK",
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int whichButton) {
- Toast.makeText(getBaseContext(), "OK clicked!",
- Toast.LENGTH_SHORT).show();
- }
- });
- progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel",
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int whichButton) {
- Toast.makeText(getBaseContext(), "Cancel clicked!",
- Toast.LENGTH_SHORT).show();
- }
- });
- progressDialog.setProgress(0);
- new Thread(new Runnable() {
- public void run() {
- for (int i = 1; i <= 15; i++) {
- try {
- // ---simulate doing something lengthy---
- Thread.sleep(1000);
- // ---update the dialog---
- progressDialog.incrementProgressBy((int) (100 / 15));
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- progressDialog.dismiss();
- }
- }).start();