1 UI OverView

  Android中所有的UI元素都是通过View与ViewGroup来构建的,View是指屏幕中一块可与用户进行交互的空白,类似于java界面编程中的JPanel。为了界面布局,A Group对象可以包含多个View或ViewGroup(由于ViewGroup是View的子类)。

  View的子类集合主要包括各种Input 控件,ViewGroup的子类集合包括各种布局控件。

2 user Interface layout

  每个应用程序的界面UI控件都是由如下图中的层次关系构成。每个ViewGroup都是成员View(input 控件或者UI上定义的小部件)的不可见容器。层次结构根据需要可复杂可简单(越简单性能越好)。

  用户界面构建有两种方法:java代码构建(跟java界面编程相似);借助xml进行界面布局。对于View类而言,它是所有UI控件的基类,所以View所包含的xml属性和方法是所有组件都可以使用的。如下是一个layout文件示例:

<?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>

View Code

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

3 view类的xml属性及其说明

XML属性 说明
android:alpha 设置该组件的透明度
android:background 设置该组件的背景颜色
android:clickable 设置该组件是否可以激发单击事件
android:contentDescription 设置该组件的主要描述信息
android:drawingCasheQuanlity 设置该组件所使用的绘制缓存质量
android:fadeScrollbars 设置该组件不使用滚动条时,是否淡出显示滚动条
android:fadingEdge 设置滚动该组件时边界是否使用淡出效果
android:fadingEdgeLength 设置淡出边界长度
android:focusable 设置该组件是否可以得到焦点
android:focusableInTouchMode 设置该组件在触摸模式下是否可以得到焦点
android:id 设置该组件ViewById来获取它
android:isScrollContainer 设置该组件是否可以作为可滚动容器使用
android:keepScreenOn 设置该组件是否会强制手机屏幕一直打开
android:longClickable 设置该组件是否可以响应长单击事件
android:minHeight 设置该组件的最小高度
android:minWidth 设置该组件的最小宽度
android:nextFocusDown 设置焦点在该组件上,且按向下键时获得焦点的组件id
android:nextFocusRight 设置焦点在该组件上,且按向右键时获得焦点的组件id
android:nextFocusLeft 设置焦点在该组件上,且按向左键时获得焦点的组件id
android:nextFocusUp 设置焦点在该组件上,且按向上键时获得焦点的组件id
android:onClick 为该组件的单击事件绑定监听器
android:padding 在组件的四边设置填充区域
android:paddingLeft 在组件的左边设置填充区域
android:paddingRight 在组件的右边设置填充区域
android:paddingBottom 在组件的底边设置填充区域
android:paddingTop 在组件的顶边设置填充区域
android:rotation 设置该组件的旋转角度
android:rotationX 设置该组件绕X轴旋转的角度
android:rotationY 设置该组件绕Y轴旋转的角度
android:saveEnabled 设置为false,当该组件被冻结时不会保存其状态
android:scaleX 设置该组件水平方向的缩放比
android:scaleY 设置该组件垂直方向的缩放比
android:scrollX 设置该组件初始化后的水平滚动条偏移
android:scrollY 设置该组件初始化后垂直滚动条偏移

android:scrollbarAlwaysDrawHorizontalTrack

设置该组件是否显示水平滚动条的轨迹
android:scrollbarAlwaysDrawVerticalTrack 设置该组件是否显示垂直滚动条的轨迹
android:scrollbarDefaultDelayBeforeFade 设置滚动条在淡出隐藏之前延迟多少毫秒
android:scrollbarFadeDuration 设置滚动条淡出隐藏需要多少秒
android:scrollbarSize 设置垂直滚动条的宽度和水平滚动条的高度
android:scrollbarStyle 设置滚动条的风格和位置:insideOverlay
android:scrollThumbHorizontal 设置该组件水平滚动滑块对对应的Drawable对象
android:scrollThumbVertical 设置该组件垂直滚动滑块对对应的Drawable对象
android:scrollTrackbHorizontal 设置该组件水平滚动轨道对对应的Drawable对象
android:scrollTrackbVertical 设置该组件垂直滚动轨道对对应的Drawable对象
android:scrollbar 设置该组件滚动时显示几个滚动条:none horizontal,vertical
android:soundEffectsEnabled 设置该组件被单击时是否使用音效
android:tag 为组件设置一个字符串tag值,可以通过view的getTag 获取字符串,或通过findViewByTag查找该组件

android:transformPivotX

设置该组件旋转时旋转中心的X坐标
android:transformPivotY 设置该组件旋转时旋转中心的Y坐标
android:translationX 设置该组件在x方向上的位移
android:translationY 设置该组件在Y方向上的位移
android:visibility 设置该组件是否可见

 4 ViewGroup类

  ViewGroup继承了View类,故其可以当作普通的View来使用;但ViewGroup是一个抽象类,实际都是使用ViewGroup的子类作为容器类。ViewGroup容器控制容器内组件的分布依赖于ViewGroup.LayoutParams与ViewGroup.MarginLayoutParams两个内部类。这两个内部类也提供了一些XML属性,ViewGroup容器内子组件可以指定这些xml属性。

4.1 ViewGroup.LayoutParams所支持的两个xml属性

xml属性 说明
android:layout_height 指定该子组件的布局高度fill_parent/match_parent/wrap_parent
android:layout_width 指定该子组件的布局宽度fill_parent/match_parent/wrap_parent

4.2 ViewGroup.MarginLayoutParams:控制子组件周围的页边距

xml属性 说明
android:layout_marginBottom 指定该子组件下边的页边距
android:layout_marginLeft 指定该子组件左边的页边距
android:layout_marginRight 指定该子组件右边的页边距
android:layout_marginTop 指定该子组件上边的页边距

3 线性布局管理器LinearLayout

  线性布局由LinearLayout类代表,将容器里的组件一个挨一个地排列起来,LinearLayout不会自动换行,到末尾后剩余的组件将不会被显示出来。LinearLayout支持的常用xml属性及其说明。

xml属性 说明
android:baselineAligned 该属性为false,将会阻止布局管理器与它的子元素基线对其
android:divider 设置垂直布局时,两个按钮之间的分隔条
android:gravity 设置布局管理器内组件的对齐方式。该属性支持top/button/left/right/center_vertical/fill_vertical...
android:measureWithLargestChild 当属性设置为true时,所有带权重的子元素都会具有最大元素的最小尺寸
android:orientation 设置布局管理器内组件的排列方式vertical/horizontal默认值

3.1 LinearLayout.LayoutParams控制

xml属性 说明
android:layout_gravity 指定该布局管理器内子组件布局方式
android:layout_weight 指定该子元素在linearLayout中所占的权重

转载于:https://www.cnblogs.com/penghuster/p/4878703.html

android应用的界面编程----View与ViewGroup的概念相关推荐

  1. Android 应用开发(35)---View与ViewGroup的概念

    View与ViewGroup的概念 告别了第一章,迎来第二章--Android中的UI(User Interface)组件的详解, 而本节我们要学习的是所有控件的父类View和ViewGroup类!突 ...

  2. Android应用的界面编程

    Android应用的界面编程 一.实验目的 了解界面编程和视图 掌握Android界面的几种布局方式 掌握常用的集中UI组件 二.实验内容 设计一个计算器界面,如下图所示. 创建一个项目,界面中包含5 ...

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

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

  4. Android 控件架构及View、ViewGroup的测量

    附录:示例代码地址 控件在Android开发的过程中是必不可少的,无论是我们在使用系统控件还是自定义的控件.下面我们将讲解一下Android的控件架构,以及如何实现自定义控件. 1.Android控件 ...

  5. Android精讲--界面编程2(布局管理器)

    为什么需要布局管理器 为了更好地管理Android应用的用户界面里的各种组件,Android提供了布局管理器.通过使用布局管理器,Android应用的图形用户界面具有良好的平台无关性.通常来说,推荐使 ...

  6. 二、Android应用的界面编程(六)ProgressBar及其子类[SeekBar、RatingBar]er

    通常用于向用户显示某个耗时操作完成的百分比. Android支持几种风格的进度条,通过style属性可以为ProgressBar指定风格.该属性支持如下几个属性值. # @android:style/ ...

  7. Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件...

    UI的描述 对于Android应用程序中,所有用户界面元素都是由View和ViewGroup对象构建的.View是绘制在屏幕上能与用户进行交互的一个对象.而对于ViewGroup来说,则是一个用于存放 ...

  8. 精通android布局,Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件...

    标题图 UI的描述 对于Android应用程序中,所有用户界面元素都是由View和ViewGroup对象构建的.View是绘制在屏幕上能与用户进行交互的一个对象.而对于ViewGroup来说,则是一个 ...

  9. Android(四)——View和ViewGroup

    文章目录 1. 用户界面概述 2. View类常用属性 3. ViewGroup类 4. UI组件的层次结构 1. 用户界面概述 在Android APP中,所有的用户界面元素都是由View和View ...

最新文章

  1. 转型会员制,云集能否讲好电商下半场故事?
  2. UVa11205 The Broken Pedometer
  3. Python实现单向链表
  4. 年轻人应该做的和不该做的
  5. 模版 ----- 一维前缀和与二维前缀和
  6. Android4.4 添加系统属性
  7. 部署hexo后github pages页面未更新或无法打开问题
  8. 如何把HTML背景图片变透明,photoshop怎样把图片背景变透明
  9. 风险管理-输入、输出、工具和技术
  10. 【LaTeX】下载及安装步骤
  11. Qt文档阅读笔记-Ping Pong States Example解析
  12. [轻松拿offer]Web前端面试真题|带详解!
  13. 暴雪中国:《魔兽世界》团队正与国服地区新的潜在发行合作伙伴进行洽谈
  14. 大型医院影像PACS系统三维重建技术(获取数据、预处理、配准、重建和可视化)
  15. Linux驱动——LED驱动的编写与实验
  16. Spfa算法(可以求有负权的图)
  17. 计算机控制面板的作用,什么是控制面板;它有什么作用?
  18. ZLG震撼发布开源GUI引擎AWTK
  19. 夫唯不争,天下莫能与之争
  20. 熟悉linux开发环境_熟悉但“新”的分析开发方式

热门文章

  1. php通过ajax下载文件,通过ajax调用php下载文件
  2. C 11 实现的 100行 线程池
  3. centos 虚拟机glibc升级_分享Centos6.5升级glibc过程
  4. cad 怎么显示块句柄_cad怎么显示工具栏
  5. android-ViewPager不能显示
  6. 单E1光端机分类及技术指标详解
  7. 【渝粤题库】国家开放大学2021春3897商务英语1题目
  8. android 年月日时分秒控件,Android 年月日时分秒时间选择器
  9. php ajax 表格编辑,php ajax表格实时编辑 PHP Ajax实现表格实时编辑
  10. html页面调用存储过程,用WebBrowser实现HTML界面的应用