自定义View绘制字符串
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.Display;
- import android.view.View;
- import android.content.Context;
- import android.graphics.Canvas;
- import android.graphics.Color;
- import android.graphics.Paint;
- import android.graphics.Paint.FontMetrics;
- public class MainActivity extends Activity {
- public int nScreenWidth = 0;
- public int nScreenHeight = 0;
- Paint paint = null;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // 获取屏幕宽高
- Display display = getWindowManager().getDefaultDisplay();
- nScreenWidth = display.getWidth();
- nScreenHeight = display.getHeight();
- super.onCreate(savedInstanceState);
- setContentView(new FontView(this));
- }
- // 自定义的View
- class FontView extends View {
- public final static String STR_WIDTH = "获取字符宽度为:";
- public final static String STR_HEIGHT = "获取字符高度为:";
- public FontView(Context context) {
- super(context);
- // TODO Auto-generated constructor stub
- paint = new Paint();
- }
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- // 设置背景色
- setBackgroundColor(Color.BLACK);
- // 设置字符串颜色
- paint.setColor(Color.WHITE);
- canvas.drawText("当前屏幕宽"+nScreenWidth, 0, 30, paint);
- canvas.drawText("当前屏幕高"+nScreenHeight, 0, 60, paint);
- // 设置字体大小
- paint.setColor(Color.RED);
- paint.setTextSize(18);
- canvas.drawText("字体大小为18", 0, 90, paint);
- // 消除字体锯齿
- paint.setFlags(Paint.ANTI_ALIAS_FLAG);
- canvas.drawText("消除字体锯齿", 0, 120, paint);
- // 获取字符串宽度
- canvas.drawText(STR_WIDTH + getStringWidth(STR_WIDTH), 0, 150, paint);
- // 获取字体高度
- canvas.drawText(STR_HEIGHT + getFontHeight() , 0, 180, paint);
- }
- // 获取字体串宽度
- private int getStringWidth(String str) {
- return (int) paint.measureText(str);
- }
- // 获取字体高度
- private int getFontHeight() {
- FontMetrics fm = paint.getFontMetrics();
- return (int) Math.ceil(fm.descent - fm.top) + 2;
- }
- }
- }
自定义View绘制字符串的更多相关文章
- Android绘图机制(二)——自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解
Android绘图机制(二)--自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解 我们要想画好一些炫酷的View,首先我们得知道怎么去画一些基础的图案,比如矩形,圆 ...
- Android 自定义 View 绘制
在 Android 自定义View 里面,介绍了自定义的View的基本概念.同时在 Android 控件架构及View.ViewGroup的测量 里面介绍了 Android 的坐标系 View.Vie ...
- android自定义View绘制天气温度曲线
原文:android自定义View绘制天气温度曲线 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012942410/article/detail ...
- Cavace 自定义View绘制
一.开发资料与实例教程1.跟囧猫学之Canvas.Matrix 倒影实例教程 http://www.eoeandroid.com/thread-158506-1-1.html 2.Gridview 控 ...
- android自定义View绘制圆形头像与椭圆头像
要实现这两种效果,需要自定义View,并且有两种实现方式. 第一种: public class BitmapShaders extends View { private BitmapSh ...
- 自定义View绘制简单的圆环的实现
package com.loaderman.mywave; import android.content.Context; import android.graphics.Canvas; import ...
- 自定义View—绘制基本图形
一.Canvas能够绘制哪些图形 二.
- Android 使用View绘制文字(DrawText)技术总结
转载请注明出处: http://www.cnblogs.com/renhui/p/7453534.html 这里的绘制文字不是直接调用TextView.setText(String content)去 ...
- 【朝花夕拾】Android自定义View篇之(二)Canvas常用功能
前言 转在请申明,转自[https://www.cnblogs.com/andy-songwei/p/10960012.html],谢谢! 上一篇讲View的绘制流程中讲到过,最后一步是draw流程, ...
随机推荐
- React事件函数简介
一.事件汇总 二.例子 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset= ...
- IE8 浏览器自动保存文档副本,添加缓存
若响应(response)HTTP头信息中没有关于缓存的头信息,则在IE8中第二次请求网页时,从缓存中拿取文件,而不是重新向服务器请求.而在Firefox或chrome则是重新向服务器请求. 解决方法 ...
- linux下c程序调用reboot函数实现直接重启【转】
转自:http://www.blog.chinaunix.net/uid-20564848-id-73878.html linux下c程序调用reboot函数实现直接重启 当然你也可以直接调用syst ...
- 日期工具类 - DateUtil.java
日期工具类,提供对日期的格式化和转换方法.获取区间日期.指定日期.每月最后一天等. 源码如下:(点击下载 -DateUtil.java.commons-lang-2.6.jar ) import ja ...
- iPhone 已停用
如果你的iPhone上出现了如下的显示,你可以参考苹果官网上的 iOS设备已停用 如果你看到了这篇文章,你比我幸运多了. 参考这一个条目,你也许就不会丢失里面的数据了. 可怜的我,出现这个问题时还没 ...
- Android HTTPS(2)HttpURLConnection.getInputStream异常的原因及解决方案
Common Problems Verifying Server Certificates InputStream in = urlConnection.getInputStream(); getIn ...
- CF 314C Sereja and Subsequences(树状数组)
题目链接:http://codeforces.com/problemset/problem/314/C 题意:给定一个数列a.(1)写出a的不同的所有非下降子列:(2)定义某个子列的f值为数列中各个数 ...
- 示例可重用的web component方式组织angular应用模块
在online web应用中,经常有这样的需求,能够让用户通过浏览器来输入代码,同时能够根据不同的代码来做语法高亮.大家已知有很多相应的javascript库来实现语法高亮的功能,比如codemirr ...
- noi2015的回忆和教训
前几天偶然打开了bzoj的rank list,突然发现——我竟然掉出了第一版!!! 自从我5月还是6月刷进第一版之后,我曾经天真的以为大概半年之内我还能保留在第一版内吧. 结果仅仅短短的4个月,我就已 ...
- [ionic开源项目教程] - 第8讲 根据菜单分类加载数据(重要)
[ionic开源项目教程] - 第8讲 根据菜单分类加载数据(重要) [效果图] 注意 今天遇到一个比较棘手的问题,就是左右滑动菜单的设计不合理性,所以tab1.html对应的视图层和control ...