ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android自定义view七时间轴(二)---横向的图表时间轴

2019-03-22 16:52:18  阅读:404  来源: 互联网

标签:自定义 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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有