package com.roboo.like.google.views;
import android.R.integer;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.TypedValue;
import android.widget.LinearLayout;
public class BusSiteView extends LinearLayout
{
private Paint mCirclePaint;
private Paint mLinePaint;
private Paint mTextPaint;
private float mRadius = 6;// DP
private float mLineWidth = 1.5f;// DP
private float mTextSize = 18;// SP;
private int mViewWidth = 48;// DP;
private int mTopMargin = mViewWidth * 3 / 2;// DP
private int mTextColor = 0xFF00DDFF;
private int mClickTextColor = 0xFFFF0000;
private int mLineColor = 0xFF4CB649;
private boolean mIsEnd;
private boolean mIsStart;
private String mText;
private int mPosition;
private VerticalTextView mVerticalTextView;
public BusSiteView(Context context)
{
this(context, null, false, false);
}
public BusSiteView(Context context, String text, boolean isStart,
boolean isEnd)
{
super(context);
mIsEnd = isEnd;
mIsStart = isStart;
mText = text;
init();
}
private void init()
{
setWillNotDraw(false);
mTextSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,
mTextSize, getResources().getDisplayMetrics());
mRadius = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
mRadius, getResources().getDisplayMetrics());
mLineWidth = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
mLineWidth, getResources().getDisplayMetrics());
mViewWidth = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, mViewWidth, getResources()
.getDisplayMetrics());
mTopMargin = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, mTopMargin, getResources()
.getDisplayMetrics());
mCirclePaint = new Paint();
mCirclePaint.setColor(mLineColor);
mLinePaint = new Paint();
mLinePaint.setAntiAlias(true);
mTextPaint = new Paint();
mTextPaint.setAntiAlias(true);
mTextPaint.setColor(mTextColor);
mLinePaint.setColor(mLineColor);
mTextPaint.setTextSize(mTextSize);
mVerticalTextView = new VerticalTextView(getContext());
LinearLayout.LayoutParams params = new LayoutParams(mViewWidth,
LayoutParams.MATCH_PARENT);
params.topMargin = mTopMargin;
addView(mVerticalTextView, params);
setBackgroundColor(0xFFDDDDDD);
}
@Override
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
int halfWidth = getWidth() / 2;
int startX = halfWidth;
int startY = mTopMargin / 2;
int endX = getWidth();
mVerticalTextView.setPadding(0, startY, 0, 0);
canvas.drawCircle(startX, startY, mRadius, mCirclePaint);
drawLine(canvas, startX, startY, endX);
// drawText(canvas, startY ,halfWidth);
drawCurrentIndex(canvas, startY, halfWidth);
}
private void drawLine(Canvas canvas, int startX, int startY, int endX)
{
if (!mIsStart)
{
startX = 0;
}
if (!mIsStart && mIsEnd)
{
endX /= 2;
}
canvas.drawRect(startX, startY - mLineWidth / 2, endX, startY
+ mLineWidth / 2, mLinePaint);
}
private void drawText(Canvas canvas, int startY, int halfWidth)
{
char[] chars = mText.toCharArray();
String position = mPosition + "";
if (mPosition < 10)
{
position = " " + position;
}
canvas.drawText(position, halfWidth - mTextSize / 2, startY + mTextSize
/ 2 + mRadius * 2, mTextPaint);
for (int i = 0; i < chars.length; i++)
{
canvas.drawText(chars[i] + "", halfWidth - mTextSize / 2,
getHeight() / 7 + mTextSize * 2 + mRadius * 2 + mTextSize * i,
mTextPaint);
}
}
private void drawCurrentIndex(Canvas canvas, int startY, int halfWidth)
{
String position = mPosition + "";
if (mPosition < 10)
{
position = " " + position;
}
canvas.drawText(position, halfWidth - mTextSize / 2, startY + mTextSize
+ mRadius * 2, mTextPaint);
}
public String getText()
{
return mText;
}
public void setText(String text)
{
mText = text;
mVerticalTextView.setText(mText);
}
public void setPosition(int position)
{
mPosition = position;
}
public void setIsEnd(boolean isEnd)
{
this.mIsEnd = isEnd;
}
public void setIsStart(boolean isStart)
{
this.mIsStart = isStart;
}
public void setTextPaintColor(int color)
{
this.mTextPaint.setColor(color);
}
public int getTextColor()
{
return mTextColor;
}
public int getClickTextColor()
{
return mClickTextColor;
}
public VerticalTextView getVerticalTextView()
{
return mVerticalTextView;
}
}