Android 三种方式实现自定义圆形页面加载中效果的进度条

简介:

转载:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=76872

一、通过动画实现

定义res/anim/loading.xml如下:
[java]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <animation-list android:oneshot="false"  
  3. xmlns:android="http://schemas.android.com/apk/res/android">  
  4.   <item android:duration="150" android:drawable="@drawable/loading_01" />  
  5.   <item android:duration="150" android:drawable="@drawable/loading_02" />  
  6.   <item android:duration="150" android:drawable="@drawable/loading_03" />  
  7.   <item android:duration="150" android:drawable="@drawable/loading_04" />  
  8.   <item android:duration="150" android:drawable="@drawable/loading_05" />  
  9.   <item android:duration="150" android:drawable="@drawable/loading_06" />  
  10.   <item android:duration="150" android:drawable="@drawable/loading_07" />  
  11. </animation-list>   

在layout文件中引用如下:
[java]  view plain copy
  1. <ProgressBar android:id="@+id/loading_process_dialog_progressBar"  
  2.   android:layout_width="wrap_content" android:layout_height="wrap_content"  
  3.   android:indeterminate="false" android:indeterminateDrawable="@anim/loading" />  

二、通过自定义颜色实现
定义res/drawable/dialog_style_xml_color.xml如下:
[java]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <rotate xmlns:android="http://schemas.android.com/apk/res/android"  
  3.   android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0"  
  4.   android:toDegrees="360">  
  5.   <shape android:shape="ring" android:innerRadiusRatio="3"  
  6.     android:thicknessRatio="8" android:useLevel="false">  
  7.     <gradient android:type="sweep" android:useLevel="false"  
  8.      android:startColor="#FFFFFF" android:centerColor="#FFDC35"  
  9.      android:centerY="0.50" android:endColor="#CE0000" />  
  10.   </shape>  
  11. </rotate>  

在layout文件中引用如下:
[java]  view plain copy
  1. <ProgressBar android:id="@+id/loading_process_dialog_progressBar"  
  2.   android:layout_width="wrap_content" android:layout_height="wrap_content"  
  3.   android:indeterminate="false" android:indeterminateDrawable="@drawable/dialog_style_xml_color" />  

三、使用一张图片进行自定义
定义res/drawable/dialog_style_xml_icon.xml如下:
[java]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">  
  3. <item>  
  4.   <rotate android:drawable="@drawable/dialog_progress_round"  
  5.    android:fromDegrees="0.0" android:toDegrees="360.0" android:pivotX="50.0%"  
  6.    android:pivotY="50.0%" />  
  7. </item>  
  8. </layer-list>  

在layout文件中引用如下:

<ProgressBar android:id="@+id/loading_process_dialog_progressBar"  
  android:layout_width="wrap_content" android:layout_height="wrap_content"  
  android:indeterminate="false" android:indeterminateDrawable="@drawable/dialog_style_xml_icon" /> 

main.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:gravity="center"
android:background="#FFF">
<Button android:text="@string/anim" android:id="@+id/anim"
  android:layout_width="120dip" android:layout_height="wrap_content" />
<Button android:text="@string/color" android:id="@+id/color"
  android:layout_width="120dip" android:layout_height="wrap_content" />
<Button android:text="@string/icon" android:id="@+id/icon"
  android:layout_width="120dip" android:layout_height="wrap_content" />
</LinearLayout>

之后通过三个按钮将ProgressBar 放在对话框中显示出来就完成了。

  AnimRoundProcessDialog.rar 


截图如下:

相关文章
|
8天前
|
Android开发 开发者
安卓应用开发中的自定义视图
【9月更文挑战第37天】在安卓开发的海洋中,自定义视图犹如一座座小岛,等待着勇敢的探索者去发现其独特之处。本文将带领你踏上这段旅程,从浅滩走向深海,逐步揭开自定义视图的神秘面纱。
24 3
|
1天前
|
XML 前端开发 Java
安卓应用开发中的自定义View组件
【10月更文挑战第5天】自定义View是安卓应用开发的一块基石,它为开发者提供了无限的可能。通过掌握其原理和实现方法,可以创造出既美观又实用的用户界面。本文将引导你了解自定义View的创建过程,包括绘制技巧、事件处理以及性能优化等关键步骤。
|
26天前
|
Android开发 开发者
安卓开发中的自定义视图:从入门到精通
【9月更文挑战第19天】在安卓开发的广阔天地中,自定义视图是一块充满魔力的土地。它不仅仅是代码的堆砌,更是艺术与科技的完美结合。通过掌握自定义视图,开发者能够打破常规,创造出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战应用,一步步展示如何用代码绘出心中的蓝图。无论你是初学者还是有经验的开发者,这篇文章都将为你打开一扇通往创意和效率的大门。让我们一起探索自定义视图的秘密,将你的应用打造成一件艺术品吧!
52 10
|
1天前
|
数据可视化 Android开发 开发者
安卓应用开发中的自定义View组件
【10月更文挑战第5天】在安卓应用开发中,自定义View组件是提升用户交互体验的利器。本篇将深入探讨如何从零开始创建自定义View,包括设计理念、实现步骤以及性能优化技巧,帮助开发者打造流畅且富有创意的用户界面。
7 0
|
1月前
|
XML 编解码 Android开发
安卓开发中的自定义视图控件
【9月更文挑战第14天】在安卓开发中,自定义视图控件是一种高级技巧,它可以让开发者根据项目需求创建出独特的用户界面元素。本文将通过一个简单示例,引导你了解如何在安卓项目中实现自定义视图控件,包括创建自定义控件类、处理绘制逻辑以及响应用户交互。无论你是初学者还是有经验的开发者,这篇文章都会为你提供有价值的见解和技巧。
34 3
|
1月前
|
前端开发 Android开发 开发者
安卓应用开发中的自定义视图基础
【9月更文挑战第13天】在安卓开发的广阔天地中,自定义视图是一块神奇的画布,它允许开发者将想象力转化为用户界面的创新元素。本文将带你一探究竟,了解如何从零开始构建自定义视图,包括绘图基础、触摸事件处理,以及性能优化的实用技巧。无论你是想提升应用的视觉吸引力,还是追求更流畅的交互体验,这里都有你需要的金钥匙。
|
1月前
|
缓存 搜索推荐 Android开发
安卓应用开发中的自定义View组件实践
【9月更文挑战第10天】在安卓开发领域,自定义View是提升用户体验和实现界面个性化的重要手段。本文将通过一个实际案例,展示如何在安卓项目中创建和使用自定义View组件,包括设计思路、实现步骤以及可能遇到的问题和解决方案。文章不仅提供了代码示例,还深入探讨了自定义View的性能优化技巧,旨在帮助开发者更好地掌握这一技能。
|
8天前
|
XML 存储 Java
探索安卓开发之旅:从基础到进阶
【9月更文挑战第37天】安卓开发,一个充满无限可能的领域。它不仅关乎技术的深度与广度,更关乎开发者的成长与突破。本文将带你走进安卓开发的世界,从基础知识的学习到进阶技巧的掌握,一起感受编程的魅力与乐趣。
|
5天前
|
Android开发
Android开发表情emoji功能开发
本文介绍了一种在Android应用中实现emoji表情功能的方法,通过将图片与表情字符对应,实现在`TextView`中的正常显示。示例代码展示了如何使用自定义适配器加载emoji表情,并在编辑框中输入或删除表情。项目包含完整的源码结构,可作为开发参考。视频演示和源码详情见文章内链接。
23 4
Android开发表情emoji功能开发
|
3天前
|
Web App开发 安全 程序员
FFmpeg开发笔记(五十五)寒冬里的安卓程序员可进阶修炼的几种姿势
多年的互联网寒冬在今年尤为凛冽,坚守安卓开发愈发不易。面对是否转行或学习新技术的迷茫,安卓程序员可从三个方向进阶:1)钻研谷歌新技术,如Kotlin、Flutter、Jetpack等;2)拓展新功能应用,掌握Socket、OpenGL、WebRTC等专业领域技能;3)结合其他行业,如汽车、游戏、安全等,拓宽职业道路。这三个方向各有学习难度和保饭碗指数,助你在安卓开发领域持续成长。
15 1
FFmpeg开发笔记(五十五)寒冬里的安卓程序员可进阶修炼的几种姿势