ANDROID用戶界面.ppt
《ANDROID用戶界面.ppt》由會員分享,可在線閱讀,更多相關《ANDROID用戶界面.ppt(91頁珍藏版)》請在裝配圖網上搜索。
ANDROID用戶界面,英蓓特培訓中心2012.07,主要內容,用戶界面基礎用戶界面初探用戶界面布局用戶界面控件用戶界面菜單,用戶界面基礎,內容一,,用戶界面,界面如同人的面孔,具有吸引用戶的直接優(yōu)勢…,用戶界面,用戶界面(UserInterface,UI)是系統(tǒng)和用戶之間進行信息交換的媒介,實現(xiàn)信息的內部形式與人類可以接受形式之間的轉換在計算機出現(xiàn)早期,批處理界面(1945-1968)和命令行界面(1969-1983)得到廣泛的使用目前,流行圖形用戶界面(GraphicalUserInterface,GUI),采用圖形方式與用戶進行交互的界面未來的用戶界面將更多的運用虛擬現(xiàn)實技術,使用戶能夠擺脫鍵盤與鼠標的交互方式,而通過動作、語言,甚至是腦電波來控制計算機,手機用戶界面,設計手機用戶界面應解決的問題:需要界面設計與程序邏輯完全分離,這樣不僅有利于他們的并行開發(fā),而且在后期修改界面時,也不用再次修改程序的邏輯代碼根據不同型號手機的屏幕解析度、尺寸和縱橫比各不相同,自動調整界面上部分控件的位置和尺寸,避免因為屏幕信息的變化而出現(xiàn)顯示錯誤能夠合理利用較小的屏幕顯示空間,構造出符合人機交互規(guī)律的用戶界面,避免出現(xiàn)凌亂、擁擠的用戶界面Android已經解決了前兩個問題:使用XML文件(布局文件)描述用戶界面;資源資源文件獨立保存在資源文件夾中;對界用戶面描述非常靈活,允許不明確定義界面元素的位置和尺寸,僅聲明界面元素的相對位置和粗略尺寸,手機用戶界面,設計手機用戶界面應特別注意的問題:手機的顯示區(qū)域小,不能有太豐富的展示效果,因此要求設計精簡而不失表達能力。手機的操作主要依賴拇指,所以交互過程不能設計得太復雜,交互步驟不能太多,盡量設計多點快捷方式。不同型號的手機支持的圖片格式、聲音格式、動畫格式不一樣,需要選擇盡可能通用的格式,或者針對不同的型號進行配置選擇。不同型號的手機屏幕大小不一致,設置形狀不一致,因此需要考慮圖片的自適應問題和界面元素的布局問題。,ANDROID用戶界面,Android用戶界面框架采用MVC(Model-View-Controller)模型提供了處理用戶輸入的控制器(Controller)顯示用戶界面和圖像的視圖(View),以及保存數據和代碼的模型(Model),ANDROID用戶界面,MVC模型MVC模型中的控制器能夠接受并響應程序的外部動作,如按鍵動作或觸摸屏動作等控制器使用隊列處理外部動作,每個外部動作作為一個獨立的事件被加入隊列中,然后Android用戶界面框架按照“先進先出”的規(guī)則從隊列中獲取事件,并將這個事件分配給所對應的事件處理函數,ANDROID用戶界面框架,Android用戶界面框架采用視圖樹(ViewTree)模型Android用戶界面框架中的界面元素以一種樹型結構組織在一起,稱為視圖樹Android系統(tǒng)會依據視圖樹的結構從上至下繪制每一個界面元素。每個元素負責對自身的繪制,如果元素包含子元素,該元素會通知其下所有子元素進行繪制,ANDROID視圖樹,視圖樹視圖樹由View和ViewGroup構成View是界面的最基本的可視單元,存儲了屏幕上特定矩形區(qū)域內所顯示內容的數據結構,并能夠實現(xiàn)所占據區(qū)域的界面繪制、焦點變化、用戶輸入和界面事件處理等功能View也是一個重要的基類,所有在界面上的可見元素都是View的子類ViewGroup是一種能夠承載含多個View的顯示單元ViewGroup功能:一個是承載界面布局;另一個是承載具有原子特性的重構模塊,單線程用戶界面,單線程用戶界面在單線程用戶界面中,控制器從隊列中獲取事件和視圖在屏幕上繪制用戶界面,使用的都是同一個線程優(yōu)點:處理函數具有順序性,能夠降低應用程序的復雜程度,同時也能減低開發(fā)的難度缺點:如果事件處理函數過于復雜,可能會導致用戶界面失去響應,用戶界面初探,內容二,,ANDROID應用程序模型,Activity,如何實現(xiàn)ANDROID界面,Android界面布局Layout定義了界面中所有的元素、結構和相互關系:使用XML文件描述界面布局在程序運行時動態(tài)添加或修改界面布局布局對象在程序中的調用:setContentView(…)從布局文件加載布局及控件findViewById(…)從資源中找到控件,ANDROIDXML布局文件,使用XML文件聲明界面布局的特點將程序的表現(xiàn)層和控制層分離在后期修改用戶界面時,無需更改程序的源代碼用戶還能夠通過可視化工具直接看到所設計的用戶界面,有利于加快界面設計的過程,并且為界面設計與開發(fā)帶來極大的便利性,簡單的XML布局文件,線性布局,布局方向,控件,命名空間,控件資源ID,控件顯示內容,android:id屬性:聲明了控件對象的ID,這個ID主要用于在代碼中引用這個控件對象“@+id/button1”表示所設置的ID值@表示后面的字符串是ID資源加號(+)表示需要建立新資源名稱,并添加到R.java文件中斜杠后面的字符串(button1)表示新資源的名稱如果資源不是新添加的,或屬于Android框架的ID資源,則不需要使用加號(+),但必須添加Android包的命名空間,例如android:id="@android:id/empty",界面對象的常規(guī)屬性,android:id="@+id/button1",android:layout_width屬性:用來設置控件對象的寬度,fill_parent表示控件對象的寬度將等于父控件的寬度android:layout_height屬性:用來設置控件對象的高度,wrap_content表示控件對象的寬度只要能夠包含所顯示的字符串即可,界面對象的常規(guī)屬性,android:layout_width="fill_parent"android:layout_height="wrap_content",界面對象的常規(guī)屬性,Android中使用的單位(在布局文件中使用ddxx)px:表示屏幕實際的像素數。例如,320*480的屏幕在橫向有320個象素,在縱向有480個象素。in:表示英寸,是屏幕的物理尺寸。每英寸等于2.54厘米,形容手機屏幕大小用的是屏幕的對角線長度。mm:表示毫米,是屏幕的物理尺寸。pt:表示一個點,是屏幕的物理尺寸,大小為1英寸的1/72。dp(密度獨立像素):也作dip,是一種基于屏幕密度的抽象單位。基本密度是160dpi,如果屏幕密度提高,則dp對應的實際px數也會相應的提高。sp(scale獨立像素):用于字體的一種基于屏幕密度的抽象單位。,android:layout_width=“120dp",界面對象的常規(guī)屬性,android:text屬性:用來設置控件對象上顯示的文字內容,android:text="Button",引入資源,引入資源:將download.png文件拷貝到/res/drawable文件夾下在/res目錄上選擇Refresh新添加的文件將顯示在/res/drawable文件夾下R.java文件內容也得到了更新否則提示無法找到資源的錯誤,程序加載XML資源,通過調用方法:setContentView()可以實現(xiàn)對Layout布局資源的調用:,publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);},程序創(chuàng)建對象及引用,通過調用方法:findViewById()可以實現(xiàn)對控件對象的引用:,ButtonmyButton=(Button)findViewById(R.id.button1);myButton.setText("test");,可視化編輯器,作業(yè):在界面中添加一個按鈕,并且在程序中調用該按鈕資源,顯示文字“test”,用戶界面布局,內容三,,ANDROID界面布局,Android界面布局Layout定義了界面中所有的元素、結構和相互關系。,常用的布局對象,Android操作系統(tǒng)提供下列5種窗體布局:線性布局(LinearLayout)框架布局(FrameLayout)表格布局(TableLayout)相對布局(RelativeLayout)絕對布局(AbsoluteLayout),線性布局-LinearLayout,線性布局LinearLayout在線性布局中,所有的子元素都按照垂直或水平的順序在界面上排列如果垂直排列,則每行僅包含一個界面元素如果水平排列,則每列僅包含一個界面元素,Android:orientation=“vertical”或Android:orientation=“horizontal”,線性布局實例,,線性布局控件常用屬性,框架布局-FrameLayout,框架布局FrameLayout框架布局(FrameLayout)是最簡單的界面布局,是用來存放一個元素的空白空間,且子元素的位置是不能夠指定的,只能夠放置在空白空間的左上角如果有多個子元素,后放置的子元素將遮擋先放置的子元素使用AndroidSDK中提供的層級觀察器(HierarchyViewer)進一步分析界面布局,能夠對用戶界面進行分析和調試,并以圖形化的方式展示樹形結構的界面布局,框架布局-FrameLayout,在層級觀察器中獲得示例界面布局的樹形結構圖,框架布局實例,,表格布局-TableLayout,表格布局TableLayout表格布局(TableLayout)也是一種常用的界面布局,它將屏幕劃分網格,通過指定行和列可以將界面元素添加的網格中網格的邊界對用戶是不可見的表格布局還支持嵌套,可以將另一個表格布局放置在前一個表格布局的網格中,也可以在表格布局中添加其他界面布局,例如線性布局、相對布局等等,表格布局-TableLayout,表格布局TableLayout,表格布局示意圖,表格布局效果圖,表格布局實例,,表格布局常用屬性,相對布局-RelativeLayout,相對布局RelativeLayout相對布局(RelativeLayout)是一種非常靈活的布局方式,能夠通過指定界面元素與其他元素的相對位置關系,確定界面中所有元素的布局位置特點:能夠最大程度保證在各種屏幕類型的手機上正確顯示界面布局,相對布局實例,,相對布局常用屬性,絕對布局-AbsoluteLayout,絕對布局AbsoluteLayout絕對布局(AbsoluteLayout)能通過指定界面元素的坐標位置,來確定用戶界面的整體布局絕對布局是一種不推薦使用的界面布局,因為通過X軸和Y軸確定界面元素位置后,Android系統(tǒng)不能夠根據不同屏幕對界面元素的位置進行調整,降低了界面布局對不同類型和尺寸屏幕的適應能力,布局的嵌套,布局的嵌套是指相同或者不同類型的布局之間可以嵌套使用,其目的是為了利用不同布局的特性,方便構建我們想要得到的圖案,布局嵌套實例,,,用戶界面控件,內容四,,ANDROID用戶界面控件,Android系統(tǒng)的界面控件有兩種:系統(tǒng)控件:是Android系統(tǒng)提供給用戶已經封裝的界面控件。提供在應用程序開發(fā)過程中常見功能控件。系統(tǒng)控件更有利于幫助用戶進行快速開發(fā),同時能夠使Android系統(tǒng)中應用程序的界面保持一致性定制控件:是用戶獨立開發(fā)的控件,或通過繼承并修改系統(tǒng)控件后所產生的新控件。能夠為用戶提供特殊的功能或與眾不同的顯示需求方式常見的系統(tǒng)控件包括TextView、EditText、Button、ImageButton、Checkbox、RadioButton、Spinner、Progress、ListView和TabHost、Dialog、Toast、Notification等,ANDROID控件類型分類,常用控件:TextView、EditText、Button選擇控件:CheckBox、RadioButton、Spinner進度條控件:Progress對話框控件:Dialog消息提示控件:Toast,常用控件:TextView、EditText,TextView和EditTextTextView是一種用于顯示字符串的控件EditText則是用來輸入和編輯字符串的控件,,TextView,,EditText,,程序名,EditText實際上是一個具有編輯功能的TextView,控件布局實例,,常用函數:setText();getText();,常用控件:Button、ImageButton,Button和ImageButtonButton是一種按鈕控件,用戶能夠在該控件上點擊,隨后引發(fā)相應的事件處理函數ImageButton用以實現(xiàn)能夠顯示圖像功能的控件按鈕,控件布局實例,,也可以通過程序實現(xiàn)ImageButton上圖片的顯示:myImageButton.setImageResource(R.drawable.download);,按鈕控件的監(jiān)聽,按鈕響應點擊事件:添加點擊事件的監(jiān)聽器,finalButtonmyButton=(Button)findViewById(R.id.button1);myButton.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv){//TODOAuto-generatedmethodstubmyButton.setText("我按了Button一下");}});,監(jiān)聽器,消息響應函數,按鈕控件的監(jiān)聽,finalButtonmyButton=(Button)findViewById(R.id.button1);finalImageButtonmyImageButton=(ImageButton)findViewById(R.id.imagebutton1);View.OnClickListenerbuttonListener=newView.OnClickListener(){publicvoidonClick(Viewv){//TODOAuto-generatedmethodstubswitch(v.getId()){caseR.id.button1:myButton.setText("我按了Button一下");return;caseR.id.imagebutton1:myButton.setText("我按了ImageButton一下");return;}}};myButton.setOnClickListener(buttonListener);myImageButton.setOnClickListener(buttonListener);,選擇控件:CheckBox、RadioButton,CheckBox和RadioButtonCheckBox:多選控件RadioButton:單選控件RadioGroup是RadioButton的承載體,程序運行時不可見,在每個RadioGroup中,用戶僅能夠選擇其中一個RadioButton,CheckBox控件實例,,finalCheckBoxmyCheckBox=(CheckBox)findViewById(R.id.checkbox01);myCheckBox.setText("我的狀態(tài)是:"+myCheckBox.isChecked());myCheckBox.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv){//TODOAuto-generatedmethodstubmyCheckBox.setText("我的狀態(tài)是:"+myCheckBox.isChecked());}});,RadioButton控件實例,,RadioButton控件實例,finalTextViewmyTextView=(TextView)findViewById(R.id.TextView01);finalRadioGroupmyRadioGroup01=(RadioGroup)findViewById(R.id.RadioGroup01);finalRadioButtonmyRadioButton=(RadioButton)findViewById(myRadioGroup01.getCheckedRadioButtonId());myTextView.setText(myRadioButton.getText().toString());myRadioGroup01.setOnCheckedChangeListener(newOnCheckedChangeListener(){publicvoidonCheckedChanged(RadioGroupgroup,intcheckedId){//TODOAuto-generatedmethodstubmyTextView.setText(((RadioButton)findViewById(checkedId)).getText().toString());}});,選擇控件:Spinner,SpinnerSpinner是一種能夠從多個選項中選一選項的控件,類似于桌面程序的組合框(ComboBox),但沒有組合框的下拉菜單,而是使用浮動菜單為用戶提供選擇,Spinner控件實例,,Spinner控件實例,finalSpinnermySpinner=(Spinner)findViewById(R.id.Spinner01);Listlist=newArrayList();list.add("Spinner1");list.add("Spinner2");list.add("Spinner3");ArrayAdapteradapter=newArrayAdapter(this,android.R.layout.simple_spinner_item,list);adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);mySpinner.setAdapter(adapter);,進度條控件:Progress,ProgressProgress可以用于某些操作的可視化指示器。顯示給用戶一個代表操作進行了多少的進度條。用戶可以隨著進度向前推進改變進度條的量。,Progress控件實例,,Progress控件實例,privatebooleanstate=false;privatestaticintcount=0;finalButtonmyButton1=(Button)findViewById(R.id.button1);finalButtonmyButton2=(Button)findViewById(R.id.button2);finalProgressBarmyProgressBar1=(ProgressBar)findViewById(R.id.progressBar1);finalProgressBarmyProgressBar2=(ProgressBar)findViewById(R.id.progressBar2);myProgressBar1.setMax(100);myProgressBar2.setVisibility(View.GONE);View.OnClickListenerbuttonListener=newView.OnClickListener(){publicvoidonClick(Viewv){//TODOAuto-generatedmethodstubswitch(v.getId()){caseR.id.button1:count++;if(count==100){count=0;myProgressBar1.setProgress(0);}myProgressBar1.setProgress(count);break;caseR.id.button2:state=!state;if(state){myButton2.setText("停止");myProgressBar2.setVisibility(View.VISIBLE);}else{myButton2.setText("運行");myProgressBar2.setVisibility(View.GONE);}break;}}};myButton1.setOnClickListener(buttonListener);myButton2.setOnClickListener(buttonListener);,對話框控件:Dialog,Dialog是android開發(fā)過程中最常用到的組件之一,通常是在當前activity前面出現(xiàn)的小窗口。Dialog通常是用來通知打斷用戶,執(zhí)行直接跟應用程序進度相關的短暫任務(比如進度條或者登錄框)。Dialog可分為以下幾種類型:警告對話框:Alertialog進度對話框:ProgressDialog日期選擇對話框:DatePickerDialog時間選擇對話框:TimePickerDialog自定義對話框:從Dialog繼承,各種Dialog,AlertDialog,AlertDialog是對Dialog的擴展,它有能力構建絕大多數的對話框用戶界面,建議使用這種類型的對話框。它不需要在XML中定義,用代碼生成。,AlertDialog控件實例,myButton1.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){//TODOAuto-generatedmethodstubAlertDialog.Builderbuilder=newAlertDialog.Builder(HelloWorldActivity.this);builder.setMessage("確認退出嗎?");builder.setTitle("提示");builder.setPositiveButton("確認",newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialog,intwhich){//TODOAuto-generatedmethodstubHelloWorldActivity.this.finish();}});builder.setNegativeButton("取消",newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialog,intwhich){//TODOAuto-generatedmethodstubdialog.cancel();}});builder.create().show();}});,消息提示控件:Toast,Toast是在窗口表面彈出的通知消息。它僅僅是填充消息需要的空間大小,用戶當前的activity保留可見性和可交互性。通知會自動的褪掉,它不會接受用戶交互事件。,Toast控件實例,myButton1.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){//TODOAuto-generatedmethodstubContextcontext=getApplicationContext();CharSequencetext="HelloToast!";intduration=Toast.LENGTH_SHORT;Toasttoast=Toast.makeText(context,text,duration);//toast.setGravity(Gravity.TOP|Gravity.LEFT,0,0);toast.show();}});,用戶界面菜單,內容五,,菜單,菜單是應用程序中非常重要的組成部分,能夠在不占用界面空間的前提下,為應用程序提供了統(tǒng)一的功能和設置界面,并為程序開發(fā)人員提供了易于使用的編程接口Android系統(tǒng)支持三種菜單選項菜單(Menu類)子菜單(SubMenu類)快捷菜單(ContextMenu類),菜單,選項菜單選項菜單是一種經常被使用的Android系統(tǒng)菜單打開方式:通過“菜單鍵”(MENUkey)打開選項菜單分類圖標菜單(IconMenu)擴展菜單(ExpandedMenu),菜單,圖標菜單圖標菜單能夠同時顯示文字和圖標的菜單,最多支持6個子項圖標菜單不支持單選框和復選框,菜單,擴展菜單擴展菜單是在圖標菜單子項多于6個時才出現(xiàn),通過點擊圖標菜單最后的子項“More”才能打開擴展菜單是垂直的列表型菜單,不能夠顯示圖標支持單選框和復選框,菜單,重要函數,菜單,選項菜單使用重載Activity的onCreateOptionMenu()函數,才能夠在Android應用程序中使用選項菜單初次使用選項菜單時,會調用onCreateOptionMenu()函數,用來初始化菜單子項的相關內容,設置菜單子項自身的子項的ID和組ID菜單子項顯示的文字和圖片等,選項菜單,選項菜單,finalstaticintMENU_DOWNLOAD=Menu.FIRST;finalstaticintMENU_UPLOAD=Menu.FIRST+1;@OverridepublicbooleanonCreateOptionsMenu(Menumenu){menu.add(0,MENU_DOWNLOAD,0,"下載設置");menu.add(0,MENU_UPLOAD,1,"上傳設置");returntrue;},Menu.FIRST(整數類型,值為1)定義第一個菜單子項,以后的菜單子項僅需在Menu.FIRST增加相應的數值即可第7行代碼是onCreateOptionsMenu()函數返回值,函數的返回值類型為布爾型返回true將顯示在函數中設置的菜單,否則不能夠顯示菜單,選項菜單,Menu:add()添加菜單子項add()函數的語法,groupId:組ID,用以批量的對菜單子項進行處理和排序itemId:子項ID,是每一個菜單子項的唯一標識,通過子項ID使應用程序能夠定位到用戶所選擇的菜單子項order:定義菜單子項在選項菜單中的排列順序title:菜單子項所顯示的標題,MenuItemandroid.view.Menu.add(intgroupId,intitemId,intorder,CharSequencetitle),選項菜單,添加菜單子項的圖標和快捷鍵:setIcon()函數setShortcut()函數,MENU_DOWNLOAD菜單設置圖標和快捷鍵的代碼第2行代碼中使用了新的圖像資源,用戶將需要使用的圖像文件拷貝到/res/drawable目錄下setShortcut()函數第一個參數是為數字鍵盤設定的快捷鍵setShortcut()函數第二個參數是為全鍵盤設定的快捷鍵,且不區(qū)分字母的大小寫,menu.add(0,MENU_DOWNLOAD,0,"下載設置").setIcon(R.drawable.download).setShortcut(‘0’,’d’);,選項菜單,Activity::onPrepareOptionsMenu()動態(tài)的添加、刪除菜單子項,或修改菜單的標題、圖標和可見性等內容onPrepareOptionsMenu()函數的返回值的含義與onCreateOptionsMenu()函數相同返回true則顯示菜單返回false則不顯示菜單,選項菜單,Activity::onOptionsItemSelected()菜單選擇事件,且該函數在每次點擊菜單子項時都會被調用下面的代碼說明了如何通過菜單子項的子項ID執(zhí)行不同的操作,publicbooleanonOptionsItemSelected(MenuItemitem){switch(item.getItemId()){caseMENU_DOWNLOAD:Toast.makeText(getApplicationContext(),"DOWNLOAD",Toast.LENGTH_SHORT).show();returntrue;caseMENU_UPLOAD:Toast.makeText(getApplicationContext(),"UPLOAD",Toast.LENGTH_SHORT).show();returntrue;}returnfalse;},子菜單,子菜單(二級菜單)子菜單是能夠顯示更加詳細信息的菜單子項菜單子項使用了浮動窗體的顯示形式,能夠更好適應小屏幕的顯示方式,子菜單,子菜單重要函數,子菜單,子菜單Android系統(tǒng)的子菜單使用非常靈活,可以在選項菜單或快捷菜單中使用子菜單,有利于將相同或相似的菜單子項組織在一起,便于顯示和分類子菜單不支持嵌套,不支持圖標(快捷鍵支持的不好)子菜單的添加是使用addSubMenu()函數實現(xiàn),SubMenuuploadMenu=(SubMenu)menu.addSubMenu(0,MENU_UPLOAD,1,"上傳設置").setIcon(R.drawable.upload);uploadMenu.setHeaderIcon(R.drawable.upload);uploadMenu.setHeaderTitle("上傳參數設置");uploadMenu.add(0,SUB_MENU_UPLOAD_A,0,"上傳參數A");uploadMenu.add(0,SUB_MENU_UPLOAD_B,0,"上傳參數B");,快捷菜單,快捷菜單(contextmenu)快捷菜單同樣采用了動態(tài)窗體的顯示方式,與子菜單的實現(xiàn)方式相同,但兩種菜單的啟動方式卻截然不同啟動方式:快捷菜單類似于普通桌面程序中的“右鍵菜單”,當用戶點擊界面元素超過2秒后,將啟動注冊到該界面元素的快捷菜單不支持快捷鍵和圖標(實際支持數字快捷鍵)使用方法:與使用選項菜單的方法非常相似,需要重載onCreateContextMenu()函數和onContextItemSelected()函數onCreateContextMenu()函數主要用來添加快捷菜單所顯示的標題、圖標和菜單子項等內容,快捷菜單,快捷菜單重要函數,快捷菜單,publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);TextViewmyTextView=(TextView)findViewById(R.id.textView1);registerForContextMenu(myTextView);}finalstaticintCONTEXT_MENU_1=Menu.FIRST;finalstaticintCONTEXT_MENU_2=Menu.FIRST+1;publicvoidonCreateContextMenu(ContextMenumenu,Viewv,ContextMenuInfomenuInfo){menu.setHeaderTitle("快捷菜單標題");menu.add(0,CONTEXT_MENU_1,0,"菜單項1");menu.add(0,CONTEXT_MENU_2,1,"菜單項2");}publicbooleanonContextItemSelected(MenuItemitem){switch(item.getItemId()){caseCONTEXT_MENU_1:Toast.makeText(getApplicationContext(),"菜單項1",Toast.LENGTH_SHORT).show();returntrue;caseCONTEXT_MENU_2:Toast.makeText(getApplicationContext(),"菜單項2",Toast.LENGTH_SHORT).show();returntrue;}returnfalse;},菜單(布局),菜單在布局中定義在Android系統(tǒng)中,菜單不僅能夠在代碼中定義,而且可以像界面布局一樣在XML文件中進行定義使用XML文件定義界面菜單,將代碼與界面設計分類,有助于簡化代碼的復雜程度,并且更有利于界面的可視化,菜單(布局)實例,在/res目錄下建立子目錄menu,并在menu下建立context_menu.xml文件,代碼如下,,菜單(布局)實例,publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);TextViewmyTextView=(TextView)findViewById(R.id.textView1);registerForContextMenu(myTextView);}@OverridepublicvoidonCreateContextMenu(ContextMenumenu,Viewv,ContextMenuInfomenuInfo){MenuInflaterinflater=getMenuInflater();inflater.inflate(R.menu.context_menu,menu);},,謝謝大家!,英蓓特培訓中心培訓講師:盧斯lusi@13327906618,- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- ANDROID 用戶界面
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://m.appdesigncorp.com/p-3386550.html