描述
android计步器的实现,自定义的一个弧形进度条,记步通过手机的传感器来实现,也就是说不支持传感器的机子(应该很老的了吧)就没有效果。看看效果图:
这里写图片描述这里写图片描述
自定义View
public class StepView extends View {
/**
* 圆弧的宽度
*/
private float borderWidth = dipToPx(10);
/**
* 画步数的数值的字体大小
*/
private float numberTextSize = 0;
/**
* 步数
*/
private String stepNumber = "0";
/**
* 开始绘制圆弧的角度
*/
private float startAngle = 125;
/**
* 终点对应的角度和起始点对应的角度的夹角
*/
private float angleLength = 290;
/**
* 所要绘制的当前步数的蓝色圆弧终点到起点的夹角
*/
private float currentAngleLength = 0;
/**
* 动画时长
*/
private int animationLength = 3000;
/**
* 当前运动类型
*/
private String type = "Riding";
/**
* 当前活跃等级
*/
private String level = "等级:轻度活跃";
/**
* 步数上方文字
*/
private String today = "今日步数";
/**
* 单位km是否显示
*/
private String unit = "Km";
public StepView(Context context) {
super(context);
}
public StepView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public StepView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
/**中心点的x坐标*/
float centerX = (getWidth()) / 2;
/**指定圆弧的外轮廓矩形区域*/
RectF rectF = new RectF(0 + borderWidth, borderWidth, 2 * centerX - borderWidth, 2 * centerX - borderWidth);
/**【第一步】绘制整体的灰色圆弧*/
drawArcYellow(canvas, rectF);
/**【第二步】绘制当前进度的蓝色圆弧*/
drawArcRed(canvas, rectF);
/**【第三步】绘制当前进度的白色数字*/
drawTextNumber(canvas, centerX);
/**【第四步】绘制"本次步数"的灰色文字*/
drawTextStepString(canvas, centerX);
/**【第五步】绘制当前记步类型*/
drawTextType(canvas, centerX);
/**【第六步】绘制当前等级类型*/
drawTextLevel(canvas, centerX);
/**【第七步】绘制骑行距离单位*/
drawTextUnit(canvas, centerX);
}
2021-04-19 18:02:26
28.18MB
计步器
1