android draw过程,android,view的执行过程onDraw、onSizeChanged,onFinishInflate

android draw过程,android,view的执行过程onDraw、onSizeChanged,onFinishInflate小试view的执行过程,此是入门,高手绕道。——————————————————————————–此为抛砖引玉,个人看官自己发挥。结果如下:12-0522:23:03.587:D/mDebug(9715):TestViewcontext,attrs=@213103411212-05…

小试view的执行过程,此是入门,高手绕道。

——————————————————————————–

此为抛砖引玉,个人看官自己发挥。

结果如下:

12-05 22:23:03.587: D/mDebug(9715): TestView context, attrs=@2131034112

12-05 22:23:03.597: D/mDebug(9715): onFinishInflate

12-05 22:23:03.667: D/mDebug(9715): onSizeChanged,w=240,h=282,oldw=0,oldh=0

12-05 22:23:03.727: D/mDebug(9715): onDraw

12-05 22:23:03.757: D/mDebug(9715): onDraw

[size=l代码如下:[/size]

public class TestView extends View {

public TestView(Context context) {

super(context);

Log.d(“mDebug”, “TestView context”);

}

public TestView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

Log.d(“mDebug”, “TestView context,attrs,defStyle attrs=”+attrs.getAttributeValue(0));

}

public TestView(Context context, AttributeSet attrs) {

super(context, attrs);

Log.d(“mDebug”, “TestView context, attrs=”+attrs.getAttributeValue(0));

}

@Override

protected void onDraw(Canvas canvas) {

// TODO Auto-generated method stub

super.onDraw(canvas);

Log.d(“mDebug”, “onDraw”);

}

@Override

protected void onFinishInflate() {

// TODO Auto-generated method stub

super.onFinishInflate();

Log.d(“mDebug”, “onFinishInflate”);

}

@Override

protected void onSizeChanged(int w, int h, int oldw, int oldh) {

// TODO Auto-generated method stub

super.onSizeChanged(w, h, oldw, oldh);

Log.d(“mDebug”, “onSizeChanged,w=”+w+”,h=”+h+”,oldw=”+oldw+”,oldh=”+oldh);

}

}

问题: 构造函数的context为何物,attrs从何处来

Android View的绘制过程

首先是view的绘制过程~最主要的分三部分 measure layout draw 看字面意思,计算,布局,画~ android中控件相当于是画在一个无限大的画布上的,那就产生了几个问题 画布无限大, …

android权限申请执行过程

弹出的授权对口窗口实际上是一个activity(隐式intent启动上图第二个方块里)(com.android.packageinstaller.permission.ui.Grantpermissi …

android view 中各函数的执行顺数

这个就好像是 activity 的生命周期一样,如果我们要使用自定义的 view,那么就很有必要了解一下 view 的那些能够被重写的函数的执行顺序.废话不多讲,以常用的5个函数为例子,见下文: pa …

Android View 的绘制流程之 Layout 和 Draw 过程详解 (二)

View 的绘制系列文章: Android View 的绘制流程之 Measure 过程详解 (一) Android View 绘制流程之 DecorView 与 ViewRootImpl 在上一篇  …

简单研究Android View绘制三 布局过程

2015-07-28 17:29:19 这一篇主要看看布局过程 一.布局过程肯定要不可避免的涉及到layout()和onLayout()方法,这两个方法都是定义在View.java中,源码如下: /* …

android 中view的绘制过程

view的绘制过程中分别会执行:onMeasure(会多次)计算view的大小,OnLayout(),确定控件的大小和位置 onDraw()绘制view 当Activity获得焦点时,它将被要求绘制自 …

《Android内核剖析》读书笔记 第13章 View工作原理【View重绘过程】

计算视图大小的过程(Measure) 视图大小,准确的来说应该是指视图的布局大小:我们在layout.xml中为每个UI控件设置的layout_width/layout_height两个属性被用来设置 …

Android中View的绘制过程 onMeasure方法简述 附有自定义View例子

Android中View的绘制过程 onMeasure方法简述 附有自定义View例子 Android中View的绘制过程 当Activity获得焦点时,它将被要求绘制自己的布局,Android fr …

【转】Android中View的绘制过程 onMeasure方法简述 附有自定义View例子

Android中View的绘制过程 当Activity获得焦点时,它将被要求绘制自己的布局,Android framework将会处理绘制过程,Activity只需提供它的布局的根节点. 绘制过程从布 …

随机推荐

mysql进阶之存储过程

往往看别人的代码会有这样的感慨: 看不懂 理还乱 是离愁 别是一番滋味在心头 为什么要使用存储过程? 在mysql开发中使用存储过程的理由: 当希望在不同的应用程序或平台上执行相同的函数,或者封装特定 …

XSS检测工具 X5S/fiddler

x5s http://xss.codeplex.com/ 5s是fiddler的插件, 协助XSS脚本攻击的穿刺性测试.  需要手动驱动. 安全编码,unicode字符变形,ut-8编码. 5s is …

Objective-C之Category的使用

*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } …

关于移动端的font和图片的问题

一.font-family 使用无衬线字体 body { font-family: “Helvetica Neue”, Helvetica, STHeiTi, sans-serif …

VS编译的QT程序发布时产生的AppCrash问题

至少我碰到了三个情况,都是AppCrash错误(以下都指VS2008的Release的设置) 第1个错误,报错模块是程序自己 我使用VS2008 Team with SP1和QT4.86编译程序,一直 …

150个JS特效脚本

收集了其它一些不太方便归类的JS特效,共150个,供君查阅. 1. simplyScroll simplyScroll这个jQuery插件能够让任意一组元素产生滚动动画效果,可以是自动.手动滚动,水平 …

java final关键字的详解

final可以修饰成员变量.局部变量.方法.和类 1.final修饰成员变量时,必须在定义时初始化或者在构造方法中初始化 表示该成员变量无法在该类中被更改,但是可以被继承.如果子类不再定义相同名字的成 …

Python包和版本管理的最好工具—-pipenv

pipenv 是Kenneth Reitz大神的作品,提供Python的各个版本间的管理,各种包管理.个人觉得是virtualenv pip等工具的合体. pipenv主要有以下特性: (1)以前我们 …

LVS负载均衡基础介绍及NET、DR模式配置

LVS:术语: CIP:Client IP:客户端IP: VIP:Virtual Server IP:虚拟主机对外IP: RIP:Real Server IP:真实主机IP: DIP:Director …

Date类、SimpleDateFormat类

Date 构造方法: 1.无参数构造方法: Date date = new Date(); System.out.println(date);// Thu Mar 28 16:28:40 CST 20 …

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/38804.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注