12
2015
05

遮罩效果

公司安卓项目中要用到一个效果:透过一个圆形区域来显示一张图片,图片可以拖动。在flash中这种效果做起来是很简单的,画个圆形的遮罩就可以了。安卓好像没有遮罩的概念,还得自己来做。

通过百度搜索,发现两种方法,一种是通过图片的组合模式,将两幅图叠加到一起,这个方法简单,但是灵活性低,没有太在意,链接地址也没记住;另一种方法是通过canvas(原来安卓中也有canvas,和js太像了),对于canvas,我还是比较熟悉的。

canvas方法参考:http://blog.csdn.net/jiasudu1/article/details/7419432

安卓Canvas API:http://developers.androidcn.com/reference/android/graphics/Canvas.html

可能有人和我一样,不知道安卓里边怎么创建一个Bitmap,参考:http://blog.csdn.net/chenzheng_java/article/details/6266345

第一次在自己手机上测试,并没有得到理想的结果,clipPath传入的是一个圆,但是得到的确实一个小矩形;在公司的安卓测试设备上测试倒是可以,一开始以为又是安卓系统的兼容问题,后来搜了一下,发现原来是3d加速的问题。和html5中的canvas一样,安卓中的canvas也是分3d和2d的(不知道理解的对不对),有些移动设备是默认开启3d加速的(可能现在大多数设备都会开启吧),而canvas的clipPath方法是不支持3d加速的(还有好多方法不支持,这里就不列举了)。

解决方法:

1、既然是3d加速引起的,首先想到的是关闭3d加速。安卓里边关闭3d加速是以view为单位的,关闭方法如下:

setLayerType(View.LAYER_TYPE_SOFTWARE, null);

亲试,可行。

参考:http://blog.csdn.net/joejames/article/details/41484787

不知道这个方法只是关闭了调用方法的view的3d加速效果,还是整个Application的。

2、还有一个方法,没有看懂,可能是说先draw一遍,再用吧,而不是直接用源图片。感觉和flash里边解决图片的安全沙箱问题的思路类似。

参考:http://stackoverflow.com/questions/16889815/canvas-clippath-only-works-on-android-emulator

13
2015
03

安卓学习网站收藏

1、android Json解析详解(详细代码):http://blog.csdn.net/onlyonecoder/article/details/8490924

2、Android获取webView快照与屏幕截屏的方法:http://www.2cto.com/kf/201302/187492.html

03
2015
03

air for android使用中的问题

问题描述:启动时,先显示一下,然后黑屏,再重新显示画面。

原因(来自网友):在有的android 上   调用NetStream.play() 时候  会黑一下;第一次new Video会导致整个AIR黑屏1-2秒,这个bug在很多的air版本出现。

解决方法:在程序的主类初始化函数创建一个Video,存储起来(静态,类属性都可以),AIR程序背景设置成黑色来掩盖这个bug。缺点:启动会迟个1秒左右。

03
2015
03

air for android使用ogre

利用jni,可以在安卓中使用c/c++编写的程序,还可以使用ogre。

c/c++编写的程序会被打包成.so文件,air for android除了可以使用ane,也可以使用.so文件,这样就可以使用ogre了。

具体实现比较困难,需要会在air中使用ane、so,安卓中使用ogre(这个最难,好在有现成的demo)。然后组合起来就行了。安卓中使用ogre本身就存在各种兼容性问题,而且ogre初始化比较慢,所以慎用。

03
2015
03

air for android两种实现方法

方法1:flash提供的air for android可以直接发布成apk,flash本身实现不了的功能,通过ane来实现。

方法2:参考 Java ADT 打包AIR ,原生java通过air运行时来加载swf。


个人感觉效果上两种方法没有区别,第二种方法调试起来比较方便。

28
2015
01

webview中使用swf的各种坑

有一个安卓平板上的项目,打算用webview加载flash来实现,由于之前没有做过,就开始各种搜索和尝试。webview里边单纯播放swf还是很好实现的,在深入一点就各种坑了。

其实webview就是一个简单的浏览器,实际上就是在安卓里自己做了一个浏览器,用浏览器加载页面来显示flash 。

首先是实现交互,as与js的交互,以及as与java的交互(java和js的交互比较简单了)。

1、第一个坑,as与js的交互——安全沙箱问题。

2、第二个坑,单击变双击。

3、第三个坑,平板上点击响应慢