Android绘图操作onDraw

简介:

做java的都知道,绘图肯定首先需要一个Canvas,然后在用Graphics在上面绘制自己想要图案。不错,Android上面也类似,你可以从一个Bitmap得到它的Canvas,进行绘制,也可以自定义一个View,用它的 Canvas。不同的时,Android里没有Graphics,而用 Paint代之,当然用法也稍有不同。以下是自定义View的一段代码: 
@Override 
public void onDraw(Canvas canvas) { 
// 首先定义一个paint 
Paint paint = new Paint(); 
// 绘制矩形区域-实心矩形 
// 设置颜色 
paint.setColor(Color.WHITE); 
// 设置样式-填充 
paint.setStyle(Style.FILL); 
// 绘制一个矩形 
canvas.drawRect(new Rect(0, 0, getWidth(), getHeight()), paint); 
// 绘空心矩形 
// 设置颜色 
paint.setColor(Color.RED); 
// 设置样式-空心矩形 
paint.setStyle(Style.STROKE); 
// 绘制一个矩形 
canvas.drawRect(new Rect(10, 10, 50, 20), paint); 
// 绘文字 
// 设置颜色 
paint.setColor(Color.GREEN); 
// 绘文字 
canvas.drawText(str, 30, 30, paint); 
// 绘图 
// 从资源文件中生成位图 
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon); 
// 绘图 
canvas.drawBitmap(bitmap, 10, 10, paint); 

以上需要注意的有三点: 
1、Android中的Rect和java中的可能稍有区别,前两个参数是左上角的坐标,后两个参数是右下角的坐标(不是宽度和高度); 
2、Style.STROKE和Style.FILL外边的像素数是有区别的,这点和java里一样; 
3、绘文字时,设置的坐标点为(30,30),但绘出来后你会发现,文字的左上角坐标要比你设置的偏上,不知道是android设置的bug,还是我们有理解到坐标点的意义。

Android绘图操作onDraw | 自由库 http://www.ziyouku.com/archives/android-operating-ondraw-drawing.html

本文转自天天_byconan博客园博客,原文链接:http://www.cnblogs.com/tiantianbyconan/articles/2378393.html ,如需转载请自行联系原作者
相关文章
|
5月前
|
Java 数据库 Android开发
【专栏】Kotlin在Android开发中的多线程优化,包括线程池、协程的使用,任务分解、避免阻塞操作以及资源管理
【4月更文挑战第27天】本文探讨了Kotlin在Android开发中的多线程优化,包括线程池、协程的使用,任务分解、避免阻塞操作以及资源管理。通过案例分析展示了网络请求、图像处理和数据库操作的优化实践。同时,文章指出并发编程的挑战,如性能评估、调试及兼容性问题,并强调了多线程优化对提升应用性能的重要性。开发者应持续学习和探索新的优化策略,以适应移动应用市场的竞争需求。
110 5
|
5月前
|
Java Android开发
Android系统 获取用户最后操作时间回调实现和原理分析
Android系统 获取用户最后操作时间回调实现和原理分析
137 0
|
5月前
|
Linux Android开发
测试程序之提供ioctl函数应用操作GPIO适用于Linux/Android
测试程序之提供ioctl函数应用操作GPIO适用于Linux/Android
58 0
|
3月前
|
Android开发
Android kernel 操作gpio
Android kernel 操作gpio
33 0
|
4月前
|
XML API 开发工具
Android Bitmap 加载与像素操作
Android Bitmap 加载与像素操作
38 2
|
4月前
|
存储 算法 Java
Android 进阶——代码插桩必知必会&ASM7字节码操作
Android 进阶——代码插桩必知必会&ASM7字节码操作
179 0
|
5月前
|
XML Java API
Android 浅度解析:系统框架层修改,编译,推送相关操作
Android 浅度解析:系统框架层修改,编译,推送相关操作
155 0
|
5月前
|
Android开发
[Android]视图的控触操作-MotionEvent
[Android]视图的控触操作-MotionEvent
57 0
|
5月前
|
算法 Java 数据安全/隐私保护
Android App开发之利用JNI实现加密和解密操作实战(附源码 简单易懂)
Android App开发之利用JNI实现加密和解密操作实战(附源码 简单易懂)
256 0
|
数据库 Android开发 数据库管理
Android 使用Room操作数据库进行数据库版本的升级和迁移
Android 使用Room操作数据库进行数据库版本的升级和迁移
548 0
下一篇
无影云桌面