Android Cannas.drawTextView 方法坐标问题

  • 先看看我们把drawText方法里面x,y的位置设置为0的效果吧
canvas.drawText("哈哈哈", 0, 0, mPaint);

  • 看到上面的图片了吧,是不是觉得很奇怪,为什么只显示字体的脚呢 ?
    • 我们输入的坐标0.0,是在控件的左上角,按我们之前对android坐标系的了解,大家是不是都觉的文字应该是在左上角从上到下的显示出来,而不是只显示在左上角的位置,其实这个跟基线有关系.

  • 如果我们y坐标设置为0的话,那基线的位置就是在0,这样就会导致我们的文字只显示脚的问题了

  • 我们现在就来让文字显示在控件的中间吧,要实现这个效果其实很简单,只要我们修改基线的位置就ok了,让文字居中有3中方式,其实都是差不多的,所以这里我就只讲解其中一种了
  • 思路:
    • 在Paint中我们可以获取到上图所有线的位置
    • 先计算出字体的总高度,其实就是Ascent 到 Descent 的位置了
    • 再用Ascent - 去字体高度的一半,就得到了我们要移动基线的距离了
private void initPaint() {        mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);        mPaint.setColor(Color.RED);        mPaint.setStyle(Paint.Style.STROKE);        mPaint.setTextSize(30);    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        String str = "哈哈哈";        //方式一        float textWidth = mPaint.measureText(str);  //获取文字的宽度        float x = (getMeasuredWidth() - textWidth) / 2; //x的位置        float y = getMeasuredHeight() / 2 +           (-mPaint.ascent() - (mPaint.descent() - mPaint.ascent()) / 2);        canvas.drawText(str, x, y, mPaint);    }

更多相关文章

  1. Android中的GPS应用开发入门教程
  2. Android中图像变换Matrix的原理、代码验证和应用(一)
  3. Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明
  4. Android基于OpenCV通过JNI识别并显示人脸位置
  5. android轮播图组件的制作方法
  6. Android的Location功能代码
  7. android canvas drawText 使用说明
  8. android 使用命令模拟点击 滑动
  9. Android(安卓)GPS获得经纬度并得到该坐标精确地址

随机推荐

  1. 百度云推送实践
  2. android中使用zxing扫描二维码以及条形码
  3. Android的安装过程
  4. Android(安卓)AsyncTask 原理及Java多线
  5. Android(安卓)studio gradle文件说明与配
  6. Android(安卓)四种绑定监听事件的方式
  7. android,java只是知识点总结
  8. android 实现圆角imageView的两种方法
  9. Android(安卓)学习笔记--android——list
  10. 多个viewpager导致的不显示问题