1

PNG の透明領域の寸法を取得しようとしています。

Region transparentRegion = drawable.getTransparentRegion();

私のドローアブルは、私が知る限り 100% 有効であり、すべての機能が期待どおりに機能しています。

getTransparentRegion 呼び出しは失敗しませんが、返された領域で何かをしようとすると null ポインター例外が発生し、アプリがクラッシュします。

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 を返します。サブクラスは、この最適化情報を提供したい場合、オプションでこれをオーバーライドして実際の Region を返すことができますが、そうする必要はありません。

また、独自のカスタム クラスを作成してこの関数をオーバーライドし、透明なピクセルと領域を探してわかりやすいものを返す巧妙なピクセル チェッカーをプログラムすることもできます。(したがって、基本的に、これを有効にしたい場合は、独自のロジックを使用する必要があります)。

この呼び出しは API 1 から行われています。もしあなたが私のような人なら、「なぜ彼らはそのようなメソッドを作成し、常に null を返すのでしょうか?」と思うかもしれません。それについて私が思いつくことができる唯一の答えは、「当時はそれが論理的なことのように思えた」ということです。

于 2013-05-02T04:49:56.570 に答える