[置顶] 高仿IPhone滑动锁屏
下面的网址是我在eoe上面发表的帖子,源代码在里面,可以去下载。
http://www.eoeandroid.com/thread-239655-1-1.html
最近公司在锁屏功能,类似小米的百变锁屏,可以手动切换锁屏样式和管理锁屏。
IPhone锁屏是比较经典的锁屏样式,由于是做山寨手机的,当然要模仿下了。下面是的是效果图。
下面是开放锁屏管理功能时候,参考的资料,同时也感谢编写下面博文的作者,感谢他们的奉献精神。
1、http://blog.csdn.net/nosxcy/article/details/6820778
2、http://blog.csdn.net/qinjuning/article/details/7505703
尤其是第二个博文的作者,他的文章,使我深受启发,再次表示感谢。
我所做的是锁屏管理的功能,但是本文所介绍的不是锁屏的内容,只是怎么样显示内容而已,特此声明,因为上面的作者已经把过程分享的很清楚了。
对于Android锁屏,我是这样理解的,就是一个View遮挡了你的显示界面,使你如果要继续操作,必须把这个view给消失掉,所以这样就出现了锁的效果。
然在在这个view上显示必要的信息,就可以了。
在开发锁屏管理的功能的时候,我首先研究了系统的锁屏,发现系统的锁屏核心的代码是在
frameworks\base\policy\src\com\android\internal\policy\impl\*
目录下面。
其次说锁屏的显示的内容,Android系统锁屏的常见的内容有:
1、未读短息,未接电话
2、充电状态
3、时间、日期、还可以加天气
4、其他的快捷方式,如:相机,音乐播放器等
5、其他的暂时未知
对于锁屏,理解最多的是面向接口编程,说白了是回调,Android的系统底层已经写好了,当上面的内容中有一个发生该变的时候,就可以调用回调,来更新显示;
对于回调,我也不做解释,大家的都懂的。
所以在Android源码的policy目录下面定义很多的接口,这些接口都是定义了当某些事件发送改变的时候,可以通过调用实现类来执行,实现类当然是在具体某一种锁屏的。
比如上面的显示内容就可以定义这样的回调(下面也是只是做一个比方,代码中没有实)
public interface LockInfoCallback { public void onUnreadMessage(int count); public void onMissCall(int count); public void onBatteryChange(int status,int level); public void onDateTimeChange(); public void onWeatherChange(WeahterInfo info); public void onToCamera(); public void onToMusic(); }
下面分别介绍以上内容的获取方法;
1、未读短信和未接电话,这个里面的数据是在Android系统的/data/data/数据库里面,具体的我也是从网上找到的,我的源码里面没有介绍,如果有需要的朋友可以联系我。
2、充电状态,这个Androi系统有对应的接口可以获取,当系统的电量发生变化的时候,会发送这个下面的Action
Intent.ACTION_BATTERY_CHANGED
只要在context里面注册一个BroadcastReceiver,就可以获取详细的信息,当然包括很多信息,我们索要的只是,当前是否在充电状态,充电装的百分比,以及是否充满。
3、时间和日期,天气:
时间和日期类似于上面的充电状态,也可以通过注册广播来监听时间和日期的改变;
常见的需要监听的广播有:
intentFilter.addAction(Intent.ACTION_TIME_TICK); // 时间流逝
intentFilter.addAction(Intent.ACTION_TIME_CHANGED); // 时间改变
intentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED);// 时区变化
intentFilter.addAction(Intent.ACTION_LOCALE_CHANGED); // 该更时区
至于天气的信息,可以参考下面的博文
http://www.cnblogs.com/ylligang/articles/2304434.html
就可以获取天气的信息;
4:其他的快接方式
这个跟简单, 只要通过intent跳转到对象的界面就看了,再次不做详细介绍;