• 【Android】6.3 ProgressDialog


    分类:C#、Android、VS2015;

    创建日期:2016-02-08

    一、简介

    进度条对话框(ProgressDialog)常用于不能在短时间内快速完成的操作,显示进度条的目的是为了让用户明白程序正在处理的进度,避免用户感觉莫名其妙。

    本示例演示了两种进度条的基本用法:条形进度条和圆形进度条。

    二、示例==Demo03ProgressDialog

    1、运行截图

    image  image

    2、添加Demo03_ProgressDialog.axml文件

    在layout文件夹下添加该文件。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <Button
            android:id="@+id/btnPprogress"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="条形进度条" />
        <Button
            android:id="@+id/btnCircle"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="圆形进度条" />
    </LinearLayout>

    3、添加Demo03ProgressDialog.cs文件

    在SrcActivity文件夹下添加该文件。

    using System;
    using Android.App;
    using Android.OS;
    using Android.Widget;
    
    namespace ch06demos.SrcActivity
    {
        [Activity(Label = "Demo03ProgressDialog")]
        public class Demo03ProgressDialog : Activity
        {
            private int progress;
            private ProgressDialog dialog;
    
            protected override void OnCreate(Bundle bundle)
            {
                base.OnCreate(bundle);
                SetContentView(Resource.Layout.Demo03_ProgressDialog);
                var btnProgress = FindViewById<Button>(Resource.Id.btnPprogress);
                btnProgress.Click += BtnProgress_Click;
                var btnCircle = FindViewById<Button>(Resource.Id.btnCircle);
                btnCircle.Click += BtnCircle_Click;
            }
    
            private void BtnProgress_Click(object sender, EventArgs e)
            {
                progress = 0;
                dialog = new ProgressDialog(this)
                {
                    Progress = progress,
                    Indeterminate = false,
                };
                dialog.SetProgressStyle(ProgressDialogStyle.Horizontal);
                dialog.SetTitle("条形进度条示例");
                dialog.SetMessage("正在下载……");
                dialog.SetIcon(Resource.Drawable.Icon);
                dialog.SetCancelable(true);
                dialog.SetButton("取消", delegate
                {
                    Toast.MakeText(this, "已取消下载!", ToastLength.Long).Show();
                });
                dialog.Show();
                RunTask(showProgress: false);
            }
    
            private void BtnCircle_Click(object sender, EventArgs e)
            {
                progress = 0;
                dialog = new ProgressDialog(this)
                {
                    Progress = progress,
                    Indeterminate = false
                };
                dialog.SetProgressStyle(ProgressDialogStyle.Spinner);
                dialog.SetTitle("环转圆形进度条示例");
                dialog.SetMessage("正在下载……");
                dialog.SetIcon(Resource.Drawable.Icon);
                dialog.SetCancelable(true);
                dialog.SetButton("取消", delegate
                {
                    Toast.MakeText(this, "已取消下载!", ToastLength.Long).Show();
                });
                dialog.Show();
                RunTask(showProgress: true);
            }
    
            //模拟长时间执行的任务
            private void RunTask(bool showProgress)
            {
                System.Threading.Tasks.Task.Run(() =>
                {
                    while (progress < 100)
                    {
                        dialog.Progress = progress++;
                        if (showProgress)
                        {
                            RunOnUiThread(() =>
                            {
                                dialog.SetMessage("正在下载……" + progress + "%");
                            });
                        }
                        System.Threading.Thread.Sleep(100);
                    }
                    dialog.Cancel();
                });
            }
        }
    }

    运行。

  • 相关阅读:
    五、MongoDB的索引
    四、MongoDB的查询
    各模块启动
    HBase1.2.6 javaapi查看rowkey 所在分区等信息
    HBase1.2.6 预分区后,数据不进入预定分区的一个 bug
    SparkStreaming程序设计
    SparkSQL程序设计
    Spark SQL概述
    常用RDD
    spark程序设计
  • 原文地址:https://www.cnblogs.com/rainmj/p/5185202.html
Copyright © 2020-2023  润新知