《[精选]物联网系列专业课程:Android用户界面开发》由会员分享,可在线阅读,更多相关《[精选]物联网系列专业课程:Android用户界面开发(42页珍藏版)》请在金锄头文库上搜索。
1、Android用户界面开发,中智讯(武汉)科技有限公司,用户界面基础 用户界面布局 用户界面控件,用户界面,界面如同人的面孔,具有吸引用户的直接优势,Android应用程序模型,如何实现Android界面,Android界面布局Layout定义了界面中所有的元素、结构和相互关系: 使用XML文件描述界面布局 在程序运行时动态添加或修改界面布局 布局对象在程序中的调用: setContentView() 从布局文件加载布局及控件 findViewById() 从资源中找到控件,Android XML布局文件,使用XML文件声明界面布局的特点 将程序的表现层和控制层分离 在后期修改用户界面时,无需
2、更改程序的源代码 用户还能够通过可视化工具直接看到所设计的用户界面,有利于加快界面设计的过程,并且为界面设计与开发带来极大的便利性,简单的XML布局文件,界面对象的常规属性,android:id属性:声明了控件对象的ID,这个ID主要用于在代码中引用这个控件对象 “+id/button1”表示所设置的ID值 表示后面的字符串是ID资源 加号(+)表示需要建立新资源名称,并添加到R.java文件中 斜杠后面的字符串(button1)表示新资源的名称 如果资源不是新添加的,或属于Android框架的ID资源,则不需要使用加号(+),但必须添加Android包的命名空间,例如android:id=a
3、ndroid:id/empty,android:id=+id/button1,界面对象的常规属性,android:layout_width属性:用来设置控件对象的宽度, fill_parent表示控件对象的宽度将等于父控件的宽度 android:layout_height属性:用来设置控件对象的高度, wrap_content表示控件对象的宽度只要能够包含所显示的字符串即可,android:layout_width=fill_parent android:layout_height=wrap_content,界面对象的常规属性,Android中使用的单位 px:表示屏幕实际的像素数。例如,32
4、0*480的屏幕在横向有320个象素,在纵向有480个象素。 in:表示英寸,是屏幕的物理尺寸。每英寸等于2.54厘米, 形容手机屏幕大小用的是屏幕的对角线长度。 mm:表示毫米,是屏幕的物理尺寸。 pt:表示一个点,是屏幕的物理尺寸, 大小为1英寸的1/72。 dp(密度独立像素):也作dip, 是一种基于屏幕密度的抽象单位。基本密度是160dpi,如果屏幕密度提高,则dp对应的实际px数也会相应的提高。 sp(scale独立像素):用于字体的一种基于屏幕密度的抽象单位。,android:layout_width=“120dp,界面对象的常规属性,android:text属性:用来设置控件对
5、象上显示的文字内容,android:text=Button,引入资源,引入资源: 将download.png文件拷贝到/res/drawable文件夹下 在/res目录上选择Refresh 新添加的文件将显示在/res/drawable文件夹下 R.java文件内容也得到了更新 否则提示无法找到资源的错误,程序加载XML资源,通过调用方法:setContentView() 可以实现对Layout布局资源的调用:,public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setConten
6、tView(R.layout.main); ,程序创建对象及引用,通过调用方法:findViewById() 可以实现对控件对象的引用:,Button myButton = (Button) findViewById(R.id.button1); myButton.setText(test);,可视化编辑器,用户界面基础 用户界面布局 用户界面控件,Android界面布局,Android界面布局Layout定义了界面中所有的元素、结构和相互关系。,常用的布局对象,Android操作系统提供下列5种窗体布局: 线性布局(Linear Layout) 框架布局(Frame Layout) 表格布局
7、(Table Layout) 相对布局(Relative Layout) 绝对布局(Absolute Layout),线性布局 - Linear Layout,线性布局LinearLayout 在线性布局中,所有的子元素都按照垂直或水平的顺序在界面上排列 如果垂直排列,则每行仅包含一个界面元素 如果水平排列,则每列仅包含一个界面元素,Android:orientation=“vertical”或Android:orientation=“horizontal”,线性布局实例, ,线性布局控件常用属性,框架布局 - Frame Layout,框架布局FrameLayout 框架布局(FrameLa
8、yout)是最简单的界面布局,是用来存放一个元素的空白空间,且子元素的位置是不能够指定的,只能够放置在空白空间的左上角 如果有多个子元素,后放置的子元素将遮挡先放置的子元素 使用Android SDK中提供的层级观察器(Hierarchy Viewer)进一步分析界面布局, 能够对用户界面进行分析和调试,并以图形化的方式展示树形结构的界面布局,表格布局 - Table Layout,表格布局TableLayout 表格布局(TableLayout)是一种常用界面布局,它将屏幕划分网格,通过指定行和列将界面元素添加到网格中 网格的边界对用户是不可见的 表格布局还支持嵌套,可以将另一个表格布局放置
9、在前一个表格布局的网格中,也可以在表格布局中添加其他界面布局,例如线性布 局、相对布局等,相对布局 - Relative Layout,相对布局RelativeLayout 相对布局(RelativeLayout)是一种非常灵活的布局方式,能够通过指定界面元素与其他元素的相对位置关系,确定界面中所有元素的布局位置 特点:能够最大程度保证在各种屏幕类型的手机上正确显示界面布局,绝对布局 - Absolute Layout,绝对布局AbsoluteLayout 绝对布局(AbsoluteLayout)能通过指定界面元素的坐标位置,来确定用户界面的整体布局 绝对布局是一种不推荐使用的界面布局,因为通
10、过X轴和Y轴确定界面元素位置后,Android系统不能够根据不同屏幕对界面元素的位置进行调整,降低了界面布局对不同类型和尺寸屏幕的适应能力,布局的嵌套,布局的嵌套是指相同或者不同类型的布局之间可以嵌套使用,其目的是为了利用不同布局的特性,方便构建我们想要得到的图案,布局嵌套实例, , ,用户界面基础 用户界面布局 用户界面控件,Android用户界面控件,Android系统的界面控件有两种: 系统控件:是Android系统提供给用户已经封装的界面控件。提供在应用程序开发过程中常见功能控件。系统控件更有利于帮助用户进行快速开发,同时能够使Android系统中应用程序的界面保持一致性 定制控件:是
11、用户独立开发的控件,或通过继承并修改系统控件后所产生的新控件。能够为用户提供特殊的功能或与众不同的显示需求方式 常见的系统控件包括TextView、EditText、Button、ImageButton、Checkbox、RadioButton、Spinner、Progress、ListView和TabHost、Dialog、Toast、Notification等,Android控件类型分类,常用控件:TextView、EditText、Button 选择控件:CheckBox、RadioButton、Spinner 进度条控件:Progress 对话框控件:Dialog 消息提示控件:Toa
12、st,常用控件:TextView、EditText,TextView和EditText TextView是一种用于显示字符串的控件 EditText则是用来输入和编辑字符串的控件,TextView,EditText,程序名,EditText实际上是一个具有编辑功能的TextView,控件布局实例, ,常用函数: setText(); getText();,常用控件:Button、ImageButton,Button和ImageButton Button是一种按钮控件,用户能够在该控件上点击,随后引发相应的事件处理函数 ImageButton用以实现能够显示图像功能的控件按钮,控件布局实例, ,
13、也可以通过程序实现ImageButton上图片的显示: myImageButton.setImageResource(R.drawable.download);,按钮控件的监听,按钮响应点击事件:添加点击事件的监听器,final Button myButton = (Button) findViewById(R.id.button1); myButton.setOnClickListener(new View.OnClickListener() public void onClick(View v) / TODO Auto-generated method stub myButton.setT
14、ext(我按了Button一下); );,监听器,消息响应函数,按钮控件的监听,final Button myButton = (Button) findViewById(R.id.button1); final ImageButton myImageButton = (ImageButton) findViewById(R.id.imagebutton1); View.OnClickListener buttonListener = new View.OnClickListener() public void onClick(View v) / TODO Auto-generated met
15、hod stub switch (v.getId() case R.id.button1: myButton.setText(我按了Button一下); return; case R.id.imagebutton1: myButton.setText(我按了ImageButton一下); return; ; myButton.setOnClickListener(buttonListener); myImageButton.setOnClickListener(buttonListener);,选择控件:CheckBox、RadioButton,CheckBox和RadioButton Che
16、ckBox:多选控件 RadioButton:单选控件 RadioGroup是RadioButton的承载体,程序运行时不可见,在每个RadioGroup中,用户仅能够选择其中一个RadioButton,final CheckBox myCheckBox = (CheckBox) findViewById(R.id.checkbox01); myCheckBox.setText(我的状态是: + myCheckBox.isChecked(); myCheckBox.setOnClickListener(new View.OnClickListener() public void onClick(View v) / TODO Auto-generated method stub myCheckBox.setText(我的状态是: + myCheckBox.isChecked(); );,CheckBox控件实例,消息提示控件:Toast,Toast是在窗口表面弹出的通知消息。它仅仅是填充消息需要的空间大小,用户当前的activity保留可见性和可交互性。通知会自动的褪掉,它不会接受用户交