转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/52203533   点击打开链接

在Android初级教程里面,介绍了shape用法的理论知识,再来完成这个小案例将会变得非常简单哦。(欢迎学习阅读):http://blog.csdn.net/qq_32059827/article/details/52203347 点击打开链接

这一篇就针对这个知识点,完成一个自定义的彩色进度条。系统自带的环形进度条是黑白相间的,如果你不是色盲,肯定觉得那个进度条其丑无比!就有必要设计一下它的状态,让我们给她点”颜色”看看。

首先看一下要设计的进度条长什么样子,动态截图如下:

接下来就一步步的完成这个效果。

还是老样子,在drawable目录下建一个shape类型的文件。里面代码如下:

在style里面加入如下代码:

<style name="ProgressBar">
<item name="android:indeterminateOnly">true</item>
<item name="android:indeterminateDrawable">@drawable/progressstyleshape</item>
<item name="android:indeterminateBehavior">repeat</item>
<item name="android:indeterminateDuration">3500</item>
<item name="android:minWidth">60dip</item>
<item name="android:maxWidth">60dip</item>
<item name="android:minHeight">60dip</item>
<item name="android:maxHeight">60dip</item>
<item name="android:mirrorForRtl">false</item>
</style>

在style里面引入了shape,drawable/progressstyleshape.xml文件里面的代码如下:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360" > <!--
封装一个动画
0~360°旋转、锚点位于中心
-->
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadiusRatio="3"
android:shape="ring"
android:thicknessRatio="10"
android:useLevel="false" >
<gradient
android:endColor="#0000ff"
android:startColor="#ff0000"
android:type="sweep" />
<!--
android:shape="ring"系统默认矩形,这里修改为环形
android:innerRadiusRatio=""表示内半径比:矩形宽度/内半径比 = 圆环的半径,这个值越大,整个环形越小
android:thicknessRatio="10"表示厚度比:矩形宽度/厚度比 = 环形的厚度。这个值越大,线条厚度越细
android:useLevel="false"表示让进度条环形不切分,完全显示,不是仅仅旋转一次
gradint表示颜色的渐变,颜色的过度
android:type="sweep" 表示扫射的效果,给人一种颜色慢慢过度的感觉 --> </shape> </rotate>

然后再布局文件里面引入样式:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" > <ProgressBar
android:layout_centerInParent="true"
style="@style/ProgressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/> </RelativeLayout>

运行程序截图:

Android简易实战教程--第十七话《自定义彩色环形进度条》的更多相关文章

  1. Android简易实战教程--第二十七话《自定义View入门案例之开关按钮详细分析》

    转载此博客请注明出处点击打开链接       http://blog.csdn.net/qq_32059827/article/details/52444145 对于自定义view,可能是一个比较大的 ...

  2. Android简易实战教程--第十三话《短信备份和还原~三》

    之前写过短信备份的小案例,哪里仅仅是虚拟了几条短信信息.本篇封装一个业务类,且直接通过内容提供者,访问本系统的短信信息,再提供对外接口.如果想要短信备份和短信还原,直接复制这段代码即可.对于您调用这个 ...

  3. Android简易实战教程--第二十三话《绚丽的菜单项》

    转载本博客请注明出处:点击打开链接  http://blog.csdn.net/qq_32059827/article/details/52327456 今天这篇稍微增强点代码量,可能要多花上5分钟喽 ...

  4. Android简易实战教程--第二十话《通过广播接收者,对拨打电话外加ip号》

    没睡着觉,起来更篇文章吧哈哈!首先祝贺李宗伟击败我丹,虽然我是支持我丹的,但是他也不容易哈哈,值得尊敬的人!切入正题:这一篇来介绍个自定义广播接收者. 通常我们在外拨电话的时候,一般为使用网络电话.如 ...

  5. Android简易实战教程--第十话《模仿腾讯手机助手小火箭发射详解》

    之前对系统自带的土司的源码做了简要分析,见博客:点击打开链接 这一篇给一个小案例,自定义土司,模拟腾讯卫士的小火箭发射.如果想要迅速看懂代码,建议先去看一下上篇介绍点击打开链接 首先,定义一个服务,在 ...

  6. Android简易实战教程--第五话《开发一键锁屏应用》

    转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/51860900 点击打开链接 Device Administration 对于这个应 ...

  7. Android简易实战教程--第八话《短信备份~一》

    各种手机助手里面都包含了短信备份这一项.短信的本分主要包含四项:内容body.事件date.方式type.号码address. 短信备份~一.使用一种很笨的方式来保存短信到xml文件中,而且保存在外部 ...

  8. Android简易实战教程--第七话《在内存中存储用户名和密码》

    首先是配置文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns ...

  9. Android简易实战教程--第六话《开发一键锁屏应用2·完成》

    转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/51885687点击打开链接 上一篇,初步开发了这个应用,功能都有了(见http:// ...

随机推荐

  1. [模版]平衡树splay2

    题目描述 1. 加入:一个新的成员加入同好会,我会分配给他一个没有使用的id,并且询问他的兴趣值val. 2. 修改:id在区间[a,b]内的成员,兴趣值同时改变k,k有可能是负数,表示他们失去了对同 ...

  2. poj 2425 AChessGame(博弈)

    A Chess Game Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 3791   Accepted: 1549 Desc ...

  3. HDU 3341 Lost's revenge AC自动机+dp

    Lost's revenge Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)T ...

  4. POJ 3415 不小于k的公共子串的个数

    Common Substrings Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 9248   Accepted: 3071 ...

  5. python中不能写n++

    初学python发现写n++编译器直接报错,很纳闷,后来想起来python中的变量不像c那样事先定义好变量类型,在内存中开辟指定的空间,然后再开始赋值.在Python中,以字符串为例:事先在内存划分空 ...

  6. 原生js移动端列表无缝间歇向上滚动

    在项目开发中尤其是在项目的活动页面的开发中,经常需要将用户的购买信息或中奖信息等以列表的形式展示在页面当中,并可以使其自动间歇向上滚动来达到在有限的区域内展示所有信息的目的.通常的做法是通过将列表父元 ...

  7. Tomcat,eclipse热部署的三种方式

    热部署是指在你修改项目BUG的时候对JSP或JAVA类进行了修改在不重启WEB服务器前提下能让修改生效.但是对配置文件的修改除外! 怎么说呢?热部署其实用的算少了,热部署怎么说都是个人部署的,大点的公 ...

  8. Redis Cluster集群主从方案

    本文介绍一种通过Jedis和Cluster实现Redis集群(主从)的高可用方案,该方案需要使用Jedis2.8.0(推荐),Redis3.0及以上版本(强制). 附:Redis Cluster集群主 ...

  9. nginx的yum安装,基本参数使用,编译参数说明和Nginx基本配置,模块安装

    nginx的yum安装从nginx官网获取源 vim /etc/yum.repose.d/nginx.repo[nginx]name=nginx repobaseurl=http://nginx.or ...

  10. 利用生产者消费者模型和MQ模型写一个自己的日志系统-并发设计里一定会用到的手段

    一:前言 写这个程序主要是用来理解生产者消费者模型,以及通过这个Demo来理解Redis的单线程取原子任务是怎么实现的和巩固一下并发相关的知识:这个虽然是个Demo,但是只要稍加改下Appender部 ...