zoukankan      html  css  js  c++  java
  • Android绘制文字时垂直居中

    canvas.drawText(String text, float x, float y, Paint paint);

    是Android中绘制文本的方法,其中的x代表文字绘制时在X轴的起始点,而y是在Y轴绘制时,文字的 baseline,不是文字的中心点也不是文字的底部。

    下面代码根据绘制的Y轴中心点centerY,算出了baseline,top,bottom,ascent和descent

        @Override
        protected void onDraw(Canvas canvas) {
    
            int top = mPaint.getFontMetricsInt().top;
            int bottom = mPaint.getFontMetricsInt().bottom;
            int ascent = mPaint.getFontMetricsInt().ascent;
            int descent = mPaint.getFontMetricsInt().descent;
    
            int baselineY =centerY + (bottom-top)/2 - bottom;
            top = baselineY + top;
            bottom = baselineY + bottom;
            ascent = baselineY + ascent;
            descent = baselineY + descent;
    
            mPaint.setColor(Color.GREEN);
            canvas.drawText(text, 100, baselineY, mPaint);
            canvas.drawLine(0, centerY, getMeasuredWidth(), centerY, mPaint);
    
            mPaint.setStrokeWidth(2);
    
            mPaint.setColor(Color.BLACK);
            canvas.drawLine(0, top, getMeasuredWidth(), top, mPaint);
    
            mPaint.setColor(Color.YELLOW);
            canvas.drawLine(0, ascent, getMeasuredWidth(), ascent, mPaint);
    
            mPaint.setColor(Color.RED);
            canvas.drawLine(0, baselineY, getMeasuredWidth(), baselineY, mPaint);
    
            mPaint.setColor(Color.YELLOW);
            canvas.drawLine(0, descent, getMeasuredWidth(), descent, mPaint);
    
            mPaint.setColor(Color.BLACK);
            canvas.drawLine(0, bottom, getMeasuredWidth(), bottom, mPaint);
    
        }
  • 相关阅读:
    kvm虚拟化存储管理
    k8s集群部署
    docker版的zabbix部署
    docker进阶——数据管理与网络
    docker基础
    ceph对接openstack环境
    java命令--jmap命令使用
    JVM性能分析工具jstack介绍
    SkipList跳表基本原理
    NIO之Channel、Buffer
  • 原文地址:https://www.cnblogs.com/wenhui92/p/7618350.html
Copyright © 2011-2022 走看看