标签:自定义 int float values 时间轴 context Android public attrs
横向的时间轴图表
public class CharterXLabels extends CharterLabelsBase {
public CharterXLabels(Context context) {
this(context, null);
}
public CharterXLabels(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CharterXLabels(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public CharterXLabels(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
if (values == null || values.length == 0) {
return;
}
final int valuesLength = values.length;
final float height = getMeasuredHeight();
final float width = getMeasuredWidth();
final float gap = stickyEdges ? width / (valuesLength - 1) : width / valuesLength;
int visibilityPatternPos = -1;
for (int i = 0; i < valuesLength; i++) {
if (visibilityPatternPos + 1 >= visibilityPattern.length) {
visibilityPatternPos = 0;
} else {
visibilityPatternPos++;
}
if (visibilityPattern[visibilityPatternPos]) {
Rect textBounds = new Rect();
paintLabel.getTextBounds(values[i]!=null?values[i]:" ", 0, values[i]!=null? values[i].length() : 1, textBounds);
int textHeight = 2 * textBounds.bottom - textBounds.top;
float textWidth = textBounds.right;
float x;
float y;
switch (verticalGravity) {
case VERTICAL_GRAVITY_TOP:
y = 0;
break;
case VERTICAL_GRAVITY_BOTTOM:
y = height - textHeight;
break;
default:
// VERTICAL_GRAVITY_CENTER
y = (height + textHeight) / 2;
break;
}
if (stickyEdges) {
if (i == 0) {
x = 0;
} else if (i == valuesLength - 1) {
x = width - textWidth;
} else {
x = gap * (i - 1) + gap - (textWidth / 2);
}
canvas.drawText(values[i], x, y, paintLabel);
} else {
x = gap * i + (gap / 2) - (textWidth / 2);
canvas.drawText(values[i], x, y, paintLabel);
}
}
}
}
}
标签:自定义,int,float,values,时间轴,context,Android,public,attrs 来源: https://blog.csdn.net/qq_34942689/article/details/88744060
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。