Android Drawable getTransparentRegion()不起作用

时间:2013-05-02 01:14:20

标签: java android drawable

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

Region transparentRegion = drawable.getTransparentRegion();

据我所知,我的Drawables 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上进行了测试

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

我真正想做的是精细化我的图像的非透明区域(总是长方形),如果有更直接的方法来实现这一点,我的耳朵是开放的。

1 个答案:

答案 0 :(得分:0)

我认为你误解了函数getTransparentRegion()

该函数,在默认的Android实现中,ALWAYS返回null。以下是documentation:

的引用
  

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

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

这个调用自API 1开始就已经存在。现在,如果你像我一样,你可能会认为"为什么世界上他们会制作这样的方法并且总是返回null?"我能想出的唯一答案是#34;当时这似乎是合乎逻辑的事情。"

相关问题