閉じたパスがあり、1 つの色 (白) で塗りつぶし、その周りに別の色 (赤) のエッジを配置したいと考えています。Custom View クラスを使用すると、この目的を達成できると思いました。
public class StrokeFill extends View{
private Path shapePath;
private Paint strokePaint;
private Paint fillPaint;
public StrokeFill(Context context, Path path) {
super(context);
shapePath = path;
fillPaint.setColor(android.graphics.Color.WHITE);
fillPaint.setStyle(Paint.Style.FILL);
fillPaint.setStrokeWidth(0);
strokePaint.setColor(android.graphics.Color.RED);
strokePaint.setStyle(Paint.Style.STROKE);
strokePaint.setStrokeWidth(3);
// TODO Auto-generated constructor stub
}
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
//canvas.drawColor(Color.BLACK);
super.onDraw(canvas);
canvas.drawPath(shapePath, fillPaint);
canvas.drawPath(shapePath, strokePaint);
}
}
私のメイン アクティビティでは、これを実行しました (XML レイアウト ファイルはありません)。
setContentView(new StrokeFill(this, testpath));
testpath は、アクティビティで定義したパスです。それを使ってPathShapeを定義すると描画できたので有効です。しかし、この場合、Eclipse からエラー java.lang.NullPointerException が返されます。XML レイアウトでカスタム ビューを定義しようとしましたが、それも機能しません。Android で図形を操作するのはこれまでのところ非常にイライラするものでした。