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. ios开发解决遍历删除数组对象报错

    //            删除对应数据 //            for (OrderModel *order in self.OrderList) { // //                ...

  2. 一个简单的ObjC和JavaScript交互工具

    https://github.com/changjianfeishui/XBWebBridge ObjectiveC与Js交互是常见的需求,可对于新手或者所谓的高手而言,其实并不是那么简单明了.这里只 ...

  3. QTableView带可编辑进度条

    main文件与上一个例子完全一致,也使用QStandardItemModel,关键是有这句:QStandardItem.setEditable(false);  继承QAbstractItemDele ...

  4. iOS 消息转发

    消息转发   delegate和protocol   类别      消息转发   当向someObject发送某消息,但runtime system在当前类和父类中都找不到对应方法的实现时,runt ...

  5. PowerDesigner如何自定义报表模板

    PowerDesigner如何自定义报表模板 帅宏军 使用PowerDesigner设计数据库非常方便,但是它自带的报表模板一般不符合中国的使用情况.如何设计一个自己的报表模板,并在做项目的数据库设计 ...

  6. nodpad++正则替换

    则表达式是一个查询的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以扩展查找字符串的能力,正则表达式在查找和替换字符串的作用不可忽视,它 能很好提高工作效率. EditPlus的查找,替换,文件 ...

  7. 3、Spring整合Hibernate

    经过前面的两节分析:1.Hibernate之生成SessionFactory源码追踪 和 2.Spring的LocalSessionFactoryBean创建过程源码分析 .我们可以得到这样一个结论, ...

  8. 忘记导入struts2-xxx-plugin-x.x.x.jar导致服务器启动报Unable to load configuration.Caused by: Parent package is not defined: xxx-default

    今天做的一个Struts2+MyFaces(JSF)+Spring的应用,为了使用JSF,我的struts.xml中使用了如下代码 <package name="jsf" e ...

  9. C# 窗体间传值方法大汇总

    第一种方法:创建一个类,里面声明用于存储接收的字段.传的时候存储于字段中,要用的时候,直接类名.字段名 进行调用.(这种方法传递是双向的) 第二种方法:1.在Form1里定义 public strin ...

  10. AppDomain 应用程序域

    应用程序域 一.什么是应用程序域? 应用程序域 (application domain) (AppDomain) 一种边界,它由公共语言运行库围绕同一应用程序范围内创建的对象建立(即,从应用程序入口点 ...