收藏 分销(赏)

第5章Android用户界面.pptx

上传人:精*** 文档编号:1562923 上传时间:2024-05-03 格式:PPTX 页数:153 大小:1.65MB
下载 相关 举报
第5章Android用户界面.pptx_第1页
第1页 / 共153页
第5章Android用户界面.pptx_第2页
第2页 / 共153页
第5章Android用户界面.pptx_第3页
第3页 / 共153页
第5章Android用户界面.pptx_第4页
第4页 / 共153页
第5章Android用户界面.pptx_第5页
第5页 / 共153页
点击查看更多>>
资源描述

1、第5章Android用户界面本章学习目标:n了解各种界面控件得使用方法n掌握各种界面布局得特点与使用方法n掌握选项菜单、子菜单与快捷菜单得使用方法n掌握操作栏与Fragment得使用方法n掌握按键事件与触摸事件得处理方法5、1 用户界面基础n用户界面(User Interface,UI)就是系统与用户之间进行信息交换得媒介,实现信息得内部形式与人类可以接受形式之间得转换q在计算机出现早期,批处理界面(1945-1968)与命令行界面(1969-1983)得到广泛得使用q目前,流行图像用户界面(Graphical User Interface,GUI),采用图形方式与用户进行交互得界面q未来得用

2、户界面将更多得运用虚拟现实技术,使用户能够摆脱键盘与鼠标得交互方式,而通过动作、语言,甚至就是脑电波来控制计算机5、1 用户界面基础nAndroid用户界面框架qAndroid用户界面框架采用MVC(Model-View-Controller)模型n控制器(Controller)处理用户输入n视图(View)显示用户界面与图像n模型(Model)保存数据与代码5、1 用户界面基础nAndroid用户界面框架qAndroid用户界面框架采用视图树(View Tree)模型n由View与ViewGroup构成nView就是最基本得可视单元q存储了屏幕上特定矩形区域内所显示内容得数据结构q实现所占据

3、区域得界面绘制、焦点变化、用户输入与界面事件处理等q一个重要得基类,所有在界面上得可见元素都就是View得子类nViewGroup就是一种能够承载含多个View得显示单元q承载界面布局q承载具有原子特性得重构模块5、1 用户界面基础nAndroid用户界面框架qAndroid用户界面框架采用视图树(View Tree)模型nAndroid系统会依据视图树得结构从上至下绘制每一个界面元素n每个元素负责对自身得绘制,如果元素包含子元素,该元素会通知其下所有子元素进行绘制5、1 用户界面基础nAndroid用户界面框架q单线程用户界面n控制器从队列中获取事件与视图在屏幕上绘制用户界面,使用得都就是同

4、一个线程n特点:处理函数具有顺序性,能够降低应用程序得复杂程度,同时也能减低开发得难度n缺点:如果事件处理函数过于复杂,可能会导致用户界面失去响应5、2 界面控件n常见得系统控件qTextViewqEditTextqButtonqImageButtonqCheckboxqRadioButtonqSpinnerqListViewqTabHost5、2 界面控件n5、2、1 TextView与EditTextqTextView就是一种用于显示字符串得控件qEditText则就是用来输入与编辑字符串得控件nEditText就是一个具有编辑功能得TextView大家学习辛苦了,还是要坚持继续保持安静继

5、续保持安静5、2 界面控件n5、2、1 TextView与EditTextq建立一个“TextViewDemo”得程序,包含TextView与EditText两个控件n上方“用户名”部分使用得就是TextView,下方得文字输入框使用得就是EditText5、2 界面控件n5、2、1 TextView与EditTextqTextViewDemo在XML文件中得代码1.1.TextView android:id=+id/TextView01 4.4.5.5.EditText android:id=+id/EditText01 10.10.5、2 界面控件n5、2、1 TextView与EditT

6、extq第1行android:id属性声明了TextView得ID,这个ID主要用于在代码中引用这个TextView对象n“+id/TextView01”表示所设置得ID值n表示后面得字符串就是ID资源n加号(+)表示需要建立新资源名称,并添加到R、java文件中n斜杠后面得字符串(TextView01)表示新资源得名称n如果资源不就是新添加得,或属于Android框架得ID资源,则不需要使用加号(+),但必须添加Android包得命名空间,例如android:id=android:id/empty5、2 界面控件n5、2、1 TextView与EditTextq第2行得android:lay

7、out_width属性用来设置TextView得宽度,wrap_content表示TextView得宽度只要能够包含所显示得字符串即可q第3行得android:layout_height属性用来设置TextView得高度q第4行表示TextView所显示得字符串,在后面将通过代码更改TextView得显示内容q第7行中“fill_content”表示EditText得宽度将等于父控件得宽度5、2 界面控件n5、2、1 TextView与EditTextqTextViewDemo、java文件中代码得修改n第1行代码得findViewById()函数能够通过ID引用界面上得任何控件,只要该控件在

8、XML文件中定义过ID即可n第3行代码得setText()函数用来设置TextView所显示得内容1.TextView textView=(TextView)findViewById(R、id、TextView01);2.EditText editText=(EditText)findViewById(R、id、EditText01);3.textView、setText(用户名:);4.editText、setText(Rajan);5、2 界面控件n5、2、2 Button与ImageButtonqButton就是一种按钮控件,用户能够在该控件上点击,并后引发相应得事件处理函数qImage

9、Button用以实现能够显示图像功能得控件按钮5、2 界面控件n5、2、2 Button与ImageButtonq建立一个“ButtonDemo”得程序,包含Button与ImageButton两个按钮,上方就是“Button按钮”,下方就是一个ImageButton控件5、2 界面控件n5、2、2 Button与ImageButtonqButtonDemo在XML文件中得代码n定义Button控件得高度、宽度与内容n定义ImageButton控件得高度与宽度,但就是没定义显示得图像,在后面得代码中进行定义1.5.6.9.5、2 界面控件n5、2、2 Button与ImageButtonq引入

10、资源n将download、png文件拷贝到/res/drawable文件夹下n在/res目录上选择Refreshn新添加得文件将显示在/res/drawable文件夹下nR、java文件内容也得到了更新n否则提示无法找到资源得错误5、2 界面控件n5、2、2 Button与ImageButtonq更改Button与ImageButton内容n引入android、widget、Button与android、widget、ImageButtonn第1行代码用于引用在XML文件中定义得Button控件n第2行代码用于引用在XML文件中定义得ImageButton控件n第3行代码将Button得显示内

11、容更改为“Button按钮”n第4行代码利用setImageResource()函数,将新加入得png文件R、drawable、download传递给ImageButton1.Button button=(Button)findViewById(R、id、Button01);2.ImageButton imageButton=(ImageButton)findViewById(R、id、ImageButton01);3.button、setText(Button按钮);4.imageButton、setImageResource(R、drawable、download);5、2 界面控件n5、

12、2、2 Button与ImageButtonq按钮响应点击事件:添加点击事件得监听器n第2行代码中button对象通过调用setOnClickListener()函数,注册一个点击(Click)事件得监听器View、OnClickListener()n第3行代码就是点击事件得回调函数n第4行代码将TextView得显示内容更改为“Button按钮”1.final TextView textView=(TextView)findViewById(R、id、TextView01);2.button、setOnClickListener(new View、OnClickListener()3.pub

13、lic void onClick(View view)4.textView、setText(Button按钮);5.6.);7.imageButton、setOnClickListener(new View、OnClickListener()8.public void onClick(View view)9.textView、setText(ImageButton按钮);10.11.);5、2 界面控件n5、2、2 Button与ImageButtonqView、OnClickListener()nView、OnClickListener()就是View定义得点击事件得监听器接口,并在接口中仅

14、定义了onClick()函数n当Button从Android界面框架中接收到事件后,首先检查这个事件就是否就是点击事件,如果就是点击事件,同时Button又注册了监听器,则会调用该监听器中得onClick()函数n每个View仅可以注册一个点击事件得监听器,如果使用setOnClickListener()函数注册第二个点击事件得监听器,之前注册得监听器将被自动注销5、2 界面控件n5、2、2 Button与ImageButtonq多个按钮注册到同一个点击事件得监听器上,代码如下:n第1行至第12行代码定义了一个名为buttonListener得点击事件监听器n第13行代码将该监听器注册到But

15、ton上n第14行代码将该监听器注册到ImageButton上1.Button、OnClickListener buttonListener=new Button、OnClickListener()2.Override3.public void onClick(View v)4.switch(v、getId()5.case R、id、Button01:6.textView、setText(Button按钮);7.return;8.case R、id、ImageButton01:9.textView、setText(ImageButton按钮);10.return;11.12.;13.butto

16、n、setOnClickListener(buttonListener);14.imageButton、setOnClickListener(buttonListener);5、2 界面控件n5、2、3 CheckBox与RadioButtonqCheckBox同时可以选择多个选项得控件qRadioButton则就是仅可以选择一个选项得控件qRadioGroup就是RadioButton得承载体,程序运行时不可见。应用程序中可能包含一个或多个RadioGroup,一个RadioGroup包含多个RadioButton,在每个RadioGroup中,用户仅能够选择其中一个RadioButton5

17、、2 界面控件n5、2、3 CheckBox与RadioButtonq建立一个“CheckboxRadiobuttonDemo”工程,包含五个控件,从上至下分别就是nTextView01nCheckBox01n CheckBox02nRadioButton01nRadioButton025、2 界面控件n5、2、3 CheckBox与RadioButtonqCheckboxRadiobuttonDemo在XML文件中得代码1.5.9.10.14.15.18.22.23.27.28.5、2 界面控件n5、2、3 CheckBox与RadioButtonq引用CheckBox与RadioButto

18、n得方法参考下面得代码qCheckBox设置点击事件监听器得简要代码n与Button设置点击事件监听器中介绍得方法相似,唯一不同在于将Button、OnClickListener换成了CheckBox、OnClickListener1.CheckBox checkBox1=(CheckBox)findViewById(R、id、CheckBox01);2.RadioButton radioButton1=(RadioButton)findViewById(R、id、RadioButton01);1.CheckBox、OnClickListener checkboxListener=new Ch

19、eckBox、OnClickListener()2.Override3.public void onClick(View v)4./过程代码5.;6.checkBox1、setOnClickListener(checkboxListener);7.checkBox2、setOnClickListener(checkboxListener);5、2 界面控件n5、2、3 CheckBox与RadioButtonqRadioButton设置点击事件监听器得方法1.RadioButton、OnClickListener radioButtonListener=new RadioButton、OnCl

20、ickListener()2.Override3.public void onClick(View v)4./过程代码5.;6.radioButton1、setOnClickListener(radioButtonListener);7.radioButton2、setOnClickListener(radioButtonListener);5、2 界面控件n5、2、4 Spinnerq一种能够从多个选项中选一选项得控件,使用浮动菜单为用户提供选择q类似于桌面程序得组合框(boBox)5、2 界面控件n5、2、4 SpinnerqSpinnerDemo在XML文件中得代码n第5行使用标签声明了

21、一个Spinner控件n第6行代码中指定了该控件得宽度为300dipndip就是设备独立像素,不同设备有不同 得现实效果1.5.8.5、2 界面控件n5、2、4 Spinnerq在SpinnerDemo、java文件中,定义一个ArrayAdapter适配器,在ArrayAdapter中添加需要在Spinner中可以选择得内容q适配器绑定界面控件与底层数据,如果底层数据更改了,用户界面也相应修改显示内容,就不需要应用程序再监视,从而极大得简化得代码得复杂性1.Spinner spinner=(Spinner)findViewById(R、id、Spinner01);2.List list =n

22、ew ArrayList();3.list、add(Spinner子项1);4.list、add(Spinner子项2);5.list、add(Spinner子项3);6.ArrayAdapter adapter=new ArrayAdapter(this,android、R、layout、simple_spinner_item,list);7.adapter、setDropDownViewResource(android、R、layout、simple_spinner_dropdown_item);8.spinner、setAdapter(adapter);5、2 界面控件n5、2、4 Sp

23、innerq第2行代码建立了一个数组列表(ArrayList),这种数组列表可以根据需要进行增减q表示数组列表中保存得就是字符串类型得数据q在代码得第3、4、5行中,使用add()函数分别向数组列表中添加3个字符串q第6行代码建立了一个ArrayAdapter得数组适配器,数组适配器能够将界面控件与底层数据绑定在一起q第8行代码实现绑定过程,所有ArrayList中得数据,将显示在Spinner得浮动菜单中q第7行代码设定了Spinner得浮动菜单得显示方式,其中,android、R、layout、simple_spinner_dropdown_item就是Android系统内置得一种浮动菜单

24、5、2 界面控件n5、2、4 SpinnerqSpinner得浮动菜单得显示方式nandroid、R、layout、simple_spinner_dropdown_itemnandroid、R、layout、simple_spinner_item5、2 界面控件n5、2、5 ListViewqListView就是一种用于垂直显示得列表控件,如果显示内容过多,则会出现垂直滚动条qListView能够通过适配器将数据与自身绑定,在有限得屏幕上提供大量内容供用户选择,所以就是经常使用得用户界面控件qListView支持点击事件处理,用户可以用少量得代码实现复杂得选择功能5、2 界面控件n5、2、5

25、ListViewq建立一个“ListViewDemo”程序,包含四个控件,从上至下分别为TextView01、ListView01、ListView02与 ListView035、2 界面控件n5、2、5 ListViewqListViewDemo在XML文件中得代码1.5.8.5、2 界面控件n5、2、5 ListViewq在ListViewDemo、java文件中,首先需要为ListView创建适配器,并添加ListView中所显示得内容n第2行代码通过ID引用了XML文件中声明得ListViewn第7行代码声明了适配器ArrayAdapter,第三个参数list说明适配器得数据源为数组列

26、表n第8行代码将ListView与适配器绑定1.final TextView textView=(TextView)findViewById(R、id、TextView01);2.ListView listView=(ListView)findViewById(R、id、ListView01);3.List list =new ArrayList();4.list、add(ListView子项1);5.list、add(ListView子项2);6.list、add(ListView子项3);7.ArrayAdapter adapter=new ArrayAdapter(this,androi

27、d、R、layout、simple_list_item_1,list);8.listView、setAdapter(adapter);5、2 界面控件n5、2、5 ListViewq下面得代码声明了ListView子项得点击事件监听器,用以确定用户在ListView中,选择得就是哪一个子项1.AdapterView、OnItemClickListener listViewListener=newAdapterView、OnItemClickListener()2.Override3.public void onItemClick(AdapterView arg0,View arg1,int a

28、rg2,long arg3)4.String msg=父View:+arg0、toString()+n+子View:+arg1、toString()+n+位置:+String、valueOf(arg2)+,ID:+String、valueOf(arg3);5.textView、setText(msg);6.;7.listView、setOnItemClickListener(listViewListener);5、2 界面控件n5、2、5 ListViewn第1行得AdapterView、OnItemClickListener就是ListView子项得点击事件监听器,同样就是一个接口,需要实现

29、onItemClick()函数。在ListView子项被选择后,onItemClick()函数将被调用n第3行得onItemClick()函数中一共有四个参数,参数0表示适配器控件,就就是ListView;参数1表示适配器内部得控件,就是ListView中得子项;参数2表示适配器内部得控件,也就就是子项得位置;参数3表示子项得行号n第4行与第5行代码用于显示信息,选择子项确定后,在TextView中显示子项父控件得信息、子控件信息、位置信息与ID信息n第7行代码就是ListView指定刚刚声明得监听器5、2 界面控件n5、2、6 TabHostqTab标签页就是界面设计时经常使用得界面控件,可

30、以实现多个分页之间得快速切换,每个分页可以显示不同得内容q下图就是Android系统内置得Tab标签页,点击“呼出/接听键”后出现,用于电话呼出与查瞧拨号记录、联系人5、2 界面控件n5、2、6 TabHostq在Android SDK 3、0中,随着新得UI设计思想得引入,android、app、Fragment成为一种新得界面设计模式qAndroid SDK 4、0继承了3、0版本得设计思路,因此不建议开发者使用android、app、TabActivity,而用使用新出现得Fragment实现Tab标签页q但因旧版本Android系统还有一定得生存周期,且使用TabActivity实现得

31、Tab标签页得方法在Android SDK 4、0中仍可以正常运行,所以仍对这种方法进行介绍5、2 界面控件n5、2、6 TabHostqTab标签页得使用n首先要设计所有得分页得界面布局n在分页设计完成后,使用代码建立Tab标签页(TabActivity),并给每个分页添加标识与标题q每个分页建立一个XML文件,用以编辑与保存分页得界面布局,使用得方法与设计普通用户界面没有什么区别5、2 界面控件n5、2、6 TabHostq建立一个“TabDemo”程序,包含三个XML文件,分别为tab1、xml、tab2、xml与tab3、xml,这3个文件分别使用线性布局、相对布局与绝对布局示例中得m

32、ain、xml得代码,并将布局得ID分别定义为layout01、layout02与layout035、2 界面控件n5、2、6 TabHostqtab1、xml文件代码qtab2、xml文件代码qtab3、xml文件代码1.2.LinearLayout android:id=+id/layout013.4.5.1.2.AbsoluteLayout android:id=+id/layout023.4.5.1.2.RelativeLayout android:id=+id/layout03 3.4.5.5、2 界面控件n5、2、6 TabHostq在TabDemo、java文件中键入下面得代码,

33、创建Tab标签页,并建立子页与界面布局直接得关联关系1.package edu、hrbeu、TabDemo;2.import android、app、TabActivity;3.import android、os、Bundle;4.import android、widget、TabHost;5.import android、view、LayoutInflater;6.SuppressWarnings(deprecation)7.public class TabDemoActivity extends TabActivity 8.Override9.public void onCreate(Bu

34、ndle savedInstanceState)10.super、onCreate(savedInstanceState);11.TabHost tabHost=getTabHost();12.LayoutInflater、from(this)、inflate(R、layout、tab1,tabHost、getTabContentView(),true);13.LayoutInflater、from(this)、inflate(R、layout、tab2,tabHost、getTabContentView(),true);14.LayoutInflater、from(this)、inflate

35、(R、layout、tab3,tabHost、getTabContentView(),true);15.tabHost、addTab(tabHost、newTabSpec(TAB1)16.、setIndicator(线性布局)、setContent(R、id、layout01);17.tabHost、addTab(tabHost、newTabSpec(TAB2)18.、setIndicator(绝对布局)、setContent(R、id、layout02);19.tabHost、addTab(tabHost、newTabSpec(TAB3)20.、setIndicator(相对布局)、setC

36、ontent(R、id、layout03);21.22.5、2 界面控件n5、2、6 TabHostn第8行代码得声明TabDemo类继承与TabActivity,与以往继承Activity不同,TabActivity支持内嵌多个Activity或Viewn第12行代码通过getTabHost()函数获得了Tab标签页得容器,用以承载Tab标签与分页得界面布局n第13行代码通过LayoutInflater将tab1、xml文件中得布局转换为Tab标签页可以使用得View对象n第16行代码使用addTab()函数添加了第1个分页,tabHost、newTabSpec(TAB1)表明在第12行代码

37、中建立得tabHost上,添加一个标识为TAB1得Tab分页n第17行代码使用setIndicator()函数设定分页显示得标题,使用setContent()函数设定分页所关联得界面布局5、2 界面控件n5、2、6 TabHostq在实现Tab标签页时,除了可以将多个Tab分页放置在同一个Activity中,还可以将不同Tab分页加载到不同得Activity上n两种方式在界面显示上就是没有区别得n建议使用后一种方式处理Tab分页与Activity之间得关系,每个Tab分页对应一个Activity,有利于用户对界面控件得管理与控制5、2 界面控件nTabDemo2示例说明如何将不同得Activi

38、ty显示在不同得Tab分页上。qTabDemo2示例与TabDemo示例得用户界面就是完全相同得 5、2 界面控件nTabDemo1与 TabDemo2对比q与TabDemo1示例相比,TabDemo2示例得布局目录中(/res/layout)中多了一个main、xml文件,q代码目录中增加了Tab1Activity、java、Tab2Activity、java与Tab3Activity、java三个文件。5、3 界面布局n界面布局q界面布局(Layout)就是用户界面结构得描述,定义了界面中所有得元素、结构与相互关系q声明Android程序得界面布局有两种方法n使用XML文件描述界面布局(推

39、荐使用)n在程序运行时动态添加或修改界面布局q既可以独立使用任何一种声明界面布局得方式,也可以同时使用两种方式5、3 界面布局n界面布局q使用XML文件声明界面布局得优势n将程序得表现层与控制层分离,修改用户界面时,无需更改程序得源代码n可通过Eclipse得“可视化编辑器”直接查瞧用户界面,有利于加快界面设计得过程5、3 界面布局n常用得6种界面布局q线性布局q框架布局q表格布局q相对布局q绝对布局q网格布局5、3 界面布局n5、3、1 线性布局q线性布局(LinearLayout)就是一种重要得界面布局中,也就是经常使用到得一种界面布局q在线性布局中,所有得子元素都按照垂直或水平得顺序在界

40、面上排列n如果垂直排列,则每行仅包含一个界面元素n如果水平排列,则每列仅包含一个界面元素5、3 界面布局n5、3、1 线性布局q最小化得线性布局XML文件:n第2行代码就是声明XML文件得根元素为线性布局n第4、5、6行代码就是在属性编辑器中修改过得宽度、高度与排列方式得属性1.2.7.5、3 界面布局n5、3、1 线性布局q修改界面控件得属性nID就是一个字符串,编译时被转换为整数,可以用来在代码中引用界面元素n一般仅在代码中需要动态修改得界面元素,才界面元素设置ID,反之则不需要设置ID编号类型属性值1TextViewId+id/labelText用户名:2EditTextId+id/en

41、tryLayout widthfill_parentTextnull3ButtonId+id/okText确认4ButtonId+id/cancelText取消5、3 界面布局n5、3、1 线性布局q打开XML文件编辑器查瞧main_vertical、xml文件代码:1.2.7.8.12.13.16.5、3 界面布局12.16.17.21.22.5、3 界面布局n5、3、1 线性布局q将LinearLayout、java文件中得setContentView(R、layout、main),更改为setContentView(R、layout、main_vertical)。运行后得结果如图5、3

42、界面布局n5、3、1 线性布局q横向线性布局n建立main_ horizontal、xml文件n线性布局得Orientation属性得值设置为horizontaln将EditText得Layout width 属性得值设置为 wrap_contentn将LinearLayout、java文件中得 setContentView(R、layout、main_vertical)修改为setContentView(R、layout、main_ horizontal)5、3 界面布局n5、3、2 框架布局q框架布局(FrameLayout)就是最简单得界面布局,就是用来存放一个元素得空白空间,且子元素得

43、位置就是不能够指定得,只能够放置在空白空间得左上角q如果有多个子元素,后放置得子元素将遮挡先放置得子元素q使用Android SDK中提供得层级观察器(Hierarchy Viewer)进一步分析界面布局5、3 界面布局n5、3、2 框架布局q树形结构图与界面示意图5、3 界面布局n5、3、2 框架布局q结合界面布局得树形结构图与示意图,分析不同界面布局与界面控件得区域边界n用户界面得根节点(#043599ee0)就是线性布局,其边界就是整个界面,也就就是示意图得最外层得实心线n根节点右侧得子节点(#043599a730)就是框架布局,仅有一个节点元素(#04359ad18),这个子元素就是T

44、extView控件,用来显示Android应用程序名称,其边界就是示意图中得区域1。因此框架布局元素#043599a730得边界就是同区域1得高度相同,宽带充满整个根节点得区域。这两个界面元素就是系统自动生成得,一般情况下用户不能够修改与编辑n根节点左侧得子节点(#14359b858)也就是框架布局,边界就是区域2到区域7得全部空间5、3 界面布局n5、3、2 框架布局n子节点(#14359b858)下仅有一个子节点(#04359bd60)元素就是线性布局,因为线性布局得Layout width属性设置为fill_parent,Layout height属性设置为wrap_content,因此

45、该线性布局得宽度就就是其父节点#14359b858得宽带,高度等于所有子节点元素得高度之与n线性布局#04359bd60得四个子节点元素#04359bfa8、#14359c5f8、#24359d5d8与#34359de18得边界,分别就是界面布局示意图中得区域2、区域3、区域4与区域55、3 界面布局n5、3、3 表格布局q表格布局(TableLayout)就是一种常用得界面布局,通过指定行与列将界面元素添加到表格中n网格得边界对用户就是不可见得n表格布局支持嵌套q可以将表格布局放置在表格布局得表格中q可以在表格布局中添加其她界面布局,例如线性布局、相对布局等5、3 界面布局n5、3、3 表格

46、布局q表格布局示意图q表格布局效果图5、3 界面布局n5、3、3 表格布局q建立表格布局要注意以下几点n在界面可视化编辑器上,向TableRow01中拖拽TextView与EditText;5、3 界面布局n5、3、3 表格布局q建立表格布局要注意以下几点n在界面可视化编辑器上,再向TableRow02中拖拽两个Button;n参考表5、2设置TableRow中四个界面控件得属性值;编号类型属性值1TextViewId+id/labelText用户名:GravityrightPadding3dipLayout width160dip2EditTextId+id/entryTextnullPad

47、ding3dipLayout width160dip3ButtonId+id/okText确认Padding3dip4ButtonId+id/cancelText取消Padding3dip5、3 界面布局n5、3、3 表格布局q建立表格布局main、xml文件得完整代码如下:1.2.3.7.10.16.5、3 界面布局17.21.22.23.26.30.31.36.37.38.5、3 界面布局n第3行代码使用了标签声明表格布局n第7行与第23行代码声明了两个TableRow元素n第12行设定宽度属性android:layout_width:160dipn第13行设定属性android:grav

48、ity,指定文字为右对齐n第15行使用属性android:padding,声明TextView元素与其她元素得间隔距离为3dip5、3 界面布局n5、3、4 相对布局q相对布局(RelativeLayout)就是一种非常灵活得布局方式,能够通过指定界面元素与其她元素得相对位置关系,确定界面中所有元素得布局位置q特点:能够最大程度保证在各种屏幕尺寸得手机上正确显示界面布局5、3 界面布局n5、3、4 相对布局q相对布局在main、xml文件得完整代码:1.2.3.7.11.12.16.5、3 界面布局17、24.25.、31.32.5、3 界面布局n5、3、4 相对布局n第3行使用了标签声明一个

49、相对布局n第15行使用位置属性android:layout_below,确定EditText控件在ID为label得元素下方n第20行使用属性android:layout_alignParentRight,声明该元素在其父元素得右边边界对齐n第21行设定属性android:layout_marginLeft,左移10dipn第22行声明该元素在ID为entry得元素下方n第28行声明使用属性android:layout_toLeftOf,声明该元素在ID为cancel元素得左边n第29行使用属性android:layout_alignTop,声明该元素与ID为cancel得元素在相同得水平位置

50、5、3 界面布局n5、3、5 绝对布局q绝对布局(AbsoluteLayout)能通过指定界面元素得坐标位置,来确定用户界面得整体布局q绝对布局就是一种不推荐使用得界面布局,因为通过X轴与Y轴确定界面元素位置后,Android系统不能够根据不同屏幕对界面元素得位置进行调整,降低了界面布局对不同类型与尺寸屏幕得适应能力5、3 界面布局n5、3、5 绝对布局q每一个界面控件都必须指定坐标(X,Y),例如“确认”按钮得坐标就是(40,120),“取消”按钮得坐标就是(120,120)。坐标原点(0,0)在屏幕得左上角5、3 界面布局n5、3、5 绝对布局q绝对布局示例得main、xml文件完整代码:

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服