文档章节

android绘制图形总结

abcijkxyz
 abcijkxyz
发布于 2016/07/30 17:24
字数 535
阅读 3
收藏 0
点赞 0
评论 0

需要继承View,并重写onDraw(),当需要更新视图时,调用invalidate()(非UI线程调用postInvalidate())。其中涉及到的类有:Canvas,Paint,Path等。

Canvas是依附于View的画布,定义了各种绘制图形的方法,常用的有:drawBitmap()画位图,drawPath()沿着指定path画任意图形,drawCircle()画圆,drawRect()画矩形,drawRoundRect()画圆角矩形,drawOval()画椭圆,drawText()画文本,drawText()画文本,drawColor()画背景颜色,drawTextOnPath()沿着路径画文本,drawLine()画直线,drawPoint()画点,等等。
Canvas还提供了如下方法对图形进行变换:translate(),rotate(),scale()。
Canvas的drawBitmapMesh()方法用来扭曲图像,这个方法非常强大,如果用的好,可以开发出如”水波荡漾“”红旗飘飘“等效果。
Paint是画笔类,主要用来设置绘制风格,常用的api有:setARGB(),setAlpha(),setTextAlign()设置是否抗锯齿,setColor(),setStyle(),setStrokeWidth(),setTextSize(),setPathEffect()设置绘制路径时的路径效果,setTextAlign()设置文字对齐方式,setShader()设置笔画的填充效果,setShadowLayer()设置阴影,等等。
Path类代表任意多条直线连接成的任意图形,常用api有:moveTo()定义图形的第一个顶点,lineTo()定义图形的多个顶点,close()回到起始点形成封闭线,addRect(),setPathEffect()设置绘制效果。PathEffect类来定义绘制效果,该类有如下子类:
CornerPathEffect:将Path的各个连接线段之间的夹角用一种更平滑的方式连接。
DashPathEffect:将Path的线段虚线化。
DiscretePathEffect:打散Path的线段,使得在原来路径的基础上发生打散效果。
PathDashPathEffect:使用Path图形来填充当前的路径。
ComposePathEffect:组合效果。
SumPathEffect:叠加效果。
Matrix是矩阵工具类,用来控制图形,组件的变换。提供了如下方法:reset(),setSkew(),setScale(),setRotate(),setTranslate()。Canvas类画图形的方法里面就会使用到该类,如:drawBitmap(Bitmap bitmap, Matrix matrix, Paint p)。

Shader类可用来指定图形的渲染效果(通过paint.setShader()),它提供了如下子类:
BitmapShader:位图平铺
LinearGradient:线性渐变
RadialGradient:圆形渐变
SweepGradient:角度渐变
ComposeShader:组合渲染效果

本文转载自:http://blog.csdn.net/wdong_love_cl/article/details/51383688

共有 人打赏支持
abcijkxyz
粉丝 60
博文 6195
码字总数 1876
作品 0
深圳
项目经理
图片和图形之用OpenGL ES显示图形(9)

原文 概要 Android框架提供了大量用于创建有吸引力的功能性图形用户界面的标准工具。但是,如果您想要更多地控制应用程序在屏幕上绘制的内容,或者冒险进入三维图形,则需要使用其他工具。A...

lichong951 ⋅ 05/26 ⋅ 0

Android性能优化:那些不可忽略的绘制优化

前言 在 开发中,性能优化策略十分重要 本文主要讲解性能优化中的绘制优化,希望你们会喜欢。 目录 // 方式2:在 BaseActivity 的 onCreate() 方法中使用下面的代码移除 优化方案2:移除 控件...

Carson_Ho ⋅ 05/21 ⋅ 0

图片和图形之矢量绘制(Vector drawables)(3)

原文 概述 A VectorDrawable是一个矢量图形,在XML文件中定义为一组点,线和曲线及其相关的颜色信息。使用矢量绘图的主要优点是图像可伸缩性。它可以在不损失显示质量的情况下进行缩放,这意...

lichong951 ⋅ 05/25 ⋅ 0

图片和图形之构建一个OpenGL ES环境(10)

原文 概要 构建一个OpenGL ES环境 为了在Android应用程序中使用OpenGL ES绘制图形,您必须为它们创建一个视图容器。其中一种更直接的方法是实现a GLSurfaceView和a GLSurfaceView.Renderer。...

lichong951 ⋅ 05/26 ⋅ 0

Android 自定义相机开发(三) —— 了解下EGL

胡说八道 如果要使用OpenGl来自定义相机,这个还是要了解下的。可能大多数开发者使用过OpengGL但是不知道EGL是什么?EGL的作用是什么?这其实一点都不奇怪,因为Android中的GlSurfaceView已经...

aserbao ⋅ 05/10 ⋅ 0

Android系统源码分析团体项目BeesAndroid正式上线啦

嗨,BeesAndroid开源技术小组正式成立啦,Bees,即蜜蜂,取义分享、合作与奉献的意思,这也是BeesAndroid小组的宗旨,我们第一个团体项目BeesAndroid也于2018年3月6日同步上线,该项目的前 ...

郭孝星 ⋅ 03/08 ⋅ 0

图片和图形之Drawables(2)

原文 Drawables 两种方法来定义和实例化: 充满保存在项目中的图像资源(位图文件)。 充满定义可绘制属性的XML资源。 从资源图像创建绘图 支持的文件类型有PNG(首选),JPG(可接受)和GIF...

lichong951 ⋅ 05/25 ⋅ 0

在Android中使用OpenGL ES进行开发第(二)课:定义图形

一、前期基础知识储备 笔者计划写三篇文章来详细分析OpenGL ES基础的同时也是入门关键的三个点: ①OpenGL ES是什么?与OpenGL的关系是什么?——概念部分 ②使用OpenGLES绘制2D/3D图形的第一...

weixin_41101173 ⋅ 04/22 ⋅ 0

【Animations】动画可绘制的图形(3)

原文 概要 在某些情况下,图像需要在屏幕上进行动画。如果您想要显示由多个图像组成的自定义加载动画,或者如果您希望一个图标在用户操作后变成另一个图标,这非常有用。Android为绘制动画提...

lichong951 ⋅ 05/28 ⋅ 0

Android HWUI硬件加速模块浅析

原址 什么是硬件加速(What) 传统软件的UI绘制是依靠CPU来完成的,硬件加速就是将绘制任务交由GPU来执行。Android系统负责硬件加速的模块主要是HWUI,如下图所示: 为什么要硬件加速(Why)...

u010164190 ⋅ 04/27 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

如何使用serverchan微信推送告警

之前实现推送告警信息到微信的方法有如下几种: 1、通过企业公众号实现----收费: 2、通过QQ邮箱,在微信平台上开启收到邮件进行提醒; 3、第三方告警平台API,一般也是收费的; 不过最近看文...

问题终结者 ⋅ 34分钟前 ⋅ 0

TCP的RPC

RPC就是远程方法调用(Remote Process Call ),包含了客户端和服务端,涉及了对象的序列化传输。 1.服务端启动,注册远程调用的类2.客户端发送请求信息包含类、方法、参数的一些信息、序列化传...

Cobbage ⋅ 55分钟前 ⋅ 0

IOS-UI UI初步代码布局添加事件

ISO开发界面,UI是必须学习的一部分,其实很早之前想学来了,一直没有沉下心来学习。看到IOS的代码风格和布局就别扭的不行,跟java代码和android布局比较显得不是那么方便,所以一直到现在。...

京一 ⋅ 今天 ⋅ 0

浅谈OpenDaylight的二次开发

OpenDaylight作为一款开源SDN网络控制器,依托于强大的社区支持以及功能特性,成为了目前主流的SDN网络控制器开发平台。在比较稳定的OpenDaylight Helium版本中,已经为开发者提供了大量的网...

wangxuwei ⋅ 今天 ⋅ 0

API 开发中可选择传递 token 接口遇到的一个坑

在做 API 开发时,不可避免会涉及到登录验证,我使用的是jwt-auth 在登录中会经常遇到一个token过期的问题,在config/jwt.php默认设置中,这个过期时间是一个小时,不过为了安全也可以设置更...

等月人 ⋅ 今天 ⋅ 0

Java NIO之文件处理

程序要操作本地操作系统的一个文件,可以分为以下三个部分: 对文件位置的操作 对文件的操作 对文件内容的操作 其中,对文件内容的操作在 Java NIO之Channel 中已经有了介绍,通过FileChann...

士别三日 ⋅ 今天 ⋅ 0

Maven的pom.xml配置文件详解

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.......

小海bug ⋅ 今天 ⋅ 0

解决httpclient超时设置不生效的问题

最近公司有项目需要通过http调用第三方服务,且第三方服务偶有超时,故需要设置一定的超时时间防止不响应的情况出现。 初始设置如下: [java] view plain copy //超时设置 RequestConfig re...

Mr_Tea伯奕 ⋅ 今天 ⋅ 0

过滤器Filter和拦截器HandlerInterceptor

过滤器 依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要...

hutaishi ⋅ 今天 ⋅ 0

Redis入门详解(转)

Redis入门详解 Redis简介 Redis安装 Redis配置 Redis数据类型 Redis功能 持久化 主从复制 事务支持 发布订阅 管道 虚拟内存 Redis性能 Redis部署 Redis应用场景 Redis总结 Redis简介: Redi...

xiaoyaoyoufang ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部