【技术实现步骤摘要】
一种带范围的进度条的实现方法
本专利技术涉及进度条计算及呈现
,具体说是一种带范围的进度条的实现方法。
技术介绍
Android输入控件是一种用于人机交互的元件,AndroidSDK为此提供了各种各样的输入控件,包括:原生控件,例如:文本域(TextView)、按钮(Button)、编辑框(EditText)、单选按钮(RadioButton)、列表控件(ListView)以及显示图片控件(ImageView)等,布局控件,例如:Linearlayout、Relativelayout、Framelayout以及不太常用的TableLayout等等。利用这些基础的输入控件,能实现普通的布局展示,但对于特殊的应用场景,比如复杂的动画展示,或者特别的图形图像要求,利用这些基础的输入控件无法实现,因此就需要自定义控件来满足特别的需求。在Android系统中,自定义控件,主要包括两类:第一类,组合自定义控件,是指使用系统提供的各种界面控件,通过自定义封装成包括多个系统控件的自定义控件,代码在内部处理各子控件的交互,简化使用。第二类,自绘制控件,是指通过继承系统提供的各种界面控件,在控件的测量、布局、绘制三个方法中,使用代码进行测量、绘制、处理交互事件的自定义控件。自绘制控件能提供比系统控件更新颖的界面、更丰富的交互方式。进度条控件是安卓的基础控件之一,具体说是ProgressBar控件,其继承与View类。进度条在App中非常常见,例如下载进度、加载图片、打开文章、打开网页等等……都需要这么一个效果让用户知道我们的App正在读取,以构造良好的交互。如果没有这样 ...
【技术保护点】
1.一种带范围的进度条的实现方法,其特征在于,包括如下步骤:定义边框控件KwRangeSeekBar,继承android系统提供的KwSeekBar控件,在onSizeChanged回调中获取控件KwRangeSeekBar的高度h,进度条可用的区域available,进度条总的宽度减去左右内边距,得到可用的进度范围,获取标识范围的左边标记的横坐标mTagLeft,mTagLeft = getX(mStartProgress),获取标识范围的右边标记的横坐标mTagRight,mTagRight = getX(mEndProgress),其中,mStartProgress是外部传递给KwRangeSeekBar进度条的起始进度,mEndProgress是外部传递给KwRangeSeekBar进度条的结束进度,getX是根据进度获取横坐标的函数,在onTouchEvent的回调中,处理用户抬起的操作,提供对外接口setTime,在onDraw回调中,绘制进度条的三种进度值,具体包括:绘制进度条背景,根据变量布尔型变量isRangeSeekbar绘制二级进度条,绘制滑块和带范围的标记。
【技术特征摘要】
1.一种带范围的进度条的实现方法,其特征在于,包括如下步骤:定义边框控件KwRangeSeekBar,继承android系统提供的KwSeekBar控件,在onSizeChanged回调中获取控件KwRangeSeekBar的高度h,进度条可用的区域available,进度条总的宽度减去左右内边距,得到可用的进度范围,获取标识范围的左边标记的横坐标mTagLeft,mTagLeft=getX(mStartProgress),获取标识范围的右边标记的横坐标mTagRight,mTagRight=getX(mEndProgress),其中,mStartProgress是外部传递给KwRangeSeekBar进度条的起始进度,mEndProgress是外部传递给KwRangeSeekBar进度条的结束进度,getX是根据进度获取横坐标的函数,在onTouchEvent的回调中,处理用户抬起的操作,提供对外接口setTime,在onDraw回调中,绘制进度条的三种进度值,具体包括:绘制进度条背景,根据变量布尔型变量isRangeSeekbar绘制二级进度条,绘制滑块和带范围的标记。2.如权利要求1所述的带范围的进度条的实现方法,其特征在于:在边框控件KwRangeSeekBar中,定义画笔mPaint和mPaintTag的画笔Paint对象,用来绘制进度条和竖线标记;定义mRectLeft,mRectRight,表示左边和右边圆角矩形的带颜色区域,是RectF类型的变量;定义mStartProgress,mEndProgress,进度范围的起始值和最大值,类型是int。3.如权利要求1所述的带范围的进度条的实现方法,其特征在于:mCenterY=h/2;表示控件KwRangeSeekBar的中间的高度,绘制进度条的时候,在这个高度上绘制。4.如权利要求1所述的带范围的进度条的实现方法,其特征在于:getX函数的具体步骤为:调用SeekBar控件的系统apigetMax,获取进度条的最大进度值max,计算出当前进度和总进度的比例sacle,scale=progress*1.0f/max,progress是输入参数,表示当前的进度,计算scale*available+getPaddingLeft(),返回计算结果,就根据进度值计算出了对应进度条的左边标记的横坐标值mTagLeft,available是可用的进度条的宽度,getPaddingLeft()是SeekBar控件提供的获取左边距的api,按如上算法相应的计算出对应进度条的右边标记的横坐标值mTagRight。5.如权利要求1所述的带范围的进度条的实现方法,其特征在于:处理用户抬起的操作时,调用getProgress根据当前的用户点击的横坐标,获取对应的进度值,具体步骤如下:设touchX是点击的横坐标值,getPaddingLeft获取左边距,这样最大进度除以可用进度条的宽度,再乘以当前触摸的横坐标,就计算出了横坐标对应的进度值,获取了新的进度值以后,调用seekTo对其进行校正,具体步骤如下:当前进度如果小于范围的最小进度mStartProgress,就调用SeekBar的setProgress设置最小进度,如果大于范围的最大进度,mEndProgress,就调用SeekBar的setProgress设置最大进度,如果上边两种情况...
【专利技术属性】
技术研发人员:孙征,
申请(专利权)人:北京酷我科技有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。