線を引きたいのですが、ゆっくりです。ondrawメソッドで線を引くためにこのコードを書きます。
.
.
.
.
caneta.setARGB(255, 255, 0,0);caneta.setStrokeWidth(10);
canvas.drawLine(0, ys * 1/2, this.getWidth(), ys * 1/2, caneta);
.
.
.
どうやってゆっくりやったの?
これは、ゲームループが機能するのとほぼ同じです。
-キャンバスをXミリ秒ごとに無効にします(ループとThread.sleep()を使用)
-ループごとにX/Y座標をインクリメントします
-onDraw()で新しい座標を再度処理します
例:
private int x1, x2;
private int y1, y2;
private View v;
public void start()
{
for (int i = 0; i <= 250; i++)
{
v.invalidate();
x2 += 1;
try
{
Thread.sleep(50);
}
catch (InterruptedException e)
{
}
}
}
既存のビュークラスで、すでにonDrawメソッドがあります
protected void onDraw(Canvas canvas)
{
//draw your line here using your X and Y member
canvas.drawLine(x1, y1, x2, y2, caneta);
}
すべてのonDraw
メソッド呼び出しで、必要な速度に応じて、線の一部を段階的に描画します。たとえば、描画を遅くしたい場合は、フルラインに達するまで、呼び出しごとにサイズをたとえば5ピクセルずつ増やします。
private float linePercent = 0;
protected void onDraw (Canvas canvas){
float lineX = this.getWidth() * linePercent;
canvas.drawLine(0, ys * 1/2, lineX, ys * 1/2, caneta);
linePercent += 0.05f;
if(linePercent >= 1){
linePercent = 0;
}
}
そして、バックグラウンドスレッドで、invalidate
ビューでスケジュールを設定します。