自定义实现圆形播放进度条



Android提供了很多基本的控件实现,但不是一个完整、强大的实现。

幸运的是,Android提供了自定义控件的实现,有了自定义控件,我们就可以再Android的基础控件上实现我们想要的功能或者自定义的外观。

以ProgressBar为例,对于可调节的进度条似乎只有长条形的ProgressBar(圆形的都是不停转动的那种)

假如我们想要一个可调节进度的圆形进度条呢。。。

Ok,下面我们直接切入主题(关于自定义控件的相关实现细节就不多说了,还不太清楚的童鞋先找相关资料补习一下)

该自定义控件的实现思路是继承自View,然后重写onDraw

先看看该类有哪些成员变量:

  1. public class CircleProgress extends View{  
  2.   
  3.       
  4.      private  static final int DEFAULT_MAX_VALUE = 100;         // 默认进度条最大值   
  5.      private  static final int DEFAULT_PAINT_WIDTH = 10;            // 默认画笔宽度   
  6.      private  static final int DEFAULT_PAINT_COLOR = 0xffffcc00;        // 默认画笔颜色   
  7.      private  static final boolean DEFAULT_FILL_MODE = true;        // 默认填充模式   
  8.      private  static final int DEFAULT_INSIDE_VALUE = 0;            // 默认缩进距离   
  9.       
  10.       
  11.      private CircleAttribute mCircleAttribute;              // 圆形进度条基本属性   
  12.   
  13.      private int mMaxProgress;                      // 进度条最大值                                                                                                                          
  14.      private int mMainCurProgress;                      // 主进度条当前值    
  15.      private int mSubCurProgress;                       // 子进度条当前值    
  16.       
  17.      private CartoomEngine mCartoomEngine;                  // 动画引擎   
  18.       
  19.      private Drawable mBackgroundPicture;                   // 背景图  

 

  1. class CircleAttribute  
  2.     {  
  3.          public RectF   mRoundOval;             // 圆形所在矩形区域   
  4.          public boolean mBRoundPaintsFill;          // 是否填充以填充模式绘制圆形   
  5.          public int     mSidePaintInterval;         // 圆形向里缩进的距离   
  6.          public int     mPaintWidth;                // 圆形画笔宽度(填充模式下无视)   
  7.          public int     mPaintColor;                // 画笔颜色  (即主进度条画笔颜色,子进度条画笔颜色为其半透明值)    
  8.          public int     mDrawPos;               // 绘制圆形的起点(默认为-90度即12点钟方向)   
  9.            
  10.          public Paint   mMainPaints;                // 主进度条画笔          
  11.          public Paint   mSubPaint;                  // 子进度条画笔    
  12.            
  13.          public Paint   mBottomPaint;               // 无背景图时绘制所用画笔  

 

  1. class CartoomEngine  
  2. {  
  3.     public Handler mHandler;   
  4.     public boolean mBCartoom;               // 是否正在作动画    
  5.     public Timer   mTimer;                  // 用于作动画的TIMER    
  6.     public       MyTimerTask    mTimerTask;     // 动画任务   
  7.     public int   mSaveMax;              // 在作动画时会临时改变MAX值,该变量用于保存值以便恢复      
  8.     public int     mTimerInterval;              // 定时器触发间隔时间(ms)        
  9.     public float   mCurFloatProcess;            // 作动画时当前进度值   

下面看看onDraw的代码片段:

  1. public void onDraw(Canvas canvas) {  
  2.         // TODO Auto-generated method stub   
  3.         super.onDraw(canvas);  
  4.                   
  5.         if (mBackgroundPicture == null)                                 // 没背景图的话就绘制底色   
  6.         {  
  7.             canvas.drawArc(mCircleAttribute.mRoundOval, 0360, mCircleAttribute.mBRoundPaintsFill, mCircleAttribute.mBottomPaint);  
  8.         }  
  9.           
  10.           
  11.         float subRate = (float)mSubCurProgress / mMaxProgress;  
  12.         float subSweep = 360 * subRate;  
  13.         canvas.drawArc(mCircleAttribute.mRoundOval, mCircleAttribute.mDrawPos, subSweep, mCircleAttribute.mBRoundPaintsFill, mCircleAttribute.mSubPaint);  
  14.           
  15.         float rate = (float)mMainCurProgress / mMaxProgress;  
  16.         float sweep = 360 * rate;  
  17.         canvas.drawArc(mCircleAttribute.mRoundOval, mCircleAttribute.mDrawPos, sweep, mCircleAttribute.mBRoundPaintsFill, mCircleAttribute.mMainPaints);  
  18.       
  19.       
  20.     }  
音乐播放器 HTML5 audio video 移动播放器 通过 HTML5,音乐在网络上东山再起。添加音频文件就像插入图像那样简单,并且用户能在浏览器外播放音乐,从而实现惊人的音乐体验。 标签的推出使您不再需要外部音乐播放器,在网站上实现真正的声音融合。 随着 HTML5 的出现,发生了一些重大变化,特别是在音乐和音频方面。开发人员不再要求 web 冲浪者使用 Adobe Flash、Apple QuickTime 或 Microsoft Windows 媒体播放器等特殊的播放器。这意味着用户不必担心是否有最新的兼容插件(或任何播放器插件)。他们只需打开自己喜欢的浏览器并聆听能发出声音的任何内容,如音乐、有声读物、FX 声音效果或朋友和家人录制的消息。 最近在论坛中看到了很多实用html5开发视频播放,音乐播放的功能,大部分都在寻找答案。因此我就在这里做一个demo,供大家相互学习。html5开发越来越流行了,而对于视频这一块也是必不可少的一部分。如何让你的网站占据优势,就要看你的功能和用户体验了。html5对video还是做了很多优惠的东西,我们使用起来很得心应手。 在过去 flash 是网页上最好的解决视频的方法,截至到目前还算是主流,像那些优酷之类的视频网站、虾米那样的在线音乐网站,仍然使用 flash 来提供播放服务。但是这种状况将会随着 HTML5 的发展而改变。就视频而言,HTML5 新增了 video 来实现在线播放视频的功能。 使用 HTML5 的 video 可以很方便的使用 JavaScript 对视频内容进行控制等等,功能十分强大,同时代码比较少加快加载速度。此外跨平台性比较好,特别是一些平板、手机等。例如苹果公司的产品不支持 flash 仅支持 HTML5 中的 video 功能。 HTML5 的兼容性问题虽然目前是个硬伤,但这只是时间的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值