大家在开发客户端时基本上都需要获取数据,在获取数据时会有一个等待状态,这时我们可以利用系统自带的progressDialog来向用户展示"数据正在加载中..."等等,但有时我们会觉得系统自带的progressDialog太难看,那么我们就可以用自定义的progressDialog了,在网上搜了许多,都是很麻烦,于是自己结合网上资源,总结整理了一下,先看效果:

下面看代码

主代码MyDialog.java

  1. package cn.xxs.test.myfragmentprojecttest.customwidget;
  2.  
  3. import cn.xxs.test.myfragmentprojecttest.R;
  4. import android.app.Dialog;
  5. import android.content.Context;
  6. import android.graphics.Bitmap;
  7. import android.graphics.BitmapFactory;
  8. import android.graphics.Canvas;
  9. import android.graphics.Paint;
  10. import android.util.AttributeSet;
  11. import android.view.LayoutInflater;
  12. import android.view.View;
  13. import android.view.animation.Animation;
  14. import android.view.animation.AnimationUtils;
  15. import android.widget.ImageView;
  16. import android.widget.LinearLayout;
  17. import android.widget.TextView;
  18.  
  19. public class MyDialog {
  20.  
  21. /**
  22. * 自定义的progressDialog
  23. * @param context 上下文
  24. * @param msg 加载数据时显示的信息
  25. * @return Dialog
  26. */
  27. @SuppressWarnings("deprecation")
  28. public static Dialog createLoadingDialog(Context context, String msg) {
  29.  
  30. LayoutInflater inflater = LayoutInflater.from(context);
  31. //加载loading_dialog.xml
  32. View v = inflater.inflate(R.layout.loading_dialog, null);// 得到加载view
  33.  
  34. // loading_dialog.xml中的LinearLayout
  35. LinearLayout layout = (LinearLayout) v.findViewById(R.id.dialog_view);// 加载布局
  36.  
  37. // loading_dialog.xml中的TextView
  38. TextView tipTextView = (TextView) v.findViewById(R.id.tipTextView);// 提示文字
  39. tipTextView.setText(msg);// 设置加载信息(如:登录中,请稍候...)
  40.  
  41. // loading_dialog.xml中的ImageView
  42. ImageView spaceshipImage = (ImageView) v.findViewById(R.id.img);
  43. // 加载动画load_animation.xml
  44. Animation anim = AnimationUtils.loadAnimation(context, R.anim.load_animation);
  45. // 使用ImageView显示动画
  46. spaceshipImage.startAnimation(anim);
  47.  
  48. // 创建自定义样式loading_dialog
  49. Dialog loadingDialog = new Dialog(context, R.style.loading_dialog);
  50. loadingDialog.setCancelable(false);// 不可以用“返回键”取消
  51. // 设置布局
  52. loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT));
  53. return loadingDialog;
  54.  
  55. }
  56. }

其中dialog的layout:loading_dialog.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@+id/dialog_view"
  4. android:orientation="vertical"
  5. android:layout_width="fill_parent"
  6. android:layout_height="fill_parent"
  7. android:minHeight="60dp"
  8. android:minWidth="180dp"
  9. android:gravity="center"
  10. android:padding="10dp"
  11. android:background="@drawable/loading_bg">
  12. <ImageView
  13. android:id="@+id/img"
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. android:src="@drawable/loading2"
  17. />
  18. <TextView
  19. android:id="@+id/tipTextView"
  20. android:layout_width="wrap_content"
  21. android:layout_height="wrap_content"
  22. android:layout_marginLeft="10dp"
  23. android:textColor="#000000"
  24. android:text="数据加载中……" />
  25. </LinearLayout>

这个大家也可以自己设计,达到自己想要的效果;

dialog的stytle:注意:这个需要写在stytle.xml中

  1. <style name="loading_dialog" parent="android:style/Theme.Dialog">
  2. <item name="android:windowFrame">@null</item>
  3. <item name="android:windowNoTitle">true</item>
  4. <item name="android:windowBackground">@drawable/loading_bg</item>
  5. <item name="android:windowIsFloating">true</item>
  6. <item name="android:windowContentOverlay">@null</item>
  7. </style>

最后是load_animation.xml

这个主要是实现加载数据时那个小圈圈360度转动的效果

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:shareInterpolator="false" >
  4.  
  5. <rotate
  6. android:duration="1500"
  7. android:fromDegrees="0"
  8. android:interpolator="@android:anim/linear_interpolator"
  9. android:pivotX="50%"
  10. android:pivotY="50%"
  11. android:repeatCount="-1"
  12. android:repeatMode="restart"
  13. android:startOffset="-1"
  14. android:toDegrees="+360" />
  15.  
  16. </set>

使用时:只需在Activity中new一下:

MyDialog  dialog=new MyDialog().createLoadingDialog(此处为当前activity,"登录中......");

dialog.show();

中间部分即我们加载数据的代码,需单开线程,不是文章重点,不再熬述,

最后:关闭即可

dialog.dismiss();



自定义progressDialog(数据加载框)的实现的更多相关文章

  1. echarts异步数据加载(在下拉框选择事件中异步更新数据)

    接触echarts 大半年了,从不会到熟练也做过不少的图表,隔了一段时间没使用这玩意,好多东西真心容易忘了.在接触echarts这期间也没有总结什么东西,今天我就来总结一下如何在echart中异步加载 ...

  2. ios新手开发——toast提示和旋转图片加载框

    不知不觉自学ios已经四个月了,从OC语法到app开发,过程虽然枯燥无味,但是结果还是挺有成就感的,在此分享我的ios开发之路中的小小心得~废话不多说,先上我们今天要实现的效果图: 有过一点做APP经 ...

  3. spark SQL(三)数据源 Data Source----通用的数据 加载/保存功能

    Spark SQL 的数据源------通用的数据 加载/保存功能 Spark SQL支持通过DataFrame接口在各种数据源上进行操作.DataFrame可以使用关系变换进行操作,也可以用来创建临 ...

  4. ScrollView嵌套ListView,GridView数据加载不全问题的解决

    我们大家都知道ListView,GridView加载数据项,如果数据项过多时,就会显示滚动条.ScrollView组件里面只能包含一个组件,当ScrollView里面嵌套listView,GridVi ...

  5. Android--自定义加载框

    1,在网上看了下好看的加载框,看了一下,挺好看的,再看了下源码,就是纯paint画出来的,再加上属性动画就搞定了 再来看一下我们的源码 LvGhost.java package com.qianmo. ...

  6. JQuery插件:遮罩+数据加载中。。。(特点:遮你想遮,罩你想罩)

    在很多项目中都会涉及到数据加载.数据加载有时可能会是2-3秒,为了给一个友好的提示,一般都会给一个[数据加载中...]的提示.今天就做了一个这样的提示框. 先去jQuery官网看看怎么写jQuery插 ...

  7. 实现虚拟模式的动态数据加载Windows窗体DataGridView控件 .net 4.5 (一)

    实现虚拟模式的即时数据加载Windows窗体DataGridView控件 .net 4.5 原文地址 :http://msdn.microsoft.com/en-us/library/ms171624 ...

  8. Android Volley和Gson实现网络数据加载

    Android Volley和Gson实现网络数据加载 先看接口 1 升级接口 http://s.meibeike.com/mcloud/ota/cloudService POST请求 参数列表如下 ...

  9. Echarts通过Ajax实现动态数据加载

    Echarts(3.x版)官网实例的数据都是静态的,实际使用中往往会要求从服务器端取数据进行动态显示,官网教程里给出的异步数据加载很粗略,下面就以官网最简单的实例为例子,详细演示如下过程:1.客户端通 ...

随机推荐

  1. 【linux之crontab,启动】

    一.计划任务 atd at命令发布的任务计划 一次性的任务计划 at time ctrl+d 提交 time: 1.绝对时间:12:00 2.相对时间:+8 3.模糊时间:noon midnight ...

  2. mv&cp

    mv [选项] [源] [目标] 当目标不存在时,重命名源为目标 当目标存在时,若目标为目录文件,将源移动到目标文件里: 若目标为非目录文件,将源重命名为目标,并强制覆盖目标.   mv -b 1 2 ...

  3. HtmlUnit入门一

    htmlunit 是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容. 项目可以模拟浏览器运行,被誉为java浏览器的开源实现.是一个没有界面的浏览器. 采 ...

  4. ●POJ 1741 Tree

    题链: http://poj.org/problem?id=1741题解: 树上点分治. 入门题,不多说了. 代码: #include<cstdio> #include<cstrin ...

  5. ●CodeForces 429D Trick_Function

    题链: http://codeforces.com/problemset/problem/429/D题解: 分治,最近点对 不难发现g(i,j)=sum[j]-sum[i], 那么f(i,j)=(i- ...

  6. Ubuntu下的第一个博客

    (Blogilo还是可以的,只是不能加代码,不能选随笔分类,用不起摘要,字号的选择诡异...)

  7. bzoj1073[SCOI2007]kshort

    1073: [SCOI2007]kshort Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 1483  Solved: 373[Submit][Sta ...

  8. mycat 1.6 简单的操作实例

    环境: centos7.4 + mysql5.7.20 + mycat1.6单台主机上安装了5台mysql_5.7.20 实例(3306,3307,3308,3309,3310)3306为独立实例 ( ...

  9. Spring之定时器(QuartzJobBean)的实现

      需求:做个分配任务的功能模块,在任务截止前的十五分钟进行提醒(发送邮件.短信.系统提醒).每隔五分钟提醒一次,直到任务完成! 想法:刚开始是想着是不是可以做个监听器,监听截止时间.当时间到了开始进 ...

  10. 如何使用 TeamViewer 配置QuickConnect按钮?

    QuickConnect作为TeamViewer中一个比较重要的部分,得到了很多用户的认可.那么在实际运用中,怎么才能设置网页或单个程序的QuickConnect呢?所以小编以此问题为例,教大家如何配 ...