2 hyb1996 hyb1996 于 2016.02.28 21:06 提问

android 画一对漂亮的括号

android 画一对漂亮的括号。是()() 这种括号。注意是在canvas上画出来的 ,不是用字符代替的。
这是因为我需要根据需要不同尺寸的括号。但是用drawArc画出的括号很丑。以下是主要代码。如何才能画一个比较漂亮的括号呢。

  public static final int bracketWidth = ViewTools.dip2px(7);
    private static Paint bracketPaint = new Paint();
    static {
        bracketPaint.setStrokeWidth(ViewTools.dip2px(1.5f));
        bracketPaint.setStyle(Paint.Style.STROKE );
    }
    public static void drawLeftBracket(Canvas canvas, int x, int y, int height) {
        x += bracketWidth / 2;
        RectF rect = new RectF(x, y, x + bracketWidth, y + height);
        canvas.drawArc(rect, 90, 180, false, bracketPaint);
    }

4个回答

hyb1996
hyb1996   2016.03.04 15:12
已采纳

问题解决了。采用一张比较大的PNG括号图片,根据需要进行放缩节OK。


private static final int textBracketMaxHeight = ViewTools.dip2px(20);
    private static final int textBracketMaxWidth = ViewTools.dip2px(10);

 public static void drawLeftBracketPng(Canvas canvas, int x, int y,
            int height){
        Bitmap btp;
        if (height > textBracketMaxHeight) {
            btp = ViewTools.zoom(leftBracketPng, textBracketMaxWidth, height);
        }else{
            float scale = (float)height/leftBracketPng.getHeight();
            btp = ViewTools.zoom(leftBracketPng, scale, scale);
        }
        canvas.drawBitmap(btp, x, y, new Paint());
    }
    public static void drawRightBracketPng(Canvas canvas, int x, int y,
            int height){
        Bitmap btp;
        if (height > textBracketMaxHeight) {
            btp = ViewTools.zoom(rightBracketPng, textBracketMaxWidth, height);
        }else{
            float scale = (float)height/rightBracketPng.getHeight();
            btp = ViewTools.zoom(rightBracketPng, scale, scale);
        }
        canvas.drawBitmap(btp, x, y, new Paint());
    }
Mr_dsw
Mr_dsw   Ds   Rxr 2016.02.28 23:06

直接drawText("(")绘制出来算了,然后设置texxtSize

hyb1996
hyb1996 当大小小于30时还行 但当要求很大时 画出来的括号线条很粗
接近 2 年之前 回复
dongfeng9ge
dongfeng9ge   Ds   Rxr 2016.02.29 08:13

绘制一个圆,然后遮挡上面和下面

crazy1235
crazy1235   Ds   Rxr 2016.02.29 14:00

利用canvas画圆弧就行了。

hyb1996
hyb1996 我自己就是画圆弧的 超级丑
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!