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

    运行。

  • 相关阅读:
    内存溢出和内存泄漏的区别、产生原因以及解决方案
    HTTP1.0、HTTP1.1 和 HTTP2.0 的区别
    TCP, UDP, HTTP, HTTPS协议
    测试面试常见面试题汇总
    SDK测试方法
    App弱网测试工具--Qnet
    PerfDog性能狗移动端性能测试工具
    Jmeter作用域
    事务(转账功能)
    DBUtils
  • 原文地址:https://www.cnblogs.com/rainmj/p/5185202.html
Copyright © 2011-2022 走看看