android 自定义 对号,Android 自定义时间轴View 极简版

/**

* Difficult the first time, easy the second.

*

* @author xulin

* @description:

* @date :2019/10/12

*/

public class LxTimeLineView extends AppCompatImageView {

private int itemCount;//Item总数量

private int itemPosition;//Item位置

private Paint paint;

private int paintColor = 0xff08a1ef;

private float width;

private float height;

private float centerX;

private float centerY;

private int startY;

private int moveXY;

public int getItemCount() {

return itemCount;

}

public void setItemCount(int itemCount) {

this.itemCount = itemCount;

invalidate();

}

public int getItemPosition() {

return itemPosition;

}

public void setItemPosition(int itemPosition) {

this.itemPosition = itemPosition;

invalidate();

}

public LxTimeLineView(Context context) {

this(context, null);

}

public LxTimeLineView(Context context, @Nullable AttributeSet attrs) {

this(context, attrs, 0);

}

public LxTimeLineView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

paint = new Paint();

paint.setAntiAlias(true);

//线宽

paint.setStrokeWidth(DimenUtils.dp2px(getContext(), 2));

}

@Override

protected void onLayout(boolean changed, int left, int top, int right, int bottom) {

super.onLayout(changed, left, top, right, bottom);

}

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

width = getMeasuredWidth();

height = getMeasuredHeight();

centerY = getMeasuredHeight() / 2;

centerX = getMeasuredWidth() / 2;

}

@Override

protected void onDraw(Canvas canvas) {

paint.setColor(paintColor);

startY = DimenUtils.dp2px(getContext(), getPaddingTop());

moveXY = DimenUtils.dp2px(getContext(), 6);

//开始位置

if (itemPosition == 0) {

canvas.drawLine(centerX, startY, centerX, centerY + (height - centerY), paint);

canvas.drawCircle(centerX, startY, DimenUtils.dp2px(getContext(), 10), paint);

paint.setColor(Color.WHITE);

//绘制对号图形

canvas.drawLine(centerX / 2, startY, centerX, startY + moveXY, paint);

canvas.drawLine(centerX, startY + moveXY, centerX + moveXY, centerY / 2, paint);

//结束位置

} else if (itemPosition == (itemCount - 1)) {

canvas.drawLine(centerX, 0, centerX, centerY, paint);

canvas.drawCircle(centerX, startY, DimenUtils.dp2px(getContext(), 10), paint);

paint.setColor(Color.WHITE);

canvas.drawCircle(centerX, startY, DimenUtils.dp2px(getContext(), 8), paint);

//中间部分

} else {

canvas.drawLine(centerX, 0, centerX, height, paint);

canvas.drawCircle(centerX, startY, DimenUtils.dp2px(getContext(), 10), paint);

paint.setColor(Color.WHITE);

canvas.drawCircle(centerX, startY, DimenUtils.dp2px(getContext(), 8), paint);

}

super.onDraw(canvas);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值