自定义组合控件,适配器原理-Day31

mobile2.1

  1. 主页定义
  2. 手机上锁功能

1.弹出设置密码框。

  1. 手机下载进度
  2. 自定定义控件

控件的属性其实就是控件类一个属性设置属性调用类的set方法方法,

自定义组合控件的思路

  1. 生命一个View对象继承自相对布局,线性布局或者其他的ViewGroup
  2. 在View对象重写构造方法,然后初始化布局,通过View.inflate()方法把我们自己定义的布局挂到界面当中。
  3. 自定义属性在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>
  1. 生命自定义属性的命名空间 xmlns:zl_pro="http://schemas.android.com/apk/res/cn.zlpro.mobilesafe"

  2. 可以在当前布局里面使用我们1条定义的控件了。

  3. 通过自定义函数的构造方法获取属性。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 自定义控件开发入门

问题专区

  1. 适配器监听原理

    ListView 针对List中每个item,要求 adapter “给我一个视图” (getView)。 所以在setAdapter()方法的时候就是给一个可以拿到装到当前容器的View生成器



  1. 控件怎么实现监听的。
  2. 自定义控件的原理,构造函数的作用完成

    其实即使在LayoutInflater加载成为布局的时候,通过反射响应的View,如果pull解析到该节点时就会调用改方法,绘制相应的View,源代码final View view = createViewFromTag(name, attrs);这行代码来创建VView对象,最后添加到父节点当中。最后如此反复得递归就可以把所有的布局绘制到窗口上面了。

  3. 怎么判断是子线程UI线程

  4. 学会google的最新设计语言

心得体会

  1. 后期精简代码,先把代码码完,接口逻辑装配
  2. 以后老师上课的代码不能拖到后期来处理。

创意

  1. 录视频添加自己科技评论

自定义组合控件,适配器原理-Day31的更多相关文章

  1. Android自定义控件之自定义组合控件

    前言: 前两篇介绍了自定义控件的基础原理Android自定义控件之基本原理(一).自定义属性Android自定义控件之自定义属性(二).今天重点介绍一下如何通过自定义组合控件来提高布局的复用,降低开发 ...

  2. Android自定义控件之自定义组合控件(三)

    前言: 前两篇介绍了自定义控件的基础原理Android自定义控件之基本原理(一).自定义属性Android自定义控件之自定义属性(二).今天重点介绍一下如何通过自定义组合控件来提高布局的复用,降低开发 ...

  3. 安卓自定义组合控件--toolbar

    最近在学习安卓APP的开发,用到了toolbar这个控件, 最开始使用时include layout这种方法,不过感觉封装性不好,就又改成了自定义组合控件的方式. 使用的工具为android stud ...

  4. Android 手机卫士--自定义组合控件构件布局结构

    由于设置中心条目中的布局都很类似,所以可以考虑使用自定义组合控件来简化实现 本文地址:http://www.cnblogs.com/wuyudong/p/5909043.html,转载请注明源地址. ...

  5. Android开发之自定义组合控件

    自定义组合控件的步骤1.自定义一个View,继承ViewGroup,比如RelativeLayout2.编写组合控件的布局文件,在自定义的view中加载(使用View.inflate())3.自定义属 ...

  6. Android Studio自定义组合控件

    在Android的开发中,为了能够服用代码,会把有一定共有特点的控件组合在一起定义成一个自定义组合控件. 本文就详细讲述这一过程.虽然这样的View的组合有一个粒度的问题.粒度太大了无法复用,粒度太小 ...

  7. Android自定义组合控件详细示例 (附完整源码)

    在我们平时的Android开发中,有时候原生的控件无法满足我们的需求,或者经常用到几个控件组合在一起来使用.这个时候,我们就可以根据自己的需求创建自定义的控件了,一般通过继承View或其子类来实现. ...

  8. Android开发学习笔记-自定义组合控件的过程

    自定义组合控件的过程 1.自定义一个View 一般来说,继承相对布局,或者线性布局 ViewGroup:2.实现父类的构造方法.一般来说,需要在构造方法里初始化自定义的布局文件:3.根据一些需要或者需 ...

  9. Android中自定义组合控件

    Android中自定义控件的情况非常多,一般自定义控件可以分为两种:继承控件及组合控件.前者是通过继承View或其子类,重写方法实现自定义的显示及事件处理方式:后者是通过组合已有的控件,来实现结构的简 ...

随机推荐

  1. BZOJ_1565_[NOI2009]_植物大战僵尸_(Tarjan+最大流+最大权闭合图)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1565 n*m的矩阵,可以种植植物,僵尸从图的右边进入吃植物.前面的植物可以保护后面的植物,还有 ...

  2. cocos2d-x 添加自定义字体---中文,英文

    1: 找到字体   xxx.ttf 2: 在xcode工程的 Info.plist文件中添加key Fonts provided by application,   或者 UIAppFonts(raw ...

  3. Android开发学习笔记:浅谈WebView

    本文转自:http://www.2cto.com/kf/201108/101518.html WebView(网络视图)能加载显示网页,可以将其视为一个浏览器.它使用了WebKit渲染引擎加载显示网页 ...

  4. ADO.NET 代码示例

    转自:http://msdn.microsoft.com/zh-cn/library/dw70f090 本主题中的代码列表演示如何使用下面的 ADO.NET 技术从数据库中检索数据: ADO.NET ...

  5. suse系统FTP问题

    1.修改FTP端口问题 在 这个配置文件中vi /etc/vsftpd.conf 添加 Listen_port=34 vi /etc/services ftp        21/tcp    # F ...

  6. java基础(二十一)IO流(四)

    这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...

  7. 各个平台 如何安装 Ruby 和 RubyGems

    原文地址:http://cloudfoundry-doc.csdn.net/frameworks/ruby/installing-ruby.html Last Updated: 2012-11-01 ...

  8. Yii框架zii.widgets.grid自定义按钮,ajax触发事件并提示

    相关类手册: http://www.yiichina.com/api/CButtonColumn   buttons 属性 public array $buttons; the configurati ...

  9. hdoj 1827 Summer Holiday【强连通分量&&缩点】

    Summer Holiday Time Limit: 10000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  10. hdoj 3665 Seaside【最短路】

    Seaside Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...