应用开发基础10天04android图形界面编程_第1页
应用开发基础10天04android图形界面编程_第2页
应用开发基础10天04android图形界面编程_第3页
应用开发基础10天04android图形界面编程_第4页
应用开发基础10天04android图形界面编程_第5页
已阅读5页,还剩216页未读 继续免费阅读

下载本文档

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

文档简介

Android图形界面设计版权声明华清远见教育集团版权所有;未经华清远见明确许可,不得为任何目的以任何形式复制或传播此文档的任何部分;本文档包含的信息如有更改,恕不另行通知;华清远见教育集团保留所有权利。2概述3Android和UI设计UI(UserInterface)是介于用户与硬件而设计彼此之间互动沟通相关软件,目的在用户能够方便有效率地去操作硬件以达成双向之互动,完成希望借助硬件完成的工作。用户接口定义广泛,包含了人机互动与图形用户接口,凡参与人类与机械的信息交流的领域都存在着用户接口。编写UI的2种方式与主程序混合写在一起写在XML中:建议使用这种方式用于显示数据、图片或者其他信息的组件,叫做“View”AndroidUI设计ViewGroup是一种View容器,本身也是一种View,但是可以包含View及其他ViewGroup组件的View。组件布局6<LinearLayout>线性布局共有两个方向:垂直(vertical)水平(horizontal)决定垂直或是水平的属性为Orientationandroid:orientation="vertical"<LinearLayout>线性布局就是将在<LinearLayout>内的组件以线性的方式来呈现<LinearLayout>

-

示例在这个范例中,使用了<TextView>组件,共使用了三个<TextView>,这三个组件都以垂直向下的方式来呈现<LinearLayout>

-

示例<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:text="TextView1"android:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView><TextViewandroid:text="TextView2"android:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView><TextViewandroid:text="TextView3"android:id="@+id/textView3"android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView></LinearLayout><LinearLayout>

-常用属性设定android:orientation在<LinearLayout>中,此属性代表组件的排列是垂直或水平布局android:layout_width代表此组件布局的宽度,若值为fill_parent则会填满parent的宽度;若值为wrap_content则组件宽度会依照内容大小而调整<LinearLayout>

-常用属性设定android:layout_height代表此组件布局的高度,若值为fill_parent则会填满parent的高度;若值为wrap_content则组件高度会依照内容大小而调整android:layout_margin指定这个view距离上下左右的额外距离<LinearLayout>

-常用属性设定android:layout_marginBottom指定这个view距离下方的额外距离android:layout_marginLeft指定这个view距离左方的额外距离android:layout_marginRight指定这个view距离右方的额外距离android:layout_marginTop指定这个view距离上方的额外距离<FrameLayout>FrameLayout是所有布局中最单纯的若同个FrameLayout中若有数个组件以最上层的组件为主若同个FrameLayout中有同大小的组件只会看到最上层的组件若同个FrameLayout中有不同大小的组件会看到由下至上的组件<FrameLayout>

-范例Thisis盖过Thatis<FrameLayout>

-

Example布局文件-1(res/layout/main.xml):<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent“><FrameLayoutandroid:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_weight="1“><!--最底层的组件--><EditTextandroid:text="Thatisaframelayoutexample"android:id="@+id/text01"android:layout_width="wrap_content"android:layout_height="wrap_content"/><!--最上层的组件--><EditTextandroid:text="Thisis"android:id="@+id/text02"android:layout_width="wrap_content"android:layout_height="wrap_content"/></FrameLayout></LinearLayout><RelativeLayout><RelativeLayout>

-

Example用RelativeLayout展示结果<RelativeLayout>

-

Example布局文件架构(res/layout/main.xml):此范例用到三个TextView,利用三个TextView作RelativeLayout<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutandroid:id="@+id/relativeLayout1"xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="wrap_content"><TextViewandroid:layout_height="wrap_content"android:layout_width="wrap_content"android:id="@+id/textView1"android:padding="8dip"android:layout_marginLeft="10.0dip"android:layout_alignParentLeft="true"android:text="我是左边"></TextView><TextViewandroid:layout_height="wrap_content"android:layout_width="wrap_content"android:id="@+id/textView2"android:padding="8dip"android:layout_marginRight="10.0dip"android:layout_alignParentRight="true"android:text="我是右边"></TextView><TextViewandroid:id="@+id/textView3"android:layout_width="fill_parent"android:layout_toRightOf="@id/textView1"android:padding="8dip"android:text="我是中间我是中间我是中间"android:layout_toLeftOf="@id/textView2"android:layout_height="wrap_content"android:singleLine="true"android:textColor="#abcdef"android:gravity="left"android:marqueeRepeatLimit="marquee_forever"></TextView></RelativeLayout><RelativeLayout>

-常用属性设定android:layout_above置于目标id组件的上方android:layout_alignBaseline置于与目标id组件同样的基线上android:layout_alignBottom让自己的下边界与目标id组件的下边界在同一个位置<RelativeLayout>

-常用属性设定android:layout_alignLeft让自己的左边界与目标id组件的左边界在同一位置android:layout_alignParentBottom若为true,让自己的下边界与Parent的下边界同位置android:layout_alignParentLeft若为true,让自己的左边界与Parent的左边界同位置<RelativeLayout>

-常用属性设定android:layout_alignParentRight若为true,让自己的右边界与Parent的右边界同位置android:layout_alignParentTop若为true,让自己的上边界与Parent的上边界同位置android:layout_alignRight让自己的右边界与目标id组件的右边界在同一位置<RelativeLayout>

-常用属性设定android:layout_alignTop让自己的上边界与目标id组件的上边界在同一个位置android:layout_alignWithParentIfMissing若设为true,当参考的目标id不可用时,会以Parent为参考目标android:layout_below置于目标id组件的下方<RelativeLayout>

-常用属性设定android:layout_centerHorizontal若为true,置于Parent水平位置的中心android:layout_centerInParent若为true,置于Parent水平以及垂直位置的中心android:layout_centerVertical若为true,置于Parent垂直位置的中心android:layout_toLeftOf/toRightOf置于目标id组件的左方/右方<TableLayout>TableLayout的几个属性android:stretchColumns:用在TableLayout上,以第0行为序,尽量把指定的列填充空白部分。可以指定数字,或者以“*”表示所有的列android:collapseColumns:用在TableLayout上,以第0行为序,隐藏指定的列。可以指定数字,或者以“*”表示所有的列android:shrinkColumns:用在TableLayout上,以第0行为序,自动延伸指定的列填充可用部分。可以指定数字,或者以“*”表示所有的列Android:layout_column:用在TableRow内的组件上,用于指明组件放在那一列上,以0开始。android:layout_span:用在TableRow内的组件上,用于指明该组件跨几列26<TableLayout>-Example范例使用了三个<TableRow>,意即有三行。<TableLayout>-Example<?xmlversion="1.0"encoding="utf-8"?><TableLayoutxmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"><TableRowandroid:layout_marginTop="20px"><TextViewandroid:layout_column="0"android:text="第一列\n第一行"android:textSize="22sp"android:layout_marginLeft="20px"/><TextViewandroid:layout_column="1"android:text="第一列\n第二行"android:textSize="22sp"android:layout_marginLeft="20px"/>/></TableRow><TableRowandroid:layout_marginTop="20px"><TextViewandroid:layout_column="0"android:text="第二列\n第一行"android:textSize="22sp"android:layout_marginLeft="20px"/><TextViewandroid:layout_column="1"android:text="第二列\n第二行"android:textSize="22sp"android:layout_marginLeft="20px"/>/></TableRow><TableRowandroid:layout_marginTop="20px"><TextViewandroid:layout_column="0"android:text="第三列\n第一行"android:textSize="22sp"android:layout_marginLeft="20px"/><TextViewandroid:layout_column="1"android:text="第三列\n第二行"android:textSize="22sp"android:layout_marginLeft="20px"/>/></TableRow></TableLayout>完成如下Layout设计29完成如下Layout设计30Widget31Widget简介android.widget套件包含了许多视觉性的UI元素,可用来将操作界面展示在应用程序画面上。要熟悉Android程序的开发,必须从widget套件着手,因此以android.widget套件的应用为中心。表单组件33TextViewTextView是个基本常用的组件可使用XML来操作可使用程序代码中的Method方法来操作下列说明XML与Method相对应之属性功能格式为XML<->MethodTextView–属性功能介绍android:autoLink

<->setAutoLinkMask(int)可让文字上的链接自动变成可点击的连结android:gravity<->setGravity(int)设定文字在View中x轴和y轴相关数值android:height<->setHeight(int)设定TextView的高度android:width<->setWidth(int)设定TextView的宽度TextView–属性功能介绍android:hint<->setHint(int)当Text是空的时候,就会显示hint中的提示文字android:lines<->setLines(int)设置TextView高度为几个Line的高度,值必须为整数型别android:maxLength<->setFilters(InputFilter)设定TextView文字的最大长度TextView–属性功能介绍android:password<->setTransformationMethod(Transformation)让Text显示成其他符号,常用于输入或显示密码时android:text<->setText(CharSequence)显示的文字android:textStyle<->setTypeface(Typeface)设定文字样式TextView–属性功能介绍android:textColor<->setTextColor(ColorStateList)设定文字的颜色android:textColorLink<->setLinkTextColor(int)设定连结的颜色android:textSize<->setTextSize(float)设定文字大小TextView–Example若点击上述的网址,则会自动开启浏览器跳至指定之网页<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:gravity="center"android:autoLink="web"android:text="Google-"/><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:gravity="center"android:autoLink="web"android:text="Farsight-"/></LinearLayout>TextView–Example1设置autoLink为web设置autoLink为web纯粹用XML语法产生链接(res/layout/main.xml):TextView–Example2publicclassTextViewExampleextendsActivity{/**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);

LinearLayoutlayout=(LinearLayout)findViewById(R.id.my_layout);TextViewtv1=newTextView(this);tv1.setGravity(Gravity.CENTER);tv1.setAutoLinkMask(Linkify.WEB_URLS);tv1.setText("Google-");

layout.addView(tv1);

TextViewtv2=newTextView(this);tv2.setGravity(Gravity.CENTER);tv2.setAutoLinkMask(Linkify.WEB_URLS);tv2.setText("Yahoo-.tw");

layout.addView(tv2);}}用程序代码产生连结–

2(TextView.java):TextView–

autoLink属性android:autoLink<->setAutoLinkMask(int)noneautoLink默认值all<->Linkify.ALL目前所有连结种类email<->Linkify.EMAIL_ADDRESSESEmail连结phone<->Linkify.PHONE_NUMBERS电话号码链接web<->Linkify.WEB_URLS 网址连结AutoCompleteTextViewAutoCompleteTextView可达到简易自动完成Text的功能假设已有定义中国大陆各县市英文名称,当输入Bei时,程序会自动将符合Bei的各县市名称给列出来,如范例所展示。AutoCompleteTextView

ExampleAutoCompleteTextView

Example布局文件(res/layout/main.xml):<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:layout_width="wrap_content"android:text="@string/city"android:id="@+id/textView1"android:layout_height="wrap_content"></TextView><AutoCompleteTextViewandroid:layout_width="match_parent"android:id="@+id/autoCompleteTextView1"android:text=""android:layout_height="wrap_content"></AutoCompleteTextView></LinearLayout>AutoCompleteTextView

Example程序代码(Main.java):public

classMainextendsActivity{ privateString[]cities={"Beijing","Beihai", "Shanghai","Tianjin","Wuhan","Nanjing","Chengdu",

"Suzhou","Chongqing"};public

voidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); ArrayAdapter<String>cadapter=new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,cities); AutoCompleteTextViewactv=(AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1); actv.setAdapter(cadapter);}}ButtonButton的layout方面会有两种属性wrap_contentlayout_width为wrap_content时,这个button会依据button上的text长度为基准fill_parentlayout_width为fill_parent时,则会以parent最宽的长度为主Button

Example利用XML建立Button即可ImageButtonImageButton可以将图片当作button的背景利用此属性android:src="图片位置"ImageButton范例ImageButton

Example布局文件(res/layout/main.xml):<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><ImageButtonandroid:id="@+id/ImageButton01"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:src="@drawable/pre"/><ImageButtonandroid:id="@+id/ImageButton02"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:src="@drawable/play"/><ImageButtonandroid:id="@+id/ImageButton03”android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:src="@drawable/next"/></LinearLayout>RadioButtonRadioButton为单选按钮若要做成有多选一这种功能时,则需将这些RadioButton放置一个<RadioGroup>中RadioButton

Example<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><RadioGroupandroid:id="@+id/radioGroup1"android:layout_width="wrap_content"android:layout_height="wrap_content"><RadioButtonandroid:text="男"android:layout_width="wrap_content"android:id="@+id/radio0"android:layout_height="wrap_content"android:checked="true"></RadioButton><RadioButtonandroid:text="女"android:layout_width="wrap_content"android:id="@+id/radio1"android:layout_height="wrap_content"></RadioButton><RadioButtonandroid:text="其他"android:layout_width="wrap_content"android:id="@+id/radio2"android:layout_height="wrap_content"></RadioButton></RadioGroup></LinearLayout>RadioButton

Example布局文件(res/layout/main.xml):ToggleButtonToggleButton是一种类似开关的Button预设为Off,点击后变为On开关上的文字也可以自定义android:textOn和android:textOff当中的文字即为开关On或Off时显示的文字ToggleButton

ExampleToggleButton

Example布局文件-1(res/layout/main.xml):<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"> <ToggleButtonandroid:text="ToggleButton" android:id="@+id/toggleButton1" android:layout_width="wrap_content" android:layout_height="wrap_content"></ToggleButton></LinearLayout>CheckBoxCheckBox只有两种型态checkeduncheckedCheckBox可用在多项选择时CheckBox–ExampleCheckBox–Example布局文件(res/layout/main.xml):<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><CheckBoxandroid:text="篮球"android:id="@+id/checkBox1"android:layout_width="wrap_content"android:layout_height="wrap_content"></CheckBox><CheckBoxandroid:text="足球"android:id="@+id/checkBox2"android:layout_width="wrap_content"android:layout_height="wrap_content"></CheckBox><CheckBoxandroid:text="网球"android:id="@+id/checkBox3"android:layout_width="wrap_content"android:layout_height="wrap_content"></CheckBox></LinearLayout>DatePickerDatePicker可让使用者选择年、月、日当使用者按下button后,TextView会显示DatePicker所选的日期。DatePicker布局文件(res/layout/main.xml):<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"> <DatePickerandroid:layout_gravity="center_horizontal"android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/datePicker1"></DatePicker> <Buttonandroid:layout_width="wrap_content"android:layout_gravity="center_horizontal"android:text="选择"android:layout_height="wrap_content"android:id="@+id/button1"></Button> <TextViewandroid:layout_width="wrap_content"android:text="选择的日期是:"android:id="@+id/textView1"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"></TextView></LinearLayout>DatePicker

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);setContentView(R.layout.main);

finalTextViewtv=(TextView)findViewById(R.id.textView1);

finalButtonbtn=(Button)findViewById(R.id.button1);

finalDatePickerdp=(DatePicker)findViewById(R.id.datePicker1);btn.setOnClickListener(newView.OnClickListener(){ publicvoidonClick(Viewv){ intyear=dp.getYear(); intmonth=dp.getMonth(); intday=dp.getDayOfMonth(); tv.setText(year+"/"+month+"/"+day); } });

}TimePickerTimePicker可让使用者选择时间预设可让使用者选择AM或是PMTimePicker–Example布局文件(res/layout/main.xml):<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"> <TimePickerandroid:layout_gravity="center_horizontal"android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/timePicker1"></TimePicker> <Buttonandroid:layout_width="wrap_content"android:layout_gravity="center_horizontal"android:text="选择"android:layout_height="wrap_content"android:id="@+id/button1"></Button> <TextViewandroid:layout_width="wrap_content"android:text="选择的时间是:"android:id="@+id/textView1"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"></TextView></LinearLayout>TimePicker–Examplepublic

voidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); finalTextViewtv=(TextView) findViewById(R.id.textView1); finalButtonbtn=(Button) findViewById(R.id.button1); final

TimePickertp=(TimePicker) findViewById(R.id.timePicker1); btn.setOnClickListener(newView.OnClickListener(){ @Override public

voidonClick(Viewv){ inthour=tp.getCurrentHour(); intminute=tp.getCurrentMinute(); tv.setText(hour+":"+minute); } });}EditTextEditText可让用户输入文字layout_width为wrap_content时,EditText的宽度会随着输入的字而变宽当为fill_parent时则会固定为parent的宽度EditText-Example67EditText–Example<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"> <EditTextandroid:id="@+id/editText1" android:layout_width="match_parent" android:text="MatchParent" android:layout_height="wrap_content"></EditText> <EditTextandroid:id="@+id/editText2" android:text="WrapContent" android:layout_height="wrap_content" android:layout_width="wrap_content"></EditText></LinearLayout>ProgressBarProgressBar可用于显示程序执行进度水平类型,可以确定进度的最大值和当前值圆形,小号圆形,中号圆形,大号ProgressBar有上述四种类型<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent“><ProgressBarandroid:id="@+id/progressBar1"android:max="100"android:progress="34"style="?android:attr/progressBarStyleHorizontal"android:layout_width="match_parent"android:layout_height="wrap_content"></ProgressBar><ProgressBarandroid:id="@+id/progressBar2"style="?android:attr/progressBarStyleSmall"android:layout_width="wrap_content"android:layout_height="wrap_content"></ProgressBar><ProgressBarandroid:id="@+id/progressBar3"style="?android:attr/progressBarStyle"android:layout_width="wrap_content"android:layout_height="wrap_content"></ProgressBar><ProgressBarandroid:id="@+id/progressBar4"style="?android:attr/progressBarStyleLarge"android:layout_width="wrap_content"android:layout_height="wrap_content"></ProgressBar></LinearLayout>ProgressBar

Example例改变style即可变更ProgressBar的样式RatingBarRatingBar可用来制作评分系统使用者可碰触RatingBar的星星来达到评分若碰触星星的右半部则会加分碰触左半部则会扣分默认为五颗星RatingBar

ExampleRatingBar

–范例<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"> <RatingBarandroid:id="@+id/RatingBar01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="3"/> <TextViewandroid:text=""android:id="@+id/TextView01" android:textSize="50sp"android:layout_width="fill_parent" android:layout_height="wrap_content"/> <RatingBarandroid:id="@+id/RatingBar02" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextViewandroid:text=""android:id="@+id/TextView02" android:textSize="50sp"android:layout_width="fill_parent" android:layout_height="wrap_content"/></LinearLayout>对话框74AlertDialogAlertDialog为警告对话窗口,像是离开程序或是删除文件时会跳出的对话窗口组件AlertDialog.Builder

-属性create()创建一个AlertDialogsetCancelable(boolean)设为false时,使用者无法使用其他方式关闭这个对话窗口,只可使用对话窗口上给的操作方式来操作setIcon(Drawableorint)设置Title上的IconsetTitle(CharSequenceorint)设定要显示的TitleAlertDialog.Builder

-属性setMessage(CharSequenceorint)设定要显示的内容setPositiveButton(CharSequencetext,DialogInterface.OnClickListenerlistener)设定正向(左边)的按钮setNegativeButton(CharSequencetext,DialogInterface.OnClickListenerlistener)设定反向(右边)的按钮show()显示AlertDialogProgressDialogProgressDialog可用于在等待其他程序或是在等待上传/下载时等的耗时操作情景ProgressDialog有两种形式圆型ProgressDialog长条型ProgressDialogProgressDialog

Example1DatePickerDialog/TimePickerDialogDatePickerDialog除了选择日期外,在默认的对话窗口上会显示目前挑选的日期以及星期几的信息。DatePickerDialog

–属性DatePickerDialog有两种建构种类:publicDatePickerDialog(Contextcontext,DatePickerDialog.OnDateSetListenercallBack,intyear,intmonthOfYear,intdayOfMonth)publicDatePickerDialog(Contextcontext,inttheme,DatePickerDialog.OnDateSetListenercallBack,intyear,intmonthOfYear,intdayOfMonth)TimePickerDialogTimePickerDialog选择时间外,默认在对话窗口会显示所选的时间。TimePickerDialog

–属性TimePickerDialog有两种建构种类:publicTimePickerDialog(Contextcontext,TimePickerDialog.OnTimeSetListenercallBack,inthourOfDay,intminute,booleanis24HourView)publicTimePickerDialog(Contextcontext,inttheme,TimePickerDialog.OnTimeSetListenercallBack,inthourOfDay,intminute,booleanis24HourView)DatePickerDialog/TimePickerDialog-Exam84菜单组件85OptionsMenuOptionsMenu就是通过按手机或模拟器上的menu键显示的菜单最多可以显示六项,称为IconMenu超过六项就会以More的功能项来表示其余的选项,称为ExpandedMenu。OptionsMenu

Example1此种类型的Menu就称为OptionsMenuOptionsMenu

Example1public

classMainextendsActivity{public

static

final

int

aboutBtnID=Menu.FIRST;public

static

final

int

exitBtnID=Menu.FIRST+1;/**Calledwhentheactivityisfirstcreated.*/@Overridepublic

voidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);}public

booleanonCreateOptionsMenu(Menumenu){menu.add(0,aboutBtnID,0,"About");menu.add(0,exitBtnID,0,"Exit");return

true;}}OptionsMenu

Example2OptionsMenu

Example2public

static

final

int

aboutBtnID=Menu.FIRST;public

static

final

int

exitBtnID=Menu.FIRST+1;public

static

final

int

searchBtnID=Menu.FIRST+2;public

static

final

int

addBtnID=Menu.FIRST+3;public

static

final

int

playBtnID=Menu.FIRST+4;public

static

final

int

delBtnID=Menu.FIRST+5;public

static

final

int

openBtnID=Menu.FIRST+6;public

booleanonCreateOptionsMenu(Menumenu){menu.add(0,aboutBtnID,0,"About");menu.add(0,exitBtnID,0,"Exit");menu.add(0,searchBtnID,0,"Search");menu.add(0,addBtnID,0,"Add");menu.add(0,playBtnID,0,"Play");menu.add(0,delBtnID,0,"Delete");menu.add(0,openBtnID,0,"Open");return

true;}OptionsMenu

–范例三在菜单中增加图标public

static

final

int

aboutBtnID=Menu.FIRST;public

static

final

int

exitBtnID=Menu.FIRST+1;

/**Calledwhentheactivityisfirstcreated.*/

@Override

public

voidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);setContentView(R.layout.main);

}

public

booleanonCreateOptionsMenu(Menumenu){menu.add(0,aboutBtnID,0,"About").setIcon(R.drawable.about);menu.add(0,exitBtnID,0,"Exit").setIcon(R.drawable.exit);

return

true;

}OptionsMenu

Example3通过setIcon()方法在菜单中增加图标ContextMenuAndroid中的ContextMenu(上下文菜单)与PC上的鼠标右键菜单非常类似当在View上,用户长按屏幕不放两秒,将会出现一个上下文菜单ContextMenu不支持图示或快捷键ContextMenu

ExampleContextMenu

Examplepublic

classMainextendsActivity{public

static

final

int

MALE=1;public

static

final

int

FEMALE=2;public

static

final

int

READING=3;public

static

final

int

TRAVELLING=4;public

static

final

int

SWIMMING=5;@Overridepublic

voidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);//需为EditText注册ContextMenu,否则当长按输入框时,只能弹出系统自带的//Main中的onCreateContextMenu未执行到this.registerForContextMenu(findViewById(R.id.genderEdit));this.registerForContextMenu(findViewById(R.id.hobbyEdit));}ContextMenu-Example96@OverridepublicvoidonCreateContextMenu(ContextMenumenu,Viewview,ContextMenu.ContextMenuInfomenuInfo){//清除系统所有系统自带的菜单项menu.clear();if(view==findViewById(R.id.genderEdit)){menu.setHeaderIcon(R.drawable.gender);menu.setHeaderTitle(R.string.gender);//如果该菜单项里面还未添加菜单,此时菜单项是隐藏的//添加了MALE后会显示出来menu.add(0,MALE,0,R.string.male);menu.add(0,FEMALE,0,R.string.female);}elseif(view==findViewById(R.id.hobbyEdit)){menu.setHeaderIcon(R.drawable.favorite);menu.setHeaderTitle(R.string.hobby);menu.add(0,READING,0,R.string.reading);menu.add(0,TRAVELLING,0,R.ling);menu.add(0,SWIMMING,0,R.string.swimming);}}ContextMenu-Example97//上下文菜单选项被选中处理@Overridepublic

booleanonContextItemSelected(MenuItemmenuItem){EditTexteditText=null;switch(menuItem.getItemId()){case

MALE:case

FEMALE:editText=(EditText)this.findViewById(R.id.genderEdit);break;case

READING:case

SWIMMING:case

TRAVELLING:editText=(EditText)this.findViewById(R.id.hobbyEdit);break;}editText.setText(menuItem.getTitle());return

true;}SubMenu一个子菜单可以被加入任何菜单中,但不能加入另外的子菜单中。当应用程序有很多功能可以被分类时,采用子菜单可以非常方便,就像是一般计算机的菜单。SubMenu–ExampleSubMenu–Example@Overridepublic

booleanonCreateOptionsMenu(Menumenu){//构建“性别”子菜单SubMenusubs_gender=menu.addSubMenu(MAIN_GROUP,MENU_GENDER,0,R.string.gender).setIcon(R.drawable.gender);subs_gender.add(GENDER_

温馨提示

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

最新文档

评论

0/150

提交评论