View与ViewGroup的概念

告别了第一章,迎来第二章——Android中的UI(User Interface)组件的详解, 而本节我们要学习的是所有控件的父类View和ViewGroup类!突发奇想,直接翻译官方文档对 这两个东西的介绍吧,对了,天朝原因,google上不去,Android developer上不去,我们可以 改hosts或者用vpn代理,当然也可以像笔者一样使用国内的API镜像,这里分享个吧: http://androiddoc.qiniudn.com/guide/topics/ui/overview.html 这个镜像是5.0的API!


UI Overview


在Android APP中,所有的用户界面元素都是由View和ViewGroup的对象构成的。View是绘制在屏幕上的用户能与之交互的一个对象。而ViewGroup则是一个用于存放其他View(和ViewGroup)对象的布局容器! Android为我们提供了一个View和ViewGroup子类的集合,集合中提供了一些常用的输入控件(比如按钮和文本域)和各种各样的布局模式(比如线性或相对布局)

User Interface Layout


你的APP的用户界面上的每一个组件都是使用View和ViewGroup对象的层次结构来构成的,比如 图 1。每个ViewGroup都是要给看不见的用于组织子View的容器,而它的子View可能是输入控件 或者在UI上绘制了某块区域的小部件。有了层次树,你就可以根据自己的需要,设计简单或者复 杂的布局了(布局越简单性能越好)

 图 1.一个UI布局的层次结构的插图

定义你的布局,你可以在代码中实例化View对象并且开始构建你的树,但最容易和最高效的方式来定义你的布局则是使用一个XML文件,用XML来构成布局更加符合人的阅读习惯,而XML类似与HTML 使用XML元素的名称代表一个View。所以< TextView >元素会在你的界面中创建一个TextView控件,而一个< LinearLayout >则会创建一个LinearLayout的容器! 举个例子,一个简单简单的垂直布局上面有一个文本视图和一个按钮,就像下面这样:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent" android:layout_height="fill_parent"android:orientation="vertical" ><TextView android:id="@+id/text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="I am a TextView" /><Button android:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="I am a Button" />
</LinearLayout>

当你的App加载上述的布局资源的时候,Android会将布局中的每个节点进行实例化成一个个对象,然后你可以为这些定义一些额外的行为,查询对象的状态,或者修改布局。 完整创建UI布局的引导,请参考XML Layouts

User Interface Components


你无需全部用View和ViewGroup对象来创建你的UI布局。Android给我们提供了一些app控件,标准的UI布局,你只需要定义内容。这些UI组件都有其属性介绍的API文档,比如操作栏,对话框和状态通知栏等。


本节小结

好吧,翻译可能比较拗口,哎,英语盲尽力了,简单归纳下上述内容:

Android里的图形界面都是由View和ViewGroup以及他们的子类构成的: View:所有可视化控件的父类,提供组件描绘和时间处理方法 ViewGroup: View类的子类,可以拥有子控件,可以看作是容器 Android UI中的控件都是按照这种层次树的结构堆叠得,而创建UI布局的方式有两种, 自己在Java里写代码或者通过XML定义布局,后者显得更加方便和容易理解! 也是我们最常用的手段!另外我们一般很少直接用View和ViewGroup来写布局,更多的 时候使用它们的子类控件或容器来构建布局!

Android 应用开发(35)---View与ViewGroup的概念相关推荐

  1. android应用的界面编程----View与ViewGroup的概念

    1 UI OverView Android中所有的UI元素都是通过View与ViewGroup来构建的,View是指屏幕中一块可与用户进行交互的空白,类似于java界面编程中的JPanel.为了界面布 ...

  2. android关闭触摸提示音,Android取消和开启View或则ViewGroup点击带有提示音

    前言 如果系统设置[声音]选项中关闭了[触摸提示音],则所有的View都没有提示音. 开启系统设置[触摸提示音]基础上,View或ViewGroup设置setOnTouchListener()或者se ...

  3. 【Android 应用开发】View 与 SurfaceView 区别

    文章目录 组件刷新所在线程 性能 资源 操作 主动更新与被动更新 View , SurfaceView , GLSurfaceView 组件刷新所在线程 1. View 主线程刷新 UI : View ...

  4. Android View系统分析之二View与ViewGroup

    目录 在Android View系统分析之从setContentView说开来(一)一文中,我们从setContentView开始阐述了Android中的视图层次,从设置内容布局到整个视图层次的建立的 ...

  5. Android 游戏开发必备的基础知识

    Android游戏开发: View类开发框架 SurfaceView开发框架 Graphics类开发框架 Paint与Color类介绍 Canvas介绍 几何图形绘制 字符串绘制 图像的绘制 图像的旋 ...

  6. Android移动开发视频之传感器应用开发

    视频课:零基础学安卓Android移动开发 学习内容 Ø 传感器的基本概念 Ø Android中常见的传感器 Ø 如何在Android中开发传感器应用 能力目标 Ø 了解传感器的基本概念 Ø 掌握An ...

  7. Android 用户界面开发

    一个好的应用界面的必要条件: 1. 内容清楚 2. 指示明白 3. 屏幕美观 4. 有亲切感 应用界面的设计是对控件进行适当的取舍及功能的选择和处理的过程.在程序设计中,需要对设计的方法反复推敲.琢磨 ...

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

    一. 自定义View介绍 自定义View时, 继承View基类, 并实现其中的一些方法. (1) ~ (2) 方法与构造相关 (3) ~ (5) 方法与组件大小位置相关 (6) ~ (9) 方法与触摸 ...

  9. Android开发自定义View

    Android中View组件的作用类似于Swing变成中的JPanel,它只是一个空白的矩形区域,View组件中没有任何内容.对于Android应用的其他UI组件来说,它们都继承了View组件,然后在 ...

最新文章

  1. 两个单链表生成相加链表
  2. 疯狂kotlin讲义连载之Kotlin的基础类型--null安全
  3. Java多线程之线程中止
  4. boost::hana::mod用法的测试程序
  5. Object.hashCode()与Object.equals()
  6. mybaties与hibernate的不同点
  7. *args, **kwargs的用法
  8. P1-0:项目框架搭建
  9. Cookies和Session(三)--SessionState
  10. ​【UI界面】Foobar2000 FlatLite 整合版
  11. 安利一个excel对比
  12. python爬虫用AI技术-破解企业工商数据抓取+网络爬虫+网站数据采集+数据抓取遇到的三大问题
  13. JS函数式编程——来源freecodecamp
  14. core java购买_Core Java =
  15. Kyrie Irving邀请粉丝加入Lineage Logistics的Share A Meal运动,帮助受COVID-19疫情影响的人们
  16. 关于XPS的一点思考(1)-XPS的起源
  17. MAINTAIN翻译软件测试,maintain是什么意思_maintain的翻译_音标_读音_用法_例句_爱词霸在线词典...
  18. 标贝科技声音克隆技术赋能 定制语音功能让陪伴触手可及
  19. 我的职业理想之计算机类1000,我的职业理想
  20. matlab与amesim匹配,amesim与matlab接口

热门文章

  1. 【c语言】指针数组和数组指针-解释和用法
  2. 计算机垃圾回收的过程,计算机体系 – 垃圾收集器
  3. 【Gamma】 Phylab 发布说明
  4. 如何实现Python调用C代码--python与C之间如何通信(swig)
  5. mysql - 索引_07
  6. CMU Deep Learning 2018 by Bhiksha Raj 学习记录(8)
  7. zookeeper的集群配置
  8. C# .net基于Http实现web server(web服务)
  9. ASP.NET文件夹
  10. Java中的数组,java开发面试笔试题