Android移動開發(fā)基礎(chǔ)案例教程(第3版)-課件 第3章 Android常見界面控件_第1頁
Android移動開發(fā)基礎(chǔ)案例教程(第3版)-課件 第3章 Android常見界面控件_第2頁
Android移動開發(fā)基礎(chǔ)案例教程(第3版)-課件 第3章 Android常見界面控件_第3頁
Android移動開發(fā)基礎(chǔ)案例教程(第3版)-課件 第3章 Android常見界面控件_第4頁
Android移動開發(fā)基礎(chǔ)案例教程(第3版)-課件 第3章 Android常見界面控件_第5頁
已閱讀5頁,還剩115頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章Android常見界面控件《Android移動開發(fā)基礎(chǔ)案例教程(第3版)》學(xué)習(xí)目標(biāo)/Target

掌握簡單控件的使用方法,能夠利用簡單控件搭建簡單的界面

掌握RecyclerView控件的使用方法,能夠利用RecyclerView控件搭建仿今日頭

條推薦列表

掌握ListView控件的使用方法,能夠利用ListView控件搭建購物商城界面

了解自定義控件,能夠自定義一個簡單控件章節(jié)概述/Summary幾乎每一個Android應(yīng)用程序都是通過界面控件與用戶交互的,Android提供了非常豐富的界面控件,借助這些控件,我們可以很方便地進行用戶界面開發(fā)。接下來,本章將針對Android常見界面控件進行講解。目錄/Contents010203簡單控件的使用列表控件的使用自定義控件簡單控件的使用3.1

先定一個小目標(biāo)!掌握TextView控件的使用,能夠靈活地在界面中顯示與設(shè)置文本內(nèi)容3.1.1TextView控件3.1.1TextView控件我們在界面上看到的文本、圖片等信息是通過哪些方式來顯示的呢?Android提供了一些控件可以很方便地顯示界面上的文本、圖片等信息。其中,TextView控件用于顯示文本,我們可以在XML布局文件中以添加屬性的方式來控制TextView控件的樣式。3.1.1TextView控件3.1.1TextView控件TextView控件的常用屬性屬性名稱功能描述android:layout_width設(shè)置TextView控件的寬度android:layout_height設(shè)置TextView控件的高度android:id設(shè)置TextView控件的唯一標(biāo)識android:background設(shè)置TextView控件的背景android:layout_margin設(shè)置TextView控件與屏幕邊界或周圍控件、布局的距離android:padding設(shè)置TextView控件與該控件中內(nèi)容的距離android:text設(shè)置文本內(nèi)容android:textColor設(shè)置文本中的文字顏色3.1.1TextView控件TextView控件的常用屬性屬性名稱功能描述android:textSize設(shè)置文本中的文字大小,推薦單位為spandroid:gravity設(shè)置文本顯示的位置,如設(shè)置成“center”,文本將居中顯示android:maxLength設(shè)置文本的最大長度,超出此長度的文本不顯示android:lines設(shè)置文本的行數(shù),超出此行數(shù)的文本不顯示android:maxLines設(shè)置文本的最大行數(shù),超出此行數(shù)的文本不顯示android:ellipsize設(shè)置當(dāng)文本超出TextView控件規(guī)定的范圍時的顯示方式??蛇x屬性值為“start”“middle”“end”,分別表示當(dāng)文本超出TextView控件規(guī)定的范圍時,在文本開始、中間或者末尾顯示“...”3.1.1TextView控件TextView控件的常用屬性屬性名稱功能描述android:drawableTop在文本的頂部顯示圖像,該圖像可以放在res/drawable文件夾中相應(yīng)分辨率的目錄下,通過“@drawable/文件名”調(diào)用。類似的屬性有android:drawableBottom、android:drawableLeft、android:drawableRightandroid:lineSpacingExtra設(shè)置文本的行間距android:textStyle設(shè)置文本樣式,如bold(粗體)、italic(斜體)、normal(正常)3.1.1TextView控件注意:Android中的控件樣式除了可以使用XML屬性設(shè)置,也可以使用Java中的方法設(shè)置??丶拿恳粋€XML屬性都對應(yīng)一個Java方法,例如,TextView控件的android:textColor屬性對應(yīng)的是Java中的setTextColor()方法。【文件3-1】activity_main.xml文件核心代碼將TextView控件中的文本居中,并且將文本的樣式設(shè)置為斜體。<TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"

android:text="TextView控件顯示的文本信息"

android:textColor="#FFF79E38"android:textSize="25sp"android:gravity="center"android:textStyle="italic"/>案例3.1.1TextView控件

先定一個小目標(biāo)!掌握EditText控件的使用,能夠?qū)崿F(xiàn)用戶信息的輸入與獲取3.1.2EditText控件EditText控件用于顯示輸入框,它是TextView控件的子類,用戶可在此控件顯示的輸入框中輸入信息。EditText控件除了支持TextView控件的屬性,EditText控件還支持一些其他的常用屬性。3.1.2EditText控件EditText控件的常用屬性屬性名稱功能描述android:hint設(shè)置輸入框為空時顯示的提示文本android:textColorHint設(shè)置輸入框為空時顯示的提示文本的文字顏色android:password設(shè)置輸入輸入框中的內(nèi)容顯示為“.”android:phoneNumber設(shè)置輸入輸入框中的內(nèi)容只能是數(shù)字android:minLines設(shè)置文本的最小行數(shù)android:scrollHorizontally設(shè)置文本在超出EditText控件寬度的情況下是否出現(xiàn)橫拉條android:editable設(shè)置文本是否可編輯3.1.2EditText控件3.1.2EditText控件【文件3-2】activity_main.xml文件核心代碼使用EditText控件編輯文本。<EditText

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:hint="請輸入姓名"

android:maxLines="2"

android:textColor="#000000"

android:textSize="20sp"

android:textStyle="italic"/>案例最多輸入2行文本,多余不顯示

先定一個小目標(biāo)!掌握Button控件的使用,能夠?qū)崿F(xiàn)用戶交互的按鈕功能3.1.3Button控件Button控件用于顯示按鈕,它繼承自TextView控件,既可以顯示文本按鈕,又可以顯示圖片按鈕,同時也允許用戶通過點擊來執(zhí)行操作。當(dāng)Button控件被點擊時,被按下與彈起的背景會有一個動態(tài)的切換效果,這個效果就是點擊效果。3.1.3Button控件3.1.3Button控件Button控件最重要的作用之一就是響應(yīng)用戶的一系列點擊事件。下面介紹3種為Button控件設(shè)置點擊事件的方式,具體如下。使用匿名內(nèi)部類在布局文件中指定onClick屬性的值(已經(jīng)棄用)使用Activity實現(xiàn)View.OnClickListener接口適用于界面上的Button控件較少的情況適用于界面上的Button控件較多的情況3.1.3Button控件1.在布局文件中指定onClick屬性的值<Button......

android:onClick="click"/>在Activity中定義實現(xiàn)點擊事件的方法名必須與onClick屬性的值保持一致。3.1.3Button控件2.使用匿名內(nèi)部類btn.setOnClickListener(newView.OnClickListener(){

@OverridepublicvoidonClick(Viewview){//實現(xiàn)點擊事件的代碼

}

});如果監(jiān)聽到Button控件被點擊,那么程序會調(diào)用匿名內(nèi)部類中的onClick()方法實現(xiàn)Button控件的點擊事件。3.1.3Button控件3.使用Activity實現(xiàn)View.OnClickListener接口publicclassActivityextendsAppCompatActivityimplementsView.OnClickListener{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){......

btn.setOnClickListener(this); //設(shè)置Button控件的點擊監(jiān)聽事件

}

@OverridepublicvoidonClick(Viewview){//實現(xiàn)點擊事件的代碼

}}在實現(xiàn)onClick()方法之前,必須調(diào)用Button控件的setOnClickListener()方法設(shè)置點擊監(jiān)聽事件,否則對Button控件的點擊不會生效【文件3-3】activity_main.xml文件核心代碼以3種方式為Button控件設(shè)置點擊事件。<Buttonandroid:id="@+id/btn_one"android:text="按鈕1"/><Buttonandroid:id="@+id/btn_two"

android:onClick="click"android:text="按鈕2"/><Buttonandroid:id="@+id/btn_three"android:text="按鈕3"/>案例3.1.3Button控件【文件3-4】MainActivity.java文件核心代碼btn_one.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewview){//按鈕1的點擊事件

btn_one.setText("按鈕1已被點擊");}});3.1.3Button控件實現(xiàn)按鈕1的點擊【文件3-4】MainActivity.java文件核心代碼3.1.3Button控件實現(xiàn)按鈕2的點擊publicvoidclick(Viewview){@OverridepublicvoidonClick(Viewview){//按鈕1的點擊事件

btn_two.setText("按鈕2已被點擊");}});@OverridepublicvoidonClick(Viewv){switch(v.getId()){caseR.id.btn_three://按鈕3的點擊事件

btn_three.setText("按鈕3已被點擊");break;}}【文件3-4】MainActivity.java文件核心代碼3.1.3Button控件實現(xiàn)按鈕3的點擊3.1.3Button控件運行上述程序,依次點擊界面上的3個按鈕,查看按鈕上的文本信息發(fā)生的變化。

先定一個小目標(biāo)!掌握ImageView控件的使用,能夠?qū)崿F(xiàn)對圖片資源的靈活加載3.1.4ImageView控件ImageView控件用于顯示圖片,它繼承自View控件,可以加載各種圖片資源。3.1.4ImageView控件ImageView控件的常用屬性屬性名稱功能描述android:layout_width設(shè)置ImageView控件的寬度android:layout_height設(shè)置ImageView控件的高度android:id設(shè)置ImageView控件的唯一標(biāo)識android:background設(shè)置ImageView控件的背景圖片android:layout_margin設(shè)置ImageView控件與屏幕邊界或周圍控件的距離android:src設(shè)置ImageView控件需要顯示的圖片android:scaleType將圖片縮放或移動,以適應(yīng)ImageView控件的寬度和高度android:tint將圖片渲染成指定的顏色【文件3-5】activity_main.xml文件核心代碼使用ImageView控件顯示2張圖片,分別是一張?zhí)枅D片和一張?zhí)炜請D片。<RelativeLayoutxmlns:android="/apk/res/android"><ImageViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/bg"/><ImageViewandroid:layout_width="100dp"android:layout_height="100dp"android:src="@drawable/icon"/></RelativeLayout>案例3.1.4ImageView控件設(shè)置背景圖片為bg.png設(shè)置前景圖片為icon.png3.1.4ImageView控件注意:通過android:background屬性和android:src屬性為ImageView控件設(shè)置圖片的方式相同,都是以“@drawable/圖片名稱”的方式進行設(shè)置的。區(qū)別:android:background屬性設(shè)置的是背景圖片,圖片會根據(jù)ImageView控件的大小進行縮放,而android:src屬性設(shè)置的是前景圖片,以原圖大小顯示。

先定一個小目標(biāo)!掌握RadioButton控件的使用,能夠?qū)崿F(xiàn)單選功能3.1.5RadioButton控件RadioButton控件用于顯示單選按鈕,它是Button控件的子類。每一個單選按鈕都有“選中”和“未選中”兩種狀態(tài),這兩種狀態(tài)是通過android:checked屬性指定的,當(dāng)該屬性的值為true時,表示選中狀態(tài),否則表示未選中狀態(tài)。3.1.5RadioButton控件如何使用RadioButton控件?RadioButton控件經(jīng)常與RadioGroup配合使用,實現(xiàn)單選按鈕的功能。RadioGroup是單選組合框,可容納多個RadioButton控件,但是在RadioGroup中不會出現(xiàn)多個RadioButton控件同時為選中狀態(tài)的情況。3.1.5RadioButton控件基礎(chǔ)語法:3.1.5RadioButton控件在XML布局文件中,RadioGroup和RadioButton控件配合使用的語法格式如下。<RadioGroupandroid:屬性名稱="屬性值"......><RadioButtonandroid:屬性名稱="屬性值"....../>......<RadioGroup/>3.1.5RadioButton控件【文件3-6】activity_main.xml文件核心代碼顯示2個單選按鈕,單選按鈕的文本信息分別是“男”和“女”。<RadioGroupandroid:id="@+id/rdg"android:orientation="vertical"><RadioButtonandroid:id="@+id/rbtn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="25dp"android:text="男"/><RadioButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="25dp"android:text="女"/></RadioGroup>案例3.1.5RadioButton控件【文件3-7】MainActivity.java文件核心代碼radioGroup.setOnCheckedChangeListener(newRadioGroup.OnCheckedChangeListener(){@OverridepublicvoidonCheckedChanged(RadioGroupgroup,intcheckedId){

//判斷被點擊的是哪一個RadioButton控件

if(checkedId==R.id.rbtn){textView.setText("您的性別是:男");}else{textView.setText("您的性別是:女");}}});運行上述程序,點擊界面上“女”對應(yīng)的單選按鈕,該單選按鈕的樣式會變?yōu)檫x中狀態(tài)的樣式,單選按鈕下方會顯示被選中單選按鈕的文本信息。3.1.5RadioButton控件

先定一個小目標(biāo)!掌握CheckBox控件的使用,能夠?qū)崿F(xiàn)多選功能3.1.6CheckBox控件CheckBox控件用于顯示復(fù)選框,它是Button控件的子類,用于實現(xiàn)多選功能。每一個復(fù)選框都有“選中”和“未選中”兩種狀態(tài),這2種狀態(tài)是通過android:checked屬性指定的,當(dāng)該屬性的值為true時,表示選中狀態(tài),否則,表示未選中狀態(tài)。3.1.6CheckBox控件使用CheckBox控件統(tǒng)計用戶的興趣愛好。案例3.1.6CheckBox控件【文件3-8】activity_main.xml文件核心代碼<CheckBoxandroid:id="@+id/like_shuttlecock"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="羽毛球"android:textSize="18sp"/><CheckBoxandroid:id="@+id/like_basketball"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="籃球"android:textSize="18sp"/>3.1.6CheckBox控件<CheckBoxandroid:id="@+id/like_pingpong"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="乒乓球"android:textSize="18sp"/>3.1.6CheckBox控件protectedvoidonCreate(BundlesavedInstanceState){

shuttlecock.setOnCheckedChangeListener(this);basketball.setOnCheckedChangeListener(this);pingpong.setOnCheckedChangeListener(this);}【文件3-9】MainActivity.java文件核心代碼設(shè)置3個CheckBox控件的監(jiān)聽事件3.1.6CheckBox控件publicvoidonCheckedChanged(CompoundButtonbuttonView,booleanisChecked){Stringmotion=buttonView.getText().toString();

if(isChecked){if(!hobbys.contains(motion)){hobbys=hobbys+motion;hobby.setText(hobbys);}

}

else{if(hobbys.contains(motion)){hobbys=hobbys.replace(motion,"");hobby.setText(hobbys);}}}選中狀態(tài)未選中狀態(tài)運行上述程序,點擊界面上“羽毛球”和“籃球”對應(yīng)的復(fù)選框,復(fù)選框會顯示選中狀態(tài)的樣式,并且“您選擇興趣愛好為:”下方會顯示被選擇的興趣愛好信息。3.1.6CheckBox控件

先定一個小目標(biāo)!掌握Toast類的使用,能夠?qū)崿F(xiàn)提示功能3.1.7Toast類Toast類是Android提供的輕量級信息提示機制,用于向用戶提示即時信息,它顯示在應(yīng)用程序界面的最上層,并且顯示一段時間后自動消失,不會打斷當(dāng)前操作,也不會獲得焦點。3.1.7Toast類3.1.7Toast類Toast.makeText(Context,Text,Time).show();使用Toast類顯示提示信息。(1)Context:當(dāng)前組件的上下文環(huán)境的信息。(2)Text:表示提示信息(字符串)。(3)Time:表示顯示提示信息的時長。3.1.7Toast類使用Toast類提示用戶“Wi-Fi已斷開”信息。示例Toast.makeText(MainActivity.this,"Wi-Fi已斷開",Toast.LENGTH_SHORT).show();

先定一個小目標(biāo)!掌握簡單控件的使用方法,能夠獨立實現(xiàn)注冊界面效果3.1.8實戰(zhàn)演練——實現(xiàn)注冊界面效果下面通過實現(xiàn)一個注冊界面來演示如何使用Android中常用的簡單控件。3.1.8實戰(zhàn)演練——實現(xiàn)注冊界面效果注冊界面3.1.8實戰(zhàn)演練——實現(xiàn)注冊界面效果3.1.8實戰(zhàn)演練——實現(xiàn)注冊界面效果注冊成功界面與Logcat面板信息創(chuàng)建程序。創(chuàng)建一個名為Register的應(yīng)用程序,指定包名為cn.itcast.register。導(dǎo)入界面圖片。導(dǎo)入界面需要的圖片到drawable-hdpi文件夾中。步驟1步驟2實現(xiàn)注冊界面效果創(chuàng)建分割線樣式。分別創(chuàng)建名為hLine、vLine的樣式。步驟33.1.8實戰(zhàn)演練——實現(xiàn)注冊界面效果<stylename="hLine"><itemname="android:layout_width">match_parent</item><itemname="android:layout_height">1dp</item><itemname="android:background">@android:color/white</item></style><stylename="vLine"><itemname="android:layout_width">1dp</item>實現(xiàn)注冊界面效果3.1.8實戰(zhàn)演練——實現(xiàn)注冊界面效果<itemname="android:layout_height">match_parent</item><itemname="android:background">@android:color/white</item></style>創(chuàng)建文本樣式。分別創(chuàng)建名為tvOne、tvTwo的樣式。步驟4<stylename="tvOne"><itemname="android:layout_width">0dp</item><itemname="android:layout_height">match_parent</item><itemname="android:layout_weight">1</item><itemname="android:drawablePadding">8dp</item><itemname="android:gravity">center_horizontal</item><itemname="android:paddingTop">40dp</item><itemname="android:textColor">@android:color/white</item>實現(xiàn)注冊界面效果3.1.8實戰(zhàn)演練——實現(xiàn)注冊界面效果<itemname="android:textSize">15dp</item></style><stylename="tvTwo"><itemname="android:layout_width">wrap_content</item><itemname="android:layout_height">wrap_content</item><itemname="android:layout_marginLeft">20dp</item><itemname="android:textColor">@android:color/white</item><itemname="android:textSize">15dp</item></style>步驟5實現(xiàn)注冊界面效果創(chuàng)建輸入框樣式。創(chuàng)建名為etOne的樣式。3.1.8實戰(zhàn)演練——實現(xiàn)注冊界面效果<stylename="etOne"><itemname="android:layout_width">match_parent</item><itemname="android:layout_height">wrap_content</item><itemname="android:layout_marginLeft">30dp</item><itemname="android:background">@null</item><itemname="android:textColor">@android:color/white</item></style>放置界面控件。放置9個TextView控件,8個View控件,1個ImageView控件,3個EditText控件,2個RadioButton控件,3個CheckBox控件,1個Button控件。步驟6刪除默認標(biāo)題欄。修改theme屬性的值去掉默認標(biāo)題欄。步驟7步驟8實現(xiàn)注冊功能。初始化界面控件并設(shè)置單選按鈕點擊事件;實現(xiàn)按鈕與復(fù)選框的點擊監(jiān)聽,處理用戶交互與數(shù)據(jù)獲取。運行程序。運行上述程序,并在界面上輸入注冊信息;點擊“提交”按鈕。步驟93.1.8實戰(zhàn)演練——實現(xiàn)注冊界面效果實現(xiàn)注冊界面效果android:theme="@style/Theme.AppCompat.NoActionBar"列表控件的使用3.2

先定一個小目標(biāo)!掌握ListView控件的使用方法,能夠?qū)崿F(xiàn)數(shù)據(jù)列表展示與交互3.2.1ListView控件的使用在日常生活中,我們經(jīng)常會使用微信、淘寶等應(yīng)用程序,這些應(yīng)用程序通常會在一個頁面中展示多個條目,并且這些條目的布局風(fēng)格一致,這種數(shù)據(jù)的展示方式是通過ListView控件或RecyclerView控件實現(xiàn)的。Android開發(fā)中,ListView控件是一個比較常用的控件,它以列表的形式展示數(shù)據(jù),并且能夠根據(jù)列表的高度自適應(yīng)屏幕顯示。3.2.1ListView控件的使用ListView控件的常用屬性屬性名稱功能描述android:listSelector當(dāng)條目被點擊后,改變條目的背景顏色android:divider設(shè)置分割線的顏色android:dividerHeight設(shè)置分割線的高度android:scrollbars是否顯示滾動條android:fadingEdge刪除上邊界和下邊界的黑色陰影3.2.1ListView控件的使用3.2.1ListView控件的使用在XML布局文件的RelativeLayout中添加ListView控件。示例<RelativeLayoutxmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><ListViewandroid:id="@+id/lv"android:layout_width="match_parent"android:layout_height="match_parent"android:listSelector="#fefefefe"android:scrollbars="none"></ListView></RelativeLayout>

先定一個小目標(biāo)!掌握常用數(shù)據(jù)適配器的使用,能夠為ListView等列表控件高效綁定和展示數(shù)據(jù)3.2.2常用數(shù)據(jù)適配器什么是數(shù)據(jù)適配器?3.2.2常用數(shù)據(jù)適配器3.2.2常用數(shù)據(jù)適配器數(shù)據(jù)適配器是數(shù)據(jù)與視圖之間的橋梁,它類似于一個轉(zhuǎn)換器,將復(fù)雜的數(shù)據(jù)轉(zhuǎn)換成用戶可以接受的方式進行呈現(xiàn)。在Android中提供了多種數(shù)據(jù)適配器以對ListView控件進行數(shù)據(jù)適配。3.2.2常用數(shù)據(jù)適配器BaseAdapter基本的數(shù)據(jù)適配器,是一個抽象類ArrayAdapter繼承自BaseAdapter也是BaseAdapter的子類SimpleAdapterAndroid提供的常用數(shù)據(jù)適配器及其特點:3.2.2常用數(shù)據(jù)適配器1.BaseAdapter適配器BaseAdapter實際上是一個抽象類,通常在自定義數(shù)據(jù)適配器時,自定義的數(shù)據(jù)適配器會繼承BaseAdapter,該類擁有4個抽象方法,根據(jù)這4個抽象方法對ListView控件進行數(shù)據(jù)適配。3.2.2常用數(shù)據(jù)適配器BaseAdapter中的4個抽象方法方法功能描述publicintgetCount()獲取Item條目的總數(shù)publicObjectgetItem(intposition)根據(jù)位置(position)獲取某個Item的對象publiclonggetItemId(intposition)根據(jù)position獲取某個Item的idpublicViewgetView(intposition,ViewconvertView,ViewGroupparent)獲取相應(yīng)position對應(yīng)的Item視圖,這里的position是當(dāng)前Item的位置,convertView用于復(fù)用舊視圖,parent用于加載XML布局文件3.2.2常用數(shù)據(jù)適配器2.SimpleAdapter適配器SimpleAdapter繼承自BaseAdapter,實現(xiàn)了BaseAdapter的4個抽象方法并將方法進行封裝。因此在使用SimpleAdapter進行數(shù)據(jù)適配時,只需要在構(gòu)造方法中傳入相應(yīng)的參數(shù)即可。3.2.2常用數(shù)據(jù)適配器publicSimpleAdapter(Contextcontext,List<?extendsMap<String,?>>data,intresource,String[]from,int[]to)SimpleAdapter的構(gòu)造方法的具體信息。(1)context:上下文對象。(2)data:數(shù)據(jù)集合。data中的每一項對應(yīng)ListView控件中條目的數(shù)據(jù)。(3)resource:Item布局的資源id。(4)from:Map集合中的key值。(5)to:Item布局中對應(yīng)的控件。3.2.2常用數(shù)據(jù)適配器3.ArrayAdapter適配器ArrayAdapter也是BaseAdapter的子類,其用法與SimpleAdapter的用法類似,開發(fā)者只需要在構(gòu)造方法里面?zhèn)魅胂鄳?yīng)參數(shù)即可。ArrayAdapter通常用于適配TextView控件。3.2.2常用數(shù)據(jù)適配器publicArrayAdapter(Contextcontext,intresource);publicArrayAdapter(Contextcontext,intresource,inttextViewResourceId);publicArrayAdapter(Contextcontext,intresource,T[]objects);publicArrayAdapter(Contextcontext,intresource,inttextViewResourceId,T[]objects);publicArrayAdapter(Contextcontext,intresource,List<T>objects);publicArrayAdapter(Contextcontext,intresource,inttextViewResourceId,List<T>objects)ArrayAdapter的構(gòu)造方法的具體信息如下。3.2.2常用數(shù)據(jù)適配器(1)context:Context的上下文對象。(2)resource:Item布局的資源id。(3)textViewResourceId:Item布局中相應(yīng)TextView控件的id。(4)T[]objects:需要適配數(shù)組類型的數(shù)據(jù)。(5)List<T>objects:需要適配列表類型的數(shù)據(jù)。ArrayAdapter()構(gòu)造方法中的5個參數(shù)的含義如下。3.2.2常用數(shù)據(jù)適配器通過ListView控件的setAdapter()方法設(shè)置數(shù)據(jù)適配器。將繼承BaseAdapter的MyBaseAdapter實例設(shè)置到ListView控件上。示例//初始化ListView控件ListViewmListView=(ListView)findViewById(R.id.lv);//創(chuàng)建MyBaseAdapter實例MyBaseAdaptermAdapter=newMyBaseAdapter();//設(shè)置數(shù)據(jù)適配器到ListView控件上mListView.setAdapter(mAdapter);

先定一個小目標(biāo)!掌握ListView控件與數(shù)據(jù)適配器的使用方法,能夠獨立實現(xiàn)購物商城界面效果3.2.3實戰(zhàn)演練——購物商城下面通過一個購物商城的案例來演示如何通過ListView控件與數(shù)據(jù)適配器顯示一個商品信息的列表。3.2.3實戰(zhàn)演練——購物商城購物商城列表界面購物商城列表條目界面3.2.3實戰(zhàn)演練——購物商城創(chuàng)建程序。創(chuàng)建一個名為ListView的應(yīng)用程序,指定包名為cn.itcast.listview。導(dǎo)入界面圖片。導(dǎo)入界面需要的圖片到drawable-hdpi文件夾中。步驟1步驟2實現(xiàn)購物商城列表界面效果放置界面控件。放置1個TextView控件,放置1個ListView控件。步驟3創(chuàng)建購物商城列表條目界面。創(chuàng)建布局文件list_item.xml,在該文件中放置1個ImageView控件,放置2個TextView控件。步驟4實現(xiàn)購物商城列表界面的顯示效果。創(chuàng)建MyBaseAdapter類,并在該類中實現(xiàn)對ListView控件的數(shù)據(jù)適配。步驟53.2.3實戰(zhàn)演練——購物商城3.2.3實戰(zhàn)演練——購物商城當(dāng)ListView控件上加載的Item過多,并快速滑動該列表控件時,界面會出現(xiàn)卡頓的現(xiàn)象。(1)當(dāng)滑動屏幕時,不斷地銷毀和創(chuàng)建Item對象ListView控件在當(dāng)前屏幕上顯示多少個Item,就會在MyBaseAdapter的getView()方法中創(chuàng)建多少個Item對象。當(dāng)滑動ListView控件時,滑出屏幕的Item對象會被銷毀,然后對新加載到屏幕上的Item創(chuàng)建新的對象,因此快速滑動ListView控件時會不斷地對Item對象進行銷毀和創(chuàng)建。分析卡頓的原因:為什么優(yōu)化ListView控件?3.2.3實戰(zhàn)演練——購物商城(2)不斷地執(zhí)行findViewById()方法初始化控件每創(chuàng)建一個Item對象都需要加載一次Item布局,加載布局時會不斷地執(zhí)行findViewById()方法初始化控件。這些操作比較耗費設(shè)備(如模擬器、手機等設(shè)備)的內(nèi)存并且浪費時間,如果每個Item都需要加載網(wǎng)絡(luò)圖片(加載網(wǎng)絡(luò)圖片是比較耗時的操作),就會造成程序內(nèi)存溢出的異常。3.2.3實戰(zhàn)演練——購物商城(1)在MainActivity中創(chuàng)建一個ViewHolder類,將需要加載的控件變量放在該類中。優(yōu)化步驟classViewHolder{TextViewtitle,price;ImageViewiv;}

3.2.3實戰(zhàn)演練——購物商城(2)通過復(fù)用convertView來減少Item對象的銷毀和創(chuàng)建。publicViewgetView(intposition,ViewconvertView,ViewGroupparent){

ViewHolderholder=null;if(convertView==null){

convertView=View.inflate(MainActivity.this,R.layout.list_item,null);

holder=newViewHolder();

holder.title=convertView.findViewById(R.id.title);holder.price=convertView.findViewById(R.id.price);holder.iv=convertView.findViewById(R.id.iv);convertView.setTag(holder);}else{holder=(ViewHolder)convertView.getTag();}holder.title.setText(titles[position]);

holder.price.setText(prices[position]);holder.iv.setBackgroundResource(icons[position]);returnconvertView;} 將list_item.xml文件找出來并轉(zhuǎn)換成View對象找到list_item.xml中創(chuàng)建的TextView控件

先定一個小目標(biāo)!掌握RecyclerView控件的使用,能夠?qū)崿F(xiàn)數(shù)據(jù)列表展示與交互3.2.4RecyclerView控件的使用3.2.4RecyclerView控件的使用在Android5.0之后,Google公司提供了用于在有限的窗口范圍內(nèi)顯示大量數(shù)據(jù)的控件RecyclerView。RecyclerView控件同樣以列表的形式展示數(shù)據(jù),并且數(shù)據(jù)都是通過數(shù)據(jù)適配器加載的,且RecyclerView控件的功能更加強大。3.2.4RecyclerView控件的使用ListView控件和RecyclerView控件都能實現(xiàn)列表布局,那么這兩個控件有什么區(qū)別呢?3.2.4RecyclerView控件的使用RecyclerView控件1.展示效果:實現(xiàn)水平/垂直列表、瀑布流和GridView效果。2.數(shù)據(jù)適配器:強制使用ViewHolder類,使代碼編寫規(guī)范化。3.復(fù)用效果:由控件內(nèi)部自動完成。4.動畫效果:原生支持動畫,通過setItemAnimator()方法為Item添加動畫效果。ListView控件1.展示效果:只能實現(xiàn)垂直列表。2.數(shù)據(jù)適配器:使用BaseAdapter。3.復(fù)用效果:手動復(fù)用。需要開發(fā)者通過convertView的setTag()方法和getTag()方法實現(xiàn)。4.動畫效果:不支持內(nèi)置動畫。下面從4個方面來對RecyclerView控件和ListView控件進行分析。下面通過一個案例來講解如何通過RecyclerView控件顯示一個動物列表界面。3.2.4RecyclerView控件的使用動物列表界面動物列表條目界面3.2.4RecyclerView控件的使用創(chuàng)建程序。創(chuàng)建一個名為RecyclerView的應(yīng)用程序,指定包名為cn.itcast.recyclerview。導(dǎo)入界面圖片。將界面所需要的圖片導(dǎo)入drawable-hdpi文件夾中。步驟1步驟2實現(xiàn)動物列表界面效果3.2.4RecyclerView控件的使用添加androidx.recyclerview庫。選中程序并右擊,在彈出的菜單中選擇“OpenModuleSettings”選項,在彈出的ProjectStructure對話框中的左側(cè)第1欄選擇“Dependencies”,在第2欄選擇“app”選項,在第3欄點擊左上角的加號,彈出一個下拉列表。步驟3實現(xiàn)動物列表界面效果3.2.4RecyclerView控件的使用選擇④標(biāo)識的“1LibraryDependency”選項,彈出AddLibraryDependency對話框,在AddLibraryDependency對話框的輸入框中輸入androidx.recyclerview庫名稱,然后單擊“Search”按鈕,AndroidStudio會在下方顯示查找到的androidx.recyclerview庫。實現(xiàn)動物列表界面效果3.2.4RecyclerView控件的使用選擇最新版本的androidx:recyclerview庫,單擊“OK”按鈕,返回上圖的ProjectStructure對話框,單擊“Apply”按鈕,然后單擊“OK”按鈕即可完成androidx:recyclerview庫的添加。實現(xiàn)動物列表界面效果3.2.4RecyclerView控件的使用放置界面控件。在activity_main.xml文件中放置1個RecyclerView控件。步驟4<RelativeLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent">

<androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/id_recyclerview"android:layout_width="match_parent"android:layout_height="match_parent">

</androidx.recyclerview.widget.RecyclerView></RelativeLayout>

實現(xiàn)動物列表界面效果3.2.4RecyclerView控件的使用步驟5實現(xiàn)動物列表界面的顯示效果。在MainActivity中通過邏輯代碼對RecyclerView控件進行數(shù)據(jù)適配并將數(shù)據(jù)顯示到動物列表界面上。步驟6創(chuàng)建動物列表條目界面。創(chuàng)建布局文件recycler_item.xml,放置1個ImageView控件,放置2個TextView控件。

先定一個小目標(biāo)!掌握RecyclerView控件的使用,能夠獨立實現(xiàn)仿今日頭條推薦列表界面效果3.2.5實戰(zhàn)演練——仿今日頭條推薦列表下面以仿今日頭條推薦列表為例,演示如何使用RecyclerView控件。3.2.5實戰(zhàn)演練——仿今日頭條推薦列表3.2.5實戰(zhàn)演練——仿今日頭條推薦列表仿今日頭條推薦列表界面創(chuàng)建程序。創(chuàng)建一個名為HeadLine的應(yīng)用程序,指定包名為cn.itcast.headline。導(dǎo)入界面圖片。將界面所需要的圖片導(dǎo)入drawable-hdpi文件夾中。步驟1步驟2實現(xiàn)動物列表界面效果添加androidx.recyclerview庫。將androidx.recyclerview庫添加到程序中。步驟3創(chuàng)建文本樣式。創(chuàng)建名為tvStyle的頂部導(dǎo)航欄的文本樣式,創(chuàng)建名為tvInfo的每個條目的底部深灰色文字的文本樣式。步驟43.2.5實戰(zhàn)演練——仿今日頭條推薦列表<stylename="tvStyle"><itemname="android:layout_width">wrap_content</item><itemname="android:layout_height">match_parent</item><itemname="android:padding">10dp</item>實現(xiàn)動物列表界面效果3.2.5實戰(zhàn)演練——仿今日頭條推薦列表

<itemname="android:gravity">center</item><itemname="android:textSize">15sp</item></style><stylename="tvInfo"><itemname="android:layout_width">wrap_content</item><itemname="android:layout_height">wrap_content</item><itemname="android:layout_marginLeft">8dp</item><itemname="android:layout_gravity">center_vertical</item><itemname="android:textSize">14sp</item><itemname="android:textColor">@color/gray_color</item></style>實現(xiàn)動物列表界面效果創(chuàng)建圖片樣式。創(chuàng)建名為ivImg的圖片樣式。步驟5添加淺灰色與深灰色顏色值。在res/values/colors.xml文件中添加名為light_gray_color的淺灰色顏色值和gray_color的深灰色顏色值。步驟63.2.5實戰(zhàn)演練——仿今日頭條推薦列表<stylename="ivImg"><itemname="android:layout_width">0dp</item><itemname="android:layout_height">90dp</item><itemname="android:layout_weight">1</item><!--ll_info為布局文件list_item_one.xml中的id--><itemname="android:layout_toRightOf">@id/ll_info</item></style><colorname="light_gray_color">#eeeeee</color><colorname="gray_color">#828282</color>實現(xiàn)動物列表界面效果3.2.5實戰(zhàn)演練——仿今日頭條推薦列表android:theme="@style/Theme.AppCompat.NoActionBar"步驟7刪除默認標(biāo)題欄。修改theme屬性的值為“@style/Theme.AppCompat.NoActionBar”。創(chuàng)建標(biāo)題欄。在res/layout文件夾中創(chuàng)建一個名為title_bar.xml的布局文件。步驟8搭建仿今日頭條推薦列表界面。在activity_main.xml文件中搭建仿今日頭條推薦列表界面。步驟9搭建仿今日頭條推薦列表界面的條目界面。包括搭建顯示1張圖片的條目界面、搭建顯示3張圖片的條目界面。步驟10封裝新聞信息實體類。創(chuàng)建NewsBean類,在該類中創(chuàng)建新聞信息屬性對應(yīng)的字段。步驟113.2.5實戰(zhàn)演練——仿今日頭條推薦列表實現(xiàn)動物列表界面效果編寫仿今日頭條推薦列表界面的數(shù)據(jù)適配器。創(chuàng)建適配器NewsAdapter;在適配器中加載條目視圖、獲取條目類型、綁定界面數(shù)據(jù)、獲取條目總數(shù)。顯示仿今日頭條推薦列表的數(shù)據(jù)。創(chuàng)建setData()方法,將定義的數(shù)組中的數(shù)據(jù)添加到新聞數(shù)據(jù)集合NewsList中;將新聞集合數(shù)據(jù)設(shè)置到適配器NewsAdapter中。步驟12步驟13運行結(jié)果。運行程序,查看仿今日頭條推薦列表界面的效果。步驟14自定義控件3.3

先定一個小目標(biāo)!了解自定義控件,能夠自定義一個簡單控件3.3自定義控件在什么情況下使用自定義控件?3.3自定義控件3.3自定義控件在Android應(yīng)用開發(fā)中,構(gòu)建界面時我們通常并不直接使用基礎(chǔ)的View控件,而是使用其功能更為豐富的子類(如TextView、Button等)。盡管Android提供了大量內(nèi)置的控件,但在實際開發(fā)中,經(jīng)常會遇到這些標(biāo)準控件無法滿足特定設(shè)計或功能需求的情況。這時,通過自定義控件來擴展或組合現(xiàn)有控件的功能,便成為解決此類問題的有效方案。創(chuàng)建一個類繼承自View類或者其子類,并重寫該類的構(gòu)造方法。示例3.3自定義控件publicclassCustomviewextendsView{

publicCustomview(Contextcontext){

super(context);

}

publicCustomview(Contextcontext,AttributeSetattrs){

super(context,attrs);

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論