Android
 Computer >> コンピューター >  >> プログラミング >> Android

Androidで線を引く方法とは?Canvasを使った描画手順をステップ解説

この記事では、Androidアプリで線を描画する方法を、実際のサンプルコードとともにステップごとに解説します。BitmapとCanvasを組み合わせれば、ボタンをタップしたタイミングで画面上に線を簡単に描くことができます。

作成するアプリの概要

今回作成するのは、画面下部の「Draw Line」ボタンを押すと、中央のImageView上に赤い横線が表示されるシンプルなアプリです。レイアウトの定義、MainActivityへの処理の記述、マニフェストファイルの確認という流れで進めていきます。

ステップ1:新規プロジェクトを作成する

Android Studioを起動し、「File」→「New Project」を選択して新しいプロジェクトを作成します。必要な項目をすべて入力して、プロジェクトのセットアップを完了させましょう。

ステップ2:activity_main.xmlにコードを追加する

res/layout/activity_main.xml に以下のコードを追加します。画面中央に線を表示するためのImageViewと、画面下部に「Draw Line」ボタンを配置しています。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
   xmlns:tools="https://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:id="@+id/relativeLayout"
   tools:context=".MainActivity">
   <ImageView
      android:id="@+id/imageView"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerInParent="true"/>
   <Button
      android:id="@+id/button"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Draw Line"
      android:layout_alignParentBottom="true"
      android:layout_centerHorizontal="true"
      android:layout_marginBottom="70dp"/>
</RelativeLayout>

ステップ3:MainActivity.javaにコードを追加する

src/MainActivity.java に以下のコードを追加します。ボタンがクリックされるとBitmapを生成し、CanvasのdrawLine()メソッドを使って線を描画します。Paintオブジェクトで線の色や太さ、アンチエイリアスの設定を行っている点もポイントです。

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.Paint;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.graphics.Canvas;
import android.graphics.Bitmap;
public class MainActivity extends AppCompatActivity {
   Context context;
   Resources resources;
   RelativeLayout relativeLayout;
   Button button;
   ImageView imageView;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      context = getApplicationContext();
      resources = getResources();
      relativeLayout = findViewById(R.id.relativeLayout);
      button = findViewById(R.id.button);
      imageView = findViewById(R.id.imageView);
      button.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view) {
            Bitmap bitmap = Bitmap.createBitmap(10, 700, Bitmap.Config.ARGB_8888);
            Canvas canvas = new Canvas(bitmap);
            canvas.drawColor(Color.RED);
            Paint paint = new Paint();
            paint.setColor(Color.RED);
            paint.setStyle(Paint.Style.STROKE);
            paint.setStrokeWidth(8);
            paint.setAntiAlias(true);
            int offset = 50;
            canvas.drawLine(
               offset, canvas.getHeight() / 2, canvas.getWidth() - offset, canvas.getHeight() / 2, paint);
            imageView.setImageBitmap(bitmap);
         }
      });
      }
}

ステップ4:AndroidManifest.xmlを確認する

androidManifest.xml には以下のように記述します。このサンプルでは特別な権限は不要ですが、MainActivityがランチャーアクティビティとして正しく登録されているか確認しておきましょう。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
   package="app.com.sample">
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:supportsRtl="true"
      android:theme="@style/AppTheme">
      <activity android:name=".MainActivity">
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
   </application>
</manifest>

アプリを実行して動作を確認する

それでは、アプリを実行してみましょう。ここでは、実際のAndroid端末をパソコンに接続しているものとして説明を進めます。Android Studioからアプリを実行するには、プロジェクト内のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックします。デバイス選択ダイアログで自分のスマートフォンを選択すると、端末の画面に結果が表示されます。

Androidで線を引く方法とは?Canvasを使った描画手順をステップ解説

  1. Androidで前のアクティビティに戻る方法【finish()メソッドの使い方を解説】

    Androidアプリ開発では、あるアクティビティ(画面)から別のアクティビティへ移動した後、元の画面へ戻りたいケースがよくあります。この記事では、finish() メソッドとアクティビティスタックの仕組みを使って、前のアクティビティに戻る方法をサンプルコード付きでわかりやすく解説します。 実装の全体像 今回作成するのは、以下のようなシンプルな2画面構成のアプリです。 1つ目の画面(MainActivity)のテキストをタップすると、2つ目の画面(Main2Activity)が開きます。 2つ目の画面のテキストをタップすると、finish() メソッドによって現在のアクティビティが終了し、自動

  2. Androidで指の動きに沿って滑らかな線を描く方法を解説

    はじめに この記事では、Androidアプリで画面をタッチし、指の動きに沿って線を描画する方法を解説します。Bitmap・Canvas・Paintという3つのグラフィックスクラスを組み合わせることで、お絵かきアプリのような機能を比較的簡単に実装できます。 ステップ1:新規プロジェクトを作成する Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要な項目をすべて入力して、新しいプロジェクトを作成しましょう。 ステップ2:レイアウトファイルを編集する res/layout/activity_main.xml に以下のコードを追加します。ここで