您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 移动设备软件应用开发第3章
第3章AndroidUI编程3.1Android常用UI组件3.1.1View和ViewGroupAndroid中所有的UI元素都是使用View和ViewGroup对象建立的。View是一个可以将一些信息绘制在屏幕上并与用户产生交互的对象。ViewGroup是一个包含多个的View和ViewGroup的容器,用来定义UI布局。3.1.2AndroidUI开发概述Android中使用一个叫做“widget”的集合来描述所有的View元素,可称其为View控件,它包括界面布局、控件和AdapterView等。有如下所述的5种AndroidUI开发分类。1.界面布局开发•除AdapterView之外的ViewGroup的子孙类。以下列出的是几种常用的界面布局方式。(1)LinearLayout(线性布局)•常用布局,按照横或竖的线性排列布局。(2)RelativeLayout(相对布局)•常用布局,按照相对位置来布局。(3)FrameLayout(帧布局)•一块在屏幕上提前预定好的空白区域,可以填充一些View元素到里面。(4)TableLayout(表格布局)•以表格的形式布局。(5)AbsoluteLayout(绝对布局)•通过绝对位置坐标布局,但不能做屏幕适配,故不推荐使用。(6)GridLayout•网格布局。2.控件开发继承自View的单个界面元素。Android自带了几十个控件,常见的比如TextView(文本框)、EditText(编辑框)、Button(按钮)、CheckBox(复选框)、ImageView(图片显示控件)、VideoView(视频播放控件)等。这些控件一般通过各种界面布局方式或AdapterView等被安排在界面中,显示给用户,并与用户进行交互。3.AdapterView与Adapter开发AdapterView的子孙类。除了界面布局方式和基本的控件之外,Android中还提供了多个与适配器相关的控件,这些控件都使用一个适配器来决定该控件显示的内容,它通常是一个列表,其中的数据由适配器提供,而数据源则比较灵活,可以是程序内部数据、本地数据或网络数据等。常用的系统自带的Adapter有BaseAdapter、SimpleAdapter和SimpleCursorAdapter等,除此之外,开发者还可以继承BaseAdapter来自定义Adapter。常见的与适配器相关的控件有ListView、Spinner、Gallery和GridView等。4.UI组件开发与UI相关的Android组件。UI组件提供了一套标准化的UI布局,开发者只需要简单地指定其中的内容,这些组件即可按照各自的布局格式将信息显示在屏幕上,所以使用它们变得非常方便。这些组件通常不是继承自View或ViewGroup,但是它们仍然是使用View的子孙类将信息显示在屏幕上的,所以它们与View的关系非常密切。常用的UI组件有Menu、ActionBar(4.0的新特性)、Dialog和Notification等,其中Menu是View的子类,而后三者不是。5.自定义View、图形图像和动画无论是控件,还是UI组件,开发者都可以自定义其中的界面布局样式,通常的做法是继承一个View或其子孙类,然后重写一些方法,一般都需要重写onDraw()方法,该方法用来定义在屏幕上如何进行绘制。3.1.3文本框(TextView)与编辑框(EditText)1.TextView•TextView是Android中最基本的控件,它直接继承自View,用来向用户显示文本。•对于Android中的控件,除了在XML文件中设置它的属性之外,也可以在Java代码中调用它的一系列方法来设置这些属性。所以,这些XML属性与Java代码中调用的方法是相互对应的。TextView的常用XML属性表XML属性对应的方法说明android:gravitysetGravity(int)指定当文本内容比所在的TextView小时,如何放置这些文本。android:textsetText(CharSequence)最常用的属性,设置其上显示的文本内容。android:linessetLines(int)设置TextView为多少行高。android:textColorsetTextColor(int)设置字体颜色。android:textSizesetTextSize(int,float)设置字体大小。TextView的常用方法方法名称方法前缀说明getLineCount()publicint返回行数。getText()publicCharSequence返回其中显示的文本。length()publicint返回其中显示的文本的字符数。onTouchEvent(MotionEventevent)publicboolean实现这个方法去处理在这个TextView之上的屏幕触控事件。TextView不仅能够显示简单的文本,也可以显示复杂的文本,即“富文本”,比如一段HTML内容。使用setText()方法设置TextView要显示的文本。当写好HTML内容之后,需调用Html.fromHtml()方法将HTML内容转化为HTML文本,然后使用TextView的setText()方法设置显示内容即可。如果一个含有“富文本”的TextView中包含超链接,默认地,当用户点击它时,只会作为对整个控件的点击事件而响应,并不会响应对超链接的点击,这是因为Android无法获得TextView的内部元素焦点,需要另外使用TextView的setMovementMethod(LinkMovementMethod.getInstance())方法获得控件内部元素焦点。2.EditTextEditText继承自TextView,专门用来获取用户输入的文本信息,可以说EditText就是一个可编辑的TextView。在代码中调用EditText的getText()方法,将得到Editable的对象,再调用toString()方法即可得到用户在EditText中输入的内容。由于EditText继承自TextView,所以EditText的属性与TextView的基本相同,但是它还有几个比较重要的属性,需要特别说明如下。(1)android:inputType•设置文本的类型,用于帮助输入法显示合适的键盘类型EditText的inputType属性可选值inputType属性可选值说明text一般文本textCapCharacters所有字母大写textCapWords每个单词的首字母大写textCapSentences仅第一个字母大写textAutoCorrect自动更正textAutoComplete自动补全textMultiLine多行输入textNoSuggestions不加提示textEmailAddress输入内容为电子邮件地址格式textEmailSubject邮件主题格式textShortMessage短消息格式,会打开一个表情列表textLongMessage长消息格式textPersonName人名格式textPostalAddress地址格式textPassword密码格式textVisiblePassword可见密码格式textWebEditText输入内容作为网页表单内容textPhonetic拼音输入numberSigned带符号、数字的格式numberDecimal带小数点的浮点格式phone电话号码格式datetime时间日期格式(2)android:ems设置TextView的宽度为N(N为一个整数值)个字符的宽度,当设置该属性后,控件显示的长度就为N个字符的长度,超出的部分将不显示。(3)android:maxLength最大可输入的字符数。(4)android:password如果设置password属性为“true”,则以点“•”显示文本。3.1.4按钮(Button)Button同样继承自TextView。Button本身还有几个子孙类,包括CheckBox、RadioButton、Switch和ToggleButton等。按钮在AndroidUI开发中用的很多,常用来响应用户的点击。使用Button时,首先在XML文件中定义,一般要指定其上显示的文本信息,即按钮名称,然后就可以在代码中定义点击它所完成的事件,这样用户在点击它时,就会自动运行点击事件的代码段。在编写处理点击事件的代码时,有如下两种常用的方法。一种是先定义一个OnClickListener对象,同时实现它的onClick(View)方法,在该方法中编写按钮被点击后所执行的代码,然后将这个OnClickListener对象传递给Button对象.参考示例代码如下。Buttonbt=(Button)findViewById(R.id.button1);OnClickListenerlistener=newOnClickListener(){@OverridepublicvoidonClick(Viewv){/*在这里编写按钮被点击后执行的代码*/}};bt.setOnClickListener(listener);另外一种方法比较简单也更加常用,是直接声明一个匿名类对象并实现onClick(View)方法,然后将这个对象直接传递给Button对象,同样地,也在onClick(View)方法中处理按钮点击事件,这种方法的参考示例代码如下。Buttonbt=(Button)findViewById(R.id.button1);bt.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){/*处理按钮点击事件*/}});Button同样继承自TextView,它在TextView的属性基础上,也有几个比较重要的属性。(1)android:visibility此属性意思是此Button是否显示,有三个属性值:visible表示显示;invisible表示显示黑背景条;gone表示不显示。在Java代码中,可以设置其显示与否:setVisibility(View.GONE)为不显示;setVisibility(View.VISIBLE)为显示。(2)android:clickable设置能否被点击。(3)android:focusable设置能否获得焦点。(4)android:alpha设置透明度,其值为0到1之间的数值,0为透明,1为不透明。(5)android:longClickable设置能否被长按。3.1.5案例ImageView和ImageButtonImageView控件可以显示图片,ImageButton控件继承于ImageView,是一个图片按钮。下面将通过一个案例来演示说明,ImageView和ImageButton的基本使用方法。1.案例功能描述•案例将实现在界面上显示两行文本信息、一张图片和一个图片按钮,当点击图片按钮后会显示一行文本信息。2.案例程序结构•案例中包括1个布局文件(image_widget.xml),用于设计用户界面;1个Activity组件(MainActivity类),用于实现用户界面交互功能。6.ImageView和ImageButton的scaleType属性ImageView、ImageButton等图片控件都有一个属性,叫做android:scaleType,它指定图片如何放大、缩小或移动来匹配ImageView的大小,其可选值8种,如下:(1)ImageView.ScaleType.CENTER|android:scaleType=center•按图片的原来大小居中显示,当图片长和宽超过View的长和宽时,则截取部分图
本文标题:移动设备软件应用开发第3章
链接地址:https://www.777doc.com/doc-3178606 .html