android中绘画锚点控制(仿J2me)

在android中绘画文字时,锚点的控制只存在水平LEFT、CENTER、RIGHT三种,在自定义控件中进行绘画对文字的显示很难控制,下面添加了对TOP、CENTER、BOTTOM三种锚点的实现,具体代码如下:

1、描点的定义

    /**
     * 锚点的位置
     */
    interface Anchor {
        /**
         * 上
         */
        static int TOP = 0x01;
        /**
         * 底部
         */
        static int BOTTOM = 0x02;
        /**
         * 竖直中
         */
        static int VCENTER = 0x04;


        /**
         * 左
         */
        static int LEFT = 0x10;


        /**
         * 水平中
         */
        static int HCENTER = 0x20;


        /**
         * 右
         */
        static int RIGHT = 0x30;
    }

2、文字绘画的实现

    /**
     * 获取画笔对应字体的高度
     * 
     * @param paint
     *            画笔
     * @return 字体高度
     */
    public static int getFontHeight(Paint paint) {
        FontMetrics fm = paint.getFontMetrics();
        return (int) Math.ceil(fm.descent - fm.top) + 2;
    }


    /**
     * 制定锚点与位置绘画文字
     * @param canvas 画布
     * @param text 文字
     * @param x 绘画坐标X
     * @param y 绘画坐标Y
     * @param anchor 锚点的位置
     * @param paint 画笔
     */
    public static void drawText(Canvas canvas, String text, float x, float y,
            int anchor, Paint paint) {
        FontMetrics metrics = paint.getFontMetrics();
        float ty = y;
        if ((anchor & Anchor.TOP) != 0) {
            ty = y - metrics.ascent;
        } else if ((anchor & Anchor.VCENTER) != 0) {
            ty = y - (metrics.descent + metrics.ascent) / 2;
        } else {
            ty = y - metrics.descent;
        }
        canvas.drawText(text, x, ty, paint);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值