自定义view(二)
1.View 的绘制
通过继承View 并重写它的onDraw()来完成绘制。
onDraw()有一个参数,就是Canvas对象。使用这个Canvas就可以绘制图像了,Canvas canvas = new Canvas(bitmap);
创建一个Canvas 对象时,为什么要传进去一个bitmap 对象呢?
这是因为传进去的bitmap 与通过这个bitmap 创建的Canvas 画布是紧紧联系在一起的,这个过程我们称之为装载画布。
这个bitmap用来存储所有绘制在Canvas的像素信息。所以当你通过这种方式创建了Canvas 对象后,后面调用所有的Canvas.drawXXX 方法都发生在这个bitmap 上。
2.ViewGroup的测量
viewGroup会管理子view的大小。
当viewGroup的大小为warp_content时,viewGroup会遍历子view ,以便获取所有子view的大小,来决定自身的大小。-------->调用的是view的 measure的测量方法 【就是自定义view(一)提到的onMeasure】
如果是其他模式,则会通过指定值来设置自身的大小。
当子view的测量完毕以后,就需要将子view放到合适的位置,这个时候就是view的Layout的过程。ViewGroup在执行Layout的过程时,也会遍历view的Layout方法,并指定其具体显示位置。
3.viewGroup绘制
viewGroup通常不需要绘制,因为他本身就没有需要绘制的东西。如果不是指定viewGroup的背景颜色,连onDraw()方法都不会调。
但是ViewGroup会使用dispatchDraw()来绘制其子view,也是遍历子view,并调用子view的绘制方法。
自定义view(二)的更多相关文章
- Android自定义View (二) 进阶
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24300125 继续自定义View之旅,前面已经介绍过一个自定义View的基础的例 ...
- 自定义View(二)--继承自ViewGroup
自定义View包括很多种,上一次随笔中的那一种是完全继承自View,这次写的这个小Demo是继承自ViewGroup的,主要是将自定义View继承自ViewGroup的这个流程来梳理一下,这次的Dem ...
- Android 自定义View (二) 进阶
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24300125 继续自定义View之旅,前面已经介绍过一个自定义View的基础的例 ...
- 自定义View(二),强大的Canvas
本文转自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1212/703.html Android中使用图形处理引擎,2D部分是 ...
- Android 自定义View二(深入了解自定义属性attrs.xml)
1.为什么要自定义属性 要使用属性,首先这个属性应该存在,所以如果我们要使用自己的属性,必须要先把他定义出来才能使用.但我们平时在写布局文件的时候好像没有自己定义属性,但我们照样可以用很多属性,这是为 ...
- 自定义view(二)
这里是自定义view(二),上一篇关于自定义view的一些基本知识,比如说自定义view的步骤.会涉及到哪些函数以及如何实现自定义属性,同时实现了一个很基础的自定义控件,一个自定义的计时器,需要看的人 ...
- Android绘图机制(二)——自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解
Android绘图机制(二)--自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解 我们要想画好一些炫酷的View,首先我们得知道怎么去画一些基础的图案,比如矩形,圆 ...
- Android自定义View(二)
前言 魅族手机的闹钟应用中有个倒计时,这个控件还是蛮有趣的.左边是魅族闹钟,右边是我们最终实现的效果,虽然有些细节还需优化,不过基本上已经达到了想要的效果,我们先来就来看看如何实现吧. 分析 确定宽高 ...
- 【朝花夕拾】Android自定义View篇之(二)Canvas常用功能
前言 转在请申明,转自[https://www.cnblogs.com/andy-songwei/p/10960012.html],谢谢! 上一篇讲View的绘制流程中讲到过,最后一步是draw流程, ...
随机推荐
- 在CHROME里安装 VIMIUM 插件, 方便操作
VIMIUM 插件使用方法 VIMIUM 命令列表 网页导航 j, :向下滚动网页 k, :向上滚动网页 h : 向左滚动 l : 向右滚动 gg : 滚动到网页头部 G : 滚动到网页底部 :向上翻 ...
- OpenCV2.4.13+VS2013开发环境配置
List1:完成 写在前面:之前电脑很杂乱的装了OpenCV的2个版本,在配置OpenCV和VS2013环境时死活配不好.但是接下来的工作要用到,没有办法,还是得好好做.今天重新装了OpenCV2.4 ...
- 查看java源码显示source not found
除了下载的jar包之外,还要下载src源码的zip包. 进项目的Java Build Path里找到你想看源码的jar包 Source Attachment Configuration--Extern ...
- C# 向listbox添加大量数据项的实践心得
使用 ListBox.Items.Add 方法添加项时,可以使用 BeginUpdate 方法,以防止每次向列表添加项时控件都重新绘制 ListBox.完成向列表添加项的任务后,调用 EndUpdat ...
- Array方法
1.concat()方法 用法:用于连接两个或者多个数组. 对原数组有无影响:不会改变原有数组,会返回一个连接之后的数组. 2.join()方法 用法:以指定的分隔符把数组中每一项拆分成字符串. 对原 ...
- Django 中related_name,"%(app_label)s_%(class)s_related"
先看个model from django.db import models # Create your models here. class Parent(models.Model): name = ...
- XCode设置自己windows习惯的快捷键(比如Home、End键)
Xcode的preference(command+,)中可以设置Key Bindings.绑定自己习惯的快捷键.实测系统快捷键设置同样名字也可以生效,但操作比较繁琐这里就不介绍了. 1.打开Xcode ...
- 1001. A+B Format (20)
原题连接:https://www.patest.cn/contests/pat-a-practise/1001 题目如下: Calculate a + b and output the sum in ...
- SQL Server CONVERT() 截取日期
SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSELECT CONVERT(varchar(100), GETDATE() ...
- 数据库中数据DELETE了怎样恢复
USE [BBDAS_FP_DATA] GO /****** Object: StoredProcedure [dbo].[Recover_Deleted_Data_Proc] Script Date ...