package safeluck.drive.evaluation.customview; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.support.annotation.Nullable; import android.text.Layout; import android.text.StaticLayout; import android.text.TextPaint; import android.util.AttributeSet; import android.view.View; import safeluck.drive.evaluation.util.Utils; /** * MyApplication2 * Created by lzw on 2019/3/18. 11:18:47 * 邮箱:632393724@qq.com * All Rights Saved! Chongqing AnYun Tech co. LTD */ public class ArrowView extends View { private Path path = new Path(); private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); private float PADDING = Utils.px2dp(40); private double a = Math.toRadians(55.0); private int color = Color.parseColor("#99C3D1"); private String text = "直角转弯"; private Path textPath = new Path(); public ArrowView(Context context) { super(context); } public ArrowView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public ArrowView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); path.moveTo(getWidth()/2-PADDING,getHeight()/2-PADDING); path.rLineTo(PADDING,0); path.rLineTo(PADDING*(float)Math.cos(a),PADDING*(float)Math.sin(a)); path.rLineTo(-PADDING*(float)Math.cos(a),PADDING*(float)Math.sin(a)); path.rLineTo(-(PADDING),0); path.rLineTo(PADDING*(float)Math.cos(a),-PADDING*(float)Math.sin(a)); path.rLineTo(-PADDING*(float)Math.cos(a),-PADDING*(float)Math.sin(a)); path.close(); paint.setColor(color); canvas.drawPath(path,paint); paint.setColor(Color.parseColor("#1412f6")); char[] index = getKeyChar(text); Paint.FontMetrics fm = paint.getFontMetrics(); float childHeight = PADDING/text.length(); for (int i = 0; i < text.length(); i++) { canvas.drawText(String.valueOf(index[i]),getWidth()/2-PADDING/3, (float) (((i + 0.5) * childHeight) - (fm.ascent + fm.descent) / 2)+PADDING/3, paint); } } protected char[] getKeyChar(String str) { char[] keys = new char[str.length()]; for (int i = 0; i < keys.length; i++) { keys[i] = str.charAt(i); } return keys; } }