现在的位置: 首页 > 综合 > 正文

android仿iphone滑动解锁

2017年09月20日 ⁄ 综合 ⁄ 共 1970字 ⁄ 字号 评论关闭

下面的网址是我在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目录下面定义很多的接口,这些接口都是定义了当某些事件发送改变的时候,可以通过调用实现类来执行,实现类当然是在具体某一种锁屏的。


比如上面的显示内容就可以定义这样的回调(下面也是只是做一个比方,代码中没有实)

[java] view
plain
copy

  1. public interface LockInfoCallback {  
  2.   
  3.     public void onUnreadMessage(int count);  
  4.     public void onMissCall(int count);  
  5.     public void onBatteryChange(int status,int level);  
  6.     public void onDateTimeChange();  
  7.     public void onWeatherChange(WeahterInfo info);  
  8.     public void onToCamera();  
  9.     public void onToMusic();  
  10. }  





下面分别介绍以上内容的获取方法;

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跳转到对象的界面就看了,再次不做详细介绍;


抱歉!评论已关闭.