Android基础学习---基础控件学习集合(progressbar)

1:常用的进度条显示(ProgressBar)
  进度条常常与线程结合起来做,动态的显示进度,避免长时间的执行某个耗时的操作时,让用户感觉程序失去响应,
  提高用户界面的友好性
  进度条支持的风格
  Progress几种风格描述
   常使用的Progress基础属性
   Progress---基础属性
  实验代码
    

View Code
// 该程序模拟填充长度为100的数组
    private int[] data = new int[100];
    int hasData = 0;
    // 定义进度对话框的标识
    final int PROGRESS_DIALOG = 0x112;
    // 记录进度对话框的完成百分比
    int progressStatus = 0;
    ProgressDialog pd;
    // 定义一个负责更新的进度的Handler
    Handler handler;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button execBn = (Button) findViewById(R.id.exec);
        execBn.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View source)
            {
                showDialog(PROGRESS_DIALOG);
            }
        });
        handler = new Handler()
        {
            @Override
            public void handleMessage(Message msg)
            {
                // 表明消息是由该程序发送的。
                if (msg.what == 0x111)
                {
                    pd.setProgress(progressStatus);
                }
            }
        };
    }

    @Override
    public Dialog onCreateDialog(int id, Bundle status)
    {
        System.out.println("------create------");
        switch (id)
        {
            case PROGRESS_DIALOG:
                // 创建进度对话框
                pd = new ProgressDialog(this);
                pd.setMax(100);
                // 设置对话框的标题
                pd.setTitle("任务完成百分比");
                // 设置对话框 显示的内容
                pd.setMessage("耗时任务的完成百分比");
                // 设置对话框不能用“取消”按钮关闭
                pd.setCancelable(false);
                // 设置对话框的进度条风格
//                pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
                pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                // 设置对话框的进度条是否显示进度
                pd.setIndeterminate(false);
                break;
        }
        return pd;
    }

    // 该方法将在onCreateDialog方法调用之后被回调
    @Override
    public void onPrepareDialog(int id, Dialog dialog)
    {
        System.out.println("------prepare------");
        super.onPrepareDialog(id, dialog);
        switch (id)
        {
            case PROGRESS_DIALOG:
                // 对话框进度清零
                pd.incrementProgressBy(-pd.getProgress());
                new Thread()
                {
                    public void run()
                    {
                        while (progressStatus < 100)
                        {
                            // 获取耗时操作的完成百分比
                            progressStatus = doWork();
                            // 发送消息到Handler
                            Message m = new Message();
                            m.what = 0x111;
                            // 发送消息
                            handler.sendMessage(m);
                        }

                        // 如果任务已经完成
                        if (progressStatus >= 100)
                        {
                            // 关闭对话框
                            pd.dismiss();
                        }
                    }
                }.start();
                break;
        }
    }

    // 模拟一个耗时的操作。
    public int doWork()
    {
        // 为数组元素赋值
        data[hasData++] = (int) (Math.random() * 100);
        try
        {
            Thread.sleep(100);
        }
        catch (InterruptedException e)
        {
            e.printStackTrace();
        }
        return hasData;
    }

  还有的进度条,可以直接在窗体标题上显示,这种进度条不需要使用ProgressBar组件,这组件相当于在Activity对象
  中直接进行调用。请求窗体参数。

View Code
//设置窗口特征:启用显示进度的进度条
//requestWindowFeature(Window.FEATURE_PROGRESS);
//设置窗口特征:启用不显示进度的进度条
//requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

  设置进度条是否进行隐藏  

View Code
//隐藏不带进度的进度条。传入false代表隐藏,传入true表示显示                setProgressBarIndeterminateVisibility(false);
//隐藏带进度的进度条。传入false代表隐藏,传入true表示显示                
setProgressBarVisibility(false);

 

posted @ 2013-01-21 14:01  对象未引用到实例  阅读(150)  评论(0)    收藏  举报