我们在安卓开发中安卓自带的控件满足不了我们的需求,因此我们就需要用到自定义View来满足我们的需求,在这里我要讲解的是自定义View实现选座功能,在安卓中一个会使用自定义View的人一定会开发出与众不同以及美观的项目
首先,我展示一下效果
以上主要就是我们需要创建一个我们自己的View继承自Viewgroup控件并实现onMeasure以及onDraw方法
具体的代码是这样的
public class SearView extends ViewGroup {
private Context context;
public SearView(@NonNull Context context) {
super(context);
}
public SearView(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
this.context=getContext();
}
public SearView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
private ArrayList<SeatinfoBean.ResultBean> mlist;
public void setData(ArrayList<SeatinfoBean.ResultBean> list){
this.mlist = list;
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (mlist != null && mlist.size() > 0) {
for (int i = 0; i < mlist.size(); i++) {
SeatinfoBean.ResultBean resultBean = mlist.get(i);
resultBean.draw(canvas,context);
}
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
float x = event.getX();