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,传递一些状态信息

    }

    });

    }

  • 相关阅读:
    Combining STDP and binary networks for reinforcement learning from images and sparse rewards
    R-SNN: An Analysis and Design Methodology for Robustifying Spiking Neural Networks against Adversarial Attacks through Noise Filters for Dynamic Vision Sensors
    rust 高阶函数 (high order function)
    Redis从0到精通--三种特殊类型Hyperloglog
    Redis从0到精通--三种特殊类型Geospatial
    Redis从0到精通--三种特殊类型
    Redis从0到精通--Zset
    Redis从0到精通--Set
    Redis从0到精通--Hash
    Redis从0到精通--List
  • 原文地址:https://www.cnblogs.com/anyuan9/p/6171588.html
Copyright © 2011-2022 走看看