现在很多开发者在裁图的时候还是使用com.android.camera.action.CROP 来调用 startActivity()。 这不是个好主意。

任何不是依android开头的Action 名称都不是标准的。依 com.android 开头的只是Android 内部应用之间的私有Action。 比如这个裁图的是Android系统默认相机提供的功能,很多第三方Rom会替换系统的某一个App。

如果一个第三方Rom使用了自己的相机程序替代了系统默认的,并且没有提供com.android.camera.action.CROP 这个Action,则您的应用就会崩溃了。

所以当您需要裁图功能的时候,可以像我一样从Android 相机代码中摘出这部分代码,或者使用别人摘好的代码即可。

下面是一些不错的可用裁图项目:

值得注意的是,如果您在某些4.0手机上发现如下错误信息:
1
2
3
4
java.lang.UnsupportedOperationException
    at
android.view.GLES20Canvas.clipPath(GLES20Canvas.java:
413)
    at
com.android.camera.HighlightView.draw(HighlightView.java:
101)
    at
com.android.camera.CropImageView.onDraw(CropImage.java:
783)
这个是由于在4.0系统上默认启用了硬件加速,而这些手机上硬件加速后 不支持某些绘图函数导致的。 只需要关闭裁图Activity的硬件加速功能即可。在activity xml文件中设置
android:hardwareAccelerated=”false” 即可。

转载: http://blog.chengyunfeng.com/?p=476#ixzz31JgW5wVI

05-11 20:48