使用ツール
Android Studio Flamingo | 2022.2.1 Patch 2
1. 通常のプロジェクトを作成する。
確認のため 2D グラフィックを表示するので、アクティビティを含むプロジェクトを作成する。
「Empty Activity」「Empty Views Activity」等のプロジェクトが対象。
「No Activity」でも構わないが、Default Activity の追加が必要になるので、ここでは割愛する。(選択しない)
画像のインポート を参考にして、プロジェクトに画像ファイルを追加しておく。
Bitmap を生成する場合には縦・横の大きさを指定する必要があり、ここではあらかじめ用意した画像をもとにその値を決定しています。
画像ファイルを使わずに ImageView をいきなり使う場合は onWindowFocusChanged() 等に実装する必要があります。
(ImageView は onCreate() の時点ではレンダリングが未確定のため)
3. アクティビティに画像を配置する。
activity_main に画像を配置する。
ImageView を配置すると、格納する画像を質問されるので、上記 2 で追加したイメージ (リソース) を指定する。
要素名 内容 備考 アクティビティ Android > app > res > layout > activity_main.xml - 部品 種類 ImageView - id imageView プログラムから R.id.imageView として参照される。
4. 画像を描画するプログラムを記述する。
クラス onCreate の中に以下を記述する。
* ここでは、セピア色 (RGB: 220,150,90) の塗りつぶし矩形を画像に 50% (127/255) の割合でかぶせている。
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
// ペンを用意 Paint sepia = new Paint(); sepia.setColor(Color.argb(127,220,150,90)); // セピア色 sepia.setStrokeWidth(20.0f); sepia.setStyle(Paint.Style.FILL); // ImageView → Bitmap コピー (ImageView のままだと描画できない) ImageView iv = findViewById(R.id.imageView); BitmapDrawable bd = (BitmapDrawable) iv.getDrawable(); Bitmap bmp = bd.getBitmap().copy(Bitmap.Config.ARGB_8888, true); // 図形描画 (Bitmap を Canvas として扱う) Canvas cv = new Canvas(bmp); long cvW = cv.getWidth(); // Canvas の幅 long cvH = cv.getHeight(); // Canvas の高さ cv.drawRect(0, 0, cvW, cvH, sepia); // 矩形の描画 //cv.drawLine(0, 0, cvW, cvH, sepia); // 線の描画はこちら // ImageView ← Bitmap のコピー (書き戻す) iv.setImageBitmap(bmp);
} }
* 画像の大きさを cv.getWidth(), cv.getHeight() で取得しているが、
long bmpW = bmp.getWidth() // Bitmap の幅
long bmpH = bmp.getHeight() // Bitmap の高さ
としても取得できる。