一、
//先新建一个类asg,在包名下,和主activity一级, 作为自定义控件(View),继承自VIEW,
//这个自定义view可以在触摸处画一个小球
class asg(context: Context, attrs: AttributeSet) : View(context,attrs) {
//设置x,y两个变量,要为浮点类型
var currentx = 40f
var currenty =60f
//重写onDraw方法
override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas)
//初始化画笔paint
var paint = Paint()
//设置画布颜色
canvas?.drawColor(Color.GREEN)
//设置paint颜色
paint.color = Color.RED
canvas?.drawCircle(currentx,currenty,15f,paint)
}
//重新onTouchEvent方法
override fun onTouchEvent(event: MotionEvent?): Boolean {
currentx = event!!.x
currenty = event!!.y
//刷新
invalidate()
//return true 表示处理完毕。return false表示 没有完全处理完毕,此动作还可以被上级view捕获,
// 上级view可以再添加其他行为
return true
}
}
二、
主Activity代码默认即可
三、
activity_main.xml
布局直接引入com.example.ball.asg 控件,写全名
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
app:layoutDescription="@xml/activity_main_scene"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="aldkfja" />
<com.example.ball.asg
android:id="@+id/ballView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
运行后如下:
