ScheduledExecutorService executor =
Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate( Runnable , 間隔, ディレイ, 時間単位 );ScheduledExecutorServiceは、「newSingleThreadScheduledExecutor」というメソッドを呼び出すことでインスタンスを取得できます。これは文字通りスケジューリングして処理を実行するためのインスタンスを得るものです。
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
package jp.tuyano.sample;
import java.util.concurrent.*;
import android.content.Context;
import android.graphics.*;
import android.graphics.Paint.Style;
import android.util.AttributeSet;
import android.view.*;
public class MySurfaceView extends SurfaceView implements
SurfaceHolder.Callback {
private SurfaceHolder holder;
private float x, y, r; // ★rを追加
public MySurfaceView(Context context) {
super(context);
init();
}
public MySurfaceView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MySurfaceView(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
init();
}
public void init() {
holder = getHolder();
holder.addCallback(this);
setFocusable(true);
requestFocus();
}
@Override
public void surfaceChanged(SurfaceHolder holder,
int format, int width, int height) {}
@Override
public void surfaceCreated(SurfaceHolder holder) {
x = getWidth() / 2;
y = getHeight() / 2;
draw();
startnow(); // ★追加
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
x = event.getX();
y = event.getY();
draw();
}
return super.onTouchEvent(event);
}
public void draw() {
Canvas c = holder.lockCanvas();
c.drawColor(Color.WHITE);
Paint p = new Paint();
p.setStyle(Style.FILL);
p.setColor(Color.RED);
c.drawCircle(x, y, r, p); // ★修正
holder.unlockCanvasAndPost(c);
}
// ★追加メソッド
public void startnow(){
ScheduledExecutorService executor =
Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
r = r > 50 ? 10 : r + 5;
draw();
}
}, 100, 100, TimeUnit.MILLISECONDS);
}
}
| << 前へ |