1. import android.app.Activity;
  2. import android.os.Bundle;
  3. import android.view.Display;
  4. import android.view.View;
  5. import android.content.Context;
  6. import android.graphics.Canvas;
  7. import android.graphics.Color;
  8. import android.graphics.Paint;
  9. import android.graphics.Paint.FontMetrics;
  10. public class MainActivity extends Activity {
  11. public int nScreenWidth = 0;
  12. public int nScreenHeight = 0;
  13. Paint paint = null;
  14. @Override
  15. protected void onCreate(Bundle savedInstanceState) {
  16. // 获取屏幕宽高
  17. Display display = getWindowManager().getDefaultDisplay();
  18. nScreenWidth = display.getWidth();
  19. nScreenHeight = display.getHeight();
  20. super.onCreate(savedInstanceState);
  21. setContentView(new FontView(this));
  22. }
  23. // 自定义的View
  24. class FontView extends View {
  25. public final static String STR_WIDTH = "获取字符宽度为:";
  26. public final static String STR_HEIGHT = "获取字符高度为:";
  27. public FontView(Context context) {
  28. super(context);
  29. // TODO Auto-generated constructor stub
  30. paint = new Paint();
  31. }
  32. @Override
  33. protected void onDraw(Canvas canvas) {
  34. super.onDraw(canvas);
  35. // 设置背景色
  36. setBackgroundColor(Color.BLACK);
  37. // 设置字符串颜色
  38. paint.setColor(Color.WHITE);
  39. canvas.drawText("当前屏幕宽"+nScreenWidth, 0, 30, paint);
  40. canvas.drawText("当前屏幕高"+nScreenHeight, 0, 60, paint);
  41. // 设置字体大小
  42. paint.setColor(Color.RED);
  43. paint.setTextSize(18);
  44. canvas.drawText("字体大小为18", 0, 90, paint);
  45. // 消除字体锯齿
  46. paint.setFlags(Paint.ANTI_ALIAS_FLAG);
  47. canvas.drawText("消除字体锯齿", 0, 120, paint);
  48. // 获取字符串宽度
  49. canvas.drawText(STR_WIDTH + getStringWidth(STR_WIDTH), 0, 150, paint);
  50. // 获取字体高度
  51. canvas.drawText(STR_HEIGHT + getFontHeight() , 0, 180, paint);
  52. }
  53. // 获取字体串宽度
  54. private int getStringWidth(String str) {
  55. return (int) paint.measureText(str);
  56. }
  57. // 获取字体高度
  58. private int getFontHeight() {
  59. FontMetrics fm = paint.getFontMetrics();
  60. return (int) Math.ceil(fm.descent - fm.top) + 2;
  61. }
  62. }
  63. }

自定义View绘制字符串的更多相关文章

  1. Android绘图机制(二)——自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解

    Android绘图机制(二)--自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解 我们要想画好一些炫酷的View,首先我们得知道怎么去画一些基础的图案,比如矩形,圆 ...

  2. Android 自定义 View 绘制

    在 Android 自定义View 里面,介绍了自定义的View的基本概念.同时在 Android 控件架构及View.ViewGroup的测量 里面介绍了 Android 的坐标系 View.Vie ...

  3. android自定义View绘制天气温度曲线

    原文:android自定义View绘制天气温度曲线 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012942410/article/detail ...

  4. Cavace 自定义View绘制

    一.开发资料与实例教程1.跟囧猫学之Canvas.Matrix 倒影实例教程 http://www.eoeandroid.com/thread-158506-1-1.html 2.Gridview 控 ...

  5. android自定义View绘制圆形头像与椭圆头像

    要实现这两种效果,需要自定义View,并且有两种实现方式.   第一种: public class BitmapShaders extends View {     private  BitmapSh ...

  6. 自定义View绘制简单的圆环的实现

    package com.loaderman.mywave; import android.content.Context; import android.graphics.Canvas; import ...

  7. 自定义View—绘制基本图形

    一.Canvas能够绘制哪些图形 二.

  8. Android 使用View绘制文字(DrawText)技术总结

    转载请注明出处: http://www.cnblogs.com/renhui/p/7453534.html 这里的绘制文字不是直接调用TextView.setText(String content)去 ...

  9. 【朝花夕拾】Android自定义View篇之(二)Canvas常用功能

    前言 转在请申明,转自[https://www.cnblogs.com/andy-songwei/p/10960012.html],谢谢! 上一篇讲View的绘制流程中讲到过,最后一步是draw流程, ...

随机推荐

  1. React事件函数简介

    一.事件汇总 二.例子 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset= ...

  2. IE8 浏览器自动保存文档副本,添加缓存

    若响应(response)HTTP头信息中没有关于缓存的头信息,则在IE8中第二次请求网页时,从缓存中拿取文件,而不是重新向服务器请求.而在Firefox或chrome则是重新向服务器请求. 解决方法 ...

  3. linux下c程序调用reboot函数实现直接重启【转】

    转自:http://www.blog.chinaunix.net/uid-20564848-id-73878.html linux下c程序调用reboot函数实现直接重启 当然你也可以直接调用syst ...

  4. 日期工具类 - DateUtil.java

    日期工具类,提供对日期的格式化和转换方法.获取区间日期.指定日期.每月最后一天等. 源码如下:(点击下载 -DateUtil.java.commons-lang-2.6.jar ) import ja ...

  5. iPhone 已停用

    如果你的iPhone上出现了如下的显示,你可以参考苹果官网上的  iOS设备已停用 如果你看到了这篇文章,你比我幸运多了. 参考这一个条目,你也许就不会丢失里面的数据了. 可怜的我,出现这个问题时还没 ...

  6. Android HTTPS(2)HttpURLConnection.getInputStream异常的原因及解决方案

    Common Problems Verifying Server Certificates InputStream in = urlConnection.getInputStream(); getIn ...

  7. CF 314C Sereja and Subsequences(树状数组)

    题目链接:http://codeforces.com/problemset/problem/314/C 题意:给定一个数列a.(1)写出a的不同的所有非下降子列:(2)定义某个子列的f值为数列中各个数 ...

  8. 示例可重用的web component方式组织angular应用模块

    在online web应用中,经常有这样的需求,能够让用户通过浏览器来输入代码,同时能够根据不同的代码来做语法高亮.大家已知有很多相应的javascript库来实现语法高亮的功能,比如codemirr ...

  9. noi2015的回忆和教训

    前几天偶然打开了bzoj的rank list,突然发现——我竟然掉出了第一版!!! 自从我5月还是6月刷进第一版之后,我曾经天真的以为大概半年之内我还能保留在第一版内吧. 结果仅仅短短的4个月,我就已 ...

  10. [ionic开源项目教程] - 第8讲 根据菜单分类加载数据(重要)

    [ionic开源项目教程] - 第8讲  根据菜单分类加载数据(重要) [效果图] 注意 今天遇到一个比较棘手的问题,就是左右滑动菜单的设计不合理性,所以tab1.html对应的视图层和control ...