版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第3章圖形用戶界面設(shè)計
主要內(nèi)容3.1用戶界面組件包widget3.2文本標(biāo)簽TextView與按鈕Button3.2.1文本標(biāo)簽TextView3.2.2按鈕Button及按鈕處理事件3.3文本編輯框EditText3.4Android布局管理3.5選項按鈕和進度條3.6圖像顯示ImageView3.7消息提示Toast3.8列表組件ListView和ListActivity3.9滑動抽屜組件SlidingDraw3.1用戶界面組件包widget
1、用戶界面組件包widgetAndroid系統(tǒng)的大多數(shù)用戶界面組件均放置在widget包中。可視化組件說明Button按鈕CalendarView日歷視圖CheckBox復(fù)選框EditText可編輯的文本輸入框ImageView顯示圖像或圖標(biāo),并提供縮放、著色等各種圖像處理方法ListView列表框視圖MapView地圖視圖.RadioGroup單選按鈕組件Spinner下拉列表TextView文本標(biāo)簽WebView網(wǎng)頁瀏覽器視圖Toast消息提示2、View類View是用戶界面組件的共同父類,幾乎所有的用戶界面組件都是繼承View類而實現(xiàn)的,如TextView、Button、EditText等。對View類及其子類的屬性進行設(shè)置,可以在布局文件XML中設(shè)置,也可以通過成員方法在Java代碼文件中動態(tài)設(shè)置。View類的常用屬性與方法屬性對應(yīng)方法說明android:backgroundsetBackgroundColor(intcolor)設(shè)置背景顏色android:idsetId(int)為組件設(shè)置可通過findViewById方法獲取的標(biāo)識符android:alphasetAlpha(float)設(shè)置透明度,取值[0,1]之間findViewById(intid)與id所對應(yīng)的組件建立關(guān)聯(lián)android:visibilitysetVisibility(int)設(shè)置組件的可見性android:clickablesetClickable(boolean)設(shè)置組件是否響應(yīng)單擊事件3.2文本標(biāo)簽TextView
與按鈕Button
3.2.1文本標(biāo)簽TextView文本標(biāo)簽TextView用于顯示文本內(nèi)容,是最常用的組件之一。方法功能getText();獲取文本標(biāo)簽的文本內(nèi)容setText(CharSequencetext);設(shè)置文本標(biāo)簽的文本內(nèi)容setTextSize(float);設(shè)置文本標(biāo)簽的文本大小setTextColor(intcolor);設(shè)置文本標(biāo)簽的文本顏色元素屬性說明android:id文本標(biāo)簽標(biāo)識android:layout_width文本標(biāo)簽TextView的寬度,通常取值"fill_parent"(屏幕寬度)或以像素為單位pt的固定值android:layout_height文本標(biāo)簽TextView的高度,通常取值"wrap_content"(文本的高)或以像素px為單位的固定值。android:text文本標(biāo)簽TextView的文本內(nèi)容android:textSize文本標(biāo)簽TextView的文本大小文本標(biāo)簽TextView常用的XML文件元素【例3-1】設(shè)計一個文本標(biāo)簽組件程序。創(chuàng)建名稱為Ex03_01的新項目,包名為com.ex03_01。打開系統(tǒng)自動生成的項目框架,需要設(shè)計的文件為:(1)設(shè)計布局文件activity_main.xml;(2)設(shè)計控制文件MainActivity.java;(3)設(shè)計資源文件。(1)設(shè)計界面布局文件activity_main.xml在界面布局文件activity_main.xml中加入文本標(biāo)簽組件TextView,設(shè)置文本標(biāo)簽組件的id屬性。<!--設(shè)置文本標(biāo)簽的屬性值--><TextViewandroid:id="@+id/textView1"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/hello"/>在界面布局中設(shè)置文本標(biāo)簽(2)設(shè)計控制文件MainActivity.java
在控制文件MainActivity.java源文件在添加文本標(biāo)簽組件,并將布局文件中所定義的文本標(biāo)簽元素屬性值賦值給文本標(biāo)簽,與布局文件中文本標(biāo)簽建立關(guān)聯(lián)。
(3)資源文件:strings.xml3.2.2按鈕Button及按鈕處理事件按鈕Button用于處理人機交互的事件,在一般應(yīng)用程序中常常會用到。由于按鈕Button是文本標(biāo)簽TextView的子類,按鈕Button繼承了文本標(biāo)簽TextView所有的方法和屬性。其繼承關(guān)系如圖所示。按鈕Button在程序設(shè)計中最常用的方式是實現(xiàn)OnClickListener監(jiān)聽接口,當(dāng)單擊按鈕時,通過OnClickListener監(jiān)聽接口觸發(fā)onClick()事件,實現(xiàn)用戶需要的功能。OnClickListener接口有一個onClick()方法,在按鈕Button實現(xiàn)OnClickListener接口時,一定要重寫這個方法。按鈕Button調(diào)用OnClickListener接口對象的方法如下:
按鈕對象.setOnClickListener(OnClickListener對象);【例3-2】編寫程序,當(dāng)點擊按鈕命令后,頁面標(biāo)題及文本組件的文字內(nèi)容發(fā)生變化。(點擊按鈕前)(點擊按鈕后)創(chuàng)建名稱為Ex03_02的新項目,包名為com.ex03_02。(1)設(shè)計布局文件:activity_main.xml
在布局文件中添加一個按鈕,其id設(shè)置為button1。1<?xmlversion="1.0"encoding="utf-8"?>2<LinearLayoutxmlns:android="/apk/res/android"3android:layout_width="fill_parent"4android:layout_height="fill_parent"5android:orientation="vertical">6<TextView7android:id="@+id/textView1"8android:layout_width="fill_parent"9android:layout_height="wrap_content"10android:text="@string/hello"/>11<Button12android:id="@+id/button1"13android:layout_width="fill_parent"14android:layout_height="wrap_content"15android:text="@string/button"/>16</LinearLayout>(2)控制文件:Ex03_02Activity.java
在控制文件Ex03_02Activity.java中,設(shè)計一個實現(xiàn)按鈕監(jiān)聽接口的內(nèi)部類mClick,當(dāng)點擊按鈕時,觸發(fā)onClick()事件。
1packagecom.ex03_02;2importandroid.app.Activity;3importandroid.os.Bundle;4importandroid.view.View;5importandroid.view.View.OnClickListener;6importandroid.widget.TextView;7importandroid.widget.Button;89publicclassEx03_02ActivityextendsActivity10{11 privateTextViewtxt;12 privateButtonbtn;13publicvoidonCreate(BundlesavedInstanceState)14{15super.onCreate(savedInstanceState);16setContentView(R.layout.main);17txt=(TextView)findViewById(R.id.textView1);18btn=(Button)findViewById(R.id.button1);19btn.setOnClickListener(newmClick());20}21classmClickimplementsOnClickListener22{23 publicvoidonClick(Viewv)24 {25 Ex03_02Activity.this.setTitle("改變標(biāo)題");26txt.setText(R.string.newStr);27}28}29}(3)資源文件:strings.xml1<?xmlversion="1.0"encoding="utf-8"?>2<resources>3<stringname="hello">HelloWorld,這是Ex03_02的界面!</string>4<stringname="app_name">Ex03_02</string>5<stringname="button">點擊我!</string>6<stringname="newStr">改變了文本標(biāo)簽的內(nèi)容</string>7</resources>【例3-3】編寫程序,點擊按鈕命令,改變文本組件的文字及背景顏色。如圖3.5所示。本例題涉及到顏色定義,Android系統(tǒng)在android.graphics.Color里定義了12種常見的顏色常數(shù),其顏色常數(shù)見表3-5。顏色常數(shù)十六進制數(shù)色碼意義Color.BLACK0xff000000黑色Color.BLUE0xff00ff00藍色Color.CYAN0xff00ffff青綠色Color.DKGRAY0xff444444灰黑色Color.GRAY0xff888888灰色Color.GREEN0xff0000ff綠色Color.LTGRAY0xffcccccc淺灰色Color.MAGENTA0xffff00ff紅紫色Color.RED0xffff0000紅色Color.TRANSPARENT0x00ffffff透明Color.WHITE0xffffffff白色Color.YELLOW0xffffff00黃色創(chuàng)建名稱為Ex03_03的新項目,包名為com.ex03_03。(1)設(shè)計布局文件main.xml
在XML文件中表示顏色的方法有多種:#RGB:用三位十六進制數(shù)分別表示紅、綠、藍顏色。#ARGB:用四位十六進制數(shù)分別表示透明度、紅、綠、藍顏色。#RRGGBB:用六位十六進制數(shù)分別表示紅、綠、藍顏色。#AARRGGBB:用八位十六進制數(shù)分別表示透明度、紅、綠、藍顏色。1<?xmlversion="1.0"encoding="utf-8"?>2<LinearLayoutxmlns:android="/apk/res/android"3android:layout_width="fill_parent"4android:layout_height="fill_parent"5android:background="#ff7f7c"6android:orientation="vertical">7<TextView8android:id="@+id/textView1"9android:layout_width="fill_parent"10android:layout_height="wrap_content"11android:textColor="#ff000000"12android:text="@string/hello"/>13<Button14android:id="@+id/button1"15android:layout_width="wrap_content"16android:layout_height="wrap_content"17android:text="@string/button"/>18</LinearLayout>采用八位十六進制數(shù)表示顏色(2)控制文件:Ex03_03Activity.java1packagecom.ex03_03;2importandroid.app.Activity;3importandroid.graphics.Color;4importandroid.os.Bundle;5importandroid.view.View;6importandroid.view.View.OnClickListener;7importandroid.widget.Button;8importandroid.widget.TextView;910publicclassEx03_03ActivityextendsActivity11{12/**Calledwhentheactivityisfirstcreated.*/13privateTextViewtxt;14privateButtonbtn;15 @Override16publicvoidonCreate(BundlesavedInstanceState)17{18super.onCreate(savedInstanceState);19setContentView(R.layout.main);20btn=(Button)findViewById(R.id.button1);21txt=(TextView)findViewById(R.id.textView1);22btn.setOnClickListener(newclick());23}定義實現(xiàn)監(jiān)聽接口的內(nèi)部類注冊監(jiān)聽接口24 classclickimplementsOnClickListener25{26publicvoidonClick(Viewv)27{28intBLACK=0xffcccccc;29 txt.setText("改變了文字及背景顏色");30 txt.setTextColor(Color.YELLOW);31txt.setBackgroundColor(BLACK);32}33}34}采用顏色常數(shù)設(shè)置文字顏色設(shè)置文本標(biāo)簽背景顏色(3)資源文件:strings.xml1<?xmlversion="1.0"encoding="utf-8"?>2<resources><stringname="hello">HelloWorld,MainActivity!</string>4<stringname="app_name">Ex03_03</string>5<stringname="button">點擊我,改變文字背景顏色</string>6</resources>3.3文本編輯框EditText
文本編輯框EditText用于接收用戶輸入的文本信息內(nèi)容。文本編輯框EditText繼承于文本標(biāo)簽TextView,其繼承關(guān)系如圖3.5所示。文本編輯框EditText主要繼承文本標(biāo)簽TextView的方法,其常用的方法見表3-6。方法功能EditText(Contextcontext)構(gòu)造方法,創(chuàng)建文本編輯框?qū)ο骻etText()獲取文本編輯框的文本內(nèi)容setText(CharSequencetext)設(shè)置文本編輯框的文本內(nèi)容文本編輯框EditText常用的XML文件元素
元素屬性說明android:editable設(shè)置是否可編輯,其值為“true”或“false”android:numeric設(shè)置TextView只能輸入數(shù)字,其參數(shù)默認(rèn)值為假android:password設(shè)置密碼輸入,字符顯示為圓點,其值為“true”或“false”android:phoneNumber設(shè)置只能輸入電話號碼,其值為“true”或“false”定義框EditText元素的android:numeric屬性,其取值只能是下列常量(可由“|”連接多個常量):integer可以輸入數(shù)值.signed可以輸入帶符號的數(shù)值.decimal可以輸入帶小數(shù)點的數(shù)值.【例3-4】設(shè)計一個密碼驗證程序。如圖3.6所示。創(chuàng)建名稱為Ex03_04的新項目,包名為com.ex03_04。(1)設(shè)計布局文件activity_main.xml
在界面布局中,設(shè)置一個編輯框,用于輸入密碼,再設(shè)置一個按鈕,判斷密碼是否正確,設(shè)置兩個文本標(biāo)簽,其中一個顯示提示信息“請輸入密碼”,另一個用于顯示密碼正確與否。1<?xmlversion="1.0"encoding="utf-8"?>2<LinearLayoutxmlns:android="/apk/res/android"3android:layout_width="fill_parent"4android:layout_height="fill_parent"5android:orientation="vertical">6<TextView7android:id="@+id/myTextView01"8android:layout_width="fill_parent"9android:layout_height="41px"10android:layout_x="33px"11android:layout_y="106px"12android:text="請輸入密碼:"13android:textSize="24sp"14/><!--建立一個EditText-->15<EditText16android:id="@+id/myEditText"17android:layout_width="180px"18android:layout_height="wrap_content"19android:layout_x="29px"20android:layout_y="33px"21android:inputType="text"22android:textSize="24sp"/><!--建立一個Button-->23<Button24android:id="@+id/myButton"25android:layout_width="100px"26android:layout_height="wrap_content"27android:text="確定"28android:textSize="24sp"29/><!--建立一個TextView-->30<TextView31android:id="@+id/myTextView02"32android:layout_width="180px"33android:layout_height="41px"34android:layout_x="33px"35android:layout_y="106px"36android:textSize="24sp"37/>38</LinearLayout>(2)設(shè)計控制文件MainActivity.java
在控制文件MainActivity.java中,主要是設(shè)計按鈕的監(jiān)聽事件,當(dāng)單擊按鈕后,從文本編輯框中獲取輸入的文本內(nèi)容,與密碼“abc123”進行比較。1packagecom.ex03_04;2importandroid.app.Activity;3importandroid.os.Bundle;4importandroid.view.View;5importandroid.view.View.OnClickListener;6importandroid.widget.EditText;7importandroid.widget.TextView;8importandroid.widget.Button;9publicclassMainActivityextendsActivity10{11 privateEditTextedit;12 privateTextViewtxt1,txt2;13 privateButtonmButton01;14@Override15publicvoidonCreate(BundlesavedInstanceState)16{17super.onCreate(savedInstanceState);18setContentView(R.layout.main);19txt1=(TextView)findViewById(R.id.myTextView01);20txt2=(TextView)findViewById(R.id.myTextView02);21edit=(EditText)findViewById(R.id.myEditText);22mButton01=(Button)findViewById(R.id.myButton);23mButton01.setOnClickListener(newmClick());24}定義實現(xiàn)監(jiān)聽接口的內(nèi)部類25classmClickimplementsOnClickListener26{27 publicvoidonClick(Viewv)28 {29 Stringpasswd;30 passwd=edit.getText().toString();31 if(passwd.equals("abc123"))32 txt2.setText("歡迎進入快樂大本營!");33 else34 txt2.setText("非法用戶,請立刻離開!"); 35 }36}37}獲取文本編輯框中的文本內(nèi)容equals()方法比較兩個字符串是否相等3.4Android布局管理
3.4Android布局管理Android系統(tǒng)的布局管理指的是在XML布局文件中設(shè)置組件的大小、間距、排列及對齊方式等。Android系統(tǒng)中常見的布局方式有5種,它們分別是:LinearLayout、FrameLayout、TableLayout、RelativeLayout、AbsoluteLayout。1、線性布局LinearLayout線性布局LinearLayout將組件按照水平或垂直方向排列。在XML布局文件中,由根元素LinearLayout來標(biāo)識線性布局。在布局文件中,由“android:orientation”屬性來控制排列方向,其屬性值有水平(horizontal)和垂直(vertical)兩種:設(shè)置線性布局為水平方向android:orientation="horizontal"設(shè)置線性布局為垂直方向android:orientation="vertical"在布局文件中,由“android:gravity”屬性控制組件的對齊方式,其屬性值有上(top)、下(bottom)、左(letf)、右(right)、水平方向居中(center_horizontal)、垂直方向居中(center_vertical)。
【例3-5】線性布局應(yīng)用示例。線性布局的核心代碼:線性布局的組件垂直排列<LinearLayoutandroid:orientation="vertical">或:線性布局的組件水平排列<LinearLayoutandroid:orientation="horizontal">2、幀布局FrameLayout幀布局FrameLayout是將組件放置到左上角位置,當(dāng)添加多個組件時,后面的組件將遮蓋之前的組件。在XML布局文件中,由根元素FrameLayout來標(biāo)識幀布局。【例3-6】幀布局應(yīng)用示例。(1)布局文件activity_main.xml<?xmlversion="1.0"encoding="utf-8"?><FrameLayoutxmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"><ImageViewandroid:id="@+id/mImageView"android:layout_width="60px"android:layout_height="wrap_content"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="快樂大本營"android:textSize="18sp"/></FrameLayout>(2)控制文件MainActivity.javapackagecom.ex03_06;importandroid.app.Activity;importandroid.os.Bundle;importandroid.widget.ImageView;publicclassMainActivityextendsActivity{ImageViewimageview;@OverridepublicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imageview=(ImageView)findViewById(R.id.mImageView);imageview.setImageResource(R.drawable.img);}}3、表格布局TableLayout表格布局TableLayout是將頁面劃分成行列構(gòu)成的單元格。在XML布局文件中,由根元素TableLayout來標(biāo)識表格布局。表格的列數(shù)由android:shrinkColumns定義,例如,android:shrinkColumns=“0,1,2”,即表格為3列,其列編號為第1、2、3列。表格的行由<TableRow></TableRow>定義。組件放置到哪一列,由android:layout_column指定列編號?!纠?-7】表格布局應(yīng)用示例。設(shè)計一個3行4列的表格布局,組件安排如圖3.9所示。創(chuàng)建名稱為Ex03_07的新項目。生成項目框架后,將準(zhǔn)備好的圖像文件img1.png、img2.png、img3.png、img4.png、img5.png復(fù)制到res\drawable-hdpi目錄下。(1)表格布局的布局文件activity_main.xml<?xmlversion="1.0"encoding="utf-8"?><TableLayoutxmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent“><TableRow><!--第1行--><ImageViewandroid:id="@+id/mImageView1"android:layout_width="60px"android:layout_height="wrap_content"android:layout_column="0"/><ImageViewandroid:id="@+id/mImageView2"android:layout_width="60px"android:layout_height="wrap_content" android:layout_column="1"/></TableRow><TableRow><!--第2行--><ImageViewandroid:id="@+id/mImageView3"android:layout_width="60px"android:layout_height="wrap_content"android:layout_column="1"/> <ImageViewandroid:id="@+id/mImageView4"android:layout_width="60px"android:layout_height="wrap_content" android:layout_column="2"/></TableRow><TableRow><!--第3行--><ImageViewandroid:id="@+id/mImageView5"android:layout_width="60px"android:layout_height="wrap_content" android:layout_column="3"/> </TableRow></TableLayout>(2)控制文件Ex03_07Activity.javapackagecom.ex03_07;importandroid.app.Activity;importandroid.os.Bundle;importandroid.widget.ImageView;publicclassEx03_07ActivityextendsActivity{ ImageViewimg1,img2,img3,img4,img5;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);img1=(ImageView)this.findViewById(R.id.mImageView1);img2=(ImageView)this.findViewById(R.id.mImageView2);img3=(ImageView)this.findViewById(R.id.mImageView3);img4=(ImageView)this.findViewById(R.id.mImageView4);img5=(ImageView)this.findViewById(R.id.mImageView5);img1.setImageResource(R.drawable.img1);img2.setImageResource(R.drawable.img2);img3.setImageResource(R.drawable.img3);img4.setImageResource(R.drawable.img4);img5.setImageResource(R.drawable.img5);
}}4、相對布局RelativeLayout相對布局RelativeLayout是采用相對其它組件的位置的布局方式。在相對布局中,通過指定ID關(guān)聯(lián)其他組件,與之右對齊、上下對齊或屏幕中央等方式來排列組件?!纠?-8】應(yīng)用相對布局設(shè)計一個組件排列如圖3.10所示的應(yīng)用程序。<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:id="@+id/label"android:layout_width="fill_parent"android:layout_height="wrap_content"android:textSize="24sp"android:text="相對布局"/><EditTextandroid:id="@+id/edit"android:layout_width="fill_parent"android:layout_height="wrap_content"android:background="@android:drawable/editbox_background"android:layout_below="@id/label"/><!--指定在文本標(biāo)簽的下方--><Buttonandroid:id="@+id/ok"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below=“@id/edit“<!--指定在文本編輯框的下方-->android:layout_alignParentRight="true"android:layout_marginLeft="10dip"android:text="OK"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toLeftOf=“@id/ok”<!--指定在OK按鈕的左方-->android:layout_alignTop="@id/ok"android:text="Cancel"/></RelativeLayout>5、絕對布局AbsoluteLayout絕對布局AbsoluteLayout是在布局文件中指定組件在屏幕上的坐標(biāo)位置。在XML布局文件中,由根元素AbsoluteLayout來標(biāo)識絕對布局。坐標(biāo)系統(tǒng):【例3-9】絕對布局示例。設(shè)一個文本標(biāo)簽在屏幕的坐標(biāo)為[40,150],修改布局文件main.xml如下:<?xmlversion="1.0"encoding="utf-8"?><AbsoluteLayoutxmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_x="40dp"android:layout_y="120dp"android:text="@string/hello"/></AbsoluteLayout>>3.5選項按鈕和進度條3.5.1進度條進度條ProgressBar能以形象地圖示方式直觀顯示某個過程的進度。進度條ProgressBar的常用屬性和方法見表3-8。屬性方法功能android:maxsetMax(intmax)設(shè)置進度條的變化范圍為0~maxandroid:progresssetProgress(intprogress)設(shè)置進度條的當(dāng)前值(初始值)incrementProgressBy(intdiff)進度條的變化步長值【例3-10】進度條應(yīng)用示例。在界面設(shè)計中,安排一個進度條組件,并設(shè)置兩個按鈕,用于控制進度條的進度變化。程序設(shè)計步驟:(1)在布局文件中聲明ProgressBar。(2)在Activity中獲得ProgressBar實例。(3)調(diào)用ProgressBar的incrementProgressBy()方法增加和減少進度。(1)布局文件activity_main.xml<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text=""/><ProgressBarandroid:id="@+id/ProgressBar01"style="@android:style/Widget.ProgressBar.Horizontal"android:layout_width="250dp"android:layout_height="wrap_content"android:max="200"android:progress="50"></ProgressBar><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/btn1"/><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/btn2"/></LinearLayout>(2)事件處理文件MainActivity.javapackagecom.ex03_10;importandroid.app.Activity;。。。。publicclassEx03_10ActivityextendsActivity{ProgressBarprogressBar;Buttonbtn1,btn2;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);progressBar=(ProgressBar)findViewById(R.id.ProgressBar01);btn1=(Button)findViewById(R.id.button1);btn2=(Button)findViewById(R.id.button2);btn1.setOnClickListener(newclick1());btn2.setOnClickListener(newclick2());}classclick1implementsOnClickListener{publicvoidonClick(Viewv){progressBar.incrementProgressBy(5);}}classclick2implementsOnClickListener{publicvoidonClick(Viewv){progressBar.incrementProgressBy(-5);}}}3.5.2選項按鈕1、復(fù)選按鈕CheckBox復(fù)選按鈕CheckBox用于多項選擇的情形,用戶可以一次性選擇多個選項。復(fù)選按鈕CheckBox是按鈕Button的子類,其屬性與方法繼承于按鈕Button。復(fù)選按鈕CheckBox常用方法見表3-9。方法功能isChecked()判斷選項是否被選中g(shù)etText()獲取復(fù)選按鈕的文本內(nèi)容【例3-11】復(fù)選按鈕應(yīng)用示例。在界面設(shè)計中,安排3個復(fù)選按鈕和1個普通按鈕,選擇選項后,點擊按鈕,在文本標(biāo)簽中顯示所選中的選項文本內(nèi)容。如圖3.15所示。程序設(shè)計步驟:(1)在布局文件中聲明復(fù)選按鈕CheckBox。(2)在Activity中獲得復(fù)選按鈕CheckBox實例。(3)調(diào)用CheckBox的isChecked()方法判斷該選項是否被選中。如果選項被選中,則調(diào)用getText()方法獲取選項的文本內(nèi)容。(程序代碼見教材)3.5.2選項按鈕2、單選組件RadioGroup與單選按鈕RadioButton單選組件RadioGroup用于多項選擇中只允許任選其中一項的情形。單選組件RadioGroup由一組單選按鈕RadioButton組成。單選按鈕RadioButton常用方法見表3-10。方法功能isChecked()判斷選項是否被選中g(shù)etText()獲取單選按鈕的文本內(nèi)容【例3-12】單選按鈕應(yīng)用示例。在界面設(shè)計中,安排2個單選按鈕、1個文本編輯框和1個普通按鈕,選擇選項后,點擊按鈕,在文本標(biāo)簽中顯示文本編輯框及所選中的選項文本內(nèi)容。如圖所示。程序設(shè)計步驟:(1)在布局文件中聲明單選組件RadioGroup和單選按鈕RadioButton。。(2)在Activity中獲得單選按鈕RadioButton實例。(3)調(diào)用RadioButton的isChecked()方法判斷該選項是否被選中。如果選項被選中,則調(diào)用getText()方法獲取選項的文本內(nèi)容。(程序代碼見教材)3.6圖像顯示ImageView與畫廊組件Gallery3.6.1圖像顯示ImageView類ImageView類用于顯示圖片或圖標(biāo)等圖像資源,并提供圖像縮放及著色(渲染)等圖像處理功能。元素屬性對應(yīng)方法說明android:maxHeightsetMaxHeight(int)為顯示圖像提供最大高度的可選參數(shù)。android:maxWidthsetMaxWidth(int)為顯示圖像提供最大寬度的可選參數(shù)。android:scaleTypesetScaleType(ImageView.ScaleType)控制圖像適合ImageView大小的顯示方式。(參見表3-12)android:srcsetImageResource(int)獲取圖像文件路徑ImageView類的常用方法ImageView類的scaleType屬性值(表3-12)scaleType屬性值常量值說明matrix0用矩陣來繪圖。fitXY1拉伸圖片(不按寬高比例)以填充View的寬高。fitStart2按比例拉伸圖片,拉伸后圖片的高度為View的高度,且顯示在View的左邊。
fitCenter3按比例拉伸圖片,拉伸后圖片的高度為View的高度,且顯示在View的中間。fitEnd4按比例拉伸圖片,拉伸后圖片的高度為View的高度,且顯示在View的右邊。center5按原圖大小顯示圖片,但圖片寬高大于View的寬高時,截圖圖片中間部分顯示。centerCrop6按比例放大原圖直至等于某邊View的寬高顯示。centerInside7當(dāng)原圖寬高或等于View的寬高時,按原圖大小居中顯示;反之將原圖縮放至View的寬高居中顯示。程序設(shè)計步驟:(1)將事先準(zhǔn)備好的多張圖片序列img1.jpg、img2.jpg、……、img6.jpg復(fù)制到資源/res/drawable-hdpi目錄下。(2)在布局文件中聲明圖像顯示組件ImageView。(3)在Activity中獲得相關(guān)組件實例。(4)通過觸發(fā)按鈕事件,調(diào)用OnClickListener接口的onClick()方法顯示圖像。【例3-13】顯示圖片示例?!纠?-13】顯示圖片示例。在界面設(shè)計中,安排2個按鈕和1個圖像顯示組件ImageView,點擊按鈕,可以翻閱瀏覽圖片?!纠?-13】的界面布局:外層線性布局嵌套兩個線性布局兩個水平排列按鈕內(nèi)嵌ImageView組件(程序代碼見教材)3.6.2畫廊組件Gallery與
圖片切換器ImageSwitcherGallery類是Android中控制圖片展示的一個組件,它可以橫向顯示一列圖像。Gallery類經(jīng)常與圖片切換器ImageSwitcher配合使用,用圖片切換器ImageSwitcher類展示圖片效果。使用ImageSwitcher時必須用ViewFactory接口的makeView()方法創(chuàng)建視圖?!纠?-14】畫廊展示圖片示例。在界面設(shè)計中,安排1個畫廊組件Gallery和1個圖片切換器ImageSwitcher,點擊畫廊中的小圖片,可以在圖片切換器中顯示放大的圖片。如圖3.19所示。程序設(shè)計步驟:(1)在布局文件中聲明畫廊組件Gallery和圖片切換器ImageSwitcher,采用表格布局。(2)把事先準(zhǔn)備好的圖片文件img1.jpg、img2.jpg、......、img8.jpg復(fù)制到項目的資源目錄res\drawable-hdpi中,在Activity中創(chuàng)建一個圖像文件數(shù)組imgs[],其數(shù)組的元素為圖片文件。(3)在Activity中創(chuàng)建畫廊組件Gallery和圖片切換器ImageSwitcher組件的實例對象。(4)在Activity中創(chuàng)建一個實現(xiàn)ViewFactory接口的內(nèi)部類,重寫makeView()方法建立imageView圖像視圖。圖片切換器ImageSwitcher通過該圖像視圖顯示放大的圖片。(5)在在Activity中創(chuàng)建一個BaseAdapter適配器子類的內(nèi)部類,用于安排放在畫廊gallery中的圖片文件及顯示方式。(程序代碼見教材)3.7消息提示Toast在Android系統(tǒng)中,可以用Toast來顯示幫助或提示消息。該提示消息以浮于應(yīng)用程序之上的形式顯示在屏幕上
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 花城版音樂七年級下冊全冊教案
- 建筑材料公司煤炭運輸協(xié)議
- 倉儲裝修抵租協(xié)議范本
- 專賣店室內(nèi)設(shè)計服務(wù)合同
- 農(nóng)業(yè)項目居間合作協(xié)議模板
- 攝影棚裝修工程合同
- 保健場地暖維修服務(wù)協(xié)議
- 體育館建設(shè)居間服務(wù)協(xié)議
- 學(xué)校突發(fā)公共事件管理應(yīng)急預(yù)案
- 醫(yī)院麻醉科裝飾模板
- 2023年貴州大方富民村鎮(zhèn)銀行招聘考試真題
- 物聯(lián)網(wǎng)安裝調(diào)試員職業(yè)技能競賽考試題庫(含答案)
- 七年級上冊語文統(tǒng)編版 10 《往事依依》活動型公開課一等獎創(chuàng)新教學(xué)設(shè)計(表格式)
- 北京市海淀區(qū)2023-2024學(xué)年七年級下學(xué)期期末數(shù)學(xué)練習(xí)試題(解析版)
- 游泳自由泳教案(表格式)
- 《第五課-放映幻燈片》優(yōu)教課件
- CTF信息安全競賽理論知識考試題庫大全-下(多選、判斷題)
- DG-TJ08-2435-2023市域鐵路設(shè)計標(biāo)準(zhǔn)
- 課件:敏捷制造概述-美化講解
- 第三單元 黑土傳情 江河水 教學(xué)設(shè)計 2023-2024學(xué)年樂人音版初中音九年級下冊教案1000字
- 水土保持監(jiān)理合同東西
評論
0/150
提交評論