Android View 学习第一篇--View 探秘
来源:互联网 发布:win7 64位仿mac主题包 编辑:程序博客网 时间:2024/06/05 06:47
咱们做Android应用开发的小伙伴们,每天接触的要么是逻辑代码(以前还可以说Java,现在Kotlin来了,不好说了),要么就是xml布局,这其中很大一部分都跟UI中的View 有关,LinearLayout、RelativeLayout、TextView、Button……,诸如此类(凡此种种),都是View(含View的子类),无论多么常见的传统控件,还是功(效)能(果)强(华)大(丽)的自定义控件,都逃不开这个View的圈圈。今天咱们来了解下关于这个View的一些小知识,或许会加深咱们对View的理解,提高自定义View的硬实力。 今天就不说Android UI层的深层原理了,仅针对View的相关内容,进行简单的知识梳理。关于View的官方文档,打开一看,网页的进度条都缩小到快看不见了,你说View里面可说的内容多不多~
官方文档:https://developer.android.google.cn/reference/android/view/View.html
1、View 初识
应用UI界面上的每个View 元素,都是一个矩形的模块,多个不同的模块,在指定的条件限制下,拼合成了我们看到的精美的UI界面。(为毛看到很多应用中的View 元素是圆的?你看QQ中的头像,就不是方的。其实所有的View控件,实质上都是方的,只是因为很多View元素为了美化效果,把不需要展示出来的地(像)方(素)设置为了透明的,在我么看起来它就不再是简单的矩形结构了)。
2、View 模型
如果学习过其他涉及UI的编程语言,应该不难理解上图的View 模型,每个View元素都是一个矩形,外面的margin(外边距)是在View 的真是大小的外围加上一个边距(可以用来控制View摆放在哪里),里面的padding(内边距)是在View的实际大小的内侧留空的一段距离(这段距离的空间里,View只能展示背景的颜色,不能显示前景),也就是说View 的实际大小,是不包含margin的,但是包含Padding,而View的前景内容,只能显示在content的范围内。 有以下几点:
- 考虑View 占多大空间时,需要考虑把margin的尺寸计算进去;
- 考虑View真实尺寸时,需要考虑padding和content的尺寸;
- 一个View的最终展示效果,是由背景、前景两部分组合成的(还有其他各方面非原理性的原因,暂不讨论)。
3、View 类说明
package:android.view.View;
public class View extends Object implements Drawable.Callback, KeyEvent.Callback, AccessibilityEventSource{ … }
View类是所有Android控件的基类,无论是TextView这种独立的View控件,还是Linear|Layout这种ViewGroup,最终都是继承于View类,可以这样理解,View确定了UI的基本模式,具体的展示什么就是各个View子类自己定义的。
关于View的展示,主要涉及两个方法,分别是方法onMeasure(Xx x..)和onDraw(Yy y..),暂不讨论这两个方法的具体内容,仅讨论其功能。onMeasure(Xx x..)方法主要用来测量View的真实大小(即View 的宽和高,含各边padding),onDraw(Yy y..)方法主要用来绘制View中展示的内容(文字、图形等)。关于自定义View,主要是继承View之后,重写这两个方法,以达到自己期望的效果。
4、View 的属性设置
Android 的布局主要以XML格式的布局文件为主,布局文件中,每个节点都是一个View(可能是个ViewGroup,一个大的View,只是它包含了多个子View),每个节点中描述了个View 的属性(即通过View的XML属性来控制View的效果,margin、padding、background…),在Java(或Kotlin)代码中,View也有对应每个xml属性的方法,用以在代码中动态设置个View 相关属性。 例:TextView 有”android:text”属性,设置展示的文本,同时也有setText(Xx x)方法。 更多的属性,请参阅各控件的官方文档说明。
关于View的具体方法,后续文章逐步分析。
- Android View 学习第一篇--View 探秘
- Android小白自定义View第一篇
- Android开源项目第一篇:个性化控件(View)篇
- Android开源项目第一篇:个性化控件(View)篇
- Android开源项目第一篇:个性化控件(View)篇
- 自定义View第一篇(view生命周期的简介)
- 安卓自定义View(第一篇)
- Android开发中View的事件分发探秘
- View学习(android)
- Android View学习示例
- Android View学习示例
- Android View学习示例
- Android学习 自定义View
- android view 的学习
- android学习View Animation
- android view的学习
- android view 动画学习
- 【学习】Android View
- 5-在测试中使用Docker
- HenCoder Android 开发进阶:自定义 View 1-4 Canvas 对绘制的辅助
- HenCoder Android 进阶 UI 1-7:属性动画(进阶篇)
- 知乎 x RxJava Meetup (北京)
- Android:下拉上滑显示与隐藏导航栏和状态栏
- Android View 学习第一篇--View 探秘
- Gym 101201J Shopping(RMQ +二分 )
- 微信开放平台 解密component_verify_ticket 交流 学习
- ES学习之路(一)
- Cocos2dx 读写文件,首选项
- servlet和Filter的区别
- Struts项目中集成使用ueditor
- SP二次开发用户列表栏用户允许多选
- C# 定时器个人学习笔记