Android简易锁屏(一)
由于工作需要,得需要自己去来实现一个锁屏的功能,所以借此机会也可以同步的记录下自己的学习知识。
好久没有更新自己的Blog了,不知道是因为自己忙,还是没有什么想要写的。 这一个月经历了很多事情,也跑了好多地方,来到潍坊吃了一碗面,去了招远看到了KFC,去青岛再一次看到了栈桥,到上海当了一段时间YP。做了好多次的饭,喝了不少听青岛啤酒。 学会了如何去读书。看了《慢慢来,一切都来得及》(比较推荐,便宜内容很很丰富)、《人性的弱点》(不要被名字所欺骗,是一本非常好的书)、《如何提高情商》(情商才是这个世界的制胜法宝)、《一只特立独行的猪》(波哥的书,永远都是那么带感)。
关于锁屏
说到锁屏,我想大家应该都不是很陌生,每天和我们的手指多次的交互。我对Android锁屏的印象从最早的左滑开锁,右滑静音开始,一直到自己买到奶骑2之后那个圆形的解锁。见过MIUIV4中上下左右的,也用过Flyme2.0里3通道上滑。 为了比较简单的实现咋的需求,初步我还是通过以左滑解锁,右滑也解锁来进行自己的初步开发。需求
对于需求来说,就是通过从中心点左右滑动时,若没有到达指定位置,用户松手,滑块还原。若达到指定位置以后,则触发相应的事件来执行后面的操作,在本文中,我就是为了触发finish();实现
Layout布局
通过ScrollRelativeLayout继承RelativeLayout,为里面添加一个Scroller,来控制滚动。 详情可以见源码。ScrollRelativeLayout
- 申明一个Scroller对象,用来调用其computeScroll(),获取滚动情况,做出相应的响应。
@Override public void computeScroll() { if (mScroller.computeScrollOffset()) { scrollTo(mScroller.getCurrX(), 0); postInvalidate(); } }
- 通过调用startScroll()传参实现用户松手的时候修正位置。
- 返回当前的x坐标,getCurrX().
HomeActivity
在这个Activity中,需要对手指滑动事件进行捕捉,并且计算控制。- Override onTouch()方法,通过检测MotionEvent的不同条件(DOWN,UP,MOVE),来对用户触摸进行不同的处理
- DOWN只需要getCurrX()
- UP是主要实现功能的地方
- 首先获取整个屏幕的宽度w,并且初始化x的值initX(注意:由于我的滑动是通过TextView控件实现的,因此在初始X坐标的时候需要考虑到控件的宽度)即
initX = w / 2 - tvTouch.getWidth() / 2;
- 确定左右边界rightLimt&leftLimt
- 从控件的中心点算起,左边为正值,右边为负
if (scroller.getCurrX() < 0 && -scroller.getCurrX() > rightLimt) { scroller.autoScroll(scroller.getCurrX(), -scroller.getCurrX(),1500); onScrollOut(); finish(); } // to the left else if (scroller.getCurrX() > 0 && scroller.getCurrX() > leftLimt) { scroller.autoScroll(scroller.getCurrX(), -scroller.getCurrX(),1500); onScrollOut(); } else { // fix the distance scroller.autoScroll(scroller.getCurrX(), -scroller.getCurrX(), 1000); }
- 首先获取整个屏幕的宽度w,并且初始化x的值initX(注意:由于我的滑动是通过TextView控件实现的,因此在初始X坐标的时候需要考虑到控件的宽度)即
- MOVE来实时的更新位置
- 添加滑动完毕后事件onScrollOut()
好久没有更新自己的Blog了,不知道是因为自己忙,还是没有什么想要写的。 这一个月经历了很多事情,也跑了好多地方,来到潍坊吃了一碗面,去了招远看到了KFC,去青岛再一次看到了栈桥,到上海当了一段时间YP。做了好多次的饭,喝了不少听青岛啤酒。 学会了如何去读书。看了《慢慢来,一切都来得及》(比较推荐,便宜内容很很丰富)、《人性的弱点》(不要被名字所欺骗,是一本非常好的书)、《如何提高情商》(情商才是这个世界的制胜法宝)、《一只特立独行的猪》(波哥的书,永远都是那么带感)。
- 人是因为对一件事情干得越来越好才越来越有兴趣的,不是对什么感兴趣才干得好的。----《慢慢来,一切都来得及》
- 我爱的人送我以伤口,伤口固然疼痛,但却不是身外之物,它长在身上,嵌进肉里;爱我的人送我以礼物,礼物固然美好,但却是身外之物,随时可以抛弃不要。我爱我的一切,包括爱我的痛苦。 ----《慢慢来,一切都来得及》