for (int i = 0; i < mPointCount; i++) {
canvas.getClipBounds(mCanvasClipBounds);
canvas.drawPoint(mCanvasClipBounds.centerX() + (i - mPointCount / 2) * mPointMargin,
mCanvasClipBounds.centerY(), mPointPaint);
}
private void drawDegreeText(int degrees, Canvas canvas, boolean canReach) {
canvas.drawText(degrees + "°",
getWidth() / 2 + mPointMargin * degrees / 2 - mTextWidths[0] / 2 * 3 - mCurrentDegrees / 2 * mPointMargin,
getHeight() / 2 - 10,
mTextPaint);
}
}
drawDegreeText(0, canvas, true); drawDegreeText(15, canvas, true); drawDegreeText(30, canvas, true); drawDegreeText(45, canvas, true); drawDegreeText(-15, canvas, true); drawDegreeText(-30, canvas, true); drawDegreeText(-45, canvas, true); drawDegreeText(60, canvas, false); drawDegreeText(75, canvas, false); drawDegreeText(90, canvas, false); drawDegreeText(-60, canvas, false); drawDegreeText(-75, canvas, false); drawDegreeText(-90, canvas, false);
//画当前角度
if (mCurrentDegrees >= 10) {
canvas.drawText(mCurrentDegrees + "°", getWidth() / 2 - mTextWidths[0], mBaseLine, mTextPaint);
} else if (mCurrentDegrees <= -10) {
canvas.drawText(mCurrentDegrees + "°", getWidth() / 2 - mTextWidths[0] / 2 * 3, mBaseLine, mTextPaint);
} else if (mCurrentDegrees < 0) {
canvas.drawText(mCurrentDegrees + "°", getWidth() / 2 - mTextWidths[0], mBaseLine, mTextPaint);
} else {
canvas.drawText(mCurrentDegrees + "°", getWidth() / 2 - mTextWidths[0] / 2, mBaseLine, mTextPaint);
}
//三角指示器的Path
mIndicatorPath.moveTo(w / 2, h / 2 + mFontMetrics.top / 2 - 18);
mIndicatorPath.rLineTo(-8, -8);
mIndicatorPath.rLineTo(16, 0);
for (int i = 0; i < mPointCount; i++) {
if (i > zeroIndex - 22 && i < zeroIndex + 22 && mScrollStarted) {
mPointPaint.setAlpha(255);
} else {
mPointPaint.setAlpha(100);
}
if (i > mPointCount / 2 - 8 && i < mPointCount / 2 + 8
&& i > zeroIndex - 22 && i < zeroIndex + 22) {
if (mScrollStarted)
mPointPaint.setAlpha(Math.abs(mPointCount / 2 - i) * 255 / 8);
else
mPointPaint.setAlpha(Math.abs(mPointCount / 2 - i) * 100 / 8);
}
……
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
……
case MotionEvent.ACTION_MOVE:
float distance = event.getX() - mLastTouchedPosition;
……
if (distance != 0) {
onScrollEvent(event, distance);
}
break;
}
……
return true;
}
private void onScrollEvent(MotionEvent event, float distance) {
mTotalScrollDistance -= distance;
postInvalidate();
mLastTouchedPosition = event.getX();
mCurrentDegrees = (int) ((mTotalScrollDistance * mDragFactor) / mPointMargin);
if (mScrollingListener != null) {
mScrollingListener.onScroll(mCurrentDegrees);
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有