android自定义ProgressDialog加载效果

发布时间 - 2026-01-11 02:00:57    点击率:

用来记录自己所用到的知识

前两天在做项目的时候发现有时候在访问网络数据的时候由于后台要做的工作较多,给我们返回数据的时间较长,所以老大叫我加了一个加载中的logo图用来提高用户体验.

于是就在网上找了许多大神写的案例,再结合自己的情况完成了一个Loading工具类

效果:

ok,现在来说说怎么做的

先自定义一个类继承ProgressDialog

public class Loading_view extends ProgressDialog {
public Loading_view(Context context) {
super(context);
}

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

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

init(getContext());
}

private void init(Context context) {
setCancelable(true);
setCanceledOnTouchOutside(false);

setContentView(R.layout.loading);//loading的xml文件
WindowManager.LayoutParams params = getWindow().getAttributes();
params.width = WindowManager.LayoutParams.WRAP_CONTENT;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
getWindow().setAttributes(params);
}

@Override
public void show() {//开启
super.show();
}

@Override
public void dismiss() {//关闭
super.dismiss();
}
}

设置loading布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center_horizontal"
android:background="@drawable/shape_dialog_bg"//背景色
android:layout_centerInParent="true"
android:orientation="vertical">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp">

<ProgressBar
android:id="@+id/pb_load"
android:layout_width="65dp"
android:layout_height="65dp"
android:indeterminateDrawable="@drawable/progressbar"//加载圈的样式
android:layout_centerInParent="true"/>

</RelativeLayout>

<TextView
android:id="@+id/tv_load_dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="加载中..."
android:textColor="#9a9b98"
android:textSize="12sp"/>

</LinearLayout>

背景色(可自行调整)

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

<corners android:radius="8dp" />
<solid android:color="#88000000" />
</shape>

加载圈样式(可自行调整)

<animated-rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:pivotX="50%" android:pivotY="50%"
android:fromDegrees="0"
android:toDegrees="720">

<shape
android:shape="ring"
android:innerRadiusRatio="3"
android:thicknessRatio="15"
android:useLevel="false">
<gradient
android:type="sweep"
android:useLevel="false"
android:startColor="#55c6c6c6"
android:centerColor="#c6c6c6"
android:centerY="0.50"
android:endColor="#c6c6c6" />
</shape>

</animated-rotate>

ok可以使用了

public class MainActivity extends AppCompatActivity {

private Loading_view loading;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

}


public void loding(View v){//点击加载并按钮模仿网络请求

loading = new Loading_view(this,R.style.CustomDialog);
loading.show();
new Handler().postDelayed(new Runnable() {//定义延时任务模仿网络请求
@Override
public void run() {
loading.dismiss();//3秒后调用关闭加载的方法
}
}, 3000);
}
}

为什么会这样,不懂然后就去百度,google然后在一大神的文章里发现了,但是我在写这文章的时候才发现当初没有保存大神的地址再也找不到了

原来需要在创建自定义的loading 的时候在传入 new Loading_view(this,R.style.CustomDialog);样式

<style name="CustomDialog" parent="Theme.AppCompat.Dialog">
<item name="android:backgroundDimEnabled">false</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>

ok 再来一次

ok成功!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# android  # ProgressDialog  # 加载  # 实例详解Android自定义ProgressDialog进度条对话框的实现  # Android自定义ProgressDialog进度等待框  # Android ProgressBar进度条和ProgressDialog进度框的展示DEMO  # Android 自定义ProgressDialog进度条对话框用法详解  # Android 中通过实现线程更新Progressdialog (对话进度条)  # Android ProgressDialog进度条使用详解  # Android编程实现加载等待ProgressDialog的方法  # Android自定义ProgressDialog加载图片  # Android ProgressDialog使用总结  # Android开发之ProgressDialog进度对话框用法示例  # 大神  # 自定义  # 自己的  # 背景色  # 我在  # 加载中  # 就在  # 找不到  # 不懂  # 给我们  # 叫我  # 要做  # 才发现  # 较多  # 找了  # 就去  # 怎么做  # 在一  # 较长 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 音乐网站服务器如何优化API响应速度?  网站建设保证美观性,需要考虑的几点问题!  中国移动官方网站首页入口 中国移动官网网页登录  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  在线制作视频网站免费,都有哪些好的动漫网站?  如何确认建站备案号应放置的具体位置?  Laravel如何实现用户注册和登录?(Auth脚手架指南)  韩国服务器如何优化跨境访问实现高效连接?  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  java中使用zxing批量生成二维码立牌  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  Laravel如何实现模型的全局作用域?(Global Scope示例)  如何用好域名打造高点击率的自主建站?  如何用y主机助手快速搭建网站?  如何在万网利用已有域名快速建站?  Laravel如何记录自定义日志?(Log频道配置)  Java解压缩zip - 解压缩多个文件或文件夹实例  米侠浏览器网页背景异常怎么办 米侠显示修复  JavaScript如何操作视频_媒体API怎么控制播放  WordPress 子目录安装中正确处理脚本路径的完整指南  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  如何快速查询域名建站关键信息?  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  利用 Google AI 进行 YouTube 视频 SEO 描述优化  如何在建站之星网店版论坛获取技术支持?  如何在建站之星绑定自定义域名?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  打造顶配客厅影院,这份100寸电视推荐名单请查收  高性能网站服务器配置指南:安全稳定与高效建站核心方案  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  如何在 React 中条件性地遍历数组并渲染元素  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  移动端脚本框架Hammer.js  如何批量查询域名的建站时间记录?  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  如何确保FTP站点访问权限与数据传输安全?  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  企业网站制作这些问题要关注  如何在Tomcat中配置并部署网站项目?  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  利用vue写todolist单页应用