zoukankan      html  css  js  c++  java
  • 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;
        }
    }
    

      

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

    不努力,还要青春干什么?
  • 相关阅读:
    查询死锁和处理死锁(SqlServer)
    日期函数(SqlServer)
    [Shell] echo/输出 中引用命令
    Github 团队协作基本流程与命令操作 图解git工作流程
    HTML 引入 CSS、JS 的三种方式
    JavaScript 字符串匹配 | JS 的正则用法 | 从后边匹配
    Sublime + Chrome 本地调试 CSS 选择器
    常用 CSS 选择器
    使用 Sublime 或其他编辑器调试 Tampermonkey 油猴脚本
    使用 chrome 扩展 Vimium 实现快捷键关闭其他标签页
  • 原文地址:https://www.cnblogs.com/caidupingblogs/p/5102745.html
Copyright © 2011-2022 走看看