这个自定义视图是解决用户可以随意设置地暖温度而设置的。看起来很实(JI)用(雷),
操作也很简单。作为码农,我们只管专心解决问题,我相信没有人会喜欢温度变来变去,
就像上了青藏高原,我只想把核心的原理讲解一下。
需要实现的功能:
1。画表格 - 温度时间表
2.手指在表格上按下,添加一个温度时间点,并把相邻的点连接起来
3.已经画好的点可以再次拖动,拖动过程时时显示温度时间,每两个小时只能设置一个温度点
4在点内显示设置温度
5可以设置一周的温度
小喇叭开始广播了:滴滴答,滴滴答,啦滴滴哒
1.画表格 - 温度时间表
1.1 onMeasure方法中,初始化表格参数,宽,高,边距,x,y轴坐标间隔
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
//给控件的宽高赋值
width = getMeasuredWidth() - 2 * LEFT_RIGHTS_SPACE;
RIGHT_DOWN_X = LEFT_UP_X + width;
height = getMeasuredHeight() - 2 * UP_DOWN_SPACE;
LEFT_DOWN_Y = height + LEFT_UP_Y;
//计算水平和垂直方向上的距离间隔
UP_DOWN_SPACE = (LEFT_DOWN_Y - LEFT_UP_Y) / DIVIDE_VERTICAL;
LEFT_RIGHTS_SPACE = (RIGHT_DOWN_X - LEFT_UP_X) / DIVIDE_HORIZENTAL;
//把x时间轴分成 24 份,计算每一份的距离
horizental_divide_24 = (RIGHT_DOWN_X - LEFT_UP_X) / 24;
}
1.2画网格的边框线(表格的最左边带温度刻度的线和最下边带时间刻度的线)
//线的坐标点(前四个为一条线,后四个为一条线)
float [] pts = {LEFT_UP_Xÿ