Android进步之路二:进度对话框的示例代码以及详解

本文详细介绍了如何在Android应用中使用代码创建并显示进度对话框,包括设置不同样式和处理用户交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<span style="font-family: 'Microsoft YaHei'; background-color: rgb(255, 255, 255);">使用代码ProgressDialog.show(ProgressDialogActivity.this, "请稍等", "数据正在加载中...", true);创建并显示一个进度对话框。</span>
调用setProgressStyle()方法设置进度对话框风格。有两种风格:
     ProgressDialog.STYLE_SPINNER 旋体进度条风格 (为默认风格)

     ProgressDialog.STYLE_HORIZONTAL 横向进度条风格

1:在布局文件中用一个按纽进行测试

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:paddingBottom="@dimen/activity_vertical_margin"  
  6.     android:paddingLeft="@dimen/activity_horizontal_margin"  
  7.     android:paddingRight="@dimen/activity_horizontal_margin"  
  8.     android:paddingTop="@dimen/activity_vertical_margin"  
  9.     tools:context=".MainActivit
      .setItems(items, new DialogInterface.OnClickListener() {  
      
                        @Override  
                        public void onClick(DialogInterface dialog, int which) {  
                            // 第一个参数dialog int which 条目  
                            Toast.makeText(getApplicationContext(),  
                                    "

    y" >  
  10.   
  11.     <Button  
  12.         android:id="@+id/button1"  
  13.         android:layout_width="wrap_content"  
  14.         android:layout_height="wrap_content"  
  15.         android:layout_alignParentLeft="true"  
  16.         android:layout_alignParentRight="true"  
  17.         android:layout_alignParentTop="true"  
  18.         android:layout_marginTop="140dp"  
  19.         android:onClick="openDialog"  
  20.         android:text="@string/text_dialog"/>  
  21.   
  22. </RelativeLayout>  

2:引用strings.xml的值

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <resources>  
  3.   
  4.     <string name="app_name">lession16-dialog</string>  
  5.     <string name="action_settings">Settings</string>  
  6.     <string name="hello_world">Hello world!</string>  
  7.       
  8.     <string name="text_dialog">对话框的案例</string>  
  9.   
  10. </resources>  
3:MainActivity中的示例代码:

</pre><pre name="code" class="java">
<span style="font-family:Microsoft YaHei;font-size:12px;">package com.sino.progressdialog;
  
import android.os.Bundle;  
import android.os.Handler;  
import android.os.Message;  
import android.app.Activity;  
import android.app.AlertDialog;  
import android.app.ProgressDialog;  
import android.content.DialogInterface;  
import android.view.Menu;  
import android.view.View;  
import android.widget.Toast;  
  
public class MainActivity extends Activity {  
    public Handler handler;  
    private static final int MAX_PROGRESS=100;  
    private static final int PRO=10;  
    private int progress=10;  
    private ProgressDialog progressDialog;  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
    }  
  
    @Override  
    public boolean onCreateOptionsMenu(Menu menu) {  
        // Inflate the menu; this adds items to the action bar if it is present.  
        getMenuInflater().inflate(R.menu.main, menu);  
        return true;  
    }  
    
    /**
     * 以下方法点击事件的第三种方式,在布局文件中声明onClick点击事件,在代码中实现
     * 
     */
  
    @SuppressWarnings("deprecation")  
    public void openDialog(View v) {  
        handler=new Handler(){  
            @Override  
            public void handleMessage(Message msg) {  
                super.handleMessage(msg);  
                switch (msg.what) {  
                case PRO:  
//                	如果当前进度大于总进度,就重置为0,并销毁对话框
                    if(progress>=MAX_PROGRESS){  
                        //重新设置  
                        progress=0;  
                        progressDialog.dismiss();//销毁对话框  
                    }else{
//                    	否则的话,就设置进度条最初的进度为10,进度就每次+1,每隔0.1秒就+1。
                        progress++;  
                        progressDialog.incrementProgressBy(1);
                        //延迟发送消息  
                        handler.sendEmptyMessageDelayed(PRO, 100);  
                    }  
                    break;  
  
                default:  
                    break;  
                }  
                  
            }  
        };  
        
//        这里先创建对话框,设置图标,标题,信息,并且设置对话框的样式(有水平的,有旋转的,旋转的不能显示进度)
        progressDialog=new ProgressDialog(this);  
        progressDialog.setIcon(R.drawable.ic_launcher);  
        progressDialog.setTitle("正在处理数据。。。");  
        progressDialog.setMessage("请稍后。。");  
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置进度条对话框//样式(水平,旋转)
//        progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
          
        //进度最大值  
        progressDialog.setMax(MAX_PROGRESS);  
//        为进度条设置一个暂停按纽。当点击暂停的时候,就????
        progressDialog.setButton("暂停",new DialogInterface.OnClickListener() {  
              
            @Override  
            public void onClick(DialogInterface dialog, int which) {  
                //删除消息队列  
                handler.removeMessages(PRO);  
                  
            }  
        });  
          
        progressDialog.setButton2("取消",new DialogInterface.OnClickListener() {  
              
            @Override  
            public void onClick(DialogInterface dialog, int which) {  
                //删除消息队列  
                handler.removeMessages(PRO);  
                //恢复进度条初始值  
                progress=0;  
                progressDialog.setProgress(progress);  
            }  
        });  
          
        //显示  
        progressDialog.show();  
        //必须设置到show之后,进度大于0,就设为进度,否则就设为0
        progress=(progress>0)?progress:0;  
        progressDialog.setProgress(progress);  
        //线程  
        handler.sendEmptyMessage(PRO);  
          
    }
    
    
    
  
    public void test1() {  
        new AlertDialog.Builder(this)  
                .setIcon(R.drawable.ic_launcher)  
                .setTitle("xxxx")  
                .setMessage("是否创建文件")  
                .setPositiveButton("确认", new DialogInterface.OnClickListener() {  
  
                    @Override  
                    public void onClick(DialogInterface dialog, int which) {  
                        // 创建文件  
                        new AlertDialog.Builder(MainActivity.this).setMessage(  
                                "文件已经被创建").show();  
                    }  
                })  
                .setNegativeButton("取消", new DialogInterface.OnClickListener() {  
  
                    @Override  
                    public void onClick(DialogInterface dialog, int which) {  
                        new AlertDialog.Builder(MainActivity.this)  
                                .setMessage("您已经选择了取消的按钮,该文件不会被创建").create()  
                                .show();  
                    }  
                }).show();  
    }  
  
    public void test2() {  
        // 创建对话框  
        AlertDialog alertDialog = new AlertDialog.Builder(this).create();  
        // 设置对话框的标题  
        alertDialog.setTitle("xxxx");  
        // 设置对话框的内容  
        alertDialog.setMessage("消息");  
        // 显示对话框  
        alertDialog.show();  
    }  
  
    public void test3() {  
        AlertDialog alertDialog = new AlertDialog.Builder(this)  
                .setTitle("xxxx").setMessage("啊大声大声道").show();  
    }  
  
    public void test4() {  
        final String items[] = { "Java", "Php", "3G", ".Net" };  
        new AlertDialog.Builder(this).setTitle("简单列表对话框")  
                .setItems(items, new DialogInterface.OnClickListener() {  
  
                    @Override  
                    public void onClick(DialogInterface dialog, int which) {  
                        // 第一个参数dialog int which 条目  
                        Toast.makeText(getApplicationContext(),  
                                "aaa" + items[which], Toast.LENGTH_LONG).show();  
  
                    }  
                }).show();  
  
    }  
      
    public void test5(){  
        final String items[]={"JAVA",".NET","3G","PHP"};  
        new AlertDialog.Builder(this).setTitle("单选列表对话框")  
        //数字2代表的是数组的下标  
            .setSingleChoiceItems(items, 2, new DialogInterface.OnClickListener() {  
                  
                @Override  
                public void onClick(DialogInterface dialog, int which) {  
                    //第一个参数 dialog   int which  那个条目  
                    Toast.makeText(getApplicationContext(), "xxxxx"+items[which], Toast.LENGTH_LONG).show();  
                      
                }  
            }).show();  
    }  
      
      
    public void test6(){  
        final String items[]={"JAVA",".NET","PHP","3G"};  
        new AlertDialog.Builder(this).setTitle("多选列表对话框的简单实现")  
            .setMultiChoiceItems(items, new boolean[]{false, true,true,true},new DialogInterface.OnMultiChoiceClickListener() {  
                  
                @Override  
                public void onClick(DialogInterface dialog, int which, boolean isChecked) {  
                    Toast.makeText(getApplicationContext(), "sad"+items[which], Toast.LENGTH_LONG).show();  
                      
                }  
            }).show();  
    }  
  
}  </span>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值