■事前準備
①.新しいプロジェクト「DrawLine」を作成する
②.HelloWorldの文字を消す
③.一度実行してエミュレータの起動を行っておく
■描画方法
ラインを動的に描画するにはPathオブジェクトか、canvasのdrawLineを使用しますが
今回はpathオブジェクトを使用したラインの描画を紹介します。
※CanvasについてはCanvas -基本-に記述しているのでそちらを確認して下さい。
●Path
Pathオブジェクトは位置情報を更新して
古い位置情報との間に線を引くことができるオブジェクト(クラス)です。
タッチ中の位置を随時取得することで実際に線を引いているように
見せることが可能です。
・開始位置の指定
線を引くための開始位置を指定するにはmoveTo関数を使用します。
関数名:
moveTo
戻り値:
なし
引数:
float x:
開始X座標
float y:
開始Y座標
内容:
開始位置を設定する
例:
Path path = new path();
// 開始位置を100、100に設定する
path.moveTo(100, 100);
・線を引く
線を引くにはlineToを使用します。
関数名:
lineTo
戻り値:
なし
引数:
float x:
線の終端のX座標
float y:
線の終端のY座標
内容:
Pathオブジェクトが持っている位置から新しい位置に線を引く
線は前回のmoveToまたはLineToなど関数の
終点を開始位置として引数の位置まで引かれる
例:
Path path = new Path();
// 開始位置を100、100に設定する
path.moveTo(100, 100);
// 100、200まで線を引く
path.lineTo(100, 200);
// 100、200から200、200まで線を引く
path.lineTo(200, 200);
・線を描画する
moveToやlineToはあくまで、描画する線の始点、終点を
指定しているだけなので、実際に描画する関数を呼び出す必要があります。
描画関数はcanvasのdrawPath関数を使用するので、onDraw関数内で呼び出し、
Paintクラスも必要です。
関数名:
drawPath
戻り値:
なし
引き数:
Path path
描画するパスオブジェクト
Paint paint
描画するパスのペン情報
内容:
Pathに格納されている線情報を使用して描画する
その際の線の太さや色などはPaintクラスの内容を使用する
例:
Path path = new Path();
// 開始位置を100、100に設定する
path.moveTo(100, 100);
// 100、200まで線を引く
path.lineTo(100, 200);
// 100、200から200、200まで線を引く
path.lineTo(200, 200);
// ペン情報作成
Paint paint = new Paint();
// 色(赤)
paint.setColor(Color.RED);
// スタイル
paint.setStyle(Paint.Style.STROKE);
// 線の太さ
paint.setStrokeWidth(10);
// パス描画
canvas.drawPath(path, paint);
■サンプル(2.1以前)
①.LinePaint.javaの作成
app => java => com.examlple.hl.drawline => 右クリック =>
New => JavaClassでLinePaintクラスを作成します。
※名前以外はそのままの設定で問題ありません。
②.Viewの継承
LinePaintクラスにViewクラスを継承させ、
以下のコードをコーディングします。
public LinePaint(Context context, AttributeSet attribute)
{
super(context, attribute);
}
@Override
public void onDraw(Canvas canvas)
{
Path path = new Path();
path.moveTo(100, 100);
path.lineTo(100, 200);
path.lineTo(200, 200);
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(10);
canvas.drawPath(path, paint);
}
③.画面に配置
Palette => Custom => CostomViewをクリックします。
④.クラスの選択
Viewを継承したクラスのリストが表示されるので、
その中からLinePaintクラスを選択します。
⑤.Viewのサイズ設定
AndroidにViewが設置されると青い枠が表示されるので
Androidの画面いっぱいに広がるように設定します。
⑥.実機で確認する
実機で確認すると赤色の四角が描画されます。
■サンプル(2.2以降)
①.LinePaint.javaの作成
app => java => com.examlple.hl.drawline => 右クリック =>
New => JavaClassでLinePaintクラスを作成します。
※名前以外はそのままの設定で問題ありません。
②.Viewの継承
LinePaintクラスにViewクラスを継承させ
以下のコードをコーディングします。
public LinePaint(Context context, AttributeSet attribute)
{
super(context, attribute);
}
@Override
public void onDraw(Canvas canvas)
{
Path path = new Path();
path.moveTo(100, 100);
path.lineTo(100, 200);
path.lineTo(200, 200);
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(10);
canvas.drawPath(path, paint);
}
③.画面に配置
Palette => Advanced => Viewを選択し、AndroidにD&Dする
④.クラスの選択
Viewを継承したクラスのリストが表示されるので、
その中からLinePaintクラスを選択します。
⑤.Viewのサイズ設定
AndroidにViewが設置されると青い枠が表示されるので
Androidの画面いっぱいに広がるように設定します。
⑥.実機で確認する
実機で確認すると赤色の四角が描画されます。