在触摸处画小球

88 阅读1分钟
一、

//先新建一个类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>

运行后如下: