Android自定义ProgressDialog样式

2024-05-26 11:58

本文主要是介绍Android自定义ProgressDialog样式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Android系统自带的ProgressDialog样式的确不太好看,我们可以自己定义它的样式,下面看看实现

1.style.xml  progressDialog继承与Dialog,先设置一下progressDialog的风格,设置背景图片。

<style name="CustomDialog" parent="@android:style/Theme.Dialog">  <item name="android:windowFrame">@null</item>  <item name="android:windowIsFloating">true</item>  <item name="android:windowContentOverlay">@null</item>  <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>  <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>  </style>  <style name="CustomProgressDialog" parent="@style/CustomDialog">  <item name="android:windowBackground">@drawable/toast_frame</item>  <item name="android:windowNoTitle">true</item>  </style>  
2.customprogressdialog.xml文件,定义自己的布局,由于我的需求只需要一个进度条以及一串显示的内容,所以布局比较简单。

<pre name="code" class="html"><?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="fill_parent"  android:layout_height="fill_parent"  android:orientation="horizontal"  android:padding="8dp" >  <ProgressBar  android:id="@+id/loadingImageView"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_marginRight="15dp"  android:indeterminateDrawable="@drawable/progress_medium" />  <TextView  android:id="@+id/id_tv_loadingmsg"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_gravity="center_vertical"  android:textColor="@android:color/white"  android:textSize="18dp" />  </LinearLayout>  

 
3.progress_medium.xml文件.旋转效果。 

<?xml version="1.0" encoding="utf-8"?>  
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"  android:drawable="@drawable/spinner_black_32"  android:fromDegrees="0"  android:pivotX="50.0%"  android:pivotY="50.0%"  android:toDegrees="360" /> 

4.CustomProgressDialog.java文件,这个是就是我们最终需要使用的progressDialog了。

package com.xxx.view;  import com.xxx.activity.R;  import android.app.Dialog;  
import android.content.Context;  
import android.view.Gravity;  
import android.widget.TextView;  public class CustomProgressDialog extends Dialog {  public CustomProgressDialog(Context context, String strMessage) {  this(context, R.style.CustomProgressDialog, strMessage);  }  public CustomProgressDialog(Context context, int theme, String strMessage) {  super(context, theme);  this.setContentView(R.layout.customprogressdialog);  this.getWindow().getAttributes().gravity = Gravity.CENTER;  TextView tvMsg = (TextView) this.findViewById(R.id.id_tv_loadingmsg);  if (tvMsg != null) {  tvMsg.setText(strMessage);  }  }  @Override  public void onWindowFocusChanged(boolean hasFocus) {  if (!hasFocus) {  dismiss();  }  }  
}  
修改的部分也就主要是这里,之前作者用静态方法去构造ProgressDialog,context无法释放,下面是修改后的代码。
在Activity里面构造showProgressDialog:我写在自己的父类里。

public void showProgress(int resID, boolean canBack) {  if (progressDialog != null) {  progressDialog.cancel();  }  progressDialog = new CustomProgressDialog(activity, getResources()  .getString(resID));  progressDialog.show();  }  

子类继承调下这个方法就show出来了。

另附圆角对话框源码:

http://download.csdn.net/detail/u010963246/8869141

这篇关于Android自定义ProgressDialog样式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1004405

相关文章

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32

Android实现打开本地pdf文件的两种方式

《Android实现打开本地pdf文件的两种方式》在现代应用中,PDF格式因其跨平台、稳定性好、展示内容一致等特点,在Android平台上,如何高效地打开本地PDF文件,不仅关系到用户体验,也直接影响... 目录一、项目概述二、相关知识2.1 PDF文件基本概述2.2 android 文件访问与存储权限2.

Android Studio 配置国内镜像源的实现步骤

《AndroidStudio配置国内镜像源的实现步骤》本文主要介绍了AndroidStudio配置国内镜像源的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、修改 hosts,解决 SDK 下载失败的问题二、修改 gradle 地址,解决 gradle

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现