Android简易锁屏(二)


由于昨天只实现了简单的左右滑动,今天我们来扩充一下它。让它能上滑,并且可以弹出相应的Layout,该Layout中有常用的一些软件,如拨号、短信、计算器等等。

当然对于一个锁屏,没有时间和日期,肯定也是不行的,so let‘s do this。

上滑处理

布局


其实布局很简单,将昨天的布局文件,加入一个LinearLayout,然后用属性去控制其中的子控件。

实现上滑


  • 首先我们定义两个变量y1记录之前的位置,y2记录竖直方向上的位移变量。

  • 通过在MotionEvent.ACTION_DOWN中获得点击的时候的x坐标和y坐标

  • 在MotionEvent.ACTION_UP中处理这样的事件


  • 当y1和y2之间的差距大于50的时候,判断其为上滑(因为我的tv控件是64)

  • 设定一个全局的变量,来控制上滑后的布局展现

  • 用if-else控制该布局



if ((y1 - y2) > 50) {
if (!visble) {
toolsLayout.setVisibility(v.VISIBLE);
visble = true;
}
else {
toolsLayout.setVisibility(v.GONE);
visble = false;
}
}

实现时间日期


这里面主要还是参照了SOF里面的众多大神的实现


  • 对于日期来说,比较简单,Android自带的有很多的方法能完成

java.text.DateFormat.getDateInstance().format(
new Date());


  • 时间就稍显复杂一点,虽说有函数可以提获得当前的系统时间,但那并不是我所期望的。所以,我打算用一个线程实时的更新当前时间。


  • 创建一个timeThread类,在类中实现,每隔1s,给Handler发送一条消息

      public class timeThread extends Thread {
@Override
public void run() {
do {
try {
Thread.sleep(1000);
Message msg = new Message();
msg.what = msgKey;
mHandler.sendMessage(msg);
} catch (InterruptedException e) {
e.printStackTrace();
}
} while (true);
}
}


  • 通过mHandler来获得当前的时间,并格式化输出

      long systemTime = System.currentTimeMillis();
CharSequence sysTimeStr = DateFormat.format(“hh:mm:ss”,systemTime);
tvTime.setText(sysTimeStr);



这样今天我的需求就已经完成了

想要看源码的,请点击这里.

To Be Continue~


-------------The End-------------
请我喝一杯啤酒~