安卓activity上手写

做安卓开发经常会有一些办公性质的系统会要求手写签批功能。比如需要针对一些办理信息进行手写标注,或者对一些word,pdf等等信息进行编辑等功能。其中针对word和pdf的技术往上可以找到,而且技术比较成熟。现在我将要介绍的是在手机所见即所得的页面上进行签批的功能实现。首先当我初步遇到这个需求的时候是先去网上找有没有相关的已经实现的技术来做参考,结果找了很久没有找到,于是开始自己想办法来做实现。首先安卓在activety上面直接进行绘制的技术不好做实现,或者可以通过自定义一个view的方式来实现,但是实现起来应该会特别复杂,而且会影响现有activety的滑动事件。 所以我就想有没有办法做一个低侵入式的方式来实现,尽量不干扰当前活动。后来想到了一个方案,我把需求拆分了两步来实现,首先对当前获得进行截图,缓存改截图文件,然后跳转到另一个专门做签批的activety在图片上进行签批操作。这样1.对原来的activety没有任何影响,2.对activety进行截屏的技术很好实现,3.图片上进行书写签批也有成熟的技术实现。思路理清了事情也就完成了百分之80了。接下来我来仔细和大家讲解下具体实现;大家先把代码下载:URL

首先是搞一个截屏的工具类ScreenShot.java有两种类型的截屏:当前显示内容截取,滚动截取;可以根据需求进行选择用哪种方式实现。这里我们就用shoot方法;shoot方法参数为当前活动上下文,最终结果是将截屏保存到指定位置并返回该位置。这里测试就用根目录做缓存位置

public static String shoot(Activity a) {
ScreenShot.savePic(ScreenShot.takeScreenShot(a), “sdcard/xx.png“);
return “sdcard/xx.png”;
}

截屏工具搞完了接下来就是在需要截屏的active中绑定触发截屏的实现。可以直接注册一个按钮来触发即可

String sdcardpath= ScreenShot.shoot (ProjectDetailActivity.this);  //截屏

截屏之后将图标路径传递到签批的activity

Intent intent1 = new Intent(ProjectDetailActivity.this, JasonDrawActivity.class); intent1.putExtra(“JasonImg”, sdcardpath);        startActivity(intent1);

其中JasonDrawActivity.java就是我们的主角,最终签批的活动。这里呢我使用的是国外的一个开源项目SignaturePad,这个手写效果是我找了很多中最满意的,自带笔锋效果。但是该项目的源码是基于android studio创建的,我要用到的项目是eclispe创建的,没办法直接用,后来我把SignaturePad转换为eclispe模式的。有需要在eclispe实现的朋友可以联系我邮箱。不过大部分人应该都转android studio了。下载下来之后直接作为库项目就可以引入到你自己的项目就行了。JasonDrawActivity中注册的几个按钮就是各种操作的入口。大家自己就能看懂。接下来我来提供示例项目给大家;


发表评论

电子邮件地址不会被公开。 必填项已用*标注