zoukankan      html  css  js  c++  java
  • [置顶] 高仿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跳转到对象的界面就看了,再次不做详细介绍;








  • 相关阅读:
    Leetcode---2. Add Two Numbers
    Leetcode---1. Two Sum
    dpkg:处理 xxx (--configure)时出错解决方案
    ubuntu 14.04搭建tensorflow-gpu开发环境
    Leetcode---35. Search Insert Position
    Leetcode---21. Merge Two Sorted Lists
    Leetcode----26. Remove Duplicates from Sorted Array
    Leetcode---28. Implement strStr()
    Leetcode----27 Remove Element
    qemu 安装 ubuntu-server 虚拟机
  • 原文地址:https://www.cnblogs.com/liushuibufu/p/3253624.html
Copyright © 2011-2022 走看看