首先静态注册ScreenShotReceiver,通过这个receiver启动ScreenShotService,在ScreenshotService中动态注册上图中3个Receiver。
先通过在ScreenShotService中初始化窗口,为View添加监听器。事件的处理就从监听器入手。主要是滚动和保存单个截屏,最后拼接成一个长截屏图片。
保存单个截屏和计算滚动的一些参数的工作主要由NextScreenThread子线程去完成,滚动由NextScreenThread发消息给mUpdateScreenHanler在主线程中完成。
而最终保存长截图的工作有SavePictureThread子线程负责,其中就包括完成所有截屏的拼接工作。
停止screenshot:stopSelfBySelf();
判断是否到底了:isScrollToBottom();
mHandler中处理按下nextScreen后的三种消息:
1.MESSAGE_SHOW_DRAG_UP_VIEW---滚屏完后,显示出边框和bottomview
2.MESSAGE_DISABLE_NEXT_SCREEN---滚动后发现没有下一屏了。
3.MESSAGE_CAPTURE_SCREEN) ---scrollScreen()执行完了,即滚完屏幕了
点击nextScreen的处理流程:
1.判断是否需要滚动,需要就执行第2步。不需要就不执行第2步。
2.若是需要