Skip to content

Commit bce77e4

Browse files
committed
Merge pull request HackPlan#1 from dector/draw-optimisations
Avoiding objects creation while drawing LineView
2 parents ba8502d + cf489f0 commit bce77e4

1 file changed

Lines changed: 10 additions & 6 deletions

File tree

‎AndroidCharts/src/main/java/com/dacer/androidcharts/LineView.java‎

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ public void setShowPopup(int popupType) {
8888
private String[] colorArray = {"#e74c3c","#2980b9","#1abc9c"};
8989
//popup 컬러
9090
private int[] popupColorArray = {R.drawable.popup_red,R.drawable.popup_blue,R.drawable.popup_green};
91+
92+
// onDraw optimisations
93+
private final Point tmpPoint = new Point();
9194

9295
public void setDrawDotLine(Boolean drawDotLine) {
9396
this.drawDotLine = drawDotLine;
@@ -305,20 +308,20 @@ protected void onDraw(Canvas canvas) {
305308
int MinValue = Collections.min(dataLists.get(k));
306309
for(Dot d: drawDotLists.get(k)){
307310
if(showPopupType == SHOW_POPUPS_All)
308-
drawPopup(canvas, String.valueOf(d.data), d.getPoint(),popupColorArray[k%3]);
311+
drawPopup(canvas, String.valueOf(d.data), d.setupPoint(tmpPoint),popupColorArray[k%3]);
309312
else if(showPopupType == SHOW_POPUPS_MAXMIN_ONLY){
310313
if(d.data == MaxValue)
311-
drawPopup(canvas, String.valueOf(d.data), d.getPoint(),popupColorArray[k%3]);
314+
drawPopup(canvas, String.valueOf(d.data), d.setupPoint(tmpPoint),popupColorArray[k%3]);
312315
if(d.data == MinValue)
313-
drawPopup(canvas, String.valueOf(d.data), d.getPoint(),popupColorArray[k%3]);
316+
drawPopup(canvas, String.valueOf(d.data), d.setupPoint(tmpPoint),popupColorArray[k%3]);
314317
}
315318
}
316319
}
317320
// 선택한 dot 만 popup 이 뜨게 한다.
318321
if(showPopup && selectedDot != null){
319322
drawPopup(canvas,
320323
String.valueOf(selectedDot.data),
321-
selectedDot.getPoint(),popupColorArray[selectedDot.linenumber%3]);
324+
selectedDot.setupPoint(tmpPoint),popupColorArray[selectedDot.linenumber%3]);
322325
}
323326
}
324327

@@ -532,8 +535,9 @@ class Dot{
532535
setTargetData(targetX, targetY,data,linenumber);
533536
}
534537

535-
Point getPoint(){
536-
return new Point(x,y);
538+
Point setupPoint(Point point) {
539+
point.set(x, y);
540+
return point;
537541
}
538542

539543
Dot setTargetData(int targetX,int targetY,Integer data,int linenumber){

0 commit comments

Comments
 (0)