Android项目中简单易用的加载对话框
在做项目中,我们经常会遇到下面这几种情形:
(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项目中简单易用的加载对话框相关推荐
- Android之利用回调函数onCreateDialog实现加载对话框
效果图: 有时候我们需要去做一个Activity启动时的数据加载对话框,关于对话框的各种实现可以通过一起学android之对话框 Dialog的创建(7)来完成,在这里另外介绍一个,利用onCreat ...
- vue项目中vue-scroller实现上拉加载和下拉刷新
vue目前是众所周知的流行框架大家都知道的,vue全家桶的成员是:vue-cli,vuex,vue-router,vue-axios(vue2.0).然后它的第三方插件也有很多,比如:vue-scro ...
- android html图片点击事件,TextView加载html图片并点击放大
实际上android中的textview是提供了加载html代码的功能的,使用的方法也很简单 textView.setText(Html.fromHtml("html",null, ...
- Android项目中最火最常用的优秀开源项目(很有用)
Android项目中最火最常用的优秀开源项目 分类 详细 框架名称 简介 Star 数 最近 更新 UI 刷新 SmartRefreshLayout Android 智能下拉刷新框架 7.7k 1天 ...
- android项目中在webview中打开pdf
android项目中在webview中打开pdf. 关于android打开pdf文件方法有多种,下面的文章有详细说明: Android 实现 PDF 文件阅读功能调研 Android 使用PDF.js ...
- Android项目中多次操作SharedPreferences导致ANR场景的解决
系列文章目录 Android项目中多次操作SharedPreferences导致ANR场景的解决 文章目录 系列文章目录 项目背景: 以定位来获取广告的方式为例: 所遇到的挑战: 解决问题的步骤: 问 ...
- flutter打开android界面,在已有Android项目中使用Flutter
实现效果,在已存在的android项目中接入flutter,即android调用开启flutter页面(使用android打开flutter的指定页面),flutter调用原生android方法 步骤 ...
- 在原有Android项目中快速集成React Native
前言 对于现有的大多数项目来说都不是从头构建的,而要在原有项目的基础上引入React Native则肯定和用react-native init xxx创建工程不同.因此下面就来说下具体操作.不过在真正 ...
- android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件
简介 XStream 是一个开源项目,一套简单实用的类库,用于序列化对象与 XML 对象之间的相互转换. 将 XML 文件内容解析为一个对象或将一个对象序列化为 XML 文件. 1.下载工具 xstr ...
最新文章
- JAX-WS Web 服务开发调用和数据传输分析
- 如何在python中找到两个日期时间对象之间的时差?
- java ftl 标签_Freemarker-标签使用
- Linux shell类型
- Swift之深入解析Xcode13对Swift对象生命周期的优化
- 用sniffer技术盗取电话银行密码
- python 包编译安装mysql_CentOS7编译安装MySQL8.0.23和Python3.1.9
- linux 限额系统,Linux磁盘限额(quota)
- bzoj2500幸福的道路 树形dp+单调队列
- 你能相信这些逼真的油画是前端小姐姐只用HTML+CSS画出来的吗?精细到毛发,让美术设计也惊叹丨GitHub热榜...
- 【TVM帮助文档学习】Relay的代数数据类型
- 央视力荐的这套书,让5岁孩子看漫画,秒懂物理,学习早“开窍”!
- TIA博途S7-1200学习笔记——数据类型
- NaiveBayes
- poi操作word docx文档内容替换详解
- 基于深度强化学习的室内场景目标驱动视觉导航
- 2021年最火的前端框架
- 几行代码轻松实现百度定位和在地图显示指定坐标
- Java Stream 流常用方法 lambda 表达式实现交集、并集、差集、去重复并集等
- 部分喷墨机初始化方法打印机清零
热门文章
- 网闸设备故障应急处理方案
- 全国计算机应用统考试题,全国计算机统考试题及答案
- 打开视界工具箱微信小程序
- vue分页功能Bug
- 关于旋转平移的理解与思考
- 一个馒头引发的血案...请看完无极后观看此片,保笑死人不偿命
- 人工智能导论王万良-测试答案
- ‘display‘、‘position‘和‘float‘的相互关系?
- 草图大师SketchUp设计1——开槽
- Python数据分析:爬虫从网页爬取数据需要几步?