自定义组合控件,适配器原理-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
的最新设计语言
心得体会
- 后期精简代码,先把代码码完,接口逻辑装配
- 以后老师上课的代码不能拖到后期来处理。
创意
- 录视频添加自己科技评论