自定义组合控件,适配器原理-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或其子类,重写方法实现自定义的显示及事件处理方式:后者是通过组合已有的控件,来实现结构的简 ...
随机推荐
- oracle查询转换_inlist转换
oracle的optimizer会对一些sql语句进行查询转换,比如: 合并视图 子查询非嵌套化 inlist转换 下面讲讲遇到的in list转化优化的案例: create table test( ...
- Xcode5下去除Icon高光
1:Images.xcassets中, 选中图片, 查看属性. 在“iOS icon is pre-rendered” 打勾 2:Info.plist中修改 (1):添加 Icon already i ...
- Python生成器 yield
迭代器与list相比较,就for in句型循环拿数据而言: 用list写很简洁,但如果list数据过大,会很消耗资源. 用iteration 迭代器写,则不会消耗那么多资源.他会随用随取,用一个拿一个 ...
- js的 new image()用法[转]
创建一个Image对象:var a=new Image(); 定义Image对象的src: a.src=”xxx.gif”; 这样做就相当于给浏览器缓存了一张图片. 图像对象: 建立图像对 ...
- java解惑
java对转义字符没有提供任何特殊处理.编译器在将程序解析成各种符号之前,先将 Unicode 转义字符转换成为它们所表示的字符[JLS 3.2] 阅读笔记
- JS中多个onload冲突解决办法
一 多个window.onload冲突 在一个页面中有两个JavaScript 分别都用到了window.onload一个是:window.onload=externallinks,另一个是:win ...
- 1 storm基本概念 + storm编程规范及demo编写
本博文的主要内容有 .Storm的单机模式安装 .Storm的分布式安装(3节点) .No space left on device .storm工程的eclipse的java编写 http:// ...
- 机器学习笔记1——Introduction
Introduction What is Machine Learning? Two definitions of Machine Learning are offered. Arthur Samue ...
- In Java, what is the default location for newly created files?
If the current directory of the application. If e.g. you create a File by using new FileOutputStream ...
- 学习动态性能表 v$sql
学习动态性能表 第三篇-(1)-v$sql V$SQL中存储具体的SQL语句. 一条语句可以映射多个cursor,因为对象所指的cursor可以有不同用户(如例1).如果有多个cursor(子游标)存 ...