課程升級版03android圖形界面編程_第1頁
課程升級版03android圖形界面編程_第2頁
課程升級版03android圖形界面編程_第3頁
課程升級版03android圖形界面編程_第4頁
課程升級版03android圖形界面編程_第5頁
已閱讀5頁,還剩114頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

ANDROID圖形界面設(shè)計版權(quán)聲明華清遠(yuǎn)見教育集團(tuán);未經(jīng)華清遠(yuǎn)見明確許可,不得為任何目的以任何形式復(fù)制或傳播此文檔的任何部分;本文檔包含的信息如有更改,恕不另行通知;華清遠(yuǎn)見教育集團(tuán)保留所有權(quán)利。概述Android和UI設(shè)計UI(UserInterface)是介于用戶與硬件而設(shè)計彼此之間互動溝通相關(guān)軟件,目的在用戶能夠方便有效率地去操作硬件以達(dá)成雙向之互動,完成希望借助硬件完成的工作。用戶接口定義廣泛,包含了人機(jī)互動與圖形用戶接口,凡參與人類與機(jī)械的信息交流的領(lǐng)域都存在著用戶接口。編寫UI的2種方式與主程序混合寫在一起寫在XML中:建議使用這種方式用于顯示數(shù)據(jù)、圖片或者其他信息的組件,叫做“View”AndroidUI設(shè)計ViewGroup是一種View容器,本身也是一種View,但是可以包含View及其他ViewGroup組件的View。組件布局<LinearLayout>線性布局共有兩個方向:垂直(vertical)水平(horizontal)決定垂直或是水平的屬性為Orientationandroid:orientation="vertical"<LinearLayout>線性布局就是將在<LinearLayout>內(nèi)的組件以線性的方式來呈現(xiàn)<LinearLayout>-示例在這個范例中,使用了<TextView>組件,共使用了三個<TextView>,這三個組件都以垂直向下的方式來呈現(xiàn)<LinearLayout>-示例<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns: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>-常用屬性設(shè)定android:orientation在<LinearLayout>中,此屬性代表組件的排列是垂直或水平布局android:layout_width代表此組件布局的寬度,若值為fill_parent則會填滿parent的寬度;若值為wrap_content則組件寬度會依照內(nèi)容大小而調(diào)整<LinearLayout>-常用屬性設(shè)定android:layout_height代表此組件布局的高度,若值為fill_parent則會填滿parent的高度;若值為wrap_content則組件高度會依照內(nèi)容大小而調(diào)整android:layout_margin指定這個view距離上下左右的額外距離<LinearLayout>-常用屬性設(shè)定android:layout_marginBottom指定這個view距離下方的額外距離android:layout_marginLeft指定這個view距離左方的額外距離android:layout_marginRight指定這個view距離右方的額外距離android:layout_marginTop指定這個view距離上方的額外距離<RelativeLayout><RelativeLayout>-Example用RelativeLayout展示結(jié)果<RelativeLayout>-Example布局文件架構(gòu)(res/layout/main.xml):此范例用到三個TextView,利用三個TextView作RelativeLayout<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutandroid:id="@+id/relativeLayout1"xmlns: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>-常用屬性設(shè)定android:layout_above置于目標(biāo)id組件的上方android:layout_alignBaseline置于與目標(biāo)id組件同樣的基線上android:layout_alignBottom讓自己的下邊界與目標(biāo)id組件的下邊界在同一個位置<RelativeLayout>-常用屬性設(shè)定android:layout_alignLeft讓自己的左邊界與目標(biāo)id組件的左邊界在同一位置android:layout_alignParentBottom若為true,讓自己的下邊界與Parent的下邊界同位置android:layout_alignParentLeft若為true,讓自己的左邊界與Parent的左邊界同位置<RelativeLayout>-常用屬性設(shè)定android:layout_alignParentRight若為true,讓自己的右邊界與Parent的右邊界同位置android:layout_alignParentTop若為true,讓自己的上邊界與Parent的上邊界同位置android:layout_alignRight讓自己的右邊界與目標(biāo)id組件的右邊界在同一位置<RelativeLayout>-常用屬性設(shè)定android:layout_alignTop讓自己的上邊界與目標(biāo)id組件的上邊界在同一個位置android:layout_alignWithParentIfMissing若設(shè)為true,當(dāng)參考的目標(biāo)id不可用時,會以Parent為參考目標(biāo)android:layout_below置于目標(biāo)id組件的下方<RelativeLayout>-常用屬性設(shè)定android:layout_centerHorizontal若為true,置于Parent水平位置的中心android:layout_centerInParent若為true,置于Parent水平以及垂直位置的中心android:layout_centerVertical若為true,置于Parent垂直位置的中心android:layout_toLeftOf/toRightOf置于目標(biāo)id組件的左方/右方<FrameLayout>FrameLayout是所有布局中最單純的若同個FrameLayout中若有數(shù)個組件以最上層的組件為主若同個FrameLayout中有同大小的組件只會看到最上層的組件若同個FrameLayout中有不同大小的組件會看到由下至上的組件<FrameLayout>

-范例Thisis蓋過Thatis<FrameLayout>

-

Example布局文件-1(res/layout/main.xml):<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns: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>WidgetWidget簡介android.widget套件包含了許多視覺性的UI元素,可用來將操作界面展示在應(yīng)用程序畫面上。要熟悉Android程序的開發(fā),必須從widget套件著手,因此以android.widget套件的應(yīng)用為中心。表單組件TextViewTextView是個基本常用的組件可使用XML來操作可使用程序代碼中的Method方法來操作下列說明XML與Method相對應(yīng)之屬性功能格式為XML<->MethodTextView–屬性功能介紹android:autoLink

<->setAutoLinkMask(int)可讓文字上的鏈接自動變成可點擊的連結(jié)android:gravity<->setGravity(int)設(shè)定文字在View中x軸和y軸相關(guān)數(shù)值android:height<->setHeight(int)設(shè)定TextView的高度android:width<->setWidth(int)設(shè)定TextView的寬度TextView–屬性功能介紹android:hint<->setHint(int)當(dāng)Text是空的時候,就會顯示hint中的提示文字android:lines<->setLines(int)設(shè)置TextView高度為幾個Line的高度,值必須為整數(shù)型別android:maxLength<->setFilters(InputFilter)設(shè)定TextView文字的最大長度TextView–屬性功能介紹android:password<->setTransformationMethod(Transformation)讓Text顯示成其他符號,常用于輸入或顯示密碼時android:text<->setText(CharSequence)顯示的文字android:textStyle<->setTypeface(Typeface)設(shè)定文字樣式TextView–屬性功能介紹android:textColor<->setTextColor(ColorStateList)設(shè)定文字的顏色android:textColorLink<->setLinkTextColor(int)設(shè)定連結(jié)的顏色android:textSize<->setTextSize(float)設(shè)定文字大小TextView–Example若點擊上述的網(wǎng)址,則會自動開啟瀏覽器跳至指定之網(wǎng)頁<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns: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設(shè)置autoLink為web設(shè)置autoLink為web純粹用XML語法產(chǎn)生鏈接(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-");layout.addView(tv2);}}用程序代碼產(chǎn)生連結(jié)–

2(TextView.java):TextView–autoLink屬性android:autoLink<->setAutoLinkMask(int)noneautoLink默認(rèn)值all<->Linkify.ALL目前所有連結(jié)種類email<->Linkify.EMAIL_ADDRESSESEmail連結(jié)phone<->Linkify.PHONE_NUMBERS電話號碼鏈接web<->Linkify.WEB_URLS 網(wǎng)址連結(jié)ButtonButton的layout方面會有兩種屬性wrap_contentlayout_width為wrap_content時,這個button會依據(jù)button上的text長度為基準(zhǔn)fill_parentlayout_width為fill_parent時,則會以parent最寬的長度為主Button–Example利用XML建立Button即可ImageButtonImageButton可以將圖片當(dāng)作button的背景利用此屬性android:src="圖片位置"ImageButton范例ImageButton–Example布局文件(res/layout/main.xml):<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns: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>EditTextEditText可讓用戶輸入文字layout_width為wrap_content時,EditText的寬度會隨著輸入的字而變寬當(dāng)為fill_parent時則會固定為parent的寬度EditText-ExampleEditText–Example<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns: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>RadioButtonRadioButton為單選按鈕若要做成有多選一這種功能時,則需將這些RadioButton放置一個<RadioGroup>中RadioButton

Example<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns: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):CheckBoxCheckBox只有兩種型態(tài)checkeduncheckedCheckBox可用在多項選擇時CheckBox–ExampleCheckBox–Example布局文件(res/layout/main.xml):<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns: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="網(wǎng)球"android:id="@+id/checkBox3"android:layout_width="wrap_content"android:layout_height="wrap_content"></CheckBox></LinearLayout>ProgressBarProgressBar可用于顯示程序執(zhí)行進(jìn)度水平類型,可以確定進(jìn)度的最大值和當(dāng)前值圓形,小號圓形,中號圓形,大號ProgressBar有上述四種類型<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns: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的樣式通知組件ToastNotificationToast通知是一個在窗口彈出的信息,它只顯示內(nèi)容所需的空間且使用者當(dāng)前活動仍然保持可見和可互動。這個通知自動淡入淡出,且不接受互動事件,因為消息條可以從一個后臺服務(wù)Service中建立,即便應(yīng)用程序不可見,它也將呈現(xiàn)出來。ToastNotification一個Toast是用來顯示簡短文字提示信息的好方法,例如說“文件已保存”/“文件已經(jīng)刪除”,當(dāng)用戶正在屏幕上操作時,這種方式就可以提醒使用者動作已完成。一個Toast不能接受用戶互動事件;如果希望使用者回答并采取對應(yīng)動作,可以考慮使用一個狀態(tài)欄通知StatusBarNotification,在下一小節(jié)將會介紹。ToastNotification首先,Toast組件有一個maketext的方法,這個方法帶有三個參數(shù):應(yīng)用程序內(nèi)容文字信息顯示時間長短接著它會回傳一個初始化的Toast對象,在程序中可以使用show()方法來顯示。ToastNotification一般標(biāo)準(zhǔn)的Toast默認(rèn)位置是靠底下偏中間,可以通過setGravity(int,int,int)方法改變,在下面的范例中程序設(shè)定讓Toast對象靠左上角顯示。如果要讓Toast對象往右移動,增加第二個參數(shù)(x-postion)的數(shù)值。如果要讓Toast對象往下移動,增加第三個參數(shù)(y-postion)的數(shù)值。ToastNotification–ExampleToastNotification–Example@Overridepublic

voidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); Buttonbtn=(Button)findViewById(R.id.button1); btn.setOnClickListener(newView.OnClickListener(){ public

voidonClick(Viewview){ Toasttoast=Toast.makeText(Main.this, "這是一個通知信息!", Toast.LENGTH_LONG); toast.setGravity(Gravity.TOP| Gravity.CENTER,0,0); toast.show(); } });}顯示組件ImageView用于顯示一個圖像,例如一個圖標(biāo)或圖片。ImageView類別可以加載來自不同來源的圖片(可能來自資源或內(nèi)容提供商),它可以用于任何布局管理器,并提供多種顯示選項,例如:縮放、著色。ImageView-屬性功能介紹android:adjustViewBounds<->setAdjustViewBounds(boolean)如果要讓ImageView根據(jù)drawable資源大小去調(diào)整邊界,必須將此值設(shè)為trueandroid:cropToPadding如果為真,此圖片將被裁剪成適合的大小android:maxHeight<->setMaxHeight(int)設(shè)定最大高度

ImageView-屬性功能介紹android:maxWidth<->setMaxWidth(int)設(shè)定最大寬度android:scaleType<->setScaleType(ImageView.ScaleType)控制圖片如何縮放或移動且配合ImageView的大小android:src<->setImageResource(int)為此ImageView內(nèi)容設(shè)定資源文件android:tint<->setColorFilter(int,PorterDuff.Mode)設(shè)定著色的過濾器ImageView的ScaleTypeCENTER/center

按圖片的原來size居中顯示,當(dāng)圖片長/寬超過View的長/寬,則截取圖片的居中部分顯示

CENTER_CROP/

centerCrop

按比例擴(kuò)大圖片的size居中顯示,使得圖片長(寬)等于或大于View的長(寬)

CENTER_INSIDE/

centerInside

將圖片的內(nèi)容完整居中顯示,通過按比例縮小或原來的size使得圖片長/寬等于或小于View的長/寬ImageView的ScaleTypeFIT_CENTER/fitCenter

把圖片按比例擴(kuò)大/縮小到View的寬度,居中顯示

FIT_END/

fitEnd

把圖片按比例擴(kuò)大/縮小到View的寬度,顯示在View的下部分位置

FIT_START/

fitStart

把圖片按比例擴(kuò)大/縮小到View的寬度,顯示在View的上部分位置

FIT_XY/

fitXY

把圖片不按比例擴(kuò)大/縮小到View的大小顯示ImageView–ExampleListView正如它的名字,一般用于展示列表。比如要展示數(shù)據(jù)庫中的N條紀(jì)錄,或是列出某個目錄下的文件等ListView采用典型的MVC模式來分離視圖和數(shù)據(jù),將數(shù)據(jù)封裝在Adapter中,而ListView負(fù)責(zé)顯示數(shù)據(jù);當(dāng)Adapter中的數(shù)據(jù)發(fā)生變化時,通過Adapter的notifyDataSetChanged()/setNotifyOnChange()方法來通知它ListViewListView原理使用ListView的方法獲得一個Adapter對象,將需要的數(shù)據(jù)封裝到Adapter中創(chuàng)建一個ListView,使用setAdapter()方法將Adapter對象賦給它作為其數(shù)據(jù)源常用AdapterArrayAdapterSimpleAdapterSimpleCursorAdapterListView–案例1ListView–案例1-源代碼public

voidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);finalString[]data={"摩托羅拉","索愛","HTC","三星","聯(lián)想","華為","中興"

};finalListViewlistView=newListView(this);ArrayAdaptervArrayData=newArrayAdapter(this,android.R.layout.simple_list_item_1,data);//設(shè)定ListView的接收器,做為選項的來源listView.setAdapter(vArrayData);//ListView設(shè)定為ContentViewsetContentView(listView);listView.setOnItemClickListener(newAdapterView.OnItemClickListener(){public

voidonItemClick(AdapterView<?>arg0,Viewview,intposition,longid){Main.this.setTitle("你選中的是:"

+data[position]);}});}ListView的另一個用途作為單選框和多選框的一個替換物73ListView–Example一程序代碼public

classMainextendsActivity{@Overridepublic

voidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);String[]data={"摩托羅拉","索愛","HTC","三星","聯(lián)想","華為","中興"

};ListViewlistView=newListView(this);//設(shè)定ListView選擇的方式://單選:ListView.CHOICE_MODE_SINGLE//多選:ListView.CHOICE_MODE_MULTIPLElistView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);ArrayAdaptervArrayData=newArrayAdapter(this,android.R.layout.simple_list_item_single_choice,data);//設(shè)定ListView的接收器,作為選項的來源listView.setAdapter(vArrayData);//ListView設(shè)定為ContentViewsetContentView(listView);}}獲得ListView多選值使用ListView的getCheckedItemPositions()方法,返回一個映射了ItemID和是否選中(boolean值)的android.util.SparseBooleanArray對象然后通過SparseBooleanArray判斷valueAt(i)是否為true(選中),通過對應(yīng)的keyAt(i)得到對應(yīng)的ItemID,再根據(jù)需要取出對應(yīng)的選中的選項的數(shù)據(jù)75ListView–定義較復(fù)雜的Item定義自己的Adapter,這里使用ArrayAdapter,覆蓋其構(gòu)造器,覆蓋相關(guān)的getView/getCount/getItemId方法在getView方法中,將返回各個Item的視圖,根據(jù)需要將不同的組件放到這個視圖中,并返回對于復(fù)雜視圖的Item,以及選項較多的情況,應(yīng)該使用這種方式來實現(xiàn)將這個構(gòu)造器初始化后,作為ListView的數(shù)據(jù)來源給ListView的各個Item(選項)加上點擊事件監(jiān)聽76ListView–Example477ListView–Example4<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android=""android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><ListViewandroid:layout_height="wrap_content"android:id="@+id/listView1"android:layout_width="match_parent"></ListView></LinearLayout><?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android=""android:gravity="center"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:src="@drawable/music"android:layout_height="wrap_content"android:id="@+id/imageView1"android:layout_width="wrap_content"></ImageView><TextViewandroid:layout_height="wrap_content"android:layout_width="match_parent"android:textSize="16px"android:gravity="center_vertical"android:text="TextView"android:id="@+id/textView1"></TextView></LinearLayout>78main.xmllistcontent.xmlListView的效率在Android應(yīng)用設(shè)計中,應(yīng)該盡可能避免創(chuàng)建對象,如果已經(jīng)創(chuàng)建了相關(guān)的對象,應(yīng)該重用它避免從資源文件中去inflate或者尋找(findViewById())相關(guān)的布局文件或者組件79使用ViewHolder保存選項中的組件ViewHoldervh;if(convertView==null){LayoutInflaterinflater=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);convertView=inflater.inflate(R.layout.listcontent,null);vh=newViewHolder();vh.vhTv=(TextView)convertView.findViewById(R.id.textView1);convertView.setTag(vh);}else{vh=(ViewHolder)convertView.getTag();}vh.vhTv.setText(list.get(position)[0]);classViewHolder{ TextViewvhTv;}ListView練習(xí):實現(xiàn)如下效果81對話框

82AlertDialogAlertDialog為警告對話窗口,像是離開程序或是刪除文件時會跳出的對話窗口組件AlertDialog.Builder

-屬性create()創(chuàng)建一個AlertDialogsetCancelable(boolean)設(shè)為false時,使用者無法使用其他方式關(guān)閉這個對話窗口,只可使用對話窗口上給的操作方式來操作setIcon(Drawableorint)設(shè)置Title上的IconsetTitle(CharSequenceorint)設(shè)定要顯示的TitleAlertDialog.Builder

-屬性setMessage(CharSequenceorint)設(shè)定要顯示的內(nèi)容setPositiveButton(CharSequencetext,DialogInterface.OnClickListenerlistener)設(shè)定正向(左邊)的按鈕setNegativeButton(CharSequencetext,DialogInterface.OnClickListenerlistener)設(shè)定反向(右邊)的按鈕show()顯示AlertDialog菜單組件

86OptionsMenuOptionsMenu就是通過按手機(jī)或模擬器上的menu鍵顯示的菜單最多可以顯示六項,稱為IconMenu超過六項就會以More的功能項來表示其余的選項,稱為ExpandedMenu。OptionsMenu

Example1此種類型的Menu就稱為OptionsMenuOptionsMenu

Example1OptionsMenu

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

–范例三在菜單中增加圖標(biāo)OptionsMenu

Example3通過setIcon()方法在菜單中增加圖標(biāo)ContextMenuAndroid中的ContextMenu(上下文菜單)與PC上的鼠標(biāo)右鍵菜單非常類似當(dāng)在View上,用戶長按屏幕不放兩秒,將會出現(xiàn)一個上下文菜單ContextMenu不支持圖示或快捷鍵ContextMenu

Example樣式和主題定義

96樣式定義外觀設(shè)計的2種方式:Styles(樣式)是一個包含一種或者多種格式化屬性的集合,可以將其套用在布局XML的單一元素中。style可以指定諸如高度、補(bǔ)白(padding)、字體顏色、字體大小、背景顏色等屬性。style定義在一個不同于用來定義布局的XML資源中。Themes(主題)是一個包含一種或者多種格式化屬性的集合,可以將其套用在應(yīng)用程序中所有的活動當(dāng)中或其中的某個活動。樣式定義Android系統(tǒng)中有提供一些預(yù)設(shè)的style如果要產(chǎn)生自定義的style,首先要在res/values目錄下建立一個xml文件,一般名為style.xml此XML文件的根節(jié)點必須是<resources>。對每個你要創(chuàng)建的style,添加一個<style>元素到XML文件中,其擁有一個name,用來唯一標(biāo)識此style(name是必須的)。然后為此style中的每一個屬性添加一個<item>元素,其有一個name和一個值。<item>的值可以是一個關(guān)鍵字字符串、一個十六進(jìn)制顏色、一個到其它資源類型的引用,或者是其他值,決定于具體的style屬性。樣式定義<?xmlversion="1.0"encoding="utf-8"?><resources> <stylename="StyleText1"> <itemname="android:textSize">18sp</item> <itemname="android:textColor">#EC9237</item> </style> <stylename="StyleText2"> <itemname="android:textSize">14sp</item> <itemname="android:textColor">#FF7F7C</item> <itemname="android:fromAlpha">0.0</item> <itemname="android:toAlpha">0.0</item> </style></resources>style.xml定義樣式定義每個<resources>元素的子節(jié)點在編譯時都被轉(zhuǎn)換為一個應(yīng)用程序資源對象,其可以通過<style>

元素的

name屬性的值來引用。

100使用樣式要使用樣式,只需要在需要使用樣式的組件上調(diào)用android:style屬性定義,并將定義好的樣式作為它的值即可。使用樣式<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns: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:text="@string/hello"/><TextViewstyle="@style/StyleText1" android:text="StyleText1" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView><TextViewstyle="@style/StyleText2" android:text="StyleText2" android:id="@+id/TextView02" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView></LinearLayout>引用樣式樣式定義接著將程序部署至模擬器上,實際情況如圖所示。樣式的繼承有兩種方式可以實現(xiàn)樣式繼承:我們可以在定義樣式時使用parent屬性來繼承樣式,使用這種方式,我們可以繼承一個我們自己定義好的樣式,也可以繼承一個android平臺自帶的樣式<stylename="GreenText"parent="@android:style/TextAppearance"><itemname="android:textColor">#00FF00</item></style>另一種繼承的方式是使用用戶自定義的樣式作為前綴即可。這種方式只適用于繼承用戶自定義樣式。<stylename="CodeFont.Red"><itemname="android:textColor">#FF0000</item></style>

104在Activity、Applicat

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論