2017-11-14 16 views
0

テキストをビットマップの上に描いて、ビットマップをGoogleマップマーカー/アイコンのアイコンとして使用しています。Googleマップマーカーに使用するビットマップの上にAndroidキャンバスを表示させる

ほとんどの場合、それは完全に動作しますが、時にはビットマップの下に円+テキストが表示されます。私が新しい活動に移動して戻ってしまうと、一貫して起こっているようです。

コード:

// Make room for the circle 
Bitmap myBitmap = Bitmap.createBitmap(dstWidth, dstHeight, Bitmap.Config.ARGB_8888); 

Canvas canvas = new Canvas(myBitmap); 
Matrix matrix = new Matrix(); 
int xMatrix = xPadding/2; 
matrix.setRectToRect(new RectF(0, 0, bitmap.getWidth(), bitmap.getHeight()), new RectF(xMatrix,yPadding, dstWidth - xMatrix, dstHeight), Matrix.ScaleToFit.CENTER); 
canvas.drawBitmap(bitmap, matrix, null); 
canvas.drawCircle(xPos, yPos, 30, backgroundPaint); 
if(_badge != null && _badge.equalsIgnoreCase("") == false) { 
    canvas.drawText(_badge, xPos, yPos+10, textPaint); 
} 
return myBitmap; 

は私が上であることを私のサークル+テキストを強制することができます方法はありますか?おそらく、私は問題を特定する(?私はこれをどのように行うか)私のビットマップが不変にするために

答えて

0

を試してみてください: あなたが「自分の仕事を終えた後、きれいにしていない」と思われています。

この意味は?:上に円とテキストが正しく表示されています。

しかし、近い活動/フラグメント後、あなたがあるため、最後の1を超える新しいcanvasを描くの奇妙な結果を得るためのマップを再度開きます。 mapを開くたびにそれをやっているので、マップフラグメントからずっとナビゲートした方が奇妙なことになります。

は、なぜそれが起こった複数のビューにそれを行う(旧キャンバス+古いテキストと円プラスそれらのニュース)を有する?:

ソリューション:あなたが作ったもの

クリア!

onStop()またはonDestroy()mMap.clear()で地図をクリアするのが一番簡単な方法の1つです。

他の方法:必要な場合のみキャンバスとオブジェクトを描画することです。

関連する問題