【GT-Android应用开发之黑板V1.0】

    作为一个典型的理工男,一直以来对于写博客、文章等是比较排斥的,但是随着工作时间的增长,越来越发现这个习惯是有养成必要的。第一篇文章,可能不会很完美希望各位能够体谅,并提出宝贵意见。

    首先做一个简单的自我介绍,本人名曰“谭克骚”,是一个骚气满满的攻城狮,毕业于山东某财经大学(傲娇脸),虽然毕业刚满一周年但是工作经验较为丰富,主要涉及JAVAEE、.net、Android以及Html5等领域,欢迎各位同行前辈、朋友进行沟通交流。

    逐渐进入正题。。。

    众所周知,安卓目前有三种开发模式,分别是原生APP、Web APP以及Hybrid APP,三者之间的区别就不再叙述了。本次开发项目是一个小型的黑板APP,可以把其看作是一个简易的Hybrid APP,界面由Html5实现,业务逻辑则通过安卓与JavaScript进行函数方法的互相调用实现,绘画则理由Html5的Canvas实现。

    功能分析:既然该项目是一个黑板APP,那么其需要实现实际生活中所需要的一些功能、用途,因此最起码该APP需要实现在黑板上书写、用板擦清除。延伸的,需要实现画笔粗细、颜色以及保存黑板的功能。

    

    上图便是APP截图,作为一名程序猿,不进行点技术分享,似乎不是很合适哈,所以接下来将项目中涉及到的部分技术进行一下分享。

    知识点一:Android与JavaScript相互调用

    1、安卓端调用JS中的方法设置画板的背景

    安卓端代码如下:

    

    JS中函数setImg定义如下:

    

    安卓端定义一个Image对象并将需要设置的画板的宽、高以及图片地址传递给JavaScript,通过WebView的loadUrl方法调用JS中定义的setImg函数进行参数的设置。

    2、黑板保存的实现

    在这个App中,我定义了两种实现方式,一种是JS端借助Canvas的toDataUrl方法将图片转为Base64字符串,并在安卓端进行转换并保存,但是这种实现方式会产生跨域问题,需要对WebView控件进行一些特殊处理(后面会提及);第二种方式便是点击保存后跳转到新的Window显示Canvas获取的图片,并调用安卓WebView的截图功能进行截图并保存。

    方法一代码如下:

    

    方法二中调用WebView的截图功能逻辑代码如下:

    

    图片保存逻辑实现:

    

    知识点二:WebView加载Html5跨域问题

    本应用主要是两处涉及到跨图问题,一个是安卓端将JS生成的Base64字符串转为图片的时候会造成跨域问题,解决方法是对WebView进行特殊处理,具体处理代码如下:

····

    另外一个是保存后加载并显示图片的问题,这里只需要修改JS代码开启Canvas对图片的跨域权限便可以,代码:

str.crossOrigin = "Anonymous";

    知识点三:将Base64字符串转成图片并保存,代码如下:

     

        好了,第一篇文章就先写这么多吧,最后祝愿所有人身心健康、心想事成~

    


没有更多推荐了,返回首页