在做项目中,我们经常会遇到下面这几种情形:

(1)在登录时,点击登录按钮,需要向后台验证用户名和密码,为了防止用户等待过长时间,显示个加载对话框。

(2)在进入Activity时,需要从后台加载数据,为了让用户有更好的体验,显示个加载进度框。

一个项目中,用到加载对话框的地方很多,我们可以把它写成一个工具。

实现效果图:

(1)dialog_loading_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.example.loadingview.MainActivity"><LinearLayoutandroid:layout_width="140dp"android:layout_height="140dp"android:background="@drawable/loading_progress_bg"android:layout_centerInParent="true"android:padding="8dp"android:gravity="center"android:orientation="vertical"><ProgressBarandroid:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/loading_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="加载中,请稍后...."android:textColor="#ffffff"/></LinearLayout>
</RelativeLayout>

(2)在drawable目录下,建立loading_progress_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><gradientandroid:angle="270.0"android:centerColor="#99000000"android:centerY="0.5"android:endColor="#99000000"android:startColor="#99000000"></gradient><corners android:radius="5dp" /><paddingandroid:bottom="0dp"android:left="0dp"android:right="0dp"android:top="0dp"></padding>
</shape>

(3)DialogLoading.java

package com.example.loadingview;import android.app.Dialog;
import android.content.Context;
import android.widget.TextView;public class DialogLoading extends Dialog {private TextView loadingLabel;public DialogLoading(Context context) {super(context,R.style.Dialog);setContentView(R.layout.dialog_loading_layout);setCanceledOnTouchOutside(false);    //dialog弹出后点击屏幕,dialog不消失;点击物理返回键dialog消失loadingLabel=(TextView)this.findViewById(R.id.loading_text);}public void setDialogLabel(String lable){loadingLabel.setText(lable);}
}

(4)在values文件下的styles.xml中

 <!--对话框--><style name="Dialog" parent="@android:style/Theme.Dialog"><item name="android:windowFrame">@null</item>              <!--Dialog的windowFrame框为无--><item name="android:windowIsFloating">true</item>           <!--是否浮现在activity之上--><item name="android:windowIsTranslucent">false</item>        <!--是否是半透明--><item name="android:windowNoTitle">true</item>                <!--是否显示title--><item name="android:windowBackground">@color/transparent</item>  <!--设置Dialog的背景--><item name="android:backgroundDimEnabled">true</item>            <!--背景是否模糊显示--><item name="android:windowSoftInputMode">stateHidden|adjustResize</item></style><!--对话框-->

(5)在values文件下的colors.xml中

<color name="transparent">#00000000</color>

以上写完了加载对话框的工作,下面我们来使用。

(1)activity_main.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:gravity="center"android:orientation="vertical"><Buttonandroid:id="@+id/btn"android:layout_width="match_parent"android:layout_height="50dp"android:text="点击弹出加载对话框" /></LinearLayout>

(2)MainActivity.java

package com.example.loadingview;import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;public class MainActivity extends Activity {private Button alertDialog;private DialogLoading loading;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);alertDialog = (Button) this.findViewById(R.id.btn);alertDialog.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {setDialogLabel("正在加载数据。。。");loading.show();//loading.dismiss(); 数据加载完,可以调用这个方法}});}/*** 设置Dialog的文字** @param label*/private void setDialogLabel(String label) {if (loading == null) {loading = new DialogLoading(this);}loading.setDialogLabel(label);}
}

这真的是一款很好的工具。

Android项目中简单易用的加载对话框相关推荐

  1. Android之利用回调函数onCreateDialog实现加载对话框

    效果图: 有时候我们需要去做一个Activity启动时的数据加载对话框,关于对话框的各种实现可以通过一起学android之对话框 Dialog的创建(7)来完成,在这里另外介绍一个,利用onCreat ...

  2. vue项目中vue-scroller实现上拉加载和下拉刷新

    vue目前是众所周知的流行框架大家都知道的,vue全家桶的成员是:vue-cli,vuex,vue-router,vue-axios(vue2.0).然后它的第三方插件也有很多,比如:vue-scro ...

  3. android html图片点击事件,TextView加载html图片并点击放大

    实际上android中的textview是提供了加载html代码的功能的,使用的方法也很简单 textView.setText(Html.fromHtml("html",null, ...

  4. Android项目中最火最常用的优秀开源项目(很有用)

    Android项目中最火最常用的优秀开源项目 分类 详细 框架名称 简介 Star 数 最近 更新 UI 刷新 SmartRefreshLayout Android 智能下拉刷新框架 7.7k 1天 ...

  5. android项目中在webview中打开pdf

    android项目中在webview中打开pdf. 关于android打开pdf文件方法有多种,下面的文章有详细说明: Android 实现 PDF 文件阅读功能调研 Android 使用PDF.js ...

  6. Android项目中多次操作SharedPreferences导致ANR场景的解决

    系列文章目录 Android项目中多次操作SharedPreferences导致ANR场景的解决 文章目录 系列文章目录 项目背景: 以定位来获取广告的方式为例: 所遇到的挑战: 解决问题的步骤: 问 ...

  7. flutter打开android界面,在已有Android项目中使用Flutter

    实现效果,在已存在的android项目中接入flutter,即android调用开启flutter页面(使用android打开flutter的指定页面),flutter调用原生android方法 步骤 ...

  8. 在原有Android项目中快速集成React Native

    前言 对于现有的大多数项目来说都不是从头构建的,而要在原有项目的基础上引入React Native则肯定和用react-native init xxx创建工程不同.因此下面就来说下具体操作.不过在真正 ...

  9. android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件

    简介 XStream 是一个开源项目,一套简单实用的类库,用于序列化对象与 XML 对象之间的相互转换. 将 XML 文件内容解析为一个对象或将一个对象序列化为 XML 文件. 1.下载工具 xstr ...

最新文章

  1. JAX-WS Web 服务开发调用和数据传输分析
  2. 如何在python中找到两个日期时间对象之间的时差?
  3. java ftl 标签_Freemarker-标签使用
  4. Linux shell类型
  5. Swift之深入解析Xcode13对Swift对象生命周期的优化
  6. 用sniffer技术盗取电话银行密码
  7. python 包编译安装mysql_CentOS7编译安装MySQL8.0.23和Python3.1.9
  8. linux 限额系统,Linux磁盘限额(quota)
  9. bzoj2500幸福的道路 树形dp+单调队列
  10. 你能相信这些逼真的油画是前端小姐姐只用HTML+CSS画出来的吗?精细到毛发,让美术设计也惊叹丨GitHub热榜...
  11. 【TVM帮助文档学习】Relay的代数数据类型
  12. 央视力荐的这套书,让5岁孩子看漫画,秒懂物理,学习早“开窍”!
  13. TIA博途S7-1200学习笔记——数据类型
  14. NaiveBayes
  15. poi操作word docx文档内容替换详解
  16. 基于深度强化学习的室内场景目标驱动视觉导航
  17. 2021年最火的前端框架
  18. 几行代码轻松实现百度定位和在地图显示指定坐标
  19. Java Stream 流常用方法 lambda 表达式实现交集、并集、差集、去重复并集等
  20. 部分喷墨机初始化方法打印机清零

热门文章

  1. 网闸设备故障应急处理方案
  2. 全国计算机应用统考试题,全国计算机统考试题及答案
  3. 打开视界工具箱微信小程序
  4. vue分页功能Bug
  5. 关于旋转平移的理解与思考
  6. 一个馒头引发的血案...请看完无极后观看此片,保笑死人不偿命
  7. 人工智能导论王万良-测试答案
  8. ‘display‘、‘position‘和‘float‘的相互关系?
  9. 草图大师SketchUp设计1——开槽
  10. Python数据分析:爬虫从网页爬取数据需要几步?