由于昨天只实现了简单的左右滑动,今天我们来扩充一下它。让它能上滑,并且可以弹出相应的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~