这几天感觉需要自己搞一个自己需要锁屏的软件了,没有好用的,就自己动手做一个,做技术的就这一点好处,自力更生丰衣足食。

先上一个效果图吧:

这个图我们简单罗列一下功能点:

【1】日期和时间的显示

【2】电量和电池状态的显示

【3】背景图片的切换

【4】一个小锁图片,单击之后,倒计时5秒钟进入锁屏

【5】向右滑动结束锁屏动画效果,绿色小球向右滑动解锁屏幕

针对以上5个功能点,我重点说一下【4】,其它就简略说说实现思路

【1】日期和时间的显示:

可以分别使用TextView去实现,注意就是更新日期的handler只需要每分钟更新一次就可以了,过高的刷新频率严重影响手机的电池消耗,我看见有人使用DigitalClock,经过测试耗电量太大,不是一个好办法;

【2】电量和电池状态的显示:

对于电量的更新,需要通过AlarmManager实现定时不间断地发送电池信息

         Intent alarmIntent = new Intent();alarmIntent = intent;PendingIntent pendingIntent = PendingIntent.getService(this, 0,alarmIntent, 0);AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);alarm.set(AlarmManager.RTC_WAKEUP, 自己定义一个周期时间, pendingIntent);

然后,自己需要定义1个BroadcastReceiver,

     /** 定义一个接收电池信息的broascastReceiver */private BroadcastReceiver batteryReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {currentBatteryLevel = intent.getIntExtra("level", 0);currentBatteryStatus = intent.getIntExtra("status", 0);currentBatteryPlugged=intent.getIntExtra("plugged",0);}};

剩下的,你就可以去找一些根据电量不同数值而对应显示的电池图片

【3】背景图片的切换

我觉得没必要启动一个线程来干这件事情,毕竟以消耗资源少为原则,我是在主activity的onAttachedToWindow()里干这件事情,

APP里默认放了5张图,随机显示就可以了;当然你想扩充以下功能:比如,让用户自己从照片选择图片进行切换也是不错的主义。

【4】一个小锁图片,单击之后,倒计时5秒钟进入锁屏

我看很多“一键锁屏”的软件,都是点击之后马上锁屏,当然我个人还是喜欢进入一个锁屏主体的软件里,让用户更多选择性的功能去用;

这个功能不难,但是需要主意以下几点:

DevicePolicyManager  mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);

mDPM.lockNow();

就2行代码,真的就可以锁屏了?当然不可以。

ComponentName mLockScreenAdmin = new ComponentName(this, Lock.class);

if (mDPM.isAdminActive(mLockScreenAdmin)) {

mDPM.lockNow();

这样子写才可以,Lock必须 extends DeviceAdminReceiver

AndroidMantifest.xml里需要配置Lock这个receiver:

        <!-- 锁屏的服务监听,必须要加 --><receiver android:label="Souapp_screenLockManager" android:name=".Lock" android:permission="android.permission.BIND_DEVICE_ADMIN" android:description="@string/about"><meta-data android:name="android.app.device_admin" android:resource="@xml/lock_screen_admin" /><intent-filter><action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /></intent-filter></receiver>

在res/xml目录里需要创建一个lock_screen_admin.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<device-adminxmlns:android="http://schemas.android.com/apk/res/android"><uses-policies><force-lock /></uses-policies>
</device-admin>

【5】向右滑动结束锁屏动画效果,绿色小球向右滑动解锁屏幕

文字的动画效果可以自定义一个View: MaskedTextView,源代码如下:

public class MaskedTextView extends View{private Paint txtPaint;private Shader shader;private float dx=50;private long lastTime = System.currentTimeMillis();private boolean start = false;private void init(){txtPaint = new Paint();txtPaint.setColor(Color.GRAY);txtPaint.setAntiAlias(true);txtPaint.setTextSize(26);shader = new LinearGradient(0, 0, 200, 0, new int[]{Color.argb(255, 120, 120, 120), Color.argb(255, 120, 120, 120), Color.WHITE}, new float[]{0, 0.7f, 1}, TileMode.MIRROR);txtPaint.setShader(shader);}public MaskedTextView(Context context) {super(context);init();}public MaskedTextView(Context context, AttributeSet attrs){super(context, attrs);init();}public void setStart(boolean start) {this.start = start;invalidate();}@Overrideprotected void onDraw(Canvas canvas) {long now = System.currentTimeMillis();float elapsed = (now - lastTime)/4.5f;dx += elapsed;Matrix matrix = new Matrix();if(start){matrix.setTranslate(dx, 0);invalidate();}else{matrix.setTranslate(0, 0);}shader.setLocalMatrix(matrix);canvas.drawText(getContext().getString(R.string.hint_unlock), 0, 25, txtPaint);lastTime = now;}}

关于小球拖动解锁的动画,实际上就是自己写一个SliderRelativeLayout,里面装载小球,解锁框,当按住小球向右边滑动的时候,判断是否到达解锁位置,如果超过了解锁位置就解锁;否则,播放小球返回的动画。

遇到的其它小问题:

【主activity一开始全屏显示,解锁后有notification栏出现】

即使你在oncreate或则onresume方法设置了全屏的flag也不管事,因为我的锁屏屏蔽掉了HOME键

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

在主activity onAttachedToWindow()方法里添加 屏蔽HOME键代码:

this.getWindow().setType( WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);

解决办法,只有在屏蔽HOME键之前调用一次设置全屏的flag,完整代码如下:

 public void onAttachedToWindow() {// 设置全屏模式getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); updateBackgroundWallper();//更换背景this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);super.onAttachedToWindow();}

Android 关于休眠的几个坑点:可以参考这个文章 http://www.whoslab.me/blog/?p=474

立波教你做安卓一键锁屏软件相关推荐

  1. 学做安卓一键锁屏应用

    这个手机没有自带一键锁屏,在应用商店也没有搜到,下载了几个"锁屏APP"试试发现要许多权限呢,还是自己做一个吧放心点.其他手机应该也能用吧. 打包好的应用下载: https://d ...

  2. 立波教你做一键清理内存桌面快捷方式动画:图解金山电池医生

    大家用户一些一键清理内存的软件,会发现点击桌面上的"快速清理"快捷方式,就会播放一个动画,然后提示你清理了多少内存和进程,看起来挺酷的,不过这样子最大好处让用户减少了2次不必要的操 ...

  3. 钱盾 Android 恶意软件,【亲爱的、我爱你】一秒害你手机变砖--安卓流氓锁屏软件分析...

    1. 以萌与诱惑为名,软件诱导运行 该软件通过使用"萌动"的图片和"诱惑性"的语言,诱导用户进行一步步的点击. 2. 软件运行后,屏蔽所有界面点击操作 运行后, ...

  4. 160824华为Mate7创建一键锁屏快捷方式

    通过电源键锁屏,易导致按键损坏,而下拉栏,又不方便,下第三方程序又过于小题大做,其实,EMUI中是有一键锁屏软件的,可通过ROOT后CUST分区的XML显示隐藏的程序,这里介绍直接调用程序中的子功能, ...

  5. 【拯救电源键】最详尽的android开发一键锁屏实例 提供免费源码+apk

    现在的手机屏幕越来越大,单手操控起来颇为不便,比如锁屏.电源键一般为实体键,经常按难免损耗.所以一键锁屏软件应运而生,既能方便地锁屏,还能减少电源键损耗.甚至许多手机厂商在自家的rom里集成了这个功能 ...

  6. 笔记本android启动画面,android解锁界面开发分分钟教你做锁屏软件 -电脑资料

    想做个锁屏界面很久了,最近一周,历经千辛万苦,越过种种挫折,终于完美实现了这一要求,在此将锁屏思路分享出来, 注意:这不是什么一键锁屏,是类似"go锁屏"那样的锁屏界面. 准备:本 ...

  7. Android双屏锁屏,教大家vivonex双屏版怎么一键锁屏的方法

    最近有挺多人都跟小编说想要了解vivonex双屏版怎么一键锁屏,那么或许你会好奇为什么要了解vivonex双屏版怎么一键锁屏,这里小编就来给大家细细的说道说道,如今很多小伙伴们在玩手机与各种电子设备的 ...

  8. [安卓应用发布]HOLO一键锁屏

    一个极简的一键锁屏应用,holo风格,使用系统默认图标. http://pan.baidu.com/s/1ovOqt 截图: 转载于:https://www.cnblogs.com/zijinzhen ...

  9. (安卓)一键锁屏 ---亲测!

    一键锁屏的实现原理:当按锁屏键的时候,会发出一个广播,当用户界面接收到一个广播的时候就可以实现锁屏.而广播的发送是我们调用DevicePolicyManager(设备管理接收者)中的lockNow() ...

最新文章

  1. 光学传输与摄像头光学技术
  2. Kafka0.10.2.0分布式集群安装
  3. box-shadow比较美观的阴影
  4. python整数格式显示_[python之路]格式化显示
  5. nlp自然语言处理_不要被NLP Research淹没
  6. 以太网帧的最小长度_802.3?以太网?看完你就懂了
  7. c语言算法基础第一例
  8. 系统架构师-基础到企业应用架构-业务逻辑层
  9. DNS服务器配置详解
  10. 一分钟认识JAVA与Android的联系与区别
  11. WebLogic 11gR1修改jdk版本
  12. 开源绘图工具drawio
  13. MATLAB坐标轴(gca)的简单应用---MATLAB学习
  14. 2032:【例4.18】分解质因数
  15. 腾讯高级数据分析师采访2
  16. 【C#:WinForm+ADO.NET+SQL Server实现验证码登录】
  17. 将正方形矩阵顺时针转动90度(Java)
  18. c语言遍历 json字符串,全面详解c语言使用cJSON解析JSON字符
  19. Spark学习总结以及问题
  20. IDEA3.5最新版激活码

热门文章

  1. 随笔--纪录片《Undercover billionaire》随感
  2. 分享几道VB.net笔试试题
  3. 帮你开店,提供高性价比门店点餐、门店团购等软件出租,帮你创造财富。
  4. 2KAX五脚电源芯片,2KAX锂电池充电IC资料
  5. IPO前“紧急”分红7500万,上市对赌背后,这家功率半导体公司到底有多“硬”?...
  6. CSS3 Animation 帧动画 steps() --冯浩的博客
  7. 飞书搜索初步分析-以移动端为例
  8. 卸载亚信科技安全助手
  9. 用JS向HTML文本框输入,淘汰赛JS - 双向绑定多个输入(硬编码的HTML输入文本框),并得到JSON阵列...
  10. 几款工具神器,高效率助你走上人生巅峰