zoukankan      html  css  js  c++  java
  • 第34讲 UI组件之 ProgressDialog和Message

    34UI组件之 ProgressDialogMessage

    1.进度对话框 ProgressDialog

    <1>简介

    ProgressDialog是AlertDialog类的一个扩展,可以为一个未定义进度的任务显示一个旋转轮形状的进度动画,或者为一个指定进度的任务显示一个进度条。

    一个对话框中显示一个进步指标和一个可选的文本信息或一个视图。只有文本信息或一个视图,可以同时使用。

    对话框可以按back键取消。

    <2>方法

    setProgressStyle()

    设置进度条风格

    setTitle()

    设置ProgressDialog 标题

    setMessage()

    设置ProgressDialog 提示信息

    setIcon()

    设置ProgressDialog 标题图标

    setIndeterminate()

    设置ProgressDialog 的进度条是否不明确

    setCancelable()

    设置ProgressDialog 是否可以按退回按键取消

    setButton()

    设置ProgressDialog 的一个Button

    setProgress()

    设置ProgressDialog 进度条进度

    show()

    显示ProgressDialog

    1.弹出一个进度对话框,只有一个无限循环的小圆圈。

    public void test1(View view) {

    ProgressDialog dialog=new ProgressDialog(this);

    dialog.setTitle("标题信息");                                      //设置ProgressDialog标题

    dialog.setMessage("正在下载...");                //设置ProgressDialog 提示信息

    dialog.show();                                                        //显示ProgressDialog

    }

    2.弹出一个对话框,显示一个水平进度条

    public void test2(View view) {

    ProgressDialog dialog=new ProgressDialog(this);

    dialog.setTitle("标题信息");                                      //设置ProgressDialog标题

    dialog.setMessage("正在下载...");                //设置ProgressDialog 提示信息

    dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);   //水平方向的进度条

    dialog.setMax(100);                                             //设置长度

    dialog.incrementProgressBy(10);                     //指定增加的进度

    dialog.show();                                                        //显示ProgressDialog

    }

    3.将耗时任务与更新UI组件解耦,使用handleMessage方法。

    首先需要在UI主线程中定义一个handler,用于接收其他线程中传递过来的message。

    private Handler handler=new Handler(newCallback() {

    public boolean handleMessage(Message msg) {

    /更新UI组件的工作,就放置到这里。   

    //通过msg可以传递信息,来改变流程的走向。

    //同时把不变的代码进行封装,把变化的部分通过参数msg传递。 msg对象需要具有应对所有变化的能力。

    ProgressDialog dialog=(ProgressDialog)msg.obj;

    dialog.cancel();

    if(msg.arg1 == 1){

             textView.setText("下载成功!!");

    }else{

             textView.setText("下载失败!!");

    }

    return false;

    }

    });

    然后在其他线程中,设置一个message。该msg将其余线程中的dialog传递给了handler接收,从而修改了dialog。

    public void test1(View view) {

    ProgressDialog dialog=new ProgressDialog(this);

    dialog.setTitle("标题信息");                                      //设置ProgressDialog 标题

    dialog.setMessage("正在下载...");                //设置ProgressDialog 提示信息

    dialog.show();                                                        //显示ProgressDialog

    new Thread(new Runable(){

    public void run(){

    try{

    Thread.sleep(6000);

    }

    catch(InterruptedException e){

    e.printStackTrace();

    }

    Message msg=new Message();

    msg.obj=dialog;

    msg.arg1 = 1;                              //1 下载成功;

    //msg.arg1 = 2;                           //2 下载失败;

    handler.sendMessage(msg);

    //也可以设置一个flag,传递一些状态信息

    }

    });

    }

  • 相关阅读:
    Adobe Edge Animate –EdgeCommons Log和全局变量设置功能
    Adobe Edge Animate –使用EdgeCommons加载和播放音频
    Adobe Edge Animate –svg地图交互-精确的边缘及颜色置换
    Adobe Edge Animate –解决图形边缘精确检测问题-通过jquery加载svg图片
    Adobe Edge Animate –修改Edge Commons Spotlight功能,使之能支持播放中国网站视频
    Adobe Edge Animate –获取鼠标位置及跟随鼠标功能实现
    Adobe Edge Animate –使用css制作菜单
    Adobe Edge Animate –Edge Commons强势来袭,Edge团队开发成为现实
    Adobe Edge Animate –可重复使用的个性化按钮制作
    Adobe Edge Animate –弹性的方块-使用tweenmax缓动效果
  • 原文地址:https://www.cnblogs.com/anyuan9/p/6171588.html
Copyright © 2011-2022 走看看