Android--圆形进度条对话框

来源:互联网 发布:变频布林线源码 编辑:程序博客网 时间:2024/05/16 15:01

主要知识点有

 1.ProgressDialog.show(this, "数据加载", "正在加载中....");显示圆形进度条,但是显示后会一直是这个界面所以要让它过一会就消失 2.不能直接使用dismiss()这样这个进度框就不会显示,因此采用线程的方式 3.让他休息一会是要加载的数据 4.当回调方法都执行完才会显示对话框,而所有回调方法是在主线程中执行,所以得在分线程中设计消失 5.不能再分线程更新UI因此不能在分线程中设置Toast那为什么可以设置对话框小时呢?我们观看dismiss源码会发现dismiss是在主线程操作的,因此这属于间接操作

这里写图片描述
如图所示:
当点击按钮后会出现如图所示界面,过几秒后又回到初始界面,并提示加载完成
xml中的简单代码

<Button     android:id="@+id/btn_Progress"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="显示圆形进度ProgressDialog"    android:layout_marginTop="30dp"    android:onClick="showBP"/>

在主类中主要用到线程的知识点

//圆形进度条    public void showBP (View view) {//回调方法:主线程执行        final ProgressDialog dialog = ProgressDialog.show(this, "数据加载", "正在加载中....");        //模拟做一个长时间的工作        //长时间的工作不能再主线程做,得启动分线程完成        new Thread() {            public void run() {//分线程                for(int i=0;i<20;i++) {                    //休息一会                    try {                        Thread.sleep(100);                    } catch (InterruptedException e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                    }                }                //移除dialog                dialog.dismiss();//方法在分线程执行,但内部使用Handler实现主线程移除dialog                //不能在分线程直接更新UI                //显示toast                runOnUiThread(new Runnable() {                    @Override                    public void run() {//在主线程执行                        Toast.makeText(DiologActivity.this,"加载完后了",0).show();                    }                });                //runOnUiThread()在分线程执行                /*new Thread(new Runnable() {                    @Override                    public void run() {                        // TODO Auto-generated method stub                    }                }).start();*/            };        }.start();    }
0 0
原创粉丝点击