来自:疯狂android讲义
为了实现一个跟随的小球,自定义UI组件,这个UI组件将会在指定位置绘制一个小球,这个位置可以动态改变。当用户通过手指在屏幕上拖动时,程序监听这个手指动作,把手指的位置传入自定义UI组件,并通知该组件重绘制即可。
DrawView UI组件
package com.dezai.customerviewactivity; 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; { public float currentX=40; public float currentY=50; Paint p=new Paint(); public DrawView(Context context) { super(context); } public DrawView(Context context, AttributeSet set){ super(context,set); } (Canvas canvas){ super.onDraw(canvas); //设置画笔颜色 p.setColor(Color.RED); //绘制一个小圆(作为一个小球) canvas.drawCircle(currentX,currentY,25,p); } (MotionEvent event){ //修改currentX currentY 两个属性 currentX =event.getX(); currentY=event.getY(); //通知当前组件重绘制自己 invalidate(); ; } }XML:
======> </android.support.constraint.ConstraintLayout>MainActivity
package com.dezai.customerviewactivity; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; { (Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }