当Android系统提供的UI组件不足以满足项目需要时,我们可以通过继承View来派生自定义控件。今天我们就一起来了解必知必会的Android自定义View,
View只是一个矩形的空白区域,没有任何内容。Android应用的其他UI组件都继承View,然后在View组件提供的空白区域上绘制外观。
接下来我们代码实战自定义View,实现一个跟随手指移动的小球:
1.定义类并继承View:
public class BallView extends View {
2.重写构造方法及所需要的方法:
2.1生成构造方法,定义成员变量,小球坐标和画笔:
private float currentX = 60;
private float currentY = 60;
private Paint paint = new Paint();
public BallView(Context context) {
super(context);
}
2.2重写Draw方法,设置画笔并绘制小球:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint.setColor(Color.BLUE);
canvas.drawCircle(currentX,currentY,50,paint);
}
2.3重写onTouchEvent方法,处理触摸事件:
@Override
public boolean onTouchEvent(MotionEvent event) {
currentX = event.getX();
currentY = event.getY();
invalidate();
return true;
}
3.通过Java代码将组件添加到指定容器中:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout root = (LinearLayout) findViewById(R.id.activity_main);
final BallView ballView = new BallView(this);
ballView.setMinimumWidth(300);
ballView.setMinimumHeight(500);
root.addView(ballView);
}
}
最终效果如gif图: