[Android] Canvas Paint で円や矩形を描画する

図形を描画するために Canvas と Paint クラスがあります。Canvas は絵を描くカンバスです、円や矩形などの図形をこれで設定します。
 
canvas a01 - [Android] Canvas Paint で円や矩形を描画する

Android Studio 3.1.4
API 28



Canvas

 
さてCanvasとは何でしょうか?GoogleはAndroidフレームワークとしてグラフィックスにおいては2つの方法を提供しています。

  • Drawables
    • 画像などをViewを使って表示。静的で表示させるだけの用途であり、アニメーションでも決まりきった動きのものに適している
      パフォーマンスを必要とするようなゲームにはあまり向かない
    • 代表的な例は、画像をresourceのdrawableにおいてImageViewを使って表示するような例。
  • Canvas
    • onDrawメソッドを使ってCanvas上で描画。ゲームなどの動きがありグラフィックスのredrawが頻繁に起きる場合や、カスタマイズされたアニメーションに向いている

Ref: Canvas and Drawables
 
ゲームのようなものでなければDrawablesを使えばそこそこできますが、どうしてもカスタム化して動きを入れたいというような場合ではCavasを使います。
 

 

Canvasの基本的な形

 
Canvasでprimitiveな矩形を描画する基本的な例です。
Activity から View を継承したクラスを作りsetContentViewに入れてonDraw() で描画します。setContentView(MyView)
レイアウトファイルは使いません。
 
MainActivity.java

 
canvas a02b - [Android] Canvas Paint で円や矩形を描画する
 
矩形が描画されました。
 
矩形の描画では
Paint クラスの
setColor で線の色を指定
setStrokeWidth にて線の太さ
 
Canvas クラスの
drawRect を使って4つの頂点を引数に入れます。

 

サンプルコード

 
矩形以外にも円、楕円のような基本的なprimitiveな図形を描画するメソッドもあります。またラインを組み合わせて三角形を作ることもできます。
 
MainActivity.java

 
ここで指定している(x,y)はピクセルになりますので端末依存です。スクリーン縦横のサイズを取得して計算する必要があります。
 
Kotlinで書くと

TextViewやImageViewなどはConstraintLayoutなどのレイアウトを使ってViewを表示させますが、もっと自由に直線...

 

canvas a01 - [Android] Canvas Paint で円や矩形を描画する canvas insertion 01 - [Android] Canvas Paint で円や矩形を描画する canvas clear 01 - [Android] Canvas Paint で円や矩形を描画する canvasimagetext 01 - [Android] Canvas Paint で円や矩形を描画する canvas animation 01 - [Android] Canvas Paint で円や矩形を描画する

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

スマホの下取り

まだ1年も使っていないスマホを新機種に変えたくて下取りしようとお店に持ち込んだことがありますが、結局なんだかんだと思ったほどの金額になりませんでした(涙

このネットオフは専業のため高額買取が可能で、お店に行く時間が無い人にとっては送料無料の宅配便が自宅まで引取りに来てくれるのは助かります。

定額買取キャンペーン中であればキズがあっても付属品が無くても減額無しでお得です。」


誤字脱字、意味不明で分からにゃイ、
などのご意見はこちらから mailフォーム

ブックマークしておくと便利です このエントリーをはてなブックマークに追加




Google Pixel 3 XLグローバル版
SIMフリー 並行輸入品
6.3インチの大画面
背景をぼかすポートレートモード撮影

Anker PowerCore II Slim 10000
Power IQ 2.0搭載
iPhone & Android対応

シェアする

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

フォローする