本篇博客,记录一下学习自定义View的过程。
View实际上是一个空白的区域,自定义View 时实际上就是在这个空白区域进行自己的测量,布局和绘制。
View中有许多方法可以重写,根据需求重写需要的方法。
================================================================================================
以下是自定义View的代码,随手指运动的小球:
package com.example.trackball_test; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View; public class TrackBall_test extends View { public final static String TRACKBALL_TAG = "TrackBall"; private Float currentX =(float) 50; private Float currentY =(float) 100; private Float radius = (float) 20; public TrackBall_test(Context context) { super(context); } public TrackBall_test(Context context, AttributeSet attrs) { super(context, attrs); } public TrackBall_test(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public boolean onTouchEvent(MotionEvent event){ currentX=event.getX(); currentY=event.getY(); Log.d(TRACKBALL_TAG, "x="+currentX+",y="+currentY); //清除view,重绘 invalidate(); return true; } @Override public void onDraw(Canvas canvas){ super.onDraw(canvas); Paint p = new Paint(); p.setColor(Color.RED); //画一个圆 canvas.drawCircle(currentX, currentY, radius, p); Log.d(TRACKBALL_TAG, "x="+currentX+",y="+currentY); } }