android学习之界面UI小结.ppt_第1页
android学习之界面UI小结.ppt_第2页
android学习之界面UI小结.ppt_第3页
android学习之界面UI小结.ppt_第4页
android学习之界面UI小结.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Android学习之UI,目录,User Interface(用户界面) View Hierarchy(视图层次) How Android Draws Views(怎么绘制视图) Layout(布局) Common Layout Objects(常用布局对象) Widgets(部件) Building Custom Components(创建自定义组件) UI Events(用户界面事件) Menus(菜单) Adapter(适配器) 用AdapterView绑定数据 Styles and Themes(风格与主题) Notifications(通知) ActionBar(活动栏) Drag

2、and Drop(拖拽),User Interface(用户界面),View与ViewGroup表示在Android平台上的基本用户单元 View类 为指定的屏幕矩形区域存储布局和内容 处理尺寸和布局,绘制,焦点改变,翻屏,按键、手势 widget 基类 ViewGroup类 其子类Layouts(布局)提供了如线性布局、表格布局、相对布局等的布局架构,View Hierarchy(视图层次),如何把一个视图层次树展现到屏幕上? Activity必须调用setContentView()方法 ,并传给系统一个根节点对象的引用 系统接收引用,并用来进行界面的废止、测量并绘制这棵树 因为这个树是顺序

3、遍历的,这意味着先画父节点(也就是在屏幕后面),然后按照树中出现的顺序画其同层次节点。,How Android Draws Views(怎么绘制视图),第一步:度量过程 度量过程在measure(int, int)里实现,自顶向下的视图树遍历。子节点将向父节点申请绘制的位置以及大小,而其父类享有子节点绘制的位置及大小的最终决定权。在度量过程的最后,每个视图都已经保存了自己的度量。 使用两个类来交流尺寸 View.MeasureSpec类:被视图用来告诉它们的父视图它们想如何被度量和定位。 LayoutParams类:仅描述视图期望的高和宽。 对于每个维度,它可以指定下面之一: 一个准确的数值(

4、sp,dip) FILL_PARENT, 这意味着视图想和父视图一样大 WRAP_CONTENT, 这意味着视图只想有刚好包装其内容那么大 第二步:布局过程 第二个过程发生在layout(int, int, int, int)中,自顶向下 在这个过程中,每个父节点负责定位它的所有子节点(通过一步中得到的尺寸),Layout(布局),XML布局文件 res/layout/main.xml /XML是一种标记描述语言,第一行为每 个XML描述档固定开头,用来指示这个文字档是按XML格式描述的 /版面走向 /文本, ,Layout(布局),字符串文件 res/values/strings.xml H

5、ello ,Android! example 使用strings.xml的的好处 便于替换使用不同国家的语言 便于改变变量名称,Layout(布局),Load the XML Resource public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); /Public Constructors public R.layout () 实现布局的过程 Declare UI elements in XML Load the XML

6、Resource Instantiate layout elements at runtime,Common Layout Objects(常用布局对象),常用布局 FrameLayout(框布局) LinearLayout(线性布局) TableLayout(表格布局) RelativeLayout(相对布局) 以上均是ViewGroup.的子类,Common Layout Objects(常用布局对象),FrameLayout 最简单的布局对象 所有子元素都钉到屏幕的左上角,不能为子元素指定位置 允许有多个显示对象,只是后一个会直接覆盖在前一个之上显示,会把前面的组件部分或全部挡住,Com

7、mon Layout Objects(常用布局对象),LinearLayout 在一个方向上 ( 垂直或水平 ) 对齐所有子元素 所有子元素一个排一个地堆放 一个垂直列表每行将只有一个子元素 ( 无论它们有多宽 ) 一个水平列表只是一列的高度(最高子元素的高度来填充),Common Layout Objects(常用布局对象),TableLayout 把子元素放入到行与列中 不显示行、列或是单元格边界线 单元格不能横跨行,如 HTML 中一样,Common Layout Objects(常用布局对象),RelativeLayout 让子元素指定它们相对于其他元素的位置 ( 通过 ID 来指定

8、) 或相对于父布局对象 已定义的相对布局RelativeLayout参数是:width,height,below,alignTop,toLeft,paddingBottom|Left|Right|Top,以及marginBottom|Left|Right|Top,Widgets(部件),部件是为用户交互界面提供服务的视图对象。 常用部件 按钮(Button) 文本框(TextView) 编辑框(EditText) 多项选择(CheckBox) 单项选择(RadioGroup) 下拉列表(Spinner) 自动完成文本(AutoCompleteTextView) 日期选择器(DatePicker

9、) 时间选择器(TimePicker) 滚动视图(ScrollView) 进度条(ProgressBar) 拖动条(SeekBar) 评分组件(RatingBar) 图片视图(ImageView) 图片按钮(ImageButton) 切换图片(ImageSwitcher return false; );,UI Events(用户界面事件),CheckBox: 是一种有双状态按钮的特殊类型,可以选中或者 不选中。如下是一个在activity中使用复选框的例子:,UI Events(用户界面事件),RadioGroup:RadioGroup 可将各自不同的RadioButton ,设限于同一个Ra

10、dio 按钮组,同一个RadioGroup 组里的按钮,只能做出单一选择 /*RadioGroup用OnCheckedChangeListener来运行*/ mRadioGroup1.setOnCheckedChangeListener(mChangeRadio); private RadioGroup.OnCheckedChangeListener mChangeRadio = new RadioGroup.OnCheckedChangeListener() Override public void onCheckedChanged(RadioGroup group, int checked

11、Id) / TODO Auto-generated method stub if(checkedId=mRadio1.getId() 写选中第一个按钮的操作 else if(checkedId=mRadio2.getId() 写选中第二个按钮的操作 ; ,Menus(菜单),Android提供了三种基础菜单类型: 选项菜单Options Menu 包括 图标菜单和扩展菜单 上下文菜单Context Menu 子菜单Submenu,Menus(菜单),如何使用XML文件实现菜单? res/的目录下创建menu / option_menu.xml 在option_menu.xml中设计菜单布局,使

12、用 ,和 在onCreateOptionsMenu()方法里,我们通过MenuInflater.inflate()方法扩充这个资源 在Activity的onOptionsItemSelected方法中处理每个菜单项的点击事件 例子,Adapter(适配器),Adapter是ListView和数据源之间的中间人,用AdapterView绑定数据,AdapterView用于当你需要在布局中显示存储数据时(不是字符串或可绘制资源) 例子: 列表视图ListView 下拉列表Spinner AdapterView对象有两个主要责任 用数据填充布局 处理用户的选择(通过设置类的AdapterView.O

13、nItemClickListener成员变量为一个侦听器来处理用户的选择并且捕获选择变化),Styles and Themes(风格与主题),特点 共同点:一套包含一个或多个格式化属性的整体 区别:风格用于布局中的单个元素,主题用于一个或所有的Activity 如何创建自定义的风格和主题? 在res/values新建styles.xml,并增加一个根节点 添加一个元素,带有一个全局唯一的名字,和一个可选的父风格属性 在元素内部,定义一个或者多个元素来描述具体的格式 引用以上资源,Styles and Themes(风格与主题),风格实例 18sp #008 /布局文件 ,Styles and

14、Themes(风格与主题),在manifest.xml中设置主题 为了给应用程序所有的活动设置主题 只是想让程序当中的某个Activity拥有这个主题 ,Notifications(通知),什么时候用到通知? 显示不需确认的提示消息 后台运行的应用程序需要用户关注 程序在执行中的需要用户等待或确认 对应的技术 一个消息条通知Toast Notification, 用于从后台出现的简短信息。 一个状态条通知A Status Bar Notification, 用于来自后台的持续提醒并请求用户应答。 一个对话框通知A Dialog Notification, 用于活动相关的通知。,Notifica

15、tions(通知),消息条通知 默认样式的代码 Toast.makeText(getApplicationContext(), 默认Toast样式, Toast.LENGTH_SHORT).show();,Notifications(通知),状态条通知 一个通知对象定义了显示在状态栏的一些细节信息,和所有通知方式,例如声音、闪光。 一个状态栏通知必须包括以下几点: 显示在状态栏的图标 一个标题(除非你自定义了提示界面) 一个Pending Intent,即点击后要做的操作。 可选项包括以下: 状态栏提示文本 提示声音 震动 闪光,Dialogs(对话框),对话框 一个显示在当前活动前面的小窗口

16、 下面的活动失去焦点而由对话框接受所有的用户交互 对话框通常被用来当做通知或者运行中的应用程序相关的短暂活动 Android API支持的对话框对象类型 警告对话框AlertDialog (推荐) 一个标题 一个文本消息 1个,2个或3个按钮 一个可选项列表(可选的复选框或单选按钮) 进度对话框ProgressDialog(是警告对话框的扩展,它也支持按钮) 日期选择对话框DatePickerDialog 时间选择对话框TimePickerDialog,Dialogs(对话框),使用AlertDialog.Builder类来定义不同的警告对话框属性 增加按钮Adding buttons:set

17、.Button() 方法 增加一个列表Adding a list:setItems()方法 增加复选框和单选按钮:setSingleChoiceItems()方法,Dialogs(对话框),创建进度对话框 简单的通过调用ProgressDialog.show()方法来显示一个进度对话框 ProgressDialog dialog = ProgressDialog.show(MyActivity.this, , Loading. Please wait., true); 显示进度条 用类构造器初始化进度对话框,ProgressDialog(Context)。 用setProgressStyle(

18、int)方法设置进度风格为STYLE_HORIZONTAL以及设置其它属性,比如消息。 当你准备显示这个对话框时,调用show()或者从onCreateDialog(int)回调中返回ProgressDialog。 你可以通过调用setProgress(int)设置当前进度百分比或者调用incrementProgressBy(int)方法增加进度值。,ActionBar(活动栏),活动栏替代了显示在屏幕顶端的标题栏。主要负责显示菜单,widget,导航等功能,主要包括: 隐藏、显示、删除活动栏 添加活动项到活动栏 添加可交互的视图到活动栏作为活动视图 使用应用的图标作为活动项,代表返回home或者向上等操作 提供标签导航,方便不同的Fragment之间切换 提供下拉导航功能 总结 在屏幕或应用上,关键,操作频繁的动作,可以放到活动栏 帮助传达动作或位置信息的图标 用logo或者暗示性的图标作为home或者up等操作,Drag and Drop(拖拽),Android3.0支持View的拖放操作,可以将一个View从某一个位置拖放到另一个位置,在拖放过程中必须有两个或两个以上的View参与,一是被拖

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论