自定义Dialog 以加载进度为例

android 自定义Dialog页面加载中效果的进度条 Dialog 边角 Dialog 棱角 阅读详情

一、概述

最近项目中有个需求,就是打开一个页面时需要用到加载进度,提高用户的体验度,所以就想到了自定义Dialog来实现。 其中使用了自定义View,自定义style,帧动画等。

二、效果图



dialog有一定的透明度。

三、实现自定义Dialog

(一)布局相关文件

1、styles.xml
首先我们定义一个style样式,用于dialog的外观,注意文件夹的路径:values/styles.xml


<resources>
	<style name="mdialog" parent="@android:style/Theme.Dialog">
	    <item name="android:windowFrame">@null</item> <!--无边框-->
	    <item name="android:windowIsFloating">true</item> <!--是否浮现在activity之上-->
	    <item name="android:windowIsTranslucent">false</item> <!--半透明-->
	    <item name="android:windowNoTitle">true</item> <!--无标题-->
	    <item name="android:windowBackground">@color/transparent</item> <!--背景透明-->
	    <item name="android:backgroundDimEnabled">false</item> <!--模糊-->
	</style>
</resources>

2、dialog_bg.xml

然后给dialog定义一个shape背景,用于dialog的圆角,注意文件夹的路径:drawable/dialog_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- 实心 -->  
    <solid android:color="#50000000" />  
    <!-- 圆角 -->  
    <corners android:radius="10dp" />  
</shape>

3、dialog_loading.xml

然后是加载进度的帧动画,总共有7张图,来回切换,达到动画效果。如果把图片改为其他图片,则可以做出向美团与顺丰那样的小人再跑的效果。

<?xml version="1.0" encoding="UTF-8"?>
<animation-list android:oneshot="false"
	xmlns:android="http://schemas.android.com/apk/res/android">
	<item android:duration="150" android:drawable="@drawable/dialog_loading_01" />
	<item android:duration="150" android:drawable="@drawable/dialog_loading_02" />
	<item android:duration="150" android:drawable="@drawable/dialog_loading_03" />
	<item android:duration="150" android:drawable="@drawable/dialog_loading_04" />
	<item android:duration="150" android:drawable="@drawable/dialog_loading_05" />
	<item android:duration="150" android:drawable="@drawable/dialog_loading_06" />
	<item android:duration="150" android:drawable="@drawable/dialog_loading_07" />
</animation-list>

4、dialog_view.xml

最后附上dialog的布局文件,其中只有一个ProgressBar跟一个TextView。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/dialog_bg"
    android:paddingLeft="15dp"
    android:paddingRight="15dp"
    android:paddingTop="5dp"
    android:paddingBottom="5dp"
    >

    <ProgressBar
        android:id="@+id/loading_progressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:indeterminate="false"
        android:indeterminateDrawable="@anim/dialog_loading" />

    <TextView
        android:id="@+id/loading_text"
        android:layout_marginTop="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#ffffff"
        android:layout_below="@id/loading_progressBar"
        android:layout_centerHorizontal="true"
        android:text="加载中"/>

</RelativeLayout>

(二)实现的java代码

1、LoadingDialog.java

自定义dialog的类文件。
public class LoadingDialog extends Dialog {

	public LoadingDialog(Context context) {
		super(context);
		setLoadingDialog();
	}

	public LoadingDialog(Context context, int theme) {
		super(context, theme);
		setLoadingDialog();
	}

	protected LoadingDialog(Context context, boolean cancelable,
			OnCancelListener cancelListener) {
		super(context, cancelable, cancelListener);
		setLoadingDialog();
	}
	
	private void setLoadingDialog() {
		// 加载自定义dialog的布局文件
		View dialog_view = LayoutInflater.from(getContext()).inflate(R.layout.dialog_view, null);
		// 无标题
		this.requestWindowFeature(Window.FEATURE_NO_TITLE);
		//设置布局
		super.setContentView(dialog_view);
		
		// 点击dialog外侧不会消失
        this.setCanceledOnTouchOutside(false);
	}
}

2、MainActivity.java

dialog的使用。
public class MainActivity extends Activity {

	private Button button;
	private LoadingDialog dialog;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		button = (Button) findViewById(R.id.bt_open_dialog);
		button.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// 使用的时候只需要new出来就行,然后指定我们自定义的style
				dialog = new LoadingDialog(MainActivity.this,R.style.mdialog);
				// 显示的时候需要show()出来
        		dialog.show();
        		// 使用handler发送一个延时的消息,模拟耗时操作
        		handler.sendEmptyMessageDelayed(88, 3000);
			}
		});
	}
	
	private Handler handler = new Handler(){
		public void handleMessage(android.os.Message msg) {
			// 隐藏dialog
			dialog.dismiss();
			Intent intent = new Intent(MainActivity.this,SecondActivity.class);
			startActivity(intent);
		};
	};
}

至此,自定义dialog的使用就到此结束了,最后,附上Demo:http://download.youkuaiyun.com/detail/xiaoli100861/9180003

Android 自定义Dialog,文字动态加载效果。 之前在技术问答上面看到一个提问 “加载中…” 后面三个点是动态的,这么一个效果实现。想来想去,好像没想到好的处理方式。 尝试了一下,以一个最笨的方式实现了。先来看一下效果 : 我是通过自定义一个Dialog,加载中的效果,是在Dialog内部实现的,进度还是从Activity里面控制的。 下面是Dialog实现类:public class CustomDialog extends A 阅读详情

相关推荐

el-dialog 动画效果

.el-dialog__wrapper { transition-duration: 0.6s; } .dialog-fade-enter-active{ animation: none !important; } .dialog-fade-leave-active { transition-duration: 0.4s !important; animation: none !important; } .dialog-fade-enter-active .el-dialog, .dialo

King Saj 1619

vue ui-element 给dialog加出场动画

1.给dialog 加属性 custom-class="openAnimAbcd"2.加动画【例子用的缩放】

qq_34169240的博客 1793

各种自定义Dialog 以及Dialog加载动画

自定义对话框样式,以及对话框的加载动画,告别Android默认丑陋的对话框!

覆盖(优化效果)el-dialog 的显示隐藏动画

element-ui dialog本身的动画效果基本就是没动画效果(摊手) 原来的弹窗动画 优化后的动画 只需加入以下这段css代码,非常简单 .el-dialog__wrapper { transition-duration: 0.3s; } .dialog-fade-enter-active{ animation: none !important; } .dialog-...

weixin_34245749的博客 2178

自定义Dialog 显示正在加载动画效果 progressDialog

自定义Dialog 让Activity 不变暗 正在加载动画,博文地址http://blog.youkuaiyun.com/wuqilianga/article/details/50659651

【5G全网建设】Option3X和Option2模式建安市、兴城市和四水市核心网、承载网网络设计与部署

拓扑规划: Option 3X网络拓扑图规划 Option 2网络拓扑图规划 设备部署: 建安市核心网 建安市承载中心机房 建安市骨干汇聚机房 建安市3区汇聚机房 建安市C站点无线机房 兴城市核心网 兴城市承载中心机房 兴城市骨干汇聚机房 兴城市2区汇聚机房 兴城市B站点无线机房 数据配置: 建安市核心网 建安市承载中心机房 建安市骨干汇聚机房 建安市3区汇聚机房 建安市C站点无线机房 兴城市核心网 兴城市承载中心机房 兴城市骨干汇聚机房 兴城市2区汇聚机房 兴城市B站点无线机房 业务调试

weixin_67183034的博客 8853

Android项目中使用自定义进度加载Dialog

以下是资料目录和内容部分截图里面包括详细的知识点讲解分析,带你一个星期入门Flutter。还有130个进阶学习项目实战视频教程,让你秒变大前端。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取![外链图片转存中…(img-q8f8irIr-1712603570666)]里面包括详细的知识点讲解分析,带你一个星期入门Flutter。还有130个进阶学习项目实战视频教程,让你秒变大前端。

2401_84132496的博客 1027

内网(极空间)搭建gitlab跳板机转发端口及域名配置

然后,回头尝试用内网地址+15022 clone,成功,用公网的ip+15222 clone失败,那就是定位到时nginx转发的问题了。首先想到的就是 git clone是通过ssh的22端口进行下载的,那就需要打通22端口,则又配置22端口的nginx转发。然后,我通过ssh命令,做一个端口转发,以实现内网穿透,将服务端口链接到跳板机上。然后穿透到阿里云服务器跳板机的端口,只能内网访问,需要用nginx做个转发,才能用公网ip进行访问。然后,如上,我的80端口,映射15080,22端口映射15022。

God丶Davide的博客 6074

Android项目中使用自定义进度加载Dialog,2024年春招Android面试题

style=“?注:此处为父布局添加 android:background=“@android:color/transparent” 属性,使布局透明。第二步:====/**创建自定义ProgressDialog@return*/// 得到加载view// 加载布局// 创建自定义样式dialog// 不可以用"返回键"取消注:此方法中设置了 loadingDialog.setCancelable(false);即:不可以用"返回键"取消,若不需要可注释掉。第三步:====

m0_60575487的博客 674

详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解

声明:本文为原创文章,发表于nebulaf91的csdn博客。欢迎转载,但请务必保留本信息,注明文章出处。 本文作者: nebulaf91 本文原始地址:最大似然估计(Maximum likelihood estimation, 简称MLE)和最大后验概率估计(Maximum a posteriori estimation, 简称MAP)是很常用的两种参数估计方法,如果不理解这两种方法的思路,很

nebulaf91的博客 33万+

NXP(imx8qxp)系列DDR校准以及android镜像烧录

文章目录一、 不得不吐槽以下nxp的这个代码镜像烧写的过程,做得太开源了,导致镜像根本烧录不进去,实属令人头痛。 一、

永不秃头的程序员的博客 5991

Android 自定义加载等待Dialog

效果图 布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layo...

Evilloafer的博客 3375

泛微Ecology流程数据表结构解析:workflow_requestbase和workflow_currentoperator到底怎么关联查询?

本文深入解析泛微Ecology系统中workflow_requestbase和workflow_currentoperator表的结构与关联机制,提供SQL查询语句示例,帮助开发者高效查询流程数据。涵盖待办事项、已办事项、办结事项和流程监控等典型场景,并分享性能优化技巧和常见问题排查指南。

weixin_33738555的博客 807

Android实现自定义各类Dialog对话框和样式美化(含Toast)

背景 基本上每个APP中都会使用到Toast和Dialog,但多数时候我们有自定义样式、功能的需求,例如Toast需要做单例形式、Dialog需要调整样式等。本文中涉及的自定义效果演示如下: 思路 Toast 系统中的Toast在使用时无法做到单例的效果,如果用户连续多次点击某个触发操作,则Toast会做出类似堆栈调用,即使退出应用,也会一次次的相继弹出,直到调用次数响应完为止,在自定义的过程中,除了样式意外,着重将Toast做成单例类。 Dialog 利用AlertDialog的getWindow().

海阔天空 7781

YOLOv11低照度目标检测优化方案:基于SCINet可训练预处理主干的全流程实现指南

创建一个新的Python文件,如。

FJN110的博客 188

由JavaScript版迷宫游戏引出Java版迷宫地图生成器

Java案例:迷宫地图生成器 一、引入问题 本期18软件1班网页脚本实训项目是完成一个JavaScript版迷宫游戏。 迷宫地图是如何生成的呢?很简单,将一个正方形区域等分为若干行与若干列,比如25行25列,这样就有625个单元格,用一个二维数组map[25][25]就可以保存625个单元格信息,map[i][j] = 1表示该单元格要绘制砖,而map[i][j] = 0表示该单元格不绘制砖。 ...

howard2005的专栏 1472

android如何自定义dialog,安卓dialog的使用+如何自定义dialog

什么叫dialog简单来说就是一句话:弹出一个窗口,提示用户自己去选择,去提示,去分类的一些内容。安卓自带的dialog有三种: - AlertDialog—-普通的提示对话框- ProgressDialog–进度条对话- DatePickerDialog/TimePickerDialog–日期对话框/时间对话框所有的对话框,都是直接或间接继承自Dialog类,而AlterDialog直接继承自D...

weixin_28779183的博客 6050

GEE必须会教程——一文教会你研究区域分块计算与合并

一整块算不是挺好的吗?emmmm,用过的人都知道,GEE好比幼年期的“紫妍”,要用“丹药”来养的,除非你是萧炎小友,到哪都有人给爆金币。我们今天想做的是计算2020年夏季西藏自治区的植被覆盖度(FVC),FVC的估算需要使用归一化植被指数(NDVI数据),这里我们用到的产品是MODIS的相关数据产品,该产品的分辨率是25 0m。下载好的结果毕竟是一块一块的,怎么对下载好的结果进行拼接,变成一张大图呢,别急,接下来,我们上科研小霸王——R语言。此处,我们通过省份数据,按照属性筛选,得到西藏自治区的行政边界。

Promising_GEO的博客 2511

Android项目中使用自定义进度加载Dialog,腾讯T3面试官透露

定义单独的 layout_loading_dialog.xml 文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android” android:id="@+id/dialog_view" android:layout_width=“match_parent” android:layout_height=“matc.

m0_66264533的博客 221

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

android自定义dilog进度条,android 自定义DialogDialog页面加载中效果的进度条 粘贴下来就可以用...

android 自定义DialogDialog页面加载中效果的进度条 粘贴下来就可以用 加载数据时调用的方法:LodingDialog dialog = new LodingDialog(this);dialog.show();// 显示加载条dialog.dismiss();// 关闭加载进度条LodingDialog.javapublic class LodingDialog extends...

weixin_35718537的博客 351

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

自定义 Dialog 加载进度,去除自定义Dialog的白色背景

去除自定义Dialog的白色背景: mDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent); 这句话就可以了,一定要记得 在show()前加; 下面附上完整代码: public class MyProgressDialog { private static Dialog mDial...

shanshan_1117的博客 1366

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Android自定义Dialog显示进度框

首先,我们新建立一个类,继承自Dialog,复写它的构造函数。 package com.lxl.widget; import android.app.AlertDialog; import android.content.Context; public class LoadingDialog extends AlertDialog { public LoadingDialog(Conte

DaZhao13的专栏 1684

Android 自定义加载Dialog

import android.app.Activity; import android.app.Dialog; import android.view.LayoutInflater; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; /** * description:弹窗浮动加载进度条 */ public class LoadingDialog { ..

清叶 的专栏 392
下一篇: 通过ClipDrawable 实现茶杯注满效果
高速蜗牛a
博客等级 码龄15年 14粉丝 13原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值