自定义组合控件,适配器原理-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或其子类,重写方法实现自定义的显示及事件处理方式:后者是通过组合已有的控件,来实现结构的简 ...
随机推荐
- hadoop2.2编程:mapreduce编程之二次排序
mr自带的例子中的源码SecondarySort,我重新写了一下,基本没变. 这个例子中定义的map和reduce如下,关键是它对输入输出类型的定义:(java泛型编程) public static ...
- Codevs_2102_石子归并2_(环状动态规划)
描述 http://codevs.cn/problem/2102/ 2102 石子归并 2 时间限制: 10 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题目 ...
- 1px
Retina屏的移动设备如何实现真正1px的线? <!DOCTYPE html> <html> <head> <meta charset="utf- ...
- zabbix监控zookeeper
在github找到一个不错的模板,直接导入使用.下载地址: https://github.com/zhujinhe/zookeeper-zabbix-template 监控项监控类型为外部检查 zab ...
- FileZilla 425 Can't open data connection
FileZilla 425 Can't open data connection WIN 2008 SERVER+FileZilla FTP Server,FTP端口:2013 防火墙中已允许FTP ...
- Action中取得request,session的四种方式
Action中取得request,session的四种方式 在Struts2中,从Action中取得request,session的对象进行应用是开发中的必需步骤,那么如何从Action中取得这些对象 ...
- 分布式基础通信协议:paxos,totem和gossip
转:http://blog.csdn.net/cloudresearch/article/details/23127985 背景: 在分布式中,最难解决的一个问题就是多个节点间数据同步问题.为了解决这 ...
- python中类的继承
python中类的继承 在python中面向对象编程中实现继承,以下面一个实例进行说明. class SchoolMenber(): # __init__类似于c++中的构造函数 # __init__ ...
- zoj3329 One Person Game
One Person Game Time Limit: 1 Second Memory Limit: 32768 KB Special Judge There is a very simple and ...
- Hibernate查询方法总结
1. HQL查询 HQL是Hiberante官方推荐的Hibernate检索方式,它使用类似SQL的查询语言,以面向对象的方式从数据库中查询.可以使用HQL查询具有继承.多态和关 联关系的数据.在检索 ...