このコードは、ビットマップのアルファチャンネルを使用して単色(アルファ)の形状を描画します。例えばHoneycombハードウェアアクセラレーションがsetColorFilterで動作しないようです。
Bitmap alphaMask = bitmap.extractAlpha();
Paint paint = new Paint();
int color = Color.GRAY;
...
paint.setColor(color);
paint.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.DST_IN));
...
canvas.drawBitmap(alphaMask, x, y, paint);
、それは左のビットマップを取得し、それが右側に表示されるようにキャンバスに描画します:
しかし、それはハニカム(アンドロイド3.0)上では動作しません。ハードウェアアクセラレーションがオンになっているときそれは何に関係なく黒の形を描きます。色の値は無視されます。ただし、ICS(Android 4.0)ではハードウェアアクセラレーションを有効にしても問題ありません。
Romain Guy documented here、のように、いくつかのAPIがハードウェアアクセラレーションでサポートされていないことは知っていますか?どのような描画操作がサポートされていますか?ですが、サポートされていないものは使用していません。
さらに、setColorFilterはat this postで動作するはずです。
私のコードにハニカムでサポートされていないものがありますか?回避策はありますか?この場合、ハードウェアアクセラレーションをオンにしておきたいと思います。
おかげ
+1。非常に素晴らしい。落として私たちに知らせてくれてありがとう! :) – MrGomez
こんにちは心配、あなたたちはAndroidで驚くべきことをした、謝罪する必要はありません!いずれにしても、私は描画をビットマップにして、ビットマップをハードウェアアクセラレーションされたキャンバスに描画するルートを終えました。私のために働く!ありがとうございました – cottonBallPaws
@ littleFluffyKitty私はそれがすべてうまくいってうれしいです。ありがとう、@RomainGuy! – MrGomez