Lose one's way developer
阿新 • • 發佈:2019-01-25
2、滑動處理// 畫刻度 private void onDrawScale(Canvas canvas) { float xScale, yScale; mPaint.setColor(textColor); int max = 0; if (isIntegar) { max = (int) (maxScale - minScale); } else { max = new BigDecimal(10).multiply(new BigDecimal(maxScale - minScale)).setScale(0, BigDecimal.ROUND_HALF_UP).intValue(); } for (int i = 0; i <= max; i++) { xScale = startX + scaleWidth * i; //計算繪製整點數值 10 20 …… 1.0 2.0 …… int valueTemp = isIntegar ? (int) (minScale + i) : (int) (minScale * 10) + i; if (i == 0 || valueTemp % 10 == 0) { yScale = scaleMaxHeight; float value = isIntegar ? minScale + i : minScale + (float) i/10; if(i==0){ //當資料 i==0時,第一個資料不一定是整點的1.0(10) 可能是1.1(2,3,4)這樣的, // 這裡如果是1.1-1.5則顯示,1.6-1.9不顯示,會與2.0捱得太進 valueTemp = valueTemp%10; if(valueTemp == 0) yScale = scaleMaxHeight; else if(valueTemp == 5){ yScale = scaleMinHeight + 5; }else{ yScale = scaleMinHeight; } if(valueTemp >= 0 && valueTemp < 6){ //這裡的文字y值要與其他的水平 因此傳 scaleMaxHeight drawScaleValue(canvas, value, xScale, scaleMaxHeight); } }else{ drawScaleValue(canvas, value, xScale, yScale); } } else if (valueTemp % 5 == 0) { yScale = scaleMinHeight + 5; } else { yScale = scaleMinHeight; } //上下刻度線 if(isShowUp) canvas.drawLine(xScale, startY, xScale, yScale, mPaint); else canvas.drawLine(xScale, viewHigth, xScale, viewHigth - yScale, mPaint); } }