1

我正在尝试获取 PNG 透明区域的尺寸。

Region transparentRegion = drawable.getTransparentRegion();

据我所知,我的 Drawable 是 100% 有效的,它们的所有功能都按预期工作。

getTransparentRegion 调用不会失败,但是任何对返回的区域执行任何操作的尝试都是空指针异常并导致我的应用程序崩溃。

05-01 20:54:14.207: E/AndroidRuntime(19159): java.lang.NullPointerException 05-01 20:54:14.207: E/AndroidRuntime(19159): at android.graphics.Region.setPath(Region.java:105)

在 2.3.7 和 4.2 上测试

关于可能导致这种情况的任何想法?

我真正想做的是很好地处理我的图像的非透明区域(总是矩形),如果有更直接的方法来实现这一点,我的耳朵是张开的。

4

1 回答 1

0

我想你误解了这个功能getTransparentRegion()

该函数在默认的 Android 实现中总是返回 null。这是文档中的引用:

默认实现返回null,表示没有透明区域;如果子类想要提供此优化信息,则可以选择覆盖它以返回实际的区域,但并不要求他们这样做。

它还说您可以创建自己的自定义类并覆盖此函数并编写一些聪明的像素检查器来查找透明像素和区域并返回可理解的内容。(所以基本上,如果你想让它有用,你必须使用你自己的逻辑来做到这一点)。

这个调用从 API 1 就开始了。现在,如果你像我一样,你可能会想“他们到底为什么要创建这样的方法并且总是返回 null?” 我能想出的唯一答案是“当时这似乎是合乎逻辑的事情”。

于 2013-05-02T04:49:56.570 回答