自定义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流程, ...
随机推荐
- 有直接运行的runas命令,XP就有
net user administrator /active:yes runas /user:ComputerName\Administrator /savecred “C:\Path\To\Prog ...
- 301. Remove Invalid Parentheses
题目: Remove the minimum number of invalid parentheses in order to make the input string valid. Return ...
- 2、Spring的LocalSessionFactoryBean创建过程源码分析
spring的LocalSessionFactoryBean生成过程与hibernate的SessionFactory生成过程是高度吻合的. 为了后面源码分析,首先讲解一个接口,一个类的功能:①.接口 ...
- PHP 投票练习
重点:1.进度条的显示2.操作数据库<form action="chuli.php" method="post"> <?php include ...
- poj 1325 Machine Schedule 二分匹配,可以用最大流来做
题目大意:机器调度问题,同一个任务可以在A,B两台不同的机器上以不同的模式完成.机器的初始模式是mode_0,但从任何模式改变成另一个模式需要重启机器.求完成所有工作所需最少重启次数. ======= ...
- Python 时间戳与时间字符串互相转
#设a为字符串 import time a = "2011-09-28 10:00:00" #中间过程,一般都需要将字符串转化为时间数组 time.strptime(a,'%Y-% ...
- 关于RotateAnimation的各构造方法的参数
本文以RotateAnimation的构造方法 讲解. RotateAnimation(float fromDegrees, float toDegrees) 其他构造器的旋转也可参考这副图. Rot ...
- C#中的转换
11.3 转换 到目前为止,在需要把一种类型转换为另一种类型时,使用的都是类型转换.而这并不是唯一的方式. 在计算过程中,int可以采用相同的方式隐式转换为long或double,还可以定义所创建的 ...
- lumen 使用 redis缓存
建议修改composer.json require 节点如下: "require": { "php": ">=5.5.9", &quo ...
- Jenkins+Maven+Git搭建持续集成和自动化部署的配置手记
前言 持续集成这个概念已经成为软件开发的主流,可以更频繁的进行测试,尽早发现问题并提示.自动化部署就更不用说了,可以加快部署速度,并可以有效减少人为操作的失误.之前一直没有把这个做起来,最近的新 ...