Androidキャンバスを青から赤に点滅させようとしています。点滅を調整できるように制御したいと思います。たとえば、100 ミリ秒ごとに 3 秒間、色を変更します。
アプリケーションがクラッシュするように見えるにもかかわらず、タイマーとスレッドを使用してみました。ありとなしでやってみましたinvalidate()
。ロジックがオフであるか、その実行方法を完全に理解していないと想定しています。おそらく、高速で表示されずにクラッシュしたり、アプリをクラッシュさせるスレッドが多すぎたりする可能性があります。
疑似コード
// canvas change color to blue
// wait 100 milliseconds
// canvas change color to red
// wait 100 milliseconds
// canvas change color to blue
// execute for 3 seconds
コードを配置しますが、それぞれが同じクラッシュまたはハング効果を持つ複数のソリューションを試したので、それらはそれほど役に立たないと思います。
画面いっぱいに描画可能な長方形を作成するか、おそらくより良いアプローチであるキャンバス全体に色を付けることができることを私は知っています。
2 つのペイント オブジェクトを作成しましたが、キャンバスを定期的に塗りつぶすと、もちろん両方とも機能します。
Paint paint2 = new Paint();
paint2.setColor(Color.RED);
paint2.setStyle(Style.FILL);
canvas.drawPaint(paint2);
Paint paint1 = new Paint();
paint1.setColor(Color.BLUE);
paint1.setStyle(Style.FILL);
canvas.drawPaint(paint1);
要約すると、キャンバスが 3 秒間、100 ミリ秒ごとに青と赤の間で点滅するようにしたいと思います。しかし、遅延 (100 ミリ秒) と持続時間 (3 秒) の両方を調整できるようにして、それらを増減できるようにしたいと考えています。
私は使用してみました:
タイマー
スレッド
シェイプ ドローアブル
System.currentTimeMillis()