版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-1-熟悉基本的Android界面组件掌握UI的事件驱动机制掌握常用的Layout掌握对话框以及Toast组件的使用掌握常用的Widget组件掌握菜单组件的使用掌握ActionBar的使用本章目标-2-用户界面元素分类Android中的界面元素主要由以下几个部分构成:视图组件(View)视图容器(ViewGroup)布局管理(Layout)视图组件(View)View视图组件是用户界面的基础元素View对象存储了Andiord屏幕上一个特定的矩形区域的布局和内容属性的数据体通过View对象,可实现对布局、绘图、焦点变换、滚动条、屏幕区域的按键、用户交互等功能Android的窗体功能是通过Widget(窗体部件)类实现的,而View类是Widget的基类-3-View的主要子类-4-类名功能描述事件监听器TextView文本视图OnKeyListenerEditText编辑文本框OnEditorActionListenerButton按钮OnClickListenerCheckbox复选框OnCheckedChangeListenerRadioGroup单选按钮组OnCheckedChangeListenerSpinner下拉列表OnItemSelectedListenerAutoCompleteTextView自动完成文本框OnKeyListenerDataPicker日期选择器OnDateChangedListenerTimePicker时间选择器OnTimeChangedListenerDigitalClock数字时钟OnKeyListenerAnalogClock模拟时钟OnKeyListenerProgessBar进度条OnProgressBarChangeListenerRatingBar评分条OnRatingBarChangeListenerSeekBar搜索条OnSeekBarChangeListenerGridView网格视图OnKeyDown,OnKeyUpLsitView列表视图OnKeyDown,OnKeyUpScrollView滚动视图OnKeyDown,OnKeyUp视图容器组件(ViewGroup)ViewGroup是View的容器,可将View添加到ViewGroup中,一个ViewGroup也可以加入到另外一个ViewGroup里。-5-方法功能描述ViewGroup()构造方法voidaddView(Viewchild)用于添加子视图voidbringChildToFront(Viewchild)将参数指定的视图移动到所有视图的前面显示booleanclearChildFocus(Viewchild)清除参数指定的视图的焦点booleandispatchKeyEvent(KeyEventevent)将参数指定的键盘事件分发给当前焦点路径的视图。分发判断事件时,按照焦点路径查找合适的视图。若本视图为焦点,则将键盘事件发送给自己;否则发送给焦点视图booleandispatchPopulateAccessibilityEvent(AccessibilityEventevent)将参数指定的事件分发给当前焦点路径的视图booleandispatchSetSelected(booleanselected)为所有的子视图调用setSelected()方法布局管理Layout布局管理Layout用来管理组件的布局格式,组织界面中组件的呈现方式。Android提供了多种布局:LinearLayout:线性布局,该布局中子元素之间成线性排列,即在某一方向上的顺序排列,常见的有水平顺序排列、垂直顺序排列。RelativeLayout:相对布局,该布局是一种根据相对位置排列元素的布局方式,这种方式允许子元素指定他们相对于其它元素或父元素的位置(通过ID指定)。相对于线性布局,使用RelativeLayout布局可任意放置控件,没有规律性。需要注意线性布局不需要特殊指定其父元素,而相对布局使用之前必须指定其参照物,只有指定参照物之后,才能定义其相对位置。TableLayout:表格布局,该布局将子元素的位置分配到表格的行或列中,即按照表格的顺序排列。一个表格布局有多个“表格行”,而每个表格行又包含表格单元。需要注意,表格布局并不是真正意义上的表格,只是按照表格的方式组织元素的布局,元素之间并没有实际表格中的分界线。AbsoluteLayout:绝对布局,按照绝对坐标对元素进行布局。与相对布局相反,绝对布局不需要指定其参照物,而是使用整个手机界面作为坐标系,通过坐标系的两个偏移量(水平偏移量和垂直偏移量)来唯一指定其位置。FrameLayout:框架布局,将所有子元素以层叠的方式显示,后加的元素会被放在最顶层,覆盖之前的元素,实际中很少用到。GridLayout:网格布局,Android4.0新增的布局方式,能够同时对x、y轴的控件进行对齐,大大的简化了对复杂布局的处理,并且在性能上也有大幅提升。注意Android的表格布局跟HTML中的表格布局非常类似,TableRow相当于HTML表格的<tr>标记。-6-事件处理机制Android系统中引用Java的事件处理机制,包括事件、事件源和事件监听器三个事件模型:事件(Event):是一个描述事件源状态改变的对象,事件不是通过new运算符创建的,而是由用户操作触发的。事件可以是键盘事件、触摸事件等。事件一般作为事件处理方法的参数,以便从中获取事件的相关信息。事件源(EventSource):产生事件的对象,事件源通常是UI组件,例如点击按钮,则按钮就是事件源。事件监听器(EventListenrer):当事件产生时,事件监听器用于对该事件进行响应和处理。监听器需要实现监听接口中定义的事件处理方法。-7-事件监听器-8-事件监听器接口事件说明OnClickListener单击事件当用户点击某个组件时OnFocusChangeListener焦点事件组件获得或者失去焦点时OnKeyListener按键事件用户按下或者释放设备上的某个按键OnTouchListener触碰事件设备具有触摸屏功能时,触碰屏幕时产生OnCreateContextMenuListener创建上下文菜单事件创建上下文菜单时产生该事件OnCheckedChangeListener选项事件选择改变时触发该事件实现事件处理步骤如下:创建事件监听器;在事件处理方法中编写事件处理代码;在相应的组件上注册监听器。布局管理(Layout)Android中提供了两种创建布局的方式:在XML布局文件中声明:这种方式是将需要显示的组件先在布局文件中进行声明,然后在程序中通过setContentView(R.layout.XXX)方法将布局呈现在Activity中。这种方式是推荐使用的方式,前面的程序也一直使用这种方式。在程序中通过代码直接实例化布局及其组件:这种方式并不提倡使用,除非界面中的组件及布局需要动态改变才使用。-9-线性布局-1LinearLayout是一种线性排列的布局,该布局中的子组件按照垂直或者水平方向排列,方向由“android:orientation”属性控制,属性值有垂直(vertical)和水平(horizontal)两种。-10-<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android" android:orientation="vertical"android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayoutandroid:orientation="horizontal" android:layout_width="fill_parent"android:layout_height="fill_parent" android:layout_weight="1"> …… </LinearLayout> <LinearLayoutandroid:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent" android:layout_weight="1"> ……
</LinearLayout></LinearLayout>第一个LinearLayout按照垂直方向来布局,并将其他两个LinearLayout包含进来,是整个布局的主布局第二个LinearLayout按照水平方向来布局,包含4个TextView第三个LinearLayout按照垂直方向来布局,也包含4个TextView线性布局-2在LayoutActivity中设置使用linearlayout.xml布局,代码如下所示:-11-publicclassLayoutActivityextendsActivity{ /**Calledwhentheactivityisfirstcreated.*/ @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.linearlayout); }}表格布局TableLayout以行、列表格的方式布局子组件。TableLayout中使用TableRow对象来定义行。<TableLayout>元素定义了表格布局,该元素的“android:collapseColumns”属性用于指明表格的列数,此处设置表格的列数为3;“android:stretchColumns”属性用于指明表格的伸展列,指定的伸展列将进行拉伸以填满剩余的空间。注意列号从0开始,此处值为“1”,代表第二列是伸展列。<TableRow>元素定义了表格中的行,所有的其他组件都放在该元素内。-12-相对布局RelativeLayout是按照组件之间的相对位置来布局,如在某个组件的左边、右边、上面和下面等。-13-<Buttonandroid:text="B"android:id="@+id/b" android:layout_toRightOf="@+id/a"/><Buttonandroid:text="B"android:id="@+id/b" android:layout_toLeftOf="@+id/a"/><Buttonandroid:text="B"android:id="@+id/b" android:layout_below="@+id/a"/><Buttonandroid:text="B"android:id="@+id/b" android:layout_above="@+id/a"/>按钮B在按钮A的右边:按钮B在按钮A的左边则:按钮B在按钮A的下面则:按钮B在按钮A的上面则:绝对布局AbsoluteLayout通过指定组件的确切X、Y坐标来确定组件的位置。例如:-14-<Buttonandroid:text="A"android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="20px" android:layout_y="20px"/>网格布局GridLayout以网格方式布局子组件,使子组件x、y轴自动对齐。例如:-15-<GridLayoutxmlns:android="/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:columnCount="4"android:orientation="horizontal"android:rowCount="3">
<Buttonandroid:layout_columnSpan="2“android:layout_gravity="fill"android:text="1.1"/>
<Buttonandroid:text="1.2"/>
<Buttonandroid:layout_gravity="fill"android:layout_rowSpan="2"android:text="1.3"/><Buttonandroid:layout_columnSpan="3"android:layout_gravity="fill"android:text="2.1"/>
<Buttonandroid:text="3.1"/><Buttonandroid:text="3.2"/><Buttonandroid:text="3.3"/><Buttonandroid:text="3.4"/></GridLayout>框架布局FrameLayout以层叠的方式显示子组件。后者会覆盖前者。例如:-16-<FrameLayoutxmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/flower"/><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:background="@drawable/ic_launcher"/></FrameLayout>提示信息(Toast)提示信息(Toast)是Android中用来显示提示信息的一种机制,与对话框不同,Toast是没有焦点的,而且Toast显示时间有限,过一定的时间会自动消失。Toast类定义在android.widget包中,其常用的方法-17-方法功能说明Toast(Contextcontext)构造函数setDuration(intduration)设置提示信息显示的时长,可以设置两种值:Toast.LENGTH_LONG和Toast.LENGTH_SHORTsetText(CharSequences)设置显示的文本cancel()关闭提示信息,即不显示makeText(Contextcontext,CharSequencetext,intduration)该方法是静态方法,用于直接创建一个带文本的提示信息,并指明时长show()显示提示信息调用Toast的静态方法makeText()创建一个指定文本和时长的提示信息。调用Toast的show()方法显示提示信息。创建Toast的步骤可以如下:对话框Android系统中提供了四种对话框:注意:除了上面的四种系统定义的对话框,用户还可以继承android.app.Dialog实现自己的对话框。-18-对话框说明AlertDialog提示对话框ProgressDialog进度对话框DatePickerDialog日期选择对话框TimePickerDialog时间选择对话框提示对话框AlertDialogAlertDialog是一个提示窗口,要求用户做出选择。创建提示对话框的步骤如下:获得AlertDialog的静态内部类Builder对象,由该类来创建对话框。通过Builder对象设置对话框的标题、按钮以及按钮将要相应的事件。调用Builder的Create()方法创建对话框。调用AlertDialog的show()方法显示对话框。-19-常用Widget组件Widget组件是窗体中使用的部件,都定义在android.widget包中常用的Widget组件有:ButtonTextViewEditTextCheckBoxRadioGroupSpinner-20-Widget组件通用属性对Widget组件进行UI设计时可以采用XML布局文件和Java代码两种方式Widget所有的组件几乎都属于View类,其通用属性如下:-21-属性名称描述android:id设置控件的索引,Java程序可通过R.id.<索引>引用该控件android:layout_height设置布局高度,可以通过三种方式来指定高度:fill_parent(和父元素相同)、wrap_content(随组件本身的内容调整)、通过指定px值来设置高度android:layout_width设置布局宽度,也可以采用三种方式:fill_parent、wrap_content、指定px值android:autoLink设置是否当文本为URL链接,文本显示为可点击的链接。可选值为(none/web/email/phone/map/all)android:autoText如果设置,将自动执行输入值的拼写纠正android:bufferType指定getText()方式取得的文本类别android:capitalize设置英文字母大写类型。需要弹出输入法才能看得到android:cursorVisible设定光标为显示/隐藏,默认显示android:digits设置允许输入哪些字符,如“1234567890.+-*/%\n()”android:drawableBottom在text的下方输出一个drawableandroid:drawableLeft在text的左边输出一个drawableandroid:drawablePadding设置text与drawable(图片)的间隔,与drawableLeft、drawableRight、drawableTop、drawableBottom一起使用,可设置为负数,单独使用没有效果。android:drawableRight在text的右边输出一个drawable对象android:inputType设置文本的类型,用于帮助输入法显示合适的键盘类型android:cropToPadding是否截取指定区域用空白代替;单独设置无效果,需要与scrollY一起使用android:maxHeight设置View的最大高度文本框(TextView)TextView类代表文本框,是屏幕中一块用于显示文本的区域TextView属于android.widget包并且继承android.view.View类的方法和属性,同时又是Button、CheckedTextView、Chronometer、DigitaClock以及EditText的父类。-22-方法功能描述TextView()TextView的构造方法getDefaultMovementMethod()获取默认的箭头按键移动方式getText()取得文本内容length()获取TextView中文本长度getEditableText()取得文本的可编辑对象,通过该对象可对TextView的文本进行操作,如在光标之后插入字符getLayout()获取TextView的布局getKeyListener()获取键盘监听对象setKeyListener()设置键盘事件监听setTransformationMethod()设置文本是否显示成特殊字符getCompoundPaddingBottom()该方法返回TextView的底部填充物setCompoundDrawables()设置Drawable图像显示的位置,在设置该Drawable资源之前需要调用setBounds(Rect)TextView的主要方法:方法功能描述setCompoundDrawablesWithIntrinsicBounds()设置Drawable图像显示的位置,但其边界不变setPadding()根据位置设置填充物getAutoLinkMask()返回自动链接的掩码setTextColor()设置文本显示的颜色setHighlightColor()设置选中时文本显示的颜色setShadowLayer()设置文本显示的阴影颜色setHintTextColor()设置提示文字的颜色setLinkTextColor()设置链接文本的颜色setGravity()设置当TextView超出了文本本身时横向以及垂直对齐编辑框EditText类是TextView的子类,其功能与TextView基本类似,主要区别是EditText可以编辑。EditText提供了许多用于设置和控制文本框功能的方法:-23-方法功能描述getText()获取文本内容selectAll()获取输入的所有文本setText(CharSequencetext,TextView.BufferTypetype)设置编辑框中的文本内容复选框-1CheckBox是复选框组件,用于多选的情况下,该控件在应用程序中为用户提供“真/假”选择。CheckBox类提供了用于设置和控制复选框的方法:-24-方法功能描述dispatchPopulateAccessibilityEvent()在子视图创建时,分派一个辅助事件isChecked()判断组件状态是否勾选onRestoreInstanceState()设置视图恢复以前的状态,该状态由onSaveInstanceState()方法生成performClick()执行Click动作,该动作会触发事件监听器setButtonDrawable()根据Drawable对象设置组件的背景setChecked()设置组件的状态。若参数为真,则置组件为选中状态;否则置组件为未选中状态setOnCheckedChangeListener()CheckBox常用的设置事件监听器的方法,状态改变时调用该监听器toggle()改变按钮的当前状态drawableStateChanged()视图状态的变化影响到所显示可绘制的状态时调用该方法onCreateDrawableState()获取文本框为空时,文本框默认显示的字符串onCreateDrawableState()为当前视图生成新的Drawable状态复选框-2复选框是一种双状态按钮的特殊类型,复选框的状态只有两种:选中或者未选中状态,因此复选框状态变化包含两种情况:选中状态→未选中状态未选中状态→选中状态通过鼠标单击复选框,可触发复选框状态的改变。通过setOnCheckedChangeListener()方法注册监听复选框状态改变监听器OnCheckedChangeListener。-25-单选按钮组RadioGroup是单选按钮组,用于实现一组按钮之间相互排斥,即有且仅有一个按钮被选中,在同一个单选按钮组中勾选一个按钮则会取消该组中其它已经勾选的按钮的选中状态。RadioGroup类是LinearLayout的子类,其常用的设置和控制单选按钮组的方法-26-方法功能描述addView()根据布局指定的属性添加一个子视图check()当传递-1作为指定的选择标识符,此方法同clearCheck()方法作用等效generateLayoutParams()返回一个新的布局实例,这个实例是根据指定的属性集合生成的setOnCheckedChangeListener()注册单选按钮状态改变监听器getCheckedRadioButtonId()返回该单选按钮组中所选择的单选按钮的标识ID下拉列表-27-方法功能描述getBaseline()获取组件文本基线的偏移getPrompt()获取被聚焦时的提示消息performClick()效果同鼠标单击一样,该方法执行会触发OnClickListenersetAdapter(SpinnerAdapteradapter)设置选项,适配器adapter用于给下拉列表提供选项数据setPromptId()设置对话框弹出的时候显示的文本setOnItemSelectedListener()设置下拉列表子项被选中监听器Spinner提供了下拉列表功能,其功能类似于RadioGroup,多个item子元素组合成一个Spinner,这些子元素之间相互影响,同时最多有一个子元素被选中。Spinner类是LinearLayout的子类数组适配器Spinner可以通过数组适配器读取XML中定义的子元素。Android系统提供了多种适配器,其中ArrayAdapter是比较简单且经常使用的一种数组适配器,它将数据放入一个数组以便显示。-28-ArrayAdapter(Contextcontext,intresource,inttextViewResId)ArrayAdapter(Contextcontext,inttextViewResId,T[]objects)ArrayAdapter(Contextcontext,inttextViewResId,List<T>objects)上下文环境,在Activity中一般使用this资源id文本视图资源id泛型数组
泛型集合
//获取下拉列表组件Spinnerposition=(Spinner)findViewById(R.id.position);//创建一个下拉列表选项数组String[]strs={"总裁","经理","秘书"};//创建一个数组适配器ArrayAdapteraa=newArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item,strs);//设置下拉列表的适配器position.setAdapter(aa);图片视图-1ImageView可显示图像资源ImageView类常用方法-29-方法功能描述ImageView()ImageView构造函数setAdjustViewBounds(booleanab)设置是否保持高宽比。需要结合maxWidth和maxHeight一起使用getDrawable()获取Drawable对象;若获取成功则返回Drawable对象,否则返回nullgetScaleType()获取视图的填充方式setImageBitmap(Bitmapbm)设置位图setAlpha(intalpha)设置透明度,值范围为0~255,其中0为完全透明,255为完全不透明setMaxHeight(inth)设置控件的最大高度setMaxWidth(intw)设置控件的最大宽度setImageURI(Uriuri)设置图片地址,图片地址使用URI指定setImageResource(intrid)设置图片资源库setColorFilter(intcolor)设置颜色过滤,需要制定颜色过滤矩阵图片视图-2ImageView可通过两种方式设置资源:通过setImageBitmap()方法设置图片资源;通过<ImageView>XML元素的android:src属性,或setImageResource(int)方法指定ImageView的图片。使用ImageView的代码如下:-30-imageview=(ImageView)findViewById(R.id.imageview);bitmap=BitmapFactory.decodeResource(this.getResources(),R.drawable.motor);imageview.setImageBitmap(bitmap);滚动视图ScrollView提供了滚动功能,可在界面上显示比实际多的内容时提供滚动效果ScrollView的子元素可以包含复杂的布局,通常用的子元素是垂直方向的LinearLayout。注意ScrollView只支持垂直方向的滚动,不支持水平方向的移动。-31-滚动视图-ScrollView常用方法-32-方法功能描述ScrollView()ScrollView构造函数dispatchKeyEvent(KeyEventevent)将参数指定的键盘事件分发给当前焦点路径的视图arrowScroll(intdirection)该方法响应点击上下箭头时对滚动条滚动的处理,参数direction指定了滚动的方向addView(Viewchild)添加子视图computeScroll()更新子视图的值(mScrollX和mScrollY)onTouchEvent(MotionEventev)该方法用于运动事件,该运动事件是在处理触摸屏幕产生的setOnTouchListener()设置ImageButton单击事件监听setColorFilter()设置颜色过滤,需要制定颜色过滤矩阵executeKeyEvent(KeyEventevent)当接收到键盘事件时,此函数执行滚动操作fullScroll(intdirection)将视图滚动到direction指定的方向onInterceptTouchEvent(MotionEventme)此方法用于拦截用户的触屏事件网格视图GridView网格视图将其子元素组织成类似于网格状的视图。一个网格视图通常需要一个列表适配器ListAdapter,该适配器包含网格视图的子元素组件。GridView的视图排列方式与矩阵类似网格视图能够以数据网格形式显示子元素,并能够对这些子元素进行分页、自定义样式等操作-33-网格视图-GridView常用方法-34-方法功能描述GridView()GridView构造函数setGravity(intgravity)设置此组件中的内容在组件中的位置setColumnWidth(int)该方法设置网格视图的宽度getAdapter()获取该视图的适配器AdaptersetAdapter(ListAdapteradapter)设置网格视图对应的适配器setStretchMode(int)该方法用于设置缩放模式,也可通过android:stretchMode设置,有多个缩放模式NO_STRETCH,STRETCH_SPACING,STRETCH_SPACING_UNIFOR或STRETCH_COLUMN_WIDTHonKeyMultiple(intkeyCode,intrepeatCount,KeyEventevent)多次按键时的处理方法。当连续发生多次按键时,该方法被调用。其中keyCode为按键对应的整型值,repeatCount是按键的次数,event是按键事件setSelection(intp)设置当前被选中选中的网格视图的子元素onKeyUp(intkeyCode,KeyEventevent)释放按键时的处理方法。释放按键时,该方法被调用。其中keyCode为按键对应的整型值,event是按键事件onKeyDown(intkeyCode,KeyEventevent)按键时的处理方法。按键时,该方法被调用。其中keyCode为按键对应的整型值,event是按键事件。注意用户按键的过程中,onKeyDown先被调用,然后用户释放按键后调用onKeyUpsetHorizontalSpacing(intc)设置网格视图同一行子元素之间的水平间距setNumColumns(int)设置网格视图包含的子元素的列数getHorizontalSpacing()获取网格视图同一行子元素之间的水平间距getNumColumns(int)获取网格视图包含的子元素的列数getSelection()获取当前被选中选中的网格视图的子元素列表视图ListView是列表视图,将元素按照条目的方式自上而下列出来。通常每一列只有一个元素实现一个列表视图必须具备ListView、适配器以及子元素3个条件,其中适配器用于存储列表视图的子元素。列表视图将子元素以列表的方式组织,用户可通过滑动滚动条来显示界面之外的元素。-35-列表视图-ListView常用的方法-36-方法功能描述ListView()ListView构造函数getCheckedItemPosition()返回当前被选中的子元素的位置addFooterView(Viewview)给视图添加脚注,通常脚注位于列表视图的底部,其中参数View为要添加脚注的视图getMaxScrollAmount()返回列表视图的最大滚动数量getDividerHeight()获取子元素之间分隔符的宽度(元素与元素之间的那条线)setStretchMode(int)设置缩放模式,也可通过android:stretchMode设置,有多个缩放模式NO_STRETCH,STRETCH_SPACING,STRETCH_SPACING_UNIFOR或STRETCH_COLUMN_WIDTHonKeyMultiple(intkeyCode,intrepeatCount,KeyEventevent)多次按键时的处理方法。当连续发生多次按键时,该方法被调用。其中keyCode为按键对应的整型值,repeatCount是按键的次数,event是按键事件setSelection(intp)设置当前被选中选中的列表视图的子元素onKeyUp(intkeyCode,KeyEventevent)释放按键时的处理方法。释放按键时,该方法被调用。其中keyCode为按键对应的整型值,event是按键事件onKeyDown(intkeyCode,KeyEventevent)按键时的处理方法。按键时,该方法被调用。其中keyCode为按键对应的整型值,event是按键事件。注意用户按键的过程中,onKeyDown先被调用,然后用户释放按键后调用onKeyUpisItemChecked(intposition)判断指定位置position元素是否被选中addHeaderView(Viewview)给视图添加头注,通常头注位于列表视图的顶部。其中参数View为要添加头注的视图dispatchPopulateAccessibilityEvent(AccessibilityEventevent)获取分派一个被构建时辅助视图的子项目事件getChoiceMode()返回当前的选择模式菜单菜单是UI设计中经常使用的组件,提供了不同功能分组展示的能力,在人机交互中提供了人性化的操作。Android中菜单分为两种类型:选项菜单(OptionMenu)上下文菜单(ContextMenu)-37-选项菜单项菜单是按下“Menu”按键弹出的创建选项菜单的3个步骤:覆盖Activity的onCreateOptionsMenu()方法,当第一次打开菜单时该方法被自动调用。调用Menu的add()方法添加菜单项(MenuItem),可以调用MenuItem的setIcon()方法为菜单设置图标。当菜单项被选择时,覆盖Activity的onOptionsItemSelected()方法来响应事件。-38-上下文菜单上下文菜单只有在组件上长时间按住鼠标右键才会显示ContextMenu上下文菜单提供了用于创建和添加菜单的接口:上下文菜单的创建步骤:覆盖Activity的onCreateContextMenu()方法,调用Menu的add()方法添加菜单项(MenuItem)。覆盖onContextItemSelected()方法,响应菜单单击事件。在Activity的onCreate()方法中,调用registerForContextMenu()方法,为视图注册上下文菜单。-39-方法功能描述setHeaderIcon(inticonRes)设置上下文菜单的图标setHeaderIcon(Drawableicon)设置上下文菜单的图标setHeaderTitle(CharSequencetitle)设置上下文菜单的标题setHeaderTitle(inttitleRes)设置上下文菜单的标题add(intgroupId,intitemId,intorder,CharSequencetitle)添加子菜单ActionBarActionBar是Android3.0中新増的一个导航栏功能的控件,它的主要功能是,标识用户当前操作页面的位置,并且提供了额外的操作按钮方便用户操作和界面导航-40-标签1:ActionBar的图标和标识当前页面位置标签2:ActionButton,一般将常用的功能放到这里标签3:OverFlowButton,应用的选项菜单,如果ActionBar没有足够的空间,ActionButton也将自动添加到这里标签4:TabsActionBar为我们提供了统一的Tabs,类似于选项卡样式,便于页面切换ActionBarActionBar是Android3.0中新増的一个导航栏功能的控件,它的主要功能是,标识用户当前操作页面的位置,并且提供了额外的操作按钮方便用户操作和界面导航-41-ActionBar的显示与隐藏修改图标和标题添加ActionButton添加导航按钮添加ActionView(活动视图)ActionBarActionBar的显示与隐藏-42-修改图标和标题ActionBaractionBar=getActionBar();actionBar.hide();//隐藏actionBar.show();//显示<activityandroid:name=".MyActionBarActivity"android:label="示例"android:logo="@android:drawable/ic_dialog_info">...</activity>ActionBar的图标和标题默认会显示应用的图标和名称,可以修改AndroidManifest.xml中每个Activity的属性,来达到自定义每个Activity的图标和标题的目的ActionBar添加ActionButton-1-43-<menuxmlns:android="/apk/res/android"xmlns:tools="/tools"tools:context="com.dh.ch03_actionbar.MainActivity"><itemandroid:id="@+id/action_search"android:icon="@android:drawable/ic_menu_search"android:showAsAction="ifRoom|withText"android:title="查询"/><itemandroid:id="@+id/action_add“android:icon="@android:drawable/ic_menu_add"android:showAsAction="ifRoom|withText"android:title="添加"/></menu>
添加ActionButton的方式可以通过配置文件添加,也可以通过代码动态添加,通过配置文件添加方式,新建menu/main.xml文件:Activity中,重写onCreateOptionsMenu(Menumenu)方法:@OverridepublicBooleanonCreateOptionsMenu(Menumenu){ getMenuInflater().inflate(R.menu.main,menu); returntrue;}ActionBar添加ActionButton-2-44-@OverridepublicbooleanonOptionsItemSelected(MenuItemitem){ intid=item.getItemId(); switch(id){ caseR.id.action_add: Toast.makeText(this,"add",Toast.LENGTH_SHORT).show(); break; caseR.id.action_search:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年PI项目提案报告模板
- 2024年LED控制与驱动产品项目申请报告模范
- 2024年医药中间体项目立项申请报告模板
- 2024年其它片式元器件项目规划申请报告模稿
- 小学教资课程设计美术
- 学校训犬课程设计
- 小蝌蚪的课程设计
- 小班洗衣服课程设计
- 大学古诗课程设计
- 医院院内感染控制消毒制度
- 红色中国风黎族三月三
- 8.1数学广角-数与形(基础作业)2024-2025学年六年级上册数学 人教版(含解析)
- JJF(京) 141-2024 小型压力蒸汽灭菌器温度、压力参数校准规范
- 《闪亮的坐标-劳模王进喜》教案- 2023-2024学年高教版(2023)中职语文职业模块
- 2024陕煤集团校园招聘3095人高频500题难、易错点模拟试题附带答案详解
- 2024-2025学年浙江省杭州市桐庐县三上数学期末监测模拟试题含解析
- 2021-2022学年新教材五四制道德与法治五年级上册单元、期中、期末测试题及答案(各1套共8套)
- GB/T 18029.30-2024轮椅车第30部分:改变乘坐者姿势的轮椅车测试方法和要求
- 2025届高考作文复习:议论文拟题指导 课件
- 2024年标准矿山生态环境修复项目合作协议
- 生物质燃料的政策法规与标准
评论
0/150
提交评论