0

マップアクティビティで、オーバーレイを作成し、その上にをCnavas使用して図形を描画しますPaint

形状は点と線で構成されます

linePaint = new Paint();
    linePaint.setColor(mContext.getResources().getColor(R.color.Line));
    linePaint.setStyle(Paint.Style.STROKE);
    linePaint.setStrokeWidth(strokeWidth);
    linePaint.setXfermode(avoidXfermode);
    linePaint.setFlags(Paint.ANTI_ALIAS_FLAG);

    mPointPaint = new Paint();
    mPointPaint.setColor(pointColor);
    mPointPaint.setFlags(Paint.ANTI_ALIAS_FLAG);

また、ポイントが線と重ならないように定義AvoidXfermodeします(ポイントは「上」にある必要があります)

avoidXfermode = new AvoidXfermode(pointColor, 255, Mode.AVOID);

32b形式のリソースで定義された色

<color name="Point">#FFFF0000</color>
<color name="Line">#FF4169E1</color>

問題は次のとおりです。API10を搭載したデバイスでは正常に動作しますが、API v14を搭載したNexusではまったく動作しません(許容範囲はあります)

私は何を間違えますか?

4

1 に答える 1

1

PreventXfermodeは、ハードウェアアクセラレーションではサポートされていません。

これは、View.isHardwareAccelerated()を使用して判別し、View.setLayerType(LAYER_TYPE_ *)を使用して設定できます。あなたは代替案を探す必要があるかもしれませんが。

ここでそれについて読むことができますhttp://developer.android.com/guide/topics/graphics/hardware-accel.html#unsupported

于 2013-04-04T09:37:47.983 に答える