Android开发中自定义视图是走向高手的必经之路,如何绘制漂亮的图形呢,让我们一起走进Android绘图的世界
相关文章:
想要自定义视图,第一步就是Paint和Canvas的基本使用,下面让我们来一起学习绘图中画笔和画布的基本使用。
一、Paint属性
setShadowLayer:设置阴影
二、Canvas属性
1、填充
drawARGB(int a, int r, int g, int b)
drawColor(int color)
drawRGB(int r, int g, int b)
drawColor(int color, PorterDuff.Mode mode)
2、几何图形
canvas.drawArc (扇形)
canvas.drawCircle(圆)
canvas.drawOval(椭圆)
canvas.drawLine(线)
canvas.drawPoint(点)
canvas.drawRect(矩形)
canvas.drawRoundRect(圆角矩形)
canvas.drawVertices(顶点)
cnavas.drawPath(路径)
3、图片
canvas.drawBitmap (位图)
canvas.drawPicture (图片)
三、介绍完基本属性
//画空心圆
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(10);
paint.setAntiAlias(true);
canvas.drawCircle(150,150,100,paint);
//画实心圆(修改画笔的Style即可)
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setAntiAlias(true);
canvas.drawCircle(150,150,100,paint);
//画矩形
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(6);
paint.setAntiAlias(true);
canvas.drawRect(50, 150, 250, 350, paint);
//圆角矩形
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(6);
paint.setAntiAlias(true);
RectF re2 = new RectF(40, 300, 150, 460);
canvas.drawRoundRect(re2, 15, 15, paint);
rect:RectF对象。
rx:x方向上的圆角半径。
ry:y方向上的圆角半径。
paint:绘制时所使用的画笔。
//根据Path进行绘制,绘制三角形
canvas.drawPath(path5, paint);
Path path = new Path();
path.moveTo(60, 60);
path.lineTo(160, 160);
path.lineTo(320, 80);
path.close();
canvas.drawPath(path, paint);
//绘制椭圆
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(6);
paint.setAntiAlias(true);
RectF re31 = new RectF(170, 240, 430, 320);
canvas.drawOval(re31, paint);
//渐变器的使用
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setAntiAlias(true);
Shader mShader = new LinearGradient(0, 0, 40, 60, new int[]{
Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW}, null,
Shader.TileMode.REPEAT);
paint.setShader(mShader);
RectF re31 = new RectF(170, 240, 430, 320);
canvas.drawOval(re31, paint);
到这里你应该已经会绘制很多图形了,其实都是大同小异,熟悉了这些绘制,自定义视图据离你越来越近了
第三代测序技术在微生物研究中的应用曹晨霞,韩琬,张和平 摘要: 1977年Sanger 发明的双末端终止法开启了测序之旅,而测序技术在30多年内不断革新。 每种新技术的出现都有超过前代产品的独特之处,但也会不可避免的存在自身局限性,关键在于掌握每种技术的优缺点并加以合理应用。第三代测序技术是一种集高通量、快速度、长读长及低成本等多种优点于一身的新型测序技术,它的出现为基因组学、..._第三代测序技术的应用
移码只能用于表示整数,而不能用于表示定点小数无论是用哪种码,只要我们表示的是定点整数,我们都默认小数点是隐含在最低位的后面对于定点小数来说,无论我们用哪种码,我们都默认小数点是隐含在符号位的后面各种码对真值零的表现形式原码和反码有+0和-0这样的两种状态而补码和移码表示真值0只能有一种表示形态整数的表示范围−2n−1≤x≤2n−1−2n−1≤x≤2n−1−2n≤x≤2n−1−2n≤x≤2n−1小数。_定点小数的原码反码补码
空间复杂度超全解析~欢迎光临,这里是媛仔的数据结构进阶之路!!_空间复杂度
NOIP信息学奥赛资料下载时间限制: 1000 ms 内存限制: 65536 KB提交数: 16094 通过数: 11323【题目描述】输入三个整数,数与数之间以一个空格分开。 输出一个整数,即最大的整数。【输入】输入为一行,包含三个整数,数与数之间以一个空格分开。【输出】输出一行,包含一个整数,即最大的整数。【输入样例】10 20 56【输出样例】..._c++1053
什么是Coremail Push?Coremail push是采用微软官方专利授权的EAS协议推送技术为核心研发而成,通过无缝集成企业邮件服务器,可实时、安全把邮件推送到客户的移动终端设备。同时,客户还可在移动设备上进行日常邮件收发处理,通讯录同步、日程同步、会议邀请等操作应用,便捷处理邮箱事务,灵活提升户外办公效率。用户在移动端的所有操作亦实时同步至服务器。Coremail Push支持哪些手机..._coremail push
教育部没有规定原则上不许跨学科调剂。不能跨学科调剂主要还是学校自己的政策,这和是否招收同等学力考生类似。一般跨学科调剂只要满足初试成绩比两个学科的该区最低控制线都高,且专业课类似就可以。能跨学科调剂的专业跨一级学科/领域调剂(分数需达到该一级学科所在门类/类别所报招生单位的分区资格线)的学科领域包括:体育学[0403]、体育硕士[0452]、中医学[1005]、中西医综合[1006]、临床医学照顾..._计算机能调剂法学吗
(转载)http://www.jianshu.com/p/5db27dcd988a程序亦非猿 2015.09.17 11:53*工具版本:Gradle 2.4AndroidStuido 1.4Beta3在需要打jar包的Module下的build.gradle下配置如下:PS:`rename`可以配置jar名字,`into`可以配置jar输出路径ta
计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。一、算法基本思想(1)基本思想计数排序的基本思想是对于给定的输入序列中的每一个元素x,确定该序列中值小于x的元素的个数。一旦有了这个信息,就可以将x直接存放到最_计数排序为什么要反向读取
grepls readme*ls example*只要出现gene字眼都查找出less example.gtf| grep 'gene'精确查找,一个单词一个单词的搜索less example.gtf| grep -w 'gene'less example.gtf| grep -w -v -c 'gene'wc -l example.gtfless example.gtf| grep -w -e 'gene' -e 'U...
问题描述今天安装DockerToolbox成功后,双击运行Docker Quickstart Terminal提示:windows 正在查找bash.exe。如果想亲自查找文件,请点击“浏览”。原因安装DockerToolbox时会安装Git,所有上图所示的bash.exe是指Git的bash.exe。找到Docker Quickstart Terminal右击属性查看目标栏ba..._查看git bash exe
按照txt中的顺序将文件夹中的文件批量重命名:import osdef re_name(path): for file in os.listdir(path): file_path = os.path.join(path, file) #print(file) if ".dic" in file.lower(): # 判断文件是否为dic文件 for i in range(len(LstFilesDIC)): _if in file: python
平台环境:skyeye1.2.8+u-boot1.2.0+smdk2410现象描述:在运行的时候会出现大量的“bus read error”错误,或者u-boot跑飞出现乱码信息。 1.2.8相对1.2.6最大的改变就是将存储管理这一块做成相对独立的模块,我想这样做的目的应该是能够把更多的精力放在新平台新架构的研发。出现问题我初步想法可能就是在这个改变上。通过与1.2.6上跑u-_bus read 错误