• Android之进度条1


    第一种方法(比较简单): 

    package com.example.dialogdemo;
     
    import java.util.Random;
     
    import android.app.Activity;
    import android.app.ProgressDialog;
    import android.os.Bundle;
    import android.os.SystemClock;
    import android.view.Menu;
     
    public class MainActivity extends Activity {
         
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
             
             
           final ProgressDialog progressDialog=new ProgressDialog(this);
           //进度条设置成水平
           progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
           //设置最大值
           progressDialog.setMax(100);
           progressDialog.show();
           //线程
           new Thread(new Runnable() {
             
            private int progress;
     
            @Override
            public void run() {
                // TODO Auto-generated method stub
                while(true){
                     
                    progressDialog.setProgress(progress);
                    progress++;
                    SystemClock.sleep(new Random().nextInt(100));
                    if(progress==100){
                        progressDialog.dismiss();
                    }
                }
     
            }
        }).start();
        }
     
        @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;
        }   
    }
    

      

    效果执行图:进入程序只能执行一次,相当于数据的“导入”。

    第二中方法(仿Andorid应用的安装):

    package com.example.progressdialog;
     
    import android.app.Activity;
    import android.app.Dialog;
    import android.app.ProgressDialog;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.view.View;
    import android.widget.Button;
     
    public class ProgressDialogActivity extends Activity {
         
        //任务大小
        private int[] data = new int[100];
        //已经完成数据
        private int hasdata = 0;
        //完成程度 
        private int status = 0;
        //设置标记
        final int SIGN = 0x11;
        Handler h;
        //定义一个ProgressDialog
        ProgressDialog pd ;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button btn = (Button)findViewById(R.id.button);
            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    showDialog(SIGN);
                }
            });
            h = new Handler(){
                @Override
                public void handleMessage(Message msg) {
                    switch (msg.what) {
                    case 0x1111:
                        //设置状态
                        pd.setProgress(status);
                        break;
                    default:
                        break;
                    }
                    pd.setProgress(status);
                }
                 
            };
             
        }
        //调用onPrepareDialog()方法之后
        @Override
        protected Dialog onCreateDialog(int id, Bundle args) {
            // TODO Auto-generated method stub
            pd = new ProgressDialog(this);
            pd.setMax(100);
            pd.setMessage("正在安装中");
            pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            pd.setCancelable(false);
            return pd;
        }
        //调用showDialog()之后和调用onCreateDialog之前
        @Override
        protected void onPrepareDialog(int id, Dialog dialog, Bundle args) {
            // TODO Auto-generated method stub
            switch (id) {
            case SIGN:
                pd.incrementProgressBy(-pd.getProgress());
                new Thread(){
                    @Override
                    public void run() {
                        while(status < 100){
                            status = dowork();
                            Message msg = new Message();
                            msg.what = 0x1111;
                            h.sendMessage(msg);
                        }
                        if(status >= 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;
        }
    }
    

      

    执行效果图:点击按钮可重复执行

    不努力,还要青春干什么?
  • 相关阅读:
    PCB封装分配
    1.26-CAD异形封装的制作
    1.40-CAE封装6个实例单门制作
    简单的URL解析
    冒泡排序和简单的递归
    作用域的提升
    数组的去重,以及随机一个验证码
    数组和字符串的相互转换。
    substring,substr,和slice的区别详解。
    去除Input输入框中边框的方式
  • 原文地址:https://www.cnblogs.com/caidupingblogs/p/5102745.html
Copyright © 2020-2023  润新知