自定义组合控件,适配器原理-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. 【Android 复习】:第02期:引导界面(二)使用ViewPager实现欢迎引导页面

    一.实现的效果图 也许是养成了这样一个习惯,每次看别人的代码前,必须要先看实现的效果图达到了一个什么样的效果,是不是跟自己想要实现的效果类似,有图才有真相嘛,呵呵.           二.编码前的准 ...

  2. 杨佩昌:中国官员去德国考察看什么两眼发光 z

    令中国人诧异的德国物价 只要是花费大量人工的行业,就很贵 □杨佩昌 德国是欧洲商品价格的洼地,连精明的瑞士人也开车到德国加油购物 一 2012年凤凰网组织十大著名博主前往澳洲考察并与前总理陆克文对话, ...

  3. Mysql技术内幕-笔记-第二章 数据类型

    第二章 数据类型 Mysql中尽量不要使用UNSIGNED,因为可能会带来一些意想不到的效果 SHOW CREATE TABLE tablename\G;查看表的创建语句 ZEROFILL会将宽度小于 ...

  4. Unity3d shader之SWAP Force Depth-of-Field Shader

    由于博主常年逃课,所以期末考试期间只能突击,但偶尔还能拿个奖学金啥的,哈哈,所以近一个月没有做游戏,也没有发博客= =... 这个景深的方法很简单 我们需要求的是CoC(circle of confu ...

  5. HDOJ/HDU 1242 Rescue(经典BFS深搜-优先队列)

    Problem Description Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is ...

  6. FireMonkey隐藏任务栏图标

    FMX(FireMonkey)可以轻松实现很多VCL无法或难以实现的特效,所以将FMX程序作为界面,打包入DLL由VCL程序调用,是一个不错的方案.为了程序的完整性,你不想看见FMX程序在任务栏上显示 ...

  7. 打印从1到k之间的所有素数

    问题分析:素数是指大于1且只能被它本身和1整除的数,根据定义可以从2开始对一个数取余数一直到它本身,若它有第三个整除数,则可以判定它不是素数.若使用这种方法,会浪费时间,我们可以判断2到这个数的算术平 ...

  8. 为什么 UDP 有时比 TCP 更有优势

    随着网络技术飞速发展,网速已不再是传输的瓶颈,UDP协议以其简单.传输快的优势,在越来越多场景下取代了TCP,如网页浏览.流媒体.实时游戏.物联网. 1.网速的提升给UDP稳定性提供可靠网络保障 CD ...

  9. CSS 最核心的几个概念

    CSS 中最核心的几个概念,包括:盒模型.position.float等. 这些是 CSS 的基础,也是最常用的几个属性,它们之间看似独立却又相辅相成. 元素类型 HTML 的元素可以分为两种: 块级 ...

  10. engine中调整Element的上下显示顺序(遮盖)

    pGraphicsContainer.AddElement(pElement, 0); Engine中IGraphicsContainer类似于栈,加Element时,默认加到第一个,所以会将之前加的 ...