第4章android組件詳解_第1頁(yè)
第4章android組件詳解_第2頁(yè)
第4章android組件詳解_第3頁(yè)
第4章android組件詳解_第4頁(yè)
第4章android組件詳解_第5頁(yè)
已閱讀5頁(yè),還剩56頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

主講人:溫春水按鈕相關(guān)組件3日期/時(shí)間相關(guān)組件列表組件4進(jìn)度條組件課程目錄1256文本相關(guān)組件其他重要組件主要內(nèi)容:掌握常用的Android圖形界面組件的創(chuàng)建方式、特征等,包括文本組件、按鈕組件、列表組件等掌握常用組件的事件處理步驟組件的常用屬性以及事件處理ListView、GridView等視圖容器組件的使用TextView往往用來(lái)向用戶(hù)顯示文本,如郵件正文或應(yīng)用程序標(biāo)簽等。API中對(duì)應(yīng)android.widget.TextView類(lèi)<TextViewandroid:background="#FF00FF“android:layout_gravity="center“android:layout_height="wrap_content"android:layout_margin="60dp"android:layout_width="fill_parent“android:padding="40dp"android:text="@string/hello"android:textColor="#0000FF"/>文本的顏色和背景android:textColor=“#0000FF”android:background=“#0000FF”TextView的對(duì)齊方式android:layout_gravity=“center”字體大小android:textSize=“20px”單行顯示android:singleLine=“true”android:gravity用于設(shè)置View中內(nèi)容相對(duì)于View組件的對(duì)齊方式

android:layout_gravity用于設(shè)置View組件相對(duì)于Container的對(duì)齊方式LinearLayout中有android:layout_gravityRelativelayout中沒(méi)有android:layout_gravityEditText是TextView類(lèi)的子類(lèi),具有TextView所有屬性EditText可以編輯文本EditText可以指定文本的類(lèi)型,通過(guò)三種屬性可以指定android:digitsandroid:inputTypeandroid:numeric<EditTextandroid:background="#FFFFFF"android:digits="

XxYy“android:layout_height="wrap_content“android:layout_margin="10dp"android:layout_width="200dp"android:textColor="#000000"/>Button類(lèi)繼承了TextView類(lèi)在布局文件中,使用屬性指定Button的屬性,如android:text指定Button顯示的文本<Button

android:id="@+id/button1"android:layout_height="wrap_content"android:layout_width="wrap_content"android:text="普通按鈕"/>如何做出漂亮的按鈕?android:background="@drawable/ic_launcher"Button經(jīng)常使用OnClickListener監(jiān)聽(tīng)點(diǎn)擊事件使用Button類(lèi)的setOnClickListener方法注冊(cè)監(jiān)聽(tīng)器Button

button1=(Button)

this.findViewById(R.id.button1);button1.setOnClickListener(new

OnClickListener(){public

void

onClick(View

arg0)

{//

TODO

Auto-generated

method

stubTextView

view=(TextView)

findViewById(R.id.text);view.setText("您點(diǎn)擊了普通按鈕");}});ImageButton是只顯示圖像的按鈕,是ImageView的子類(lèi)<ImageButtonandroid:layout_height="wrap_content"android:layout_width="wrap_content"android:src="@drawable/icon"/>如果按鈕既需要顯示圖像又顯示文字,則使用<button>配置<Button

android:drawablePadding="20dp"android:drawableRight="@drawable/icon"android:layout_height="wrap_content"android:layout_width="wrap_content"android:text="拍照"/>RadioButton可以構(gòu)建一組單選按鈕一組互斥的單選按鈕必須在一個(gè)RadioGroup中<RadioGroup

android:layout_height="wrap_content"android:layout_width="wrap_content"><RadioButtonandroid:layout_height="wrap_content"android:layout_width="wrap_content"android:text="iPhone"/><RadioButtonandroid:layout_height="wrap_content"android:layout_width="wrap_content"android:text="Android"/><RadioButtonandroid:layout_height="wrap_content"android:layout_width="wrap_content"android:text="Phone"/></RadioGroup><RadioGroupandroid:id="@+id/gender"android:layout_width="wrap_content"android:orientation="horizontal"android:layout_height="wrap_content"

><RadioButtonandroid:id="@+id/radioButton1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:checked="true"android:text="Female"

/><RadioButtonandroid:id="@+id/radioButton2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Male"

/></RadioGroup>CheckBox多用于多選應(yīng)用<CheckBox

android:id="@+id/checkbox1"android:layout_height="wrap_content"android:layout_width="fill_parent"android:text="1、我喜歡閱讀"/><CheckBox

android:id="@+id/checkbox2"android:layout_height="wrap_content"android:layout_width="fill_parent"android:text="2、我喜歡旅游"/><CheckBox

android:id="@+id/checkbox3"android:layout_height="wrap_content"android:layout_width="fill_parent"android:text="3、我喜歡烘焙"/>RadioGroup

rg

=

(RadioGroup)

this.findViewById(R.id.gender);rg.getCheckedRadioButtonId();CheckBox

cb

=(CheckBox)this.findViewById(R.id.checkBox1);cb.isChecked();<View

android:layout_height="10px"android:layout_width="match_parent"android:background="#000fff”/>ToggleButton與Button的功能基本相同ToggleButton多了一個(gè)表示“開(kāi)/關(guān)”狀態(tài)的指示條<ToggleButton

android:id="@+id/toggleButton"android:layout_height="wrap_content"android:layout_marginLeft="30dp"android:layout_width="wrap_content"android:textOff="打開(kāi)照相機(jī)"android:textOn="關(guān)閉照相機(jī)"/>res--創(chuàng)建drawable文件夾--創(chuàng)建switch_btn.xml資源文件--作以下配置<?xml

version="1.0"

encoding="utf-8"?><selectorxmlns:android="

"><item

android:state_checked="true"

android:drawable="@drawable/ios7_switch_on"

/><item

android:drawable="@drawable/ios7_switch_off"

/></selector>其中:android:state_checked="true"表示選中on時(shí)候的,效果為:android:drawable="@drawable/ios7_switch_on"反之就是未選中off情況下的效果:android:drawable="@drawable/ios7_switch_off"之后在布局文件中寫(xiě)控件:<ToggleButtonandroid:id="@+id/mTogBtn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:background="@android:color/transparent"android:button="@drawable/toggle_btn"android:checked="false"android:text=""android:textOff=""android:textOn=""

/>android:textOn=""

表示:選中情況下顯示的文本android:textOff=""

表示:未選中情況下顯示的文本android:checked="false"

表示:初始化時(shí)候,默認(rèn)是未選中的android:button="@drawable/toggle_btn"

表示:button樣式android:background=“@android:color/transparent”

表示:背景,這里不用它的默認(rèn)背景,所以設(shè)置為透明之后在主程序中實(shí)例化,并設(shè)置checked點(diǎn)擊監(jiān)聽(tīng)ToggleButton

mTogBtn

=

(ToggleButton)

findViewById(R.id.mTogBtn);//獲取到控件mTogBtn.setOnCheckedChangeListener(new

OnCheckedChangeListener()

{public

void

onCheckedChanged(CompoundButton

buttonView,boolean

isChecked)

{if(isChecked){//選中}else{//未選中}}});//添加監(jiān)聽(tīng)事件參考:SwitchButtonAndroidDatePicker組件可以輸入日期。范圍是1900-1-1~2100-12-31TimePicker組件可以輸入時(shí)間,只能輸入小時(shí)和分鐘,默認(rèn)情況是12小時(shí)制對(duì)應(yīng)的監(jiān)聽(tīng)器分別是OnDateChangedListener和OnTimeChangedListenerAnalogClock用表盤(pán)方式顯示當(dāng)前時(shí)間,有時(shí)針和分針兩個(gè)指針DigitalClock用數(shù)字方式顯示當(dāng)前時(shí)間,可以顯示時(shí)、分、秒。<AnalogClock

android:layout_height="wrap_content"android:layout_width="fill_parent"/><DigitalClock

android:layout_height="wrap_content"android:layout_width="wrap_content"android:textSize="18dp"/>參考:example/DateTimeAndroidProgressBar用來(lái)顯示任務(wù)或工作的完成率Android系統(tǒng)中可以實(shí)現(xiàn)圓形或者水平的進(jìn)度條ProgressBar類(lèi)中有setProgress和getProgress方法用來(lái)設(shè)置及獲取當(dāng)前進(jìn)度ProgressBar類(lèi)中有setSecondaryProgress和getSecondaryProgress方法用來(lái)設(shè)置及獲取二級(jí)進(jìn)度SeekBar是ProgressBar的子類(lèi),使用方式和

ProgressBar類(lèi)似拖動(dòng)條滑動(dòng)的相關(guān)事件接口是OnSeekBarChangerListener,該接口中三個(gè)方法onProgressChanged:滑動(dòng)滑桿onStartTrackingTouch:按住滑桿onStopTrackingTouch:松開(kāi)滑桿RatingBar組件用來(lái)實(shí)現(xiàn)評(píng)分功能RatingBar常用的布局屬性android:numStars:用于評(píng)分的五角星個(gè)數(shù)android:rating:指定當(dāng)前的分?jǐn)?shù)android:stepSize:指定分?jǐn)?shù)的增量單位style:設(shè)置RatingBar的風(fēng)格<RatingBar

android:id="@+id/ratingbar2"style="?android:attr/ratingBarStyleSmall"android:layout_height="wrap_content"android:layout_width="wrap_content"android:numStars="5"

android:rating="2"android:stepSize="0.5"/>RatingBar

rb

=(RatingBar)this.findViewById(R.id.ratingbar2);System.out.println("===========rating====="+rb.getRating());rb.setRating(3);參考:ProgressbarAndSeekBarAndRatingBarAndroidImageView用來(lái)在屏幕上顯示圖片使用android:src屬性設(shè)置TextView的圖片源?;蛘哒{(diào)用ImageView類(lèi)的setImageResource(intresId)方法可以為ImageView設(shè)置顯示的圖片<ImageViewandroid:src="@drawable/moon"android:adjustViewBounds="true"android:layout_width="wrap_content"android:layout_height="wrap_content"

/>Spinner的功能和ListView組件類(lèi)似Spinner的數(shù)據(jù)也是通過(guò)Adapter裝載,使用數(shù)組或者List對(duì)象放值:String

str[]={“Data”,“英語(yǔ)”,“Java”,“數(shù)學(xué)"};s

=

(Spinner)

this.findViewById(R.id.spinner1);s.setAdapter(newArrayAdapter(this,android.R.layout.simple_spinner_item,str));取值:String

str

=

s.getSelectedItem().toString();TabHost是一個(gè)裝載選項(xiàng)卡窗口的容器,實(shí)現(xiàn)分模塊顯示的效果。類(lèi)似新浪微博客戶(hù)端、微信客戶(hù)端。繼承TabActivity類(lèi)在A(yíng)ctivity中通過(guò)getTabHost()方法取得TabHost.public

class

MainActivity

extends

TabActivity

{

@Overridepublic

void

onCreate(Bundle

savedInstanceState)

{super.onCreate(savedInstanceState);//獲取TabHost組件TabHost

tabHost

=

getTabHost();//新建一個(gè)標(biāo)簽頁(yè)TabSpec

tabSpec1

=

(TabSpec)tabHost.newTabSpec("Home").setIndicator("Home“);//給標(biāo)簽頁(yè)設(shè)置內(nèi)容tabSpec1.setContent(new

Intent(MainActivity.this,HomeActivity.class));//把標(biāo)簽頁(yè)添加到TabHost當(dāng)中去

tabHost.addTab(tabSpec1);TabSpec

tabSpec2

=(TabSpec)tabHost.newTabSpec("COMMENT").setIndicator("COMMENT");tabSpec2.setContent(new

Intent(MainActivity.this,CommentActivity.class));tabHost.addTab(tabSpec2);}}Android中的五種對(duì)話(huà)框AlertDialogCharacterPickerDialogDatePickerDialogTimePickerDialogProgressDialogAlertDialog類(lèi)繼承了Dialog類(lèi)是其他對(duì)話(huà)框類(lèi)的父類(lèi)AlertDialog類(lèi)有一個(gè)重要的內(nèi)嵌類(lèi)-BuilderAlertDialog類(lèi)的常用方法Dialogdialog

=

new

AlertDialog.Builder(MainActivity.this).setTitle("Title").setMessage("Message").setPositiveButton(("確定"),new

DialogInterface.OnClickListener(){@Overridepublic

void

onClick(DialogInterface

dialog,int

which)

{System.out.println("====");}}).setNegativeButton(("取消"),new

DialogInterface.OnClickListener(){@Overridepublic

void

onClick(DialogInterface

dialog,int

which)

{//...}}).create();dialog.show();使用AlertDialog可以創(chuàng)建出各種對(duì)話(huà)框如果要完全定制自己的對(duì)話(huà)框,可以自定義對(duì)話(huà)框AlertDialog.Builder類(lèi)的setView方法new

AlertDialog.Builder(this).setView(布局文件).show()AlertDialog.Builder

builder

=

new

AlertDialog.Builder(MainDialog.this);LayoutInflater

factory

=

LayoutInflater.from(this);final

View

textEntryView

=

factory.inflate(R.layout.test,

null);builder.setIcon(R.drawable.icon);builder.setTitle("自定義輸入框");builder.setView(textEntryView);LayoutInflater:

在實(shí)際開(kāi)發(fā)中LayoutInflater這個(gè)類(lèi)還是非常有用的,它的作用類(lèi)似于

findViewById()。不同點(diǎn)是LayoutInflater是用來(lái)找res/layout/下的xml布局文件,并且實(shí)例化;而findViewById()是找xml布局文件下的具體widget控件(如Button、TextView等)。builder.setPositiveButton("確定",new

DialogInterface.OnClickListener(){

public

void

onClick(DialogInterface

dialog,

int

whichButton){EditText

userName

=

(EditText)textEntryView.findViewById(R.id.etUserName);EditTextpassword=(EditText)textEntryView.findViewById(R.id.etPassWord);}});builder.setNegativeButton("取消",new

DialogInterface.OnClickListener(){

public

void

onClick(DialogInterface

dialog,

int

whichButton){}});builder.create().show();取消按鈕setNegativeButton

(CharSequence

text,

DialogInterface.OnClickListener

listener)setNegativeButton

(int

textId,

DialogInterface.OnClickListener

listener)確認(rèn)按鈕setPositiveButton

(CharSequence

text,

DialogInterface.OnClickListener

listener)setPositiveButton

(int

textId,

DialogInterface.OnClickListener

listener)覆蓋按鈕setNeutralButton

(int

textId,

DialogInterface.OnClickListener

listener)setNeutralButton

(CharSequence

text,

DialogInterface.OnClickListenerlistener)選項(xiàng)菜單通過(guò)硬件調(diào)用的菜單情景菜單通過(guò)上下文調(diào)用的菜單MenuubMenuSContextMenuMenuItemActivity類(lèi)的onCreateOptionsMenu方法用來(lái)創(chuàng)建選項(xiàng)菜單通過(guò)硬件調(diào)用的菜單通過(guò)手機(jī)上的菜單鍵進(jìn)行調(diào)用public

class

MenuActivity

extends

Activity

{@Overridepublic

boolean

onCreateOptionsMenu(Menu

menu)

{MenuItem

mItem1=menu.add(1,1,1,"設(shè)置");

MenuItem

mItem2=menu.add(1,2,2,"資料");

MenuItem

mItem3=menu.add(1,2,3,"信息");

return

true;}getMenuInflater().inflate(R.menu.main,

menu);<menu

xmlns:android=""

><item android:id="@+id/menu_settings" android:orderInCategory="1" android:title="設(shè)置"/><itemandroid:id="@+id/menu_about"android:orderInCategory="2"android:title="關(guān)于"/><itemandroid:id="@+id/menu_quit"android:orderInCategory="3"android:title="退出"/></menu>menu.add方法的參數(shù):

第一個(gè)int類(lèi)型的group

ID參數(shù),代表的是組概念,你可以將幾個(gè)菜單項(xiàng)歸為一組,以便更好的以組的方式管理你的菜單按鈕。

第二個(gè)int類(lèi)型的item

ID參數(shù),代表的是項(xiàng)目編號(hào)。這個(gè)參數(shù)非常重要,一個(gè)item

ID對(duì)應(yīng)一個(gè)menu中的選項(xiàng)。在后面使用菜單的時(shí)候,就靠這個(gè)

item

ID來(lái)判斷你使用的是哪個(gè)選項(xiàng)。

第三個(gè)int類(lèi)型的order

ID參數(shù),代表的是菜單項(xiàng)的顯示順序。默認(rèn)是0,表示菜單的顯示順序就是按照add的顯示順序來(lái)顯示。第四個(gè)String類(lèi)型的title參數(shù),表示選項(xiàng)中顯示的文字。public

boolean

onOptionsItemSelected(MenuItem

item){System.out.println("onOptionsItemSelected------>"+item.getOrder());return

true;}Android

的上下文菜單類(lèi)似于PC

上的右鍵菜單。當(dāng)為一個(gè)視圖注冊(cè)了上下文菜單之后,長(zhǎng)按(2

秒左右)這個(gè)視圖對(duì)象就會(huì)彈出一個(gè)浮動(dòng)菜單,即上下文菜單。如TextView注意:Android

的上下文菜單不支持圖標(biāo)或快捷鍵。1.

覆蓋Activity

的onCreateContenxtMenu()方法,調(diào)用Menu

的add

方法添加菜單項(xiàng)(MenuItem)。2.

覆蓋Activity

的onContextItemSelected()方法,響應(yīng)上下文菜單菜單項(xiàng)的單擊事件。3.setOnCreateContextMenuListener(this);為視圖注冊(cè)上下文菜單。注冊(cè)上下文菜單:TextView

tv

=

(TextView)this.findViewById(R.id.tv1);tv.setOnCreateContextMenuListener(this);設(shè)置菜單:public

void

onCreateContextMenu(ContextMenu

menu,

View

v,ContextMenuInfo

menuInfo){super.onCreateContextMenu(menu,

v,

menuInfo);menu.setHeaderTitle("Hello");menu.add(0,

3,

6,

"Delete");menu.add(0,

4,

1,

"Copy");}結(jié)果測(cè)試:public

boolean

onContextItemSelected(MenuItem

item)

{System.out.println("=========="+item.getItemId());System.out.println("==========="+item.getOrder());return

super.onContextItemSelected(item);}ListView用于以垂直列表方式顯示數(shù)據(jù)項(xiàng)ListView相關(guān)的三個(gè)主要接口和類(lèi)ListViewListActivityListAdapter聲明ListView布局文件聲明列表項(xiàng)的布局文件繼承Activity或ListActivity,覆蓋onCreate方法創(chuàng)建Adapter對(duì)象將Adapter對(duì)象設(shè)置給ListView進(jìn)行顯示<ListView

android:id="@+id/booklist"android:layout_height="wrap_content"android:layout_width="fill_parent"/>實(shí)現(xiàn)列表顯示。ListView通常有兩個(gè)職責(zé)。(1)將數(shù)據(jù)填充到布局。(2)處理用戶(hù)的選擇點(diǎn)擊等操作。ListView的創(chuàng)建需要3個(gè)元素。(1)ListView中的每一列的View。(2)填入View的數(shù)據(jù)。(3)連接數(shù)據(jù)與ListView的適配器。適配器是一個(gè)連接數(shù)據(jù)和ListView的橋梁,通過(guò)它能有效地實(shí)現(xiàn)據(jù)與ListView的分離設(shè)置,使ListView與數(shù)據(jù)的綁定更加簡(jiǎn)便,修改更加方便ArrayAdapter

aa

=

new

ArrayAdapter(this,android.R.layout.simple_list_item_1,list);lv.setAdapter(aa);lv.setOnItemClickListener(new

OnItemClickListener(){public

void

onItemClick(AdapterView<?>

arg0,

View

arg1,

int

arg2,long

arg3)

{System.out.println("============"+list.get(arg2));}});MyListViewAdapter

mlva

=

new

MyListViewAdapter(this,listStudent);lv.setAdapter(mlva);public

MyListViewAdapter(Context

context,

List<Student>

data)

{this.context

=

context;this.stuList

=

data;this.layoutInflater

=

LayoutInflater.from(context);}public

View

getView(int

position,

View

convertView,

ViewGroup

parent)

{convertView

=

layoutInflater.inflate(R.layout.listitem,

null);vh.image

=

(ImageView)

convertView.findViewById(R.id.tv_desc);vh.title

=

(TextView)

convertView.findViewById(R.id.tv_title);return

convertView;}public

View

getView(int

position,

View

convertView,ViewGroup

parent)

{convertView

=

layoutInflater.inflate(R.layout.listitem,

null);vh.title

=(TextView)

convertView.findViewById(R.id.tv_title);vh.title.setText(((Student)

stuList.get(position)).getStuTitle());return

convertView;}MyListViewAdatperGridView是以網(wǎng)格的形式排列所包含的內(nèi)容,每個(gè)單元格的內(nèi)容可以是任意一個(gè)View組件與ListView相同,GridView通過(guò)Adapter封裝后臺(tái)的數(shù)據(jù),必須調(diào)用setAdapter()方法將GridView和數(shù)據(jù)綁定GridView可以使用OnItemClickListener及OnItemSelectedListener監(jiān)聽(tīng)事件//準(zhǔn)備要添加的數(shù)據(jù)條目List<Map<String,

Object>>

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論