自定义组合控件,适配器原理-Day31
自定义组合控件,适配器原理-Day31
mobile2.1
- 主页定义
- 手机上锁功能
1.弹出设置密码框。
- 手机下载进度
- 自定定义控件
控件的属性其实就是控件类一个属性设置属性调用类的set方法方法,
自定义组合控件的思路
- 生命一个
View对象继承自相对布局,线性布局或者其他的ViewGroup - 在
View对象重写构造方法,然后初始化布局,通过View.inflate()方法把我们自己定义的布局挂到界面当中。 - 自定义属性在
res/values目录下创建attrs.xml里面定义一些属性,
<resources
<declare-styleable name="cn.itcast.phonesafe.view.SettingView">
<attr name="setting_title" format="string" />
<attr name="des_on" format="string" />
<attr name="des_off" format="string" />
</declare-styleable>
</resources>
生命自定义属性的命名空间
xmlns:zl_pro="http://schemas.android.com/apk/res/cn.zlpro.mobilesafe"可以在当前布局里面使用我们
1条定义的控件了。- 通过自定义函数的构造方法获取属性。
AttributeSet里面可以获取到
attrs
title = attrs.getAttributeValue( "http://schemas.android.com/apk/res/cn.zlpro.mobilesafe","setting_title");
总结:自定义控件就是我们不用系统定义的控件,我们自己定义,控件就是一个类,我们可以把这里类使用到我们的布局文件当中。 现在有许多都是可以
LayoutInflater简单原理
LayoutInflater就是通过pull解析布局xml文件内部调用了createViewFromTag()该方法有节点和参数接着又去调用内部一个createView()方法,使用反射的方式创建View,这样通过递归的方式把DOM结构的布局全部反射创建成View对象
绘制原理
视图的绘制过程都必须经历三个最主要的阶段,即onMeasure()测量、onLayout()确定位置和onDraw()绘制,绘制到我们屏幕上面, 注意View是不会帮我绘制图形的,所以每个内容需要自行绘制 TextView ImageView都重写了onDraw()方法,绘制主要用到了Canvas这个类。
源代码final View view = createViewFromTag(name, attrs);这行代码来创建VView对象,最后添加到父节点当中。最后如此反复得递归就可以把所有的布局绘制到窗口上面了
参考博文:
LayoutInflater原理分析,一步步了解View(一)
Android视图绘制流程完全解析,带你一步步深入了解View(二)
Android视图状态及重绘流程分析,带你一步步深入了解View(三)
Android自定义View的实现方法,带你一步步深入了解View(四)
Android 自定义控件开发入门
问题专区
- 适配器监听原理
ListView针对List中每个item,要求adapter“给我一个视图” (getView)。 所以在setAdapter()方法的时候就是给一个可以拿到装到当前容器的View生成器
- 控件怎么实现监听的。
自定义控件的原理,构造函数的作用
完成其实即使在
LayoutInflater加载成为布局的时候,通过反射响应的View,如果pull解析到该节点时就会调用改方法,绘制相应的View,源代码final View view = createViewFromTag(name, attrs);这行代码来创建VView对象,最后添加到父节点当中。最后如此反复得递归就可以把所有的布局绘制到窗口上面了。怎么判断是子线程UI线程
- 学会
google的最新设计语言
心得体会
- 后期精简代码,先把代码码完,接口逻辑装配
- 以后老师上课的代码不能拖到后期来处理。
创意
- 录视频添加自己科技评论
自定义组合控件,适配器原理-Day31的更多相关文章
- Android自定义控件之自定义组合控件
前言: 前两篇介绍了自定义控件的基础原理Android自定义控件之基本原理(一).自定义属性Android自定义控件之自定义属性(二).今天重点介绍一下如何通过自定义组合控件来提高布局的复用,降低开发 ...
- Android自定义控件之自定义组合控件(三)
前言: 前两篇介绍了自定义控件的基础原理Android自定义控件之基本原理(一).自定义属性Android自定义控件之自定义属性(二).今天重点介绍一下如何通过自定义组合控件来提高布局的复用,降低开发 ...
- 安卓自定义组合控件--toolbar
最近在学习安卓APP的开发,用到了toolbar这个控件, 最开始使用时include layout这种方法,不过感觉封装性不好,就又改成了自定义组合控件的方式. 使用的工具为android stud ...
- Android 手机卫士--自定义组合控件构件布局结构
由于设置中心条目中的布局都很类似,所以可以考虑使用自定义组合控件来简化实现 本文地址:http://www.cnblogs.com/wuyudong/p/5909043.html,转载请注明源地址. ...
- Android开发之自定义组合控件
自定义组合控件的步骤1.自定义一个View,继承ViewGroup,比如RelativeLayout2.编写组合控件的布局文件,在自定义的view中加载(使用View.inflate())3.自定义属 ...
- Android Studio自定义组合控件
在Android的开发中,为了能够服用代码,会把有一定共有特点的控件组合在一起定义成一个自定义组合控件. 本文就详细讲述这一过程.虽然这样的View的组合有一个粒度的问题.粒度太大了无法复用,粒度太小 ...
- Android自定义组合控件详细示例 (附完整源码)
在我们平时的Android开发中,有时候原生的控件无法满足我们的需求,或者经常用到几个控件组合在一起来使用.这个时候,我们就可以根据自己的需求创建自定义的控件了,一般通过继承View或其子类来实现. ...
- Android开发学习笔记-自定义组合控件的过程
自定义组合控件的过程 1.自定义一个View 一般来说,继承相对布局,或者线性布局 ViewGroup:2.实现父类的构造方法.一般来说,需要在构造方法里初始化自定义的布局文件:3.根据一些需要或者需 ...
- Android中自定义组合控件
Android中自定义控件的情况非常多,一般自定义控件可以分为两种:继承控件及组合控件.前者是通过继承View或其子类,重写方法实现自定义的显示及事件处理方式:后者是通过组合已有的控件,来实现结构的简 ...
随机推荐
- 便利的html5 之 required、number 、pattern
html5对于表单验证提供了很多自识别功能,非常的便利. 看代码, <!--head start--> <include file="Public:head" / ...
- mongodb windows下服务安装与卸载
安装服务.bat 内容: d:\mongodb2.4.3\bin\mongod.exe --dbpath d:\data\db --config d:\mongodb2.4.3\mongod.cfg ...
- 【转】win7 虚拟机virtualbox中ubuntu12.04安装samba实现文件共享
原文网址:http://blog.csdn.net/watkinsong/article/details/8878786 昨天心血来潮,又装了个虚拟机,然后安装了ubuntu12.04,为了实现在虚拟 ...
- 遍历Dataset并输出数据实例
转自:http://www.cnblogs.com/csdm/archive/2010/02/02/1661808.html <%@ Page Language="C#" A ...
- EasyUI的增删查改(后台ASP.NET)
转自:http://www.cnblogs.com/dedeyi/archive/2013/04/22/3035057.html 某某人曾经跟我说,你们做系统不就是增删查改吗. 是啊,很多时候我们就是 ...
- poj 1556 The Doors(线段相交,最短路)
The Doors Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7430 Accepted: 2915 Descr ...
- JavaScript高级程序设计37.pdf
用DOM范围实现简单选择 selectNode()和selectNodeContents()它们都接收一个DOM节点参数,然后使用该节点中的信息来填充范围,其中selectNode()方法选择整个节点 ...
- 如何实例化i2c_client(四法)
一.在板文件进行client的实例化 在内核的初始化中(例如在板文件中)定义设备的信息.这种操作的前提是内核编译的时候已经确定有哪些i2c设备和它们的地址,还要知道连接的总线的编号. 比如在板文件/a ...
- openstack libtray
OpenStack packages¶ Distributions release OpenStack packages as part of the distribution or using ot ...
- Android开发——新特性与知识点回顾
Fragment 用途:在一个Activity里切换界面,切换界面时只切换Fragment里面的内容 生命周期方法跟Activity一致,可以理解把其为就是一个Activity 定义布局文件作为Fra ...