下面的这张图呈现了Android中最基本的UI构造块。




该图片表示的逻辑结构也是出自《Android系统原理及开发要点详解》一书。

Android中的UI元素常常在布局文件(Layout)中进行描述,在Java源代码中通过findViewById()函数根据ID获得每一个View的句柄,并且转换成实际的类型来使用。

android.view.View的扩展者也称作widget,通常包含在android.Widget包中,也就是在UI元素中使用的UI元素。

这些android.view.View的扩展者,通常可以在应用程序中直接使用,也可以在应用程序中再扩展一次使用。


android.view.View的一个重要的扩展者是android.view.ViewGroup类,这个类表示一个视图的集合,在这个视图的集合可以包含众多的子视图。android.view.ViewGroup类的扩展者即是多个视图的组合,本身也是一个视图。


1、Button类的扩展关系如下所示:

-android.view.View

-android.widget.TextView

-android.widget.Button

Button类扩展了TextView类,TextView类是View的直接扩展者,表示一个文本区域。Android中以文本为主要内容的各种UI元素均扩展自这个类。

Button类具有一个名为CompoundButton(组合按钮)的扩展者,CompoundButton又有了RadioButton CheckBox和ToggleButton(开关按钮,包含开关两种状态)。


2、ImageView类是View的直接扩展者。它又被称为图像视图,是Android中可以直接显示图形的UI元素,其中的图像源是其核心。ImageView有多种不同的设置图像源的方法:

void setImageResource(int resId) //设置图像源的资源ID

void setImageURI(Uri uri) //设置图像源的URI

void setImageBitmap(Bitmap bm) //设置一个Bitmap的位图为图像源。

另外,ImageView还支持缩放、剪裁等功能。


3、ImageButton:图像按钮

很简单就是显示一个带有图像的按钮。

注意:在Android中,图像按钮ImageButton和普通按钮Button并无扩展关系。


4、ViewGroup


ViewGroup1是一个视图组,以水平布局的方式包含了View2和View3;

ViewGroup2是一个视图组,以垂直的方式包含了View4、ViewGroup3和ViewGroup4.

ViewGroup4又以水平布局的方式包含了View5和View6。

根据以上的原则,当屏幕需要包含多个视图时,必须组织在一个视图组中。

由于视图组本身也是一个视图,因此视图组还可以包含视图组。

注意:在这里面有一个主要的限制:在没有视图组的情况下,两个以上的视图(也包括视图组)是不能并列的。


ViewGroup视图组具有一系列的扩展者:AdapterView、 AbsoluteLayout、 FrameLayout、LinearLayout、 RelativeLayout、Adapterview<T extends android.widget.Adapter>。

在Android中,有一些预置的ViewGroup可以直接像View一样使用(如WebView),还有一些ViewGroup本身没有功能,只是提供屏幕上的各种布局(如AbsoluteLayout、RelativeLayout、FrameLayout等)


原文地址:点击打开链接

更多相关文章

  1. Android(安卓)View视图绘制
  2. android事件拦截处理机制详解
  3. android中使用线程池和临时缓存优化网络图片加载
  4. Flutter和Android中的View区别
  5. 解决办法Android中Error generating final archive: Debug certi
  6. android中android:src和android:background区别
  7. Android学习三UI之Layout
  8. Android中几种图像特效处理的集锦!!!
  9. Android:(8)GridView与ImageView

随机推荐

  1. 广州市翊腾通讯设备有限公司
  2. js的变量与常量、常用数据
  3. 推荐!10款最好用的Python IDE
  4. 详解linux如何搭建NTP北斗授时服务器
  5. 练习CURD常用操作,select查询与关联操作,
  6. 第11章 0223-命名空间2与数据库基础1,学习
  7. JavaScript初学习之事件、常用表单事件、
  8. 解构赋值与流程控制
  9. PHP数据库实操:无刷新分页和编辑删除功能
  10. SQL Server学习之路(一)