第7回 Android版、直線と半円を描いてみる。
先にswift版を作りましたが、Android版に移植しました。
半円を描くところで少し手間取りましたが、同じようにできました。
// トラックの描画 float r = 0.19f; while (r<0.28f) { r += 0.02f; track(width * r, canvas); } } void track(float r, Canvas canvas) { float width = getWidth(); float height = getHeight(); // 陸上トラック、青色、線5本を描く float a = width * 17 / 100; // 直線の長さの半分 float lineWidth = width * 2 / 1000; // 線幅 // アンドロイドではcanvasを使用する,canvasは呼び出し元にあるので引数で受け取る // android では Paintクラスを使って色やスタイルを決めていく Paint paint = new Paint(); // 線幅をセット paint.setStrokeWidth(lineWidth); // 描画色を青色にセット paint.setColor(Color.BLUE); // 横線を引く final float x1 = width/2 - a; final float y1 = height/2 - r; final float x2 = width/2 + a; final float y2 = height/2 + r; canvas.drawLine(x1,y1,x2,y1,paint); canvas.drawLine(x1,y2,x2,y2,paint); // 左右の半円 paint.setStyle(Paint.Style.STROKE); RectF leftCorner = new RectF(x1-r,y1,x1+r,y2); RectF rightCorner = new RectF(x2-r,y1,x2+r,y2); // Android の弧を描く角度はラジアンではない。開始角と描画角を指定する。 canvas.drawArc(leftCorner,90,180,false,paint); canvas.drawArc(rightCorner,270,180,false,paint); }
単位が違うことが一番のネックかもしれません。
Androidではここはfloatを使うんですよね。
ささっと作ったので、少々雑いかもしれません。
画像は結構いい感じです。