如何自定义控件?
1.自定义属性的声明和获取;
2.测量onMeasure;
3.布局onLayout(ViewGroup);
4.绘制onDraw;
5.onTouchEvent;
6.onInterceptTouchEvent(ViewGroup);
7.状态的恢复与保存(与Activity生命周期有关);
自定义绘制的PrograssBar的水平进度条如下 有刻度 刻度在中间显示
下面由代码实现:在values文件夹下建立attr.xml 放入要绘制进度条所需要的。分别是进度条字体①颜色和②大小,Prograss走过的条的③颜色和④高度,Prograss没有走过的条的⑤颜色和⑥高度,还有显示数值和进度条之间有间隔的空间⑦宽度。一共七个参数。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- 声明-->
<attr name="prograss_unreach_color" format="color"></attr>
<attr name="prograss_unreach_height" format="dimension"></attr>
<attr name="prograss_reach_color" format="color"></attr>
<attr name="prograss_reach_height" format="dimension"></attr>
<attr name="text_color" format="color"></attr>
<attr name="text_size" format="dimension"></attr>
<attr name="prograss_text_offset" format="dimension"></attr>
<!-- 使用-->
<declare-styleable name="horizonalPrograssBarWithPrograss">
<attr name="prograss_unreach_color" ></attr>
<attr name="prograss_unreach_height" ></attr>
<attr name="prograss_reach_color" ></attr>
<attr name="prograss_reach_height" ></attr>
<attr name="text_color"></attr>
<attr name="text_size"></attr>
<attr name="prograss_text_offset" ></attr>
</declare-styleable>
</resources>
新建包View,并新建类class horizonalPrograssBarWithPrograss,如下:
package com.chase.view;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.widget.ProgressBar;
import com.chase.cn.customprograssbar.R;
/**
* Created by Chase on 2016/11/29.
*/
public class horizonalPrograssBarWithPrograss extends ProgressBar {
//这里声明默认值
private static final int DEFAULT_TEXT_SIZE = 10;//sp
private static final int DEFAULT_TEXT_COLOR = 0xFFC00D1;
private static final int DEFAULT_COLOR_UNREACH = 0XFFD3D6DA;
private static final int DEFAULT_HEIGHT_UNREACH = 2