Вам нужно вызвать invalidate();
внутри вашего представления для повторного вызова метода OnDraw. OnDraw должен выглядеть примерно так:
public void onDraw( final Canvas canvas) {
paint.setColor(color);
canvas.drawLine(50, 200, 270, 200, paint);
}
Кроме того, не помещайте создание обработчика и выполняемый внутри метода onDraw. Метод onDraw будет вызываться много раз, когда это необходимо, и вы не хотите создавать столько исполняемых файлов.
В вашем конструкторе:
color = Color.Black;
final Handler handler = new Handler();
Runnable runnable = new Runnable() {
public void run() {
// change color
color = color == Color.Red ? Color.Black : Color.Red;
invalidate();
handler.postDelayed(this, 1000);
}
};
handler.postDelayed(runnable, 1000); // You need this to call the handler for the first time