mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-06 09:08:52 -06:00
Increase width of chart labels as needed
This commit is contained in:
@@ -51,7 +51,7 @@ public class HabitFrequencyView extends ScrollableDataView implements HabitDataV
|
|||||||
private int baseSize;
|
private int baseSize;
|
||||||
private int paddingTop;
|
private int paddingTop;
|
||||||
|
|
||||||
private int columnWidth;
|
private float columnWidth;
|
||||||
private int columnHeight;
|
private int columnHeight;
|
||||||
private int nColumns;
|
private int nColumns;
|
||||||
|
|
||||||
@@ -154,16 +154,33 @@ public class HabitFrequencyView extends ScrollableDataView implements HabitDataV
|
|||||||
baseSize = height / 8;
|
baseSize = height / 8;
|
||||||
setScrollerBucketSize(baseSize);
|
setScrollerBucketSize(baseSize);
|
||||||
|
|
||||||
columnWidth = baseSize;
|
|
||||||
columnHeight = 8 * baseSize;
|
|
||||||
nColumns = width / baseSize;
|
|
||||||
paddingTop = 0;
|
|
||||||
|
|
||||||
pText.setTextSize(baseSize * 0.4f);
|
pText.setTextSize(baseSize * 0.4f);
|
||||||
pGraph.setTextSize(baseSize * 0.4f);
|
pGraph.setTextSize(baseSize * 0.4f);
|
||||||
pGraph.setStrokeWidth(baseSize * 0.1f);
|
pGraph.setStrokeWidth(baseSize * 0.1f);
|
||||||
pGrid.setStrokeWidth(baseSize * 0.05f);
|
pGrid.setStrokeWidth(baseSize * 0.05f);
|
||||||
em = pText.getFontSpacing();
|
em = pText.getFontSpacing();
|
||||||
|
|
||||||
|
columnWidth = baseSize;
|
||||||
|
columnWidth = Math.max(columnWidth, getMaxMonthWidth() * 1.2f);
|
||||||
|
|
||||||
|
columnHeight = 8 * baseSize;
|
||||||
|
nColumns = (int) (width / columnWidth);
|
||||||
|
paddingTop = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private float getMaxMonthWidth()
|
||||||
|
{
|
||||||
|
float maxMonthWidth = 0;
|
||||||
|
GregorianCalendar day = DateHelper.getStartOfTodayCalendar();
|
||||||
|
|
||||||
|
for(int i = 0; i < 12; i++)
|
||||||
|
{
|
||||||
|
day.set(Calendar.MONTH, i);
|
||||||
|
float monthWidth = pText.measureText(dfMonth.format(day.getTime()));
|
||||||
|
maxMonthWidth = Math.max(maxMonthWidth, monthWidth);
|
||||||
|
}
|
||||||
|
|
||||||
|
return maxMonthWidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshData()
|
public void refreshData()
|
||||||
@@ -233,7 +250,7 @@ public class HabitFrequencyView extends ScrollableDataView implements HabitDataV
|
|||||||
for (int i = 0; i < 7; i++)
|
for (int i = 0; i < 7; i++)
|
||||||
{
|
{
|
||||||
rect.set(0, 0, baseSize, baseSize);
|
rect.set(0, 0, baseSize, baseSize);
|
||||||
rect.offset(prevRect.left, prevRect.top + columnWidth * i);
|
rect.offset(prevRect.left, prevRect.top + baseSize * i);
|
||||||
|
|
||||||
if(values != null)
|
if(values != null)
|
||||||
drawMarker(canvas, rect, values[i]);
|
drawMarker(canvas, rect, values[i]);
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ public class HabitScoreView extends ScrollableDataView implements HabitDataView
|
|||||||
private int baseSize;
|
private int baseSize;
|
||||||
private int paddingTop;
|
private int paddingTop;
|
||||||
|
|
||||||
private int columnWidth;
|
private float columnWidth;
|
||||||
private int columnHeight;
|
private int columnHeight;
|
||||||
private int nColumns;
|
private int nColumns;
|
||||||
|
|
||||||
@@ -164,8 +164,11 @@ public class HabitScoreView extends ScrollableDataView implements HabitDataView
|
|||||||
setScrollerBucketSize(baseSize);
|
setScrollerBucketSize(baseSize);
|
||||||
|
|
||||||
columnWidth = baseSize;
|
columnWidth = baseSize;
|
||||||
|
columnWidth = Math.max(columnWidth, getMaxDayWidth() * 1.5f);
|
||||||
|
columnWidth = Math.max(columnWidth, getMaxMonthWidth() * 1.2f);
|
||||||
|
|
||||||
columnHeight = 8 * baseSize;
|
columnHeight = 8 * baseSize;
|
||||||
nColumns = width / baseSize;
|
nColumns = (int) (width / columnWidth);
|
||||||
|
|
||||||
pGraph.setTextSize(baseSize * 0.5f);
|
pGraph.setTextSize(baseSize * 0.5f);
|
||||||
pGraph.setStrokeWidth(baseSize * 0.1f);
|
pGraph.setStrokeWidth(baseSize * 0.1f);
|
||||||
@@ -341,15 +344,15 @@ public class HabitScoreView extends ScrollableDataView implements HabitDataView
|
|||||||
|
|
||||||
private void drawMarker(Canvas canvas, RectF rect)
|
private void drawMarker(Canvas canvas, RectF rect)
|
||||||
{
|
{
|
||||||
rect.inset(columnWidth * 0.15f, columnWidth * 0.15f);
|
rect.inset(baseSize * 0.15f, baseSize * 0.15f);
|
||||||
setModeOrColor(pGraph, XFERMODE_CLEAR, Color.WHITE);
|
setModeOrColor(pGraph, XFERMODE_CLEAR, Color.WHITE);
|
||||||
canvas.drawOval(rect, pGraph);
|
canvas.drawOval(rect, pGraph);
|
||||||
|
|
||||||
rect.inset(columnWidth * 0.1f, columnWidth * 0.1f);
|
rect.inset(baseSize * 0.1f, baseSize * 0.1f);
|
||||||
setModeOrColor(pGraph, XFERMODE_SRC, primaryColor);
|
setModeOrColor(pGraph, XFERMODE_SRC, primaryColor);
|
||||||
canvas.drawOval(rect, pGraph);
|
canvas.drawOval(rect, pGraph);
|
||||||
|
|
||||||
rect.inset(columnWidth * 0.1f, columnWidth * 0.1f);
|
rect.inset(baseSize * 0.1f, baseSize * 0.1f);
|
||||||
setModeOrColor(pGraph, XFERMODE_CLEAR, Color.WHITE);
|
setModeOrColor(pGraph, XFERMODE_CLEAR, Color.WHITE);
|
||||||
canvas.drawOval(rect, pGraph);
|
canvas.drawOval(rect, pGraph);
|
||||||
|
|
||||||
@@ -370,4 +373,34 @@ public class HabitScoreView extends ScrollableDataView implements HabitDataView
|
|||||||
else
|
else
|
||||||
p.setColor(color);
|
p.setColor(color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private float getMaxMonthWidth()
|
||||||
|
{
|
||||||
|
float maxMonthWidth = 0;
|
||||||
|
GregorianCalendar day = DateHelper.getStartOfTodayCalendar();
|
||||||
|
|
||||||
|
for(int i = 0; i < 12; i++)
|
||||||
|
{
|
||||||
|
day.set(Calendar.MONTH, i);
|
||||||
|
float monthWidth = pText.measureText(dfMonth.format(day.getTime()));
|
||||||
|
maxMonthWidth = Math.max(maxMonthWidth, monthWidth);
|
||||||
|
}
|
||||||
|
|
||||||
|
return maxMonthWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
private float getMaxDayWidth()
|
||||||
|
{
|
||||||
|
float maxDayWidth = 0;
|
||||||
|
GregorianCalendar day = DateHelper.getStartOfTodayCalendar();
|
||||||
|
|
||||||
|
for(int i = 0; i < 28; i++)
|
||||||
|
{
|
||||||
|
day.set(Calendar.DAY_OF_MONTH, i);
|
||||||
|
float monthWidth = pText.measureText(dfMonth.format(day.getTime()));
|
||||||
|
maxDayWidth = Math.max(maxDayWidth, monthWidth);
|
||||||
|
}
|
||||||
|
|
||||||
|
return maxDayWidth;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user