首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android | xml和view的那些事

    x2c、 鸿洋大佬最近研究的:自定义Factory来创建view的思路ViewOpt、 天猫:把xml压缩成二进制文件,可动态下发、流式解析的VirtualView、 本文约5000字,阅读大约13分钟...xml二进制文件而非原始文件,这点后面分析 View inflate(XmlPullParser parser, ViewGroup root, boolean attachToRoot) {...我们知道运行时解析的xml是经过预处理的二进制文件(apk打包时做的),那我们可以大胆猜测一下,运行时的解析是不是在做一些流式、指针移位之类的读操作?...比如,把xml二进制文件进行各种分区,如文件头、标签区、属性区、字符串常量池区,然后解析时则用如readShort、readLong之类的方式进行指针移位,从而读出相应的view标签、view属性,有点类似...xml文件的预处理:打包时将xml进行二进制编译,压缩xml体积、提升运行时的解析效率。

    1.9K10

    Android | xml和view的那些事

    x2c、 鸿洋大佬最近研究的:自定义Factory来创建view的思路ViewOpt、 天猫:把xml压缩成二进制文件,可动态下发、流式解析的VirtualView、 本文约5000字,阅读大约13分钟...xml二进制文件而非原始文件,这点后面分析 View inflate(XmlPullParser parser, ViewGroup root, boolean attachToRoot) {...我们知道运行时解析的xml是经过预处理的二进制文件(apk打包时做的),那我们可以大胆猜测一下,运行时的解析是不是在做一些流式、指针移位之类的读操作?...比如,把xml二进制文件进行各种分区,如文件头、标签区、属性区、字符串常量池区,然后解析时则用如readShort、readLong之类的方式进行指针移位,从而读出相应的view标签、view属性,有点类似...xml文件的预处理:打包时将xml进行二进制编译,压缩xml体积、提升运行时的解析效率。

    2K11

    Android应用setContentView与LayoutInflater加载解析机制源码分析

    2-3 窗口PhoneWindow类的installDecor方法 回过头,我们继续看上面PhoneWindow类setContentView方法的第6行installDecor();代码,在PhoneWindow...别急,到这里指定机智的人会问,我们在写App时Activity中指定布局文件的时候,xml布局文件或者我们用java编写的View最外层的那个布局是可以指定大小的啊?...View时在构造函数inflate一个xml后可以实现onFinishInflate这个方法一些自定义的逻辑。...但是使用merge标签还是有一些限制的,具体是:merge只能用在布局XML文件的根元素;使用merge来inflate一个布局时,必须指定一个ViewGroup作为其父元素,并且要设置inflate的...当我们自定义View时在构造函数inflate一个xml后可以实现onFinishInflate这个方法一些自定义的逻辑。

    46920

    Carson带你学Android:自定义View的基础都在这里了!

    视图分类 视图View主要分为两类: 单一视图:即一个View、不包含子View,如TextView 视图组,即多个View组成的ViewGroup、包含子View,如LinearLayout Android...视图类简介 视图的核心类是:View类 View类是Android中各种组件的基类,如View是ViewGroup基类 View的构造函数:共有4个,具体如下: 自定义View必须重写至少一个构造函数...视图结构 对于包含子View的视图组(ViewGroup),结构是树形结构 ViewGroup下可能有多个ViewGroup或View,如下图: 这里需要特别注意的是:在View的绘制过程中,永远都是从...ARGB4444:四通道低精度(16位) RGB565:Android屏幕默认模式(16位) Alpha8:仅有透明通道(8位) 这里需要特别注意的是: 字母:表示通道类型; 数值:表示该类型用多少位二进制来描述.../** * 定义方式1:xml * 在/res/values/color.xml文件中定义 */ xml version="1.0" encoding="utf-8"?

    49220

    良好的知识储备_listview控件的用法

    那时候在布局文件XML里,写的最多的肯定是android:layout_width = "match_parent"之类的了。...基类LayoutParams是ViewGroup类里的一个静态内部类(看吧,这就证明了LayoutParams是与父控件直接相关的),它的功能很简单,只提供了width和height两个属性,对应于xml...自从有了ViewGroup.LayoutParams后,我们就可以在自定义ViewGroup时,根据自己的逻辑实现自己的LayoutParams,为孩子们提供更多的布局属性。...所以,我们在自定义ViewGroup时,几乎都要自定义相应的LayoutParams。这一节呢,就是对如何自定义LayoutParams进行一个总结。...而对于自定义的FlowLayout来说,模仿LinearLayout的写法,可以在attrs.xml文件里这么写: <declare-styleable name="FlowLayout_Layout"

    28520

    自定义View学习——三种实现方式

    XML布局文件,将我们想要的控件搭配放入我们的布局中,位置等我们可以按需设置。...相关文章解释 2、继承已有控件:继承已有的控件或者布局来创建新控件,可以保留父控件已有的特性,新增引入新的特性,省去了自绘控件带来的测量、布局带来的出错率,因为父控件已经帮我们实现了这些操作。...文章解释 3、自绘控件:新建类通过继承View或ViewGroup生成新控件,这种控件可以说是最难的一种了;在自定义控件内部,通过画笔(Paint)和画布(Canvas)绘制控件,需要掌握绘图知识,事件分发...但在ViewGroup中,当它有背景的时候就会调用onDraw()方法,否则就会跳过onDraw()直接调用dispatchDraw();所以如果要在ViewGroup中绘图时,往往是重写dispatchDraw...我们是重写onDraw()函数 得出结论:在绘制View控件时,需要重写onDraw()函数,在绘制ViewGroup时,需要重写dispatchDraw()函数。

    76330

    【Android 应用开发】自定义View 和 ViewGroup

    自定义View介绍 自定义View时, 继承View基类, 并实现其中的一些方法. (1) ~ (2) 方法与构造相关 (3) ~ (5) 方法与组件大小位置相关 (6) ~ (9) 方法与触摸按键相关...文件 在这个xml文件中, 引入自定义的布局, 使用完整的类名包名可以引入该自定义View组件; 引入组件后, 充满整个布局; 类; 包含关系 : ViewGroup中可以包含View和ViewGroup, ViewGroup可以无限嵌套; View和ViewGroup关系图解 :  抽象类 : ViewGroup是一个抽象类..., 作为容器的类通常是ViewGroup的子类; ViewGroup子类对象有 : LinearLayout, FrameLayout等布局; 2....View介绍 View可以有两种方式创建 : 一种是靠XML文件创建, 一种是靠代码创建; 这里只是简单的介绍下, View详细的属性会单独有一篇博客进行总结; View创建关注的方面 :  (1)设置属性

    55020

    Android LayoutParams详解「建议收藏」

    提示:本文的源码均取自Android 7.0 前言 在平时的开发过程中,我们一般是通过XML文件去定义布局,所以对于LayoutParams的使用可能相对较少。...但是在需要动态改变View的布局参数(比如宽度、位置)时,就必须要借助这个重要的类了。本文将结合具体源码详细讲解LayoutParams的相关知识。...其实最典型的例子就是在Activity中调用setContentView方法,系统会通过LayoutInflater将整个XML文件解析为View Tree,从根布局开始为每个View和ViewGroup...自定义LayoutParams 如果我们需要自定义ViewGroup的话,一般也会自定义LayoutParams,这样可以提供一些个性化的布局参数。...此外,还需要在XML文件中定义declare-styleable资源属性,一般会创建一个名为attrs.xml文件放置这些属性。

    2.3K10

    Android:你要了解的自定义View基础概念都在这里了!

    前言 自定义View原理是Android开发者必须了解的基础,在了解自定义View之前,你需要有一定的知识储备。 本文将全面解析关于自定义View中的所有知识基础。 1....View类简介 View类是Android中各种组件的基类,如View是ViewGroup基类 View的构造函数:共有4个,具体如下:(注:自定义View必须重写至少一个构造函数) / 如果View是在...文件中定义颜色 在/res/values/color.xml 文件中如下定义: <?...#ff0000 //高精度 - 不带透明通道红色 #aaff0000 //高精度 - 带透明通道红色 9.3 引用颜色的方式 9.3.1 在java文件中引用xml...--在layout文件中引用在/res/values/color.xml中定义的颜色--> android:background="@color/red" <!

    54510

    LayoutInflater 布局渲染工具原理分析

    LayoutInflater其实是一个布局渲染工具,其本质就只是一个工具,说白了LayoutInflater的作用就是根据xml布局文件构建View树,自定义View的时候经常用到,常用的做法如下:...这里的xml布局文件对应的资源项的值是一个字符串,其实是一个布局文件路径,它指向一个经过编译的二进制格式保存的Xml资源文件。...有了这个Xml资源文件的路径之后,会再次通过loadXmlResourceParser来对该Xml资源文件进行解析,从而得到布局文件解析对象XmlResourceParser。...LayoutInflater其实就是一个工具类,虽然是通过服务方式获取的PhoneLayoutInflater对象,但是它本身算不上服务,也不会牵扯到Binder通信。...LayoutInflater的主要作用就是根据xml文件,通过反射的方式,递归生成View树。

    54290

    ListView优化和列表首尾使用

    一、使用convertView 前面讲的自定义ArrayAdapter和自定义BaseAdapter,都会重写getView()方法,虽然可以正常使用,但其实效率非常低。...接下来就在“自定义BaseAdapter”的基础上来开始优化,除了MyBaseAdapter类的getView()方法代码会发生改变,其他不变。...接下来继续在“自定义BaseAdapter”的基础上来开始优化,除了MyBaseAdapter类中增加一个持有者类和修改getView()方法代码,其他不变。...给ListView添加HeadView和FootView,当ListView滑动至列表第一项时使HeadView滑动出现,当ListView滑动至列表最后一项时使FootView滑动出现。...仍然在“自定义BaseAdapter”的基础上来完成。 首先设计一个ListView列表头布局list_headview_layout.xml,主要是一个搜索框,代码如下: <?

    1.5K80
    领券