一种在移动设备中进行截屏的方法和装置的制造方法_3

文档序号:9887385阅读:来源:国知局
r>[0120]需要说明的是,ViewGroup类已经为我们重写了dispatchDraw()的功能实现,应用程序一般不需要重写该方法,但可以重载父类函数实现具体的功能。
[Ο?21] 4.1dispatchDrawO方法内部会遍历每个子视图,调用drawChildO去重新回调每个子视图的drawO方法(注意,这个地方“需要重绘”的视图才会调用drawO方法)。
[Ο?22] 需要说明的是,ViewGroup类已经重写了dispatchDraw()的功能实现,应用程序一般不需要重写该方法,但可以重载父类函数实现具体的功能。
[0123] 5、绘制滚动条。
[Ο?24] 在本发明实施例中,最顶层的ViewGroup接收到截屏请求后,可以遍历每个子View或者子V i ewGroup进行重新测量、布局和绘制。
[Ο?25] 从DecorView开始重绘,可以保证所有子View或者子ViewGroup都有机会重绘,因此,整个应用程序的界面都进行了重绘,可以保证所有匿名显示的字符串都进行了更新绘制,避免第一文本数据替换不完全的问题。
[0126]在Android系统中,文本数据在Draw过程中调用Canvas.drawText进行绘制。
[0127]DrawText函数执行之前保存当前要绘制的第二文本数据,根据预先设定的字符串过滤方式,过滤和替换第一文本数据作,过滤和替换完成后,生成新的要显示的第二文本数据,调用DrawText函数进行新显示字符串的绘制。
[0128]步骤103,根据所述截屏请求对替换第二文本数据之后的界面进行截屏操作。
[Ο?29] 在移动设备进行截屏的时候,会向DecorView发送一个截屏广播,DecorView收到这个广播后进行最顶层的ViewGroup的重绘工作,重绘完成后再发给SurfaceFlinger或者其他方式进行截屏。
[O13O]其中,SurfaceFlinger公开了截屏接口,可以直接进行截屏,当然也可以通过其他的途径,比如,直接读取framebuffer的方式或者读取gpu图像缓存区的形式进行截屏,本发明实施例对此不加以限制。
[0131]在一个应用情景中,如图3A所示,在群组中,用户名为“王建磊”的用户提示电梯有危险,当前用户想截屏告诉其他用户,如图3B所示,在截屏时,将用户名“王建磊”和“张洪志”替换为“.■■”,实现了匿名截屏,保证了用户的隐私安全。
[0132]本发明实施例通过将表示用户名的第一文本数据替换为预设的第二文本数据,再进行截屏,保护了用户隐私的同时,避免了启用专门的图片编辑工具进行手动涂抹,大大降低了匿名处理的技术门槛较高,降低了出错的几率,提高了匿名修改的质量。
[0133]参照图4,示出了本发明的一种在移动设备中进行截屏的方法实施例2的步骤流程图,具体可以包括如下步骤:
[0134]步骤401,在移动设备中接收到截屏请求时,在当前的界面中查找表示用户名的第一文本数据;
[0135]步骤402,将所述第一文本数据替换为预设的第二文本数据;
[0136]步骤403,根据所述截屏请求对替换第二文本数据之后的界面进行截屏操作;
[0137]步骤404,当截屏结束时,将所述第二文本数据替换为所述第一文本数据。
[0138]在具体实现中,截屏调用的是同步接口,该接口调用返回就表示截屏结束。
[0139]若截屏结束,则可以将第二文本数据替换为第一文本数据,保证应用程序的正常运行。
[0140]在本发明的一个实施例中,步骤404可以包括如下子步骤:
[0141]子步骤S31,对所述第二文本数据所属的文本视图重新进行测量、布局和绘制,在绘制时,将所述第二文本数据替换为所述第一文本数据;
[0142]子步骤S32,对目标视图重新进行测量、布局和绘制;
[0143]其中,所述目标视图为所述视图组中、除所述第一文本数据所属的文本视图之外的视图。
[0144]在本发明实施例中,最顶层的ViewGroup接收到截屏结束的广播后,可以遍历每个子V i ew或者子V i ewGroup进行重新测量、布局和绘制。
[Ο?45] 从DecorView开始重绘,可以保证所有子View或者子ViewGroup都有机会重绘,因此,整个应用程序的界面都进行了重绘,可以保证所有匿名显示的字符串都进行了更新绘制,避免第二文本数据替换不完全的问题。
[0146]在Android系统中,文本数据在Draw过程中调用Canvas.drawText进行绘制。
[0147]DrawText函数执行之前保存当前要绘制的第一文本数据,根据预先设定的字符串过滤方式,过滤和替换第二文本数据作,过滤和替换完成后,生成新的要显示的第一文本数据,调用DrawText函数进行新显示字符串的绘制。
[0148]需要说明的是,每个TextView在内存中都有自己的实例,每个实例之间都是相互隔离的,不会相互影响。
[0149]因此,每个TextView要保持的第一文本数据保存到本身实例的一个成员变量中即可。
[0150]需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
[0151]参照图5,示出了本发明的一种在移动设备中进行截屏的装置实施例1的结构框图,具体可以包括如下模块:
[0152]文本数据查找模块501,用于在移动设备中接收到截屏请求时,在当前的界面中查找表示用户名的第一文本数据;
[0153]第一文本数据替换模块502,用于将所述第一文本数据替换为预设的第二文本数据;
[0154]截屏模块503,用于根据所述截屏请求对替换第二文本数据之后的界面进行截屏操作。
[0155]在本发明的一个实施例中,所述文本数据查找模块501可以包括如下子模块:
[0156]视图组查找子模块,用于查找在当前的界面中最顶层的视图组;
[0157]文本视图查找子模块,用于遍历所述视图组,查找文本视图,所述文本视图中具有候选文本数据;
[0158]用户名数据匹配子模块,用于在所述候选文本数据与预设的用户名数据匹配时,确定所述候选文本数据为表示用户名的第一文本数据。
[0159]在本发明的一个实施例中,所述第一文本数据替换模块502可以包括如下子模块:
[0160]第一替换子模块,用于将所有第一文本数据替换为同一个第二文本数据;
[0161]或者,
[0162]单独文本识别子模块,用于识别单独的第一文本数据;
[0163]第二替换子模块,用于将所述单独的第一文本数据替换为单独的第二文本数据。
[0164]在本发明的一个实施例中,所述第一文本数据替换模块502可以包括如下子模块:
[0165]第一重绘制子模块,用于对所述第一文本数据所属的文本视图重新进行测量、布局和绘制,在绘制时,将所述第一文本数据替换为预设的第二文本数据;
[0166]第二重绘制子模块,用于对目标视图重新进行测量、布局和绘制,所述目标视图为所述视图组中、除所述第一文本数据所属的文本视图之外的视图。
[0167]参照图6,示出了本发明的一种在移动设备中进行截屏的装置实施例2的结构框图,具体可以包括如下模块:
[0168]文本数据查找模块601,用于在移动设备中接收到截屏请求时,在当前的界面中查找表示用户名的第一文本数据;
[0169]第一文本数据替换模块602,用于将所述第一文本数据替换为预设的第二文本数据;
[0170]截屏模块603,用于根据所述截屏请求对替换第二文本数据之后的界面进行截屏操作。
[0171]第二文本数据替换模块604,用于在截屏结束时,将所述第二文本数据替换为所述第一文本数据。
[0172]在本发明的一个实施例中,所述第二文本数据替换模块604可以包括如下子模块:
[0173]第三重绘制子模块,用于对所述第二文本数据所属的文本视图重新进行测量、布局和绘
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1