zoukankan      html  css  js  c++  java
  • 一手遮天 Android

    项目地址 https://github.com/webabcd/AndroidDemo
    作者 webabcd

    一手遮天 Android - view(弹出类): ProgressDialog 基础

    示例如下:

    /view/flyout/ProgressDialogDemo1.java

    /**
     * ProgressDialog - 进度对话框
     *
     * 注:ProgressDialog 继承自 AlertDialog
     */
    
    package com.webabcd.androiddemo.view.flyout;
    
    import android.app.ProgressDialog;
    import android.content.DialogInterface;
    import android.os.AsyncTask;
    import android.os.SystemClock;
    import androidx.appcompat.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    
    import com.webabcd.androiddemo.R;
    
    public class ProgressDialogDemo1 extends AppCompatActivity {
    
        private Button mButton1;
        private Button mButton2;
        private Button mButton3;
    
        private ProgressDialog mProgressDialog;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_view_flyout_progressdialogdemo1);
    
            mButton1 = findViewById(R.id.button1);
            mButton2 = findViewById(R.id.button2);
            mButton3 = findViewById(R.id.button3);
    
            sample();
        }
    
        private void sample() {
            mButton1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // ProgressDialog.show() - 显示一个简单的进度对话框(使用默认的 ProgressDialog.STYLE_SPINNER 样式,即圆圈进度条)
                    //     第 1 个参数:context
                    //     第 2 个参数:title
                    //     第 3 个参数:message
                    //     第 4 个参数:indeterminate - 进度是否是不确定的
                    //     第 5 个参数:cancelable - 点击空白处是否自动隐藏对话框
                    //     第 6 个参数:cancelListener - 对话框因用户点击了空白处而消失时触发的事件(调用 dialog.dismiss() 时不会触发此事件)
                    ProgressDialog progressDialog = ProgressDialog.show(ProgressDialogDemo1.this, "标题", "内容", true, true, new DialogInterface.OnCancelListener() {
                        @Override
                        public void onCancel(DialogInterface dialog) {
                            Toast.makeText(ProgressDialogDemo1.this, "消失了", Toast.LENGTH_SHORT).show();
                        }
                    });
                }
            });
    
            mButton2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    ProgressDialog progressDialog = new ProgressDialog(ProgressDialogDemo1.this);
                    progressDialog.setTitle("标题");
                    progressDialog.setMessage("内容");
                    progressDialog.setCancelable(true);
    
                    // setProgressStyle() - 设置进度条的样式
                    //     ProgressDialog.STYLE_SPINNER - 圆圈进度条(默认值)
                    //     ProgressDialog.STYLE_HORIZONTAL - 水平进度条
                    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                    // setIndeterminate() - 进度是否是不确定的
                    progressDialog.setIndeterminate(true);
                    // setButton() - 添加按钮以及指定其行为(可以设置 3 种按钮,分别是 DialogInterface.BUTTON_POSITIVE, DialogInterface.BUTTON_NEGATIVE, DialogInterface.BUTTON_NEUTRAL)
                    progressDialog.setButton(DialogInterface.BUTTON_POSITIVE, "关闭", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // 隐藏对话框
                            dialog.dismiss();
                        }
                    });
                    // 对话框因用户点击了空白处而消失时触发的事件(调用 dialog.dismiss() 时不会触发此事件)
                    progressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
                        @Override
                        public void onCancel(DialogInterface dialog) {
                            Toast.makeText(ProgressDialogDemo1.this, "消失了", Toast.LENGTH_SHORT).show();
                        }
                    });
    
                    // 显示对话框
                    progressDialog.show();
                }
            });
    
            mButton3.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    mProgressDialog = new ProgressDialog(ProgressDialogDemo1.this);
                    mProgressDialog.setTitle("标题");
                    mProgressDialog.setMessage("内容");
                    mProgressDialog.setCancelable(false);
    
                    // setProgressStyle() - 设置进度条的样式
                    //     ProgressDialog.STYLE_SPINNER - 圆圈进度条(默认值)
                    //     ProgressDialog.STYLE_HORIZONTAL - 水平进度条
                    mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                    // setIndeterminate() - 进度是否是不确定的
                    mProgressDialog.setIndeterminate(false);
                    // setMax() - 指定进度的最大值(最小值为 0)
                    mProgressDialog.setMax(100);
    
                    // 显示对话框
                    mProgressDialog.show();
    
                    // 用于模拟长时任务以及更新进度
                    MyTask myTask = new MyTask();
                    myTask.execute();
                }
            });
        }
    
        private class MyTask extends AsyncTask<Void, Integer, Void> {
    
            @Override
            protected Void doInBackground(Void... voids) {
                // 模拟长时任务,以及更新进度
                for (int i = 0; i <= 100; i++) {
                    publishProgress(i);
                    SystemClock.sleep(10);
                }
    
                return null;
            }
    
            @Override
            protected void onProgressUpdate(Integer... progresses) {
                // 更新进度条的进度
                mProgressDialog.setProgress(progresses[0]);
            }
    
            @Override
            protected void onPostExecute(Void aVoid) {
                // 隐藏进度条
                mProgressDialog.dismiss();
            }
        }
    }
    
    

    /layout/activity_view_flyout_progressdialogdemo1.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAllCaps="false"
            android:text="弹出一个不确定进度的圆圈进度条对话框" />
    
        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAllCaps="false"
            android:text="弹出一个不确定进度的长条进度条对话框" />
    
        <Button
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAllCaps="false"
            android:text="弹出一个可确定进度的长条进度条对话框" />
    
    </LinearLayout>
    
    

    项目地址 https://github.com/webabcd/AndroidDemo
    作者 webabcd

  • 相关阅读:
    NanoProfiler
    NanoProfiler
    Open Source Cassandra Gitbook for Developer
    Android Fragment使用(四) Toolbar使用及Fragment中的Toolbar处理
    Android Fragment使用(三) Activity, Fragment, WebView的状态保存和恢复
    Android Fragment使用(二) 嵌套Fragments (Nested Fragments) 的使用及常见错误
    Android Fragment使用(一) 基础篇 温故知新
    Set up Github Pages with Hexo, migrating from Jekyll
    EventBus源码解析 源码阅读记录
    Android M Permission 运行时权限 学习笔记
  • 原文地址:https://www.cnblogs.com/webabcd/p/android_view_flyout_ProgressDialogDemo1.html
Copyright © 2011-2022 走看看