Androidアプリを開発したい

tamuraです。

Androidでゲームを作ろうと思います。 以前はCocos2dxを使ったのですが、今回はKotlinでやってみようと思いました。

まずは、タッチしたら何かが表示されるものを作っていきます。

Androidで簡単お絵かきアプリ開発 を写経しました。

完成したやつはこちら

Viewの作成

Viewを継承してPaintViewを作ります。

kotlinのコンストラクタの書き方がよくわからない。

class PaintView : View {

    private val paint: Paint = Paint()
    private val path: Path = Path()

    init {
        paint.color = Color.RED
        paint.style = Paint.Style.STROKE
        paint.strokeJoin = Paint.Join.ROUND
        paint.strokeCap = Paint.Cap.ROUND
        paint.strokeWidth = 10f
    }

    constructor(context: Context): this(context, null)
    constructor(context: Context, attrs: AttributeSet?): super(context, attrs)

    override fun onDraw(canvas: Canvas) {
        canvas.drawPath(path, paint)
    }

    override fun onTouchEvent(event: MotionEvent): Boolean {
        val x = event.getX()
        val y = event.getY()
        when (event.action) {
            MotionEvent.ACTION_DOWN -> {
                path.moveTo(x, y)
                invalidate()
            }
            MotionEvent.ACTION_MOVE -> {
                path.lineTo(x, y)
                invalidate()
            }
            MotionEvent.ACTION_UP -> {
                path.lineTo(x, y)
                invalidate()
            }
        }
        return true
    }
}

activity_main.xml の編集

ConstraintLayoutの直下に今回作ったViewを載せていきます。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">

    <com.github.tamurashingo.android.viewsample.views.PaintView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintStart_toStartOf="parent">
    </com.github.tamurashingo.android.viewsample.views.PaintView>
</androidx.constraintlayout.widget.ConstraintLayout>

実行結果

絵がかけるようになりました。

関連記事

comments powered by Disqus