重拾Android 之界面控件跟布局方式

重拾Android 之界面控件和布局方式
Android系统中内置的调试置工具
监视Android系统进程、堆栈信息,查看logcat日志,实现端口转发服务和屏幕截图功能,模拟器电话呼叫和sms短信,以及浏览Android模拟器文件系统等
启动文件<Android SDK>/tools/ddms.bat


DDMS中设备管理器
控制Android模拟器的网络速度和延迟。模拟语音和sms短信通信
网络速率 ,网络延迟
DDMS中的文件浏览器:上传和下载Android内置存储器的上的文件
DDMS中日志浏览器:浏览Android系统,Dalvik虚拟机或应用程序产生的日志信息有助于快读定位应用程序产生的错误
其他工具
数据库工具
打包工具
层级观察器
跟踪显示器
SD卡影响创建工具
NinePatch文件编辑工具


用户界面发展
1.计算机出现早期批处理界面
2.目前流行图像用户界面,采用图形方式与用户交互的界面
3.未来的用户界将更多的运用虚拟现实技术。使用户能够摆脱键盘的与鼠标交互方式,而通过动作、语言,甚至是脑电波来控制计算机。


界面设计与程序逻辑分离 并行开发 修改界面时不需要修改代码
自适应



mvc:控制器使用队列处理外部动作,每个外部动作作为一个对立的事件被加入队列中,然后用户界面按照先进先出的规则从队列中获取事件,并将这个事件分配给所对应的事件处理函数。


用户界面框架采用视图树的模型


页面元素以一种树形结构组织在一起,称为视图树。依据视图树的结构从上至下绘制每一个界面元素,每个元素负责对自身的绘制,如果包含子元素,会先通知子元素先进行绘制。


视图树:View和ViewGroup组成
所有页面可见的元素都是View的子类,ViewGroup是承载界面布局的,承载具有原子特性的重构模块。
单线程用户界面,控制器从队列中获取事件和视图在屏幕上绘制用户界面,使用的都是同一个线程。
特点:处理函数具有顺序性,能够降低应用程序的复杂程度,同时也能降低开发难度
缺点:如果处理事件处理函数过于复杂,可能会导致界面失去响应。


Android中界面控件分类
定制控件
系统控件


“+”将id,添加R.java中
imageButton.setImagesResource()使用代码的方式设置按钮图片


EditText 是具有编辑功能的TextView



按钮事件  先注册一个监听器 监听器包含一个回调函数


每个View只能注册一个点击的事件的监听器,如果注册第二个之后,之前的注册将被自动注销。
多个按钮可以注册到同一个点击事件的监听器。


在使用Spinner控件需要定义一个ArrayAdapter适配器


ListView onItemClick()
0 表示适配器控件 即ListView
1 适配器内部控件 即ListView的子项
2 表示适配器内部控件,也就是子项的位置
3 表示子项的行号



TabHost标签使用步骤
1.首先要设计所有分页的页面布局
2.使用代码建立Tab标签页,并给每个分页添加标识和标题
3.最后确定每个分页所显示的页面布局


使用Tab标签页时可以将不同的界面布局保存不同的xml中也可以保存在相同的XML中前面一种利于可视化设计,易于管理,
后者产生较少的XML文件同时编程的代码也会更加简洁


界面布局的五种方式
将程序的表现层和控制层分离
后期修改界面时不需要修改代码
用户能够通过可视化工具直接看到所设计的用户界面,有利于加快界面设计过程,并为界面设计与开发带来极大的便利性。



LinearLayout:所有的子元素按照垂直或水平的方式顺序在界面上布局
若是垂直布局每行仅包含一个界面元素
若是水平布局每列仅包含一个界面元素

FrameLayout:用来存放一个元素的空白空间,且子元素的位置是不能指定的,只能放在空白空间的左上角。如果有多个子元素,后放置的子元素将遮挡先放置的元素。


TableLayout:将屏幕划分成网格,通过指定的行和列可以将界面元素添加在网格中,但是网格对用户的是不可见的,表格布局还支持嵌套。


android:gravity设定文字的对齐方式。


RelativeLayout:是一种灵活的布局方式,能够通过指定界面元素与其他元素的相对位置关系确定界面中所有元素写布局位置。

特点:能够最大程度保证在各种屏幕类型的手机上正确显示布局。


AbsoluteLayout:能通过指定界面元素的坐标位置,来确定界面的整体布局。
不推荐使用,因为根据坐标确定后界面元素位置后,Android系统不能根据元素的位置进行调整,降低了界面布局对不同类型的尺寸和尺寸屏幕适应能力。