[Android] Canvas クリアーして再描画

Canvas で描画した領域を動的に非表示にしたり表示したりする場合には、canvas.drawColor(0, PorterDuff.Mode.CLEAR) を使います。また同時に、クリアした後で再描画しますがそれには invalidate() を使います。
 
1x1.trans - [Android] Canvas クリアーして再描画


Android Studio
2024.1.1

 




Canvasの再描画

 

TextViewなどは表示、非表示ができますがCanvasの場合はどうでしょう
Cavasの場合は一旦クリアーして、その後再描画が必要です。次に表示させる時にもまた再描画が必要です

最初に簡単のためボタンで表示・非表示を実装してみたいと思います
 

 

invalidate()

 

描画をクリアーするには、

canvas.drawColor(0, PorterDuff.Mode.CLEAR)

を使います。

また再描画のためにはinvalidate()を使います。Canvasをクリアしてから描画です。
ただし、invalidate()は再描画させるためにonDraw()を呼び出しますが、即呼び出されるわけではなく、都合がつくまで待たされるようです。ですから、即非表示を想定する場合はHandlerを使う方法が必要になります。

以前にCanvasを作成した方法 と同様に作成します。
例として package は 「package com.example.testcanvasclear」 で設定しました。
button によりフラグを切り替え
canvas.drawColor(0, PorterDuff.Mode.CLEAR);
を実行して
invalidate();
で再描画します

 

サンプルコード

 

新しくMyViewクラスを作成

MyView.java

 

MainActivity.java

 
activity_main.xml

Stringのリソース
strings.xml

1x1.trans - [Android] Canvas クリアーして再描画

ボタンタップすると

1x1.trans - [Android] Canvas クリアーして再描画

古い動画です

 

マニュアルで表示・非表示ができました

 
 

 

References:
Canvas | Android Developers
Canvas and Drawables | Android Developers

シェアする

  • このエントリーをはてなブックマークに追加

フォローする