本文转载自:http://www.linuxidc.com/Linux/2013-04/82743.htm

之前我有写过如何用style或者是layer-list实现自定义的横向进度条(http://www.cnblogs.com/tianzhijiexian/p/3854105.html),最近看到网上有人写了个垂直的弧形进度条的实现方式,觉得思路很巧妙,值得学习和体会,便转载一下。

之前文章的主要代码如下:

方法一:

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 设置背景色图像资源 -->
<item
android:id="@android:id/background"
android:drawable="@drawable/bar_bg" /> <!-- 设置进度条颜色图像资源 -->
<item
android:id="@android:id/progress"
android:drawable="@drawable/bar_progress" /> </layer-list>

方法二:

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 设置背景色(蓝色) -->
<item android:id="@android:id/background" >
<shape>
<corners android:radius="6dp" />
<gradient android:startColor="#0000ff"
android:endColor="#0000ff" />
</shape>
</item> <!-- 设置进度条颜色(红色) -->
<item android:id="@android:id/progress" >
<clip>
<shape>
<corners android:radius="6dp" />
<gradient android:startColor="#ff0000"
android:endColor="#ff0000" />
</shape>
</clip>
</item> </layer-list>

文章讲的是如何用一个图片来定义弧形进度条,其实就是把图片做个弧度,然后设置背景透明,最后修改进度条的方向为垂直的。下面是文章内容:

Android自带的progressbar组件基本可以满足常用的一些需求,最近一套新UI用到了弧形的进度条,如图

最初看到,自己是想自己实现,涉及到的问题就比较多,需要一些精确的计算画上去,整个屏幕的背景图是这样的:

不过在动手前,自己又百度了一些自定义进度条的文章看了一下。看了一篇受了很大的启发,这个弧形的效果完全可以用一个垂直的进度条来实现。使用这样一张图:

  

弧形与背景图的轨迹一样,然后整张图是长方形,不过背景是透明的,这样以后这样将android的progressbar竖直显示即可。

<ProgressBar android:id="@+id/disc_audio_progressbar"
style="?android:attr/progressBarStyleHorizontal"
android:progressDrawable="@drawable/audioseekbar_style"
android:layout_width="49dip"
 android:layout_height="281dip"
android:max="100"
android:layout_x="486dp"
android:layout_y="142dp"
android:progress="1">
</ProgressBar>

竖直显示了,下一步就是如何进度条沿竖直方向走呢?那就在audioseekbar_style中进行设置

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!--
<item android:id="@android:id/secondaryProgress" android:drawable="@drawable/imgslider_second">
</item>
-->
<item android:id="@android:id/progress">
<clip android:clipOrientation="vertical" android:drawable="@drawable/imgslider" android:gravity="top">
</clip>
</item>
</layer-list>

代码中的clip节点一共有四个属性,其中clipOrientation就是用来设置progress走向的,这里设置成vertical,图片就是刚才那张彩色弧形的图即可。

用layer-list实现弧形进度条的更多相关文章

  1. android弧形进度条,有详细注释的,比较简单

    Java code? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ...

  2. [WPF] 使用三种方式实现弧形进度条

    1. 需求 前天看到有人问弧形进度条怎么做,我模仿了一下,成果如下图所示: 当时我第一反应是可以用 Microsoft.Toolkit.Uwp.UI.Controls 里的 RadialGauge 实 ...

  3. 【iOS实现一个颜色渐变的弧形进度条】

    在Github上看到一些进度条的功能,都是通过Core Graph来实现.无所谓正确与否,但是开发效率明显就差很多了,而且运行效率还是值得考究的.其实使用苹果提供的Core Animation能够非常 ...

  4. 用canvas画弧形进度条

    function toCanvas(id ,progress){ //canvas进度条 var canvas = document.getElementById(id), ctx = canvas. ...

  5. CircularSlider半弧形滑动条

    前言 这边文章主要 是写 一.半圆弧型滑块的设计 最近项目中需要用到半圆弧形滑块,其作用和UISlider差不多,用于拖动改变播放音乐的播放进度. 大概样子是这样的: 效果展示 特点如下: 滑动响应区 ...

  6. iOS圆弧渐变进度条的实现

    由于项目需要一个环形渐变进度条显示课程,这方便网上的确有很多相关资料但是,都是比较零散的而且,大多数只是放一堆代码就算完了.这里我想详细写一篇我自己实现这个进度条的过程. 实现一个圆弧进度条主要分为三 ...

  7. Android自定义控件系列之应用篇——圆形进度条

    一.概述 在上一篇博文中,我们给大家介绍了Android自定义控件系列的基础篇.链接:http://www.cnblogs.com/jerehedu/p/4360066.html 这一篇博文中,我们将 ...

  8. 利用贝塞尔曲线绘制(UIBezierPath)自定义iOS动态速度表,可以自定义刻度,刻度值,进度条样式

    GitHub的Demo下载地址 使用UIBezierPath画图步骤: 创建一个UIBezierPath对象 调用-moveToPoint:设置初始线段的起点 添加线或者曲线去定义一个或者多个子路径 ...

  9. N 种仅仅使用 HTML/CSS 实现各类进度条的方式

    本文将介绍如何使用 HTML/CSS 创建各种基础进度条及花式进度条及其动画的方式,通过本文,你可能可以学会: 通过 HTML 标签 <meter> 创建进度条 通过 HTML 标签 &l ...

随机推荐

  1. securecrt注册方法

    使用文中的方法,可以注册Version 7.1.0 (x64 build 244)版本的securecrt. 另有注册机下载地址:http://pan.baidu.com/share/link?sha ...

  2. 【AtCoder】AGC021

    A - Digit Sum 2 从高位到低位数的第i位以前前缀都相同,第i位比当前位上的数小1的情况下,后面都填9 枚举一下然后计算最大的就好 #include <bits/stdc++.h&g ...

  3. 迷茫于Hibernate/JPA的人提一些建议。

    想对那些“迷惑”于Java ORM框架的J2EE开发人员提一些建议,希望能够对他们 更深入的理解和运用J2EE ORM框架来提速工作有所帮助,这些建议可能显得有些”陈旧“和”肤浅“, 因为最近半年我没 ...

  4. hadoop日志数据分析开发步骤及代码

    日志数据分析:1.背景1.1 hm论坛日志,数据分为两部分组成,原来是一个大文件,是56GB:以后每天生成一个文件,大约是150-200MB之间:1.2 日志格式是apache common日志格式: ...

  5. vs2010添加头文件与库文件搜索目录

    1 添加头文件搜索目录 项目属性->配置属性->C/C++->常规->添加包含目录 2 添加库文件搜索 项目属性->配置属性->VC++目录->库目录

  6. 高能天气——团队Scrum冲刺阶段-Day 5

    高能天气--团队Scrum冲刺阶段-Day 5 今日完成任务 于欣月:基本实现计步器功能:现阶段实现了每天进行步数统计并显示,计划实现历史步数统计和设置锻炼计划功能,并实现可视化图形界面 余坤澎:实现 ...

  7. Python - 计算个人所得税

    最近在学python,写了个计算个人所得税计算的脚本,分享. 以下为python3适用版本 #!/usr/bin/python # -*- coding: UTF-8 -*- # 该python脚本用 ...

  8. PMK数据生成工具airolib-ng

    PMK数据生成工具airolib-ng   PMK(Pairwise Master Key)是根据ESSID和无线密钥生成的哈希值,用于WPA/WPA2身份认证.在WPA/WPA2暴力破解中,需要大量 ...

  9. jQuery方法实现

    children 原生JavaScript中,如果希望找到某个元素的子元素,只能通过Node类型上的children方法一步一步获取.如 let li = document.querySelector ...

  10. HTTP错误405

    405 - 用来访问本页面的(方法不被允许) HTTP 错误 405 -禁止访问资源 HTTP 错误 405 405 不允许此方法 对于请求所标识的资源,不允许使用请求行中所指定的方法.请确保为所请求 ...