Android开发自学笔记(Android Studio)—4.界面编程与View组件简单介绍
一、引言
Android应用开发最重要的一份内容就是界面的开发,无论你程序包含的内容多么优秀,如若没有一个良好的用户交互界面,最终也只是会被用户所遗弃。Android SDK提供了大量功能丰富的UI组件,开发者只需要拖拖拽拽就能完成简单的应用,这些只是界面的展示,如果要完成优秀的用户交互,事件响应机制当然也是重点,这是后话。
Android SDK中绝大部分UI组件都在androd.widget及其子包、android.view及其子包下,Android应用中的所有UI组件都继承了View类,View类还有一个重要的子类:ViewGroup,下面简单介绍下这两个类。
二、View
View是什么,可能每个人都有自己不同的理解。在Android官方文档中是这么说的:这个类表示了用户界面的基本构建模块。一个View占用了屏幕上的一个矩形区域并且负责界面绘制和事件处理。View是用来构建用户界面组件(Button,Textfields等等)的基类。其实,说白了,View就是一个空白的矩形区域,类似于winform中的panel,swing开发中的JPanel,我们可以在这个空白的矩形区域内定义自己的控件。
对于View类而言,它是所有UI组件的基类,所以它是属性是所有组件都可以使用的,所以建议认真看一下API中关于View类的属性。
三、ViewGroup
ViewGroup是View的子类,所以它也可以被当成View使用,它可以作为容器来放其他组件,由于ViewGroup是一个抽象类,所以实际通常都是使用ViewGroup的子类,例如UI组件的中布局类UI组件都是继承自ViewGroup的。
四、Context
在实际操作中,无论创建哪种UI组件,都需要传入一个Context的参数,而Context是什么呢?在加载资源、启动一个新的Activity、获取系统服务、获取内部文件(夹)路径、创建View操作时等都需要Context的参与,可见Context的常见性。Context字面意思上下文,或者叫做场景,也就是用户与操作系统操作的一个过程,比如打电话,场景包括电话程序对应的界面,以及隐藏在背后的数据;Android系统的角度来理解:Context是一个场景,代表与操作系统的交互的一种过程。从程序的角度上来理解:Context是个抽象类,而Activity、Service、Application等都是该类的一个实现,因此,Activity、Service都可以直接作为Context使用。
五、结语&预告
从上一章到这一章,隔了太久的时间了,最近公司管理层变动,人员流动很大,所以作为小人物的我忙的热火朝天…进度有点跟不上了,但是又不想放下技术的学习,所以挤出来点时间继续好好看书、看博客好好学习。Android Studio最新的版本都已经更新了1.5.X了,我机器上也更新到了1.4.1,所以文章标题也不再写版本信息了,只要是1.3.x后的版本应该都是支持的,有问题可以多互相沟通。
好了,说点学习的东西,对于UI组件的学习,我觉得疯狂讲义这本书安排的非常合理,我也非常认可,所以我学习也是按照这种思路来学习,后面的UI组件的章节也会照着这个思路来。因为UI组件比较多,如果不理顺他们的关系,孤立的去学习,强行的去记忆,估计学习起来也会很费劲,所以下面我们根据它们的内在关联,分成了几组进行学习,以下是分组情况:
第一组:布局组件
LinearLayout(线性布局)、TableLayout(表格布局)、FrameLayout(框架布局)、RelativeLayout(相对布局)、GridLayout(网格布局)、AbsoluteLayout(绝对布局)
第二组:TextView及其子类
TextView、EditView、Button、RadioButton、CheckBox…
第三组:ImageView及其子类
ImageView…
第四组:AdapterView及其子类
ListView…Adapter接口…
第五组:ProgressBar及其子类
ProgressBar、SeekBar、RatingBar…
第六组:ViewAnimator及其子类
ViewSwitcher、ImageSwitcher、TextSwitcher…
第7组:其它杂项组件
Toast、日历视图、时间(日期)选择器、数值选择器、搜索框…
第8组:对话框
日期(时间)选择对话框、进度对话框…
第9组:菜单
第10组:ActionBar
这些内容为暂定吧,可能会根据实际学习内容进行调整。
Android开发自学笔记(Android Studio)—4.界面编程与View组件简单介绍的更多相关文章
- Android开发自学笔记(Android Studio) 目录
开发环境如下: 操作系统:Windows 10 Pro IDE:Android Studio 1.3.X 或更高版本 其它请参见文章说明. 1. 环境搭建 1.1 (番外)AndroidStudio常 ...
- Android开发自学笔记(Android Studio)—4.1布局组件
一.引言 Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.在Android4.0之前,我们通常说 ...
- Android开发自学笔记(Android Studio)—4.5 ProgressBar及其子类
一.前言 ProgressBar本身代表了进度条组件,它还派生出了两个常用的组件:SeekBar和RatingBar,他们的使用方法类似,只是显示界面有一定的区别.我们看一下API文档中的说明: 从图 ...
- Android开发自学笔记(Android Studio)—4.4 AdapterView及其子类
一.引言 AdapterView本身是一个抽象类,而它派生的子类在用法上也基本相似,只是在显示上有一定区别,因此把他们也归为一类. AdapterView具有如下特征: Ada ...
- Android开发自学笔记(Android Studio)—4.3ImageView及其子类
一.引言 ImageView继承自View组件,主要功能用来显示图片,实际上他能显示的不仅是图片,Drawable对象都可以用ImageView来显示. ImageView派生了ImageButton ...
- Android开发自学笔记(Android Studio)—4.2TextView及其子类
一.引言 TextView是我们最常用的一个控件了,它类似于C# Winform程序中的Lable,Java Swing编程中的JLable,不过相对功能更强大些,但从功能上看,它其实就是个文字编辑器 ...
- Android开发自学笔记(Android Studio1.3.1)—1.环境搭建
一.引言 .Google推出的 毫无疑问,这个是它的最大优势,Android Stuido是Google推出,专门为Android"量身订做"的,是Google大力支持的一款基于I ...
- Android开发自学笔记(Android Studio1.3.1)—2.开始第一个Android应用
一.前言 使用Android Studio开发Android应用是一件非常简单的事情,因为它会帮你自动完成很多工作.本篇我们主要完成一个单击按钮在文本框显示当前时间的简单应用,借此来演示一下 ...
- Android开发自学笔记(Android Studio1.3.1)—3.Android应用结构解析
一.R文件是什么? 如上图所示,我们可以通过findViewById方法通过传入R.id.show找到我们的TextView元素,findViewById方法也很好理解,从View中通过Id ...
随机推荐
- BFC总结
图1:问题图 图2:代码 图3:解决图 问题图与解决图的区别:黄色箭头那行代码的无和有 BFC 定义 BFC(Block formatting context)直译为"块级格式化 ...
- iOS中,在类的源文件(.m)中,@interface部分的作用?
此@interface部分为类扩展(extension). 其被设计出来就是为了解决两个问题的 其一,定义类私有方法的地方. 其二,实现public readonly,private readwr ...
- iOS Class 使用NSProxy和NSObject设计代理类的差异
经常发现在一些需要使用消息转发而创建代理类时, 不同的程序员都有着不同的使用方法, 有些采用继承于NSObject, 而有一些采用继承自NSProxy. 二者都是Foundation框架中的基类, 并 ...
- fragment 监听返回
@Override public void onResume() { super.onResume(); getView().setFocusableInTouchMode(true); getVie ...
- zDiaLog弹出层
zDiaLog弹出层 立即下载 插件描述:zDiaLog弹出层 弹出框: 代替window.open.window.alert.window.confirm:提供良好的用户体验: 水晶质感,设计细腻 ...
- ORACLE 移动数据文件 控制文件 重做日志文件
ORACLE数据库有时候需要对存储进行调整,增加分区.IO调优等等,此时需要移动数据文件.重做日志文件.控制文件等等,下文结合例子总结一下这方面的知识点. 进行数据文件.重做日志文件.控制文件的迁移前 ...
- JVM之Parallel Scavenge收集器
新生代收集器,复制算法,并行收集,面向吞吐量要求(吞吐量优先收集器). 吞吐量=用户代码运行时间/(用户代码运行时间+垃圾回收时间) -XX:MaxGCPauseMillis:控制最大垃圾收集停顿时间 ...
- MongoDB学习笔记~批量插入方法的实现
回到目录 批量插入在EF时代大叔就自己封装过,原理是将多次SQL连接和多次向SQL发送的指令减少到1次,或者1000条数据1次,而对于EF产生的语句来说,这无疑是性能高效的,因为EF这边在处理时,每个 ...
- 解决: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and will raise ValueError in 0.19
错误信息:C:\Python27\lib\site-packages\sklearn\utils\validation.py:395: DeprecationWarning: Passing 1d a ...
- 关于Redis数据过期策略
1.Redis中key的的过期时间 通过EXPIRE key seconds命令来设置数据的过期时间.返回1表明设置成功,返回0表明key不存在或者不能成功设置过期时间.在key上设置了过期时间后ke ...