3

Android 2.2で完全に機能するコードがいくつかありますが、Android4では黒いビューしか生成されません。これがonDrawメソッドです。

//Object initialization
Paint paint=new Paint();
PorterDuffXfermode exclude=new PorterDuffXfermode(PorterDuff.Mode.SRC_OUT);


paint.setAntiAlias(true);
paint.setDither(true);


//The dimensions are OK and they are at the center of the screen
canvas.drawBitmap(mask, screenWidth / 2 - pixelsToSp(100), screenHeight / 2 - pixelsToSp(100), paint);



paint.setXfermode(exclude);
//PS:targetRect is a portion of screen
canvas.drawBitmap(source, null, targetRect, p);
paint.setXfermode(null);

PS:マスクとスポットライトは2つのビットマップです。

Xfermodeを設定せずに、2つのビットマップをペイントします(私のスコープでは正しくありませんが、適切な場所に適切なサイズで描画されます)

4

1 に答える 1

8

その特定のハードウェアアクセラレーションを無効にする必要がありますView。詳細と、ハードウェアアクセラレーションを選択的に無効にする方法については、 「ハードウェアアクセラレーション-サポートされていない描画操作」セクションを参照してください。例えば:

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
于 2012-07-19T21:11:21.440 に答える