自己DIY的锁屏apk,第一次发帖,本人是小白,如有问题欢迎指正。
代码参考了之前论坛里的一个教程(具体地址忘了)
MainActivity 1.设置锁屏的开关(ToggleButton) enableBitton,btn_enable_listener监听点击后状态切换 2.全局变量Lockscreen_enable判断是否启动锁屏,若为true,开始donService锁屏服务,若为false则停止服务 3.使用
DonBootService 1.是为了在手机重启后开启继续锁屏程序的监听
donService服务启动 1.onCreate(创建服务) 1)首先注册屏幕开关的IntentFilter,监听屏幕开关的系统事件分别为ACTION_SCREEN_ON,ACTION_SCREEN_OFF,并且设置他们的接受优先级到最高,这样可避免先接收到系统默认锁屏。 2)当然要设置广播接收器(BroacastReceiver)mScreenOffReceiver, mScreenOnReceiver
3)此外还要初始化一个TelephonyManager监听电话状态,因为接听电话时,电话会黑屏,但这时要禁止启动锁屏界面,以免影响通话。
4)初始化一个(Intent)donLockIntent用来启动锁屏界面
2.onDestroy(销毁任务) 1)注销广播接收器,
3.mScreenOnReceiver,mScreenOnReceiver广播接收器 1) 获得KeyguardLock,并禁止其使用,让手机上的按键都无效。 2) abortBroacast,将广播信号丢弃,这样系统默认锁屏就不会启动。 3) 启动锁屏主界面TestLockScreenActivity
4.PhoneStateListener 1) 监听打电话状态,通话过程中禁止启动锁屏界面。
TestLockScreenActivity(锁屏主界面) 1.onCreate:初始化主界面 1) 隐藏状态栏让屏幕全屏显示: getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); (隐藏还是有问题,有解决方法的欢迎联系) 2) 设置静态布局 main 3) InitViews()初始化main中各种组件,包括sliderLayout,myClock(数字钟)以及layout_bed 4) 设置sliderLayout的异步控制Handler,收到解锁成功信息后退出界面。
SliderRelatvieLayout 1. onFinishInflate: (Finalize inflating a view from XML. This iscalled as the last phase of inflation, after all child views have been added)
1).在此方法内实现对sliderLayout布局的初始化。包括用findViewID为对应布局组件初始化变量
2)mContext.registerReceiver(message,newIntentFilter("android.provider.Telephony.SMS_RECEIVED")); 增加对收取到短信的监听器
2. onTouchEvent:实现对不同手势的响应 包括 handleActionUpEvent, handleActionDownEvent, handleActionMoveEvent等等实现具体的响应事件。 1) 其中handleActionUpEvent要判断手指下滑位置超过预设位置,若超过则向主界面的Handler发送退出锁屏消息,若没超过执行backDragImgTask线程,被子回复到原来位置;
2) handleActionDownEvent要判断手指下落位置在哪里,如果在被子的区域就执行异步线程motionDown,如果在袜子位置就实现查看短信时间; motionDown实现手机震动和人物震动事件
3) handleActionMoveEvent执行拖拽被子事件,用异步线程dragImgTask实现
3. messageReceiver监听短信收取:收到短信后,袜子里会出现礼物
MyQuilt 主要实现手势拖拽时,对被子(layout_quilt)的刷新绘制
源码:
testLockScreen.zip
(831.41 KB, 下载次数: 215)
|