Androidのキャンバスにオブジェクトを描画する別の方法はありますか?
Draw()内の次のコードは機能しません。
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.pushpin);
canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);
実は、最初のコードで動作していますが、これをMarkOverlayという別のクラスに転送すると、もう動作しません。
markerOverlay = new MarkerOverlay(getApplicationContext(), p);
listOfOverlays.add(markerOverlay);
このコードを機能させるには、MarkerOverlayにどのパラメーターを渡す必要がありますか?エラーはgetResources()のどこかにあります。
参考までに、canvas.drawOvalは完全に機能していますが、実際には楕円ではなくイメージを描画したいと思います。 :)
package com.canvas;
import Android.content.Context;
import Android.graphics.Bitmap;
import Android.graphics.BitmapFactory;
import Android.graphics.Canvas;
import Android.graphics.Color;
import Android.graphics.Paint;
import Android.view.View;
public class Keypaint extends View {
Paint p;
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
p=new Paint();
Bitmap b=BitmapFactory.decodeResource(getResources(), R.drawable.icon);
p.setColor(Color.RED);
canvas.drawBitmap(b, 0, 0, p);
}
public Keypaint(Context context) {
super(context);
}
}
一度だけ画像を生成するので、私はこれを好む:
public class CustomView extends View {
private Drawable mCustomImage;
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
mCustomImage = context.getResources().getDrawable(R.drawable.my_image);
}
...
protected void onDraw(Canvas canvas) {
Rect imageBounds = canvas.getClipBounds(); // Adjust this for where you want it
mCustomImage.setBounds(imageBounds);
mCustomImage.draw(canvas);
}
}