import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.Gravity;
import android.widget.TextView; // 给尺子加上刻度。
public class CM extends TextView { public CM(Context context) {
super(context);
init();
} public CM(Context context, AttributeSet attrs) {
super(context, attrs);
init();
} private void init() {
// 设置文字居底
setGravity(Gravity.BOTTOM);
} @Override
public void draw(Canvas canvas) {
super.draw(canvas); // 得到一毫米
float mmWidth = ((float) getWidth()) / 10;
Paint p = new Paint();
p.setColor(Color.WHITE); // 更改画笔颜色
float top = 2; // 标识
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
/**
* i * mmWidth,第几个小方块乘以毫米的宽度。
* top,距离上面有一个两毫米的距离。
* i * mmWidth + mmWidth, 右面
* top + 50, 下面
*/
canvas.drawRect(i * mmWidth, top, i * mmWidth + mmWidth, top
+ 50, p);
}
}
}
}
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.myruler.MainActivity" >
<com.myruler.CM
android:layout_width="10mm"
android:layout_height="10mm"
android:layout_gravity="center_vertical"
android:background="#ff0000"
android:text="0cm"
android:textColor="#ffffffff"
android:textSize="10pt" />
<com.myruler.CM
android:layout_width="10mm"
android:layout_height="10mm"
android:layout_gravity="center_vertical"
android:background="#ff9900"
android:text="1cm"
android:textColor="#ffffffff"
android:textSize="10pt" />
<com.myruler.CM
android:layout_width="10mm"
android:layout_height="10mm"
android:layout_gravity="center_vertical"
android:background="#cccc00"
android:text="2cm"
android:textColor="#ffffffff"
android:textSize="10pt" />
<com.myruler.CM
android:layout_width="10mm"
android:layout_height="10mm"
android:layout_gravity="center_vertical"
android:background="#00ff00"
android:text="3cm"
android:textColor="#ffffffff"
android:textSize="10pt" />
<com.myruler.CM
android:layout_width="10mm"
android:layout_height="10mm"
android:layout_gravity="center_vertical"
android:background="#00cccc"
android:text="4cm"
android:textColor="#ffffffff"
android:textSize="10pt" />
<com.myruler.CM
android:layout_width="10mm"
android:layout_height="10mm"
android:layout_gravity="center_vertical"
android:background="#00ccff"
android:text="5cm"
android:textColor="#ffffffff"
android:textSize="10pt" />
<com.myruler.CM
android:layout_width="10mm"
android:layout_height="10mm"
android:layout_gravity="center_vertical"
android:background="#00cc00"
android:text="6cm"
android:textColor="#ffffffff"
android:textSize="10pt" />
</LinearLayout>

继承TextView简单画一个尺子的更多相关文章

  1. PostScript的简单例子-用粗线画一个圆

    一 近期需要用到PostScript,查询资料学习PS的语法 简单的画一个圆的例子 %!PS-Adobe-3.0 /inch{72 mul} def 4.25 inch 5.5 inch 1.5 in ...

  2. Directx11学习笔记【十一】 画一个简单的三角形--effect框架的使用

    这里不再介绍effect框架的具体使用,有关effect框架使用可参考http://www.cnblogs.com/zhangbaochong/p/5475961.html 实现的功能依然是画一个简单 ...

  3. css3简单几步画一个乾坤图

    原文:[原创]css3简单几步画一个乾坤图 效果如上,鼠标移上去会有动画. 代码如下非常简单: <html> <head> <style> .outer{heigh ...

  4. 如何用latex画一个简单的表格

    latex毫无疑问是一个十分强大的论文写作工具,所以掌握它就显得非常有意义,讲一下如何画一个简单的表格,代码如下: \begin{table}\centering\begin{tabular}{||c ...

  5. Directx11教程(19) 画一个简单的地形

    原文:Directx11教程(19) 画一个简单的地形       通常我们在xz平面定义一个二维的网格,然后y的值根据一定的函数计算得到,比如正弦.余弦函数的组合等等,可以得到一个看似不错的地形或者 ...

  6. Directx11教程(6) 画一个简单的三角形(2)

    原文:Directx11教程(6) 画一个简单的三角形(2)      在上篇教程中,我们实现了在D3D11中画一个简单的三角形,但是,当我们改变窗口大小时候,三角形形状却随着窗口高宽比例改变而改变, ...

  7. Directx11教程(5) 画一个简单的三角形(1)

    原文:Directx11教程(5) 画一个简单的三角形(1)       在本篇教程中,我们将通过D3D11画一个简单的三角形.在D3D11中,GPU的渲染主要通过shader来操作(当然还有一些操作 ...

  8. 手对手的教你用canvas画一个简单的海报

    啦啦啦,首先说下需求,产品想让用户在我们app内,分享一张图片到微信.qq等平台.图片中包含用户的姓名.头像.和带着自己信息的二维码.然后,如何生成这张海报呢~~~首先我们老大告诉我有一个插件叫htm ...

  9. 用drawRect的方式实现一个尺子

    用drawRect的方式实现了一个尺子选择器,demo在这里:https://github.com/Phelthas/LXMRulerView 效果如图:   如果不考虑复用的问题,我感觉最简单的实现 ...

随机推荐

  1. android-exploitme(三):安全连接

    今天我来测试连接的安全,数据是否可嗅探. android模拟器提供了内置的tcpdump,我们使用这个来抓包. 1. 启动带tcpdump的模拟器 santoku@santoku-virtual-ma ...

  2. 265. Paint House II

    题目: There are a row of n houses, each house can be painted with one of the k colors. The cost of pai ...

  3. CentOS禁用root本地或远程ssh登录

    有些特殊的情况我们需要禁止root在本地或远程使用ssh登录,以增加安全性. 禁止root本地登录 修改/etc/pam.d/login文件增加下面一行auth required pam_succee ...

  4. Objective-C:三种文件导入的方式以及atomic和nonatomic的区别

    一.三种文件导入的方式比较:   类的前项声明@class.import.include: 1.采用@class 类名的方式,它会告诉编译器有这么一个类,目前不需要知道它内部的实例变量和方法是如何定义 ...

  5. 机器人学 —— 轨迹规划(Configuration Space)

    之前的轨迹规划中,我们只考虑了质点,没有考虑机器人的外形与结构.直接在obstacle map 中进行轨迹规划,然而世纪情况中,机器人有固定外形,可能会和障碍物发生碰撞.此情况下,我们针对机器人自由度 ...

  6. Backbone seajs demo2

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Ubuntu上安装Maven Eclipse以及配置

    通过官方网站  http://maven.apache.org/download.cgi     下载到当前的maven安装包 ubuntu解压安装文件我用的是ubuntu 12.10版本的命令:  ...

  8. Python代码编辑器

    PyCharm Community 说到PyCharm Community,我们就会想到它是一款免费的开源Python代码编辑器,不过这也是事实啦.PyCharm Community为我们提供了轻量级 ...

  9. BZOJ 2228 礼物(gift)(最大子长方体)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2228 题意:给出一个只含有NP两种字母的长方体.从中找出只含有字母N的长方体,造型为a* ...

  10. c#开源Excel操作库--NPOI

    前言 以前也用C#操作过excel,用的是OleDb或者offic的com组件,但是总是非常的麻烦,依赖限制较多,所以果断寻找开源方案,JAVA上面已经有非常成熟的POI,就这样,找到了移.Net的移 ...