Android开发APP

android标尺控件的实现

2018-08-20  本文已影响192人  waiwaaa

需求

本示例来源于选取酒量的需求,要求最小取酒量为50,最大为300(有些为500),选取的数量为50的倍数,如果剩余量不足最大值,则可以不为50的倍数。

成品效果

设置取值空间为50~283,显示刻度为0 ~ 500


wineview.gif

实现要点

draw

onTouchEvent

MotionEvent.ACTION_UP,MotionEvent.ACTION_CANCEL都表应该结束滑动,不了解事件的可以参考 事件分发笔记

Scoller常用的api:

mScroller.getCurrX() //获取mScroller当前水平滚动的位置  
mScroller.getCurrY() //获取mScroller当前竖直滚动的位置  
mScroller.getFinalX() //获取mScroller最终停止的水平位置  
mScroller.getFinalY() //获取mScroller最终停止的竖直位置  
mScroller.setFinalX(int newX) //设置mScroller最终停留的水平位置,没有动画效果,直接跳到目标位置  
mScroller.setFinalY(int newY) //设置mScroller最终停留的竖直位置,没有动画效果,直接跳到目标位置  
  
//滚动,startX, startY为开始滚动的位置,dx,dy为滚动的偏移量, duration为完成滚动的时间  
mScroller.startScroll(int startX, int startY, int dx, int dy) //使用默认完成时间250ms  
mScroller.startScroll(int startX, int startY, int dx, int dy, int duration)  
  
 //返回值为boolean,true说明滚动尚未完成,false说明滚动已经完成。这是一个很重要的方法,通常放在View.computeScroll()中,用来判断是否滚动是否结束。
mScroller.computeScrollOffset()
//startY  开始位置, velocityY  滑动的速度, 像素, maxX   最小的值 , maxY   最大的值,最后的结果不会超过这个值
mScroller.fling(startX, startY, velocityX, velocityY, minX, maxX, minY, maxY);

实现代码只有一个类,具体代码示例请到github查看

上一篇 下一篇

猜你喜欢

热点阅读