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>
実行結果
絵がかけるようになりました。