Untitled

 avatar
unknown
plain_text
3 years ago
1.7 kB
6
Indexable
package com.example.sample

import android.content.Context
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.util.AttributeSet
import android.view.MotionEvent
import android.view.View

class SimpleCircle(context: Context?, attrs: AttributeSet?) : View.OnTouchListener,
    View(context, attrs) {
    private val RADIUS = 60f
    private var xCoor = RADIUS
    private var yCoor = RADIUS
    private var rightDX = 0f
    private var rightDY = 0f

    override fun onDraw(canvas: Canvas?) {
        super.onDraw(canvas)
        val viewPaint = Paint()
        viewPaint.color = Color.RED
        viewPaint.isAntiAlias = true
        canvas?.drawCircle(xCoor, yCoor, RADIUS, viewPaint)
    }

    override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec)
        setMeasuredDimension((RADIUS * 2).toInt(), (RADIUS * 2).toInt())

    }



    override fun onTouch(view: View?, event: MotionEvent?): Boolean {
        // This is not called
        event ?: return false
        when (event.action) {
            MotionEvent.ACTION_DOWN -> {
                rightDX = view!!.x - event.rawX
                rightDY = view.y - event.rawY
            }
            MotionEvent.ACTION_MOVE -> {
                val displacement = event.rawX + rightDX
                view!!.animate()
                    .x(displacement)
                    .y(event.rawY + rightDY)
                    .setDuration(0)
                    .start()
                invalidate()
            }
            else -> {
                return false
            }
        }
        return true
    }


}
Editor is loading...