Android網(wǎng)格視圖GridView的使用
GridView(網(wǎng)格視圖)是按照行列的方式來顯示內(nèi)容的,一般用于顯示圖片,圖片等內(nèi)容,比如實(shí)現(xiàn)九宮格圖,用GridView是首選,也是最簡(jiǎn)單的。主要用于設(shè)置Adapter。
網(wǎng)格視圖GridView的排列方式與矩陣類似,當(dāng)屏幕上有很多元素(文字、圖片或其他元素)需要按矩陣格式進(jìn)行顯示時(shí),就可以使用GridView控件來實(shí)現(xiàn)。
GridView常用的XML屬性:
本文將以一個(gè)具體的實(shí)例來說明如何使用GridView控件實(shí)現(xiàn)手機(jī)屏幕上各個(gè)應(yīng)用軟件圖標(biāo)的擺放,以及應(yīng)用軟件名稱的顯示。
完成后的程序運(yùn)行效果如圖1所示。
圖1 主界面顯示效果
1.界面布局
通過查看GridView的API幫助文檔(http://developer.android.com/reference/android/widget/GridView.html),可以了解到GridView的常用xml屬性如圖2所示。
其中,android:columnWidth[int]用于設(shè)置每列的寬度;android:gravity[int]用于設(shè)置每個(gè)網(wǎng)格的比重;android:horizontalSpacing[int]用于設(shè)置網(wǎng)格之間列的默認(rèn)水平距離;android:numColumn[int]用于設(shè)置列數(shù);android:stretchMode[int]用于設(shè)置列應(yīng)該以何種方式填充可用空間;android:verticalSpacing[int]用于設(shè)置網(wǎng)格之間行的默認(rèn)垂直距離。
了解了上述的GridView常用xml屬性之后,我們就可以完成對(duì)主界面的xml布局文件編寫了。在xml布局文件中,我們使用LinearLayout對(duì)整個(gè)界面進(jìn)行垂直布局,然后在該布局中添加一個(gè)GridView控件即可。具體的xml布局文件源碼如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <GridView android:id="@+id/gridView" android:layout_width="match_parent" android:layout_height="wrap_content" android:numColumns="" android:horizontalSpacing="dp" android:verticalSpacing="dp"> </GridView> </LinearLayout>
在GridView控件中,我們通過android:numColumns="4"指定了網(wǎng)格的列數(shù)為4;通過android:horizontalSpacing="10dp"和android:verticalSpacing="10dp"指定了網(wǎng)格之間的水平距離和垂直距離都為10dp。
2.網(wǎng)格元素布局
如圖1所示,在每個(gè)網(wǎng)格內(nèi),我們都需要顯示兩項(xiàng)內(nèi)容:應(yīng)用軟件圖標(biāo)以及應(yīng)用軟件名稱。因此,我們還需要對(duì)網(wǎng)格內(nèi)元素進(jìn)行相應(yīng)的布局。
我們可以在項(xiàng)目工程的layout目錄下新建一個(gè)名為“griditeminfo.xml”的xml布局文件,完成對(duì)網(wǎng)格內(nèi)元素的布局。在該xml布局文件中,我們使用相對(duì)布局RelativeLayout對(duì)網(wǎng)格內(nèi)的元素進(jìn)行排列,將一個(gè)ImageView控件以水平居中的形式放置在網(wǎng)格內(nèi)(上方),用來顯示應(yīng)用程序的圖標(biāo);將一個(gè)TextView控件以水平居中的形式放置在網(wǎng)格內(nèi)(下方),用來顯示應(yīng)用程序的名稱。具體的griditeminfo.xml源碼如下:
<?xml version="." encoding="utf-"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" > <ImageView android:id="@+id/itemImage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" > </ImageView> <TextView android:id="@+id/itemName" android:layout_below="@+id/itemImage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" > </TextView> </RelativeLayout>
3.資源儲(chǔ)存
在該實(shí)例中,我們需要對(duì)眾多的應(yīng)用軟件圖標(biāo)以及應(yīng)用軟件名稱進(jìn)行儲(chǔ)存。很顯然,應(yīng)用軟件圖標(biāo)以及應(yīng)用軟件名稱之間存在著一一對(duì)應(yīng)的關(guān)系,我們可以使用HashMap分別對(duì)應(yīng)用軟件圖標(biāo)以及應(yīng)用軟件名稱進(jìn)行存儲(chǔ),然后再將HashMap添加到ArrayList中,便可以完成資源的儲(chǔ)存了。具體實(shí)現(xiàn)方法如下:
//將圖標(biāo)圖片和圖標(biāo)名稱存入ArrayList中 //Author:博客園-依舊淡然 ArrayList<HashMap<String, Object>> item = new ArrayList<HashMap<String, Object>>(); for (int i = ; i < resIds.length; i++) { HashMap<String, Object> map = new HashMap<String, Object>(); map.put("itemImage", resIds[i]); map.put("itemName", name[i]); item.add(map); }
其中,數(shù)組resIds[]儲(chǔ)存著應(yīng)用軟件圖標(biāo)的資源id;數(shù)組name[]儲(chǔ)存著應(yīng)用軟件名稱,并通過for循環(huán)遍歷語(yǔ)句將其存入了HashMap中。
4.簡(jiǎn)單適配器SimpleAdapter
簡(jiǎn)單適配器SimpleAdapter繼承自BaseAdapter,用于將靜態(tài)數(shù)據(jù)映射到xml文件中定義好的視圖當(dāng)中。比如可以指定靜態(tài)數(shù)據(jù)為由Map組成的ArrayList。在ArrayList中每個(gè)條目對(duì)應(yīng)List中的一行,Map可以包含多項(xiàng)數(shù)據(jù)。
SimpleAdapter的構(gòu)造方法如下:
public SimpleAdapter (Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to);
其中,參數(shù)context用于指定SimpleAdapter所關(guān)聯(lián)的上下文對(duì)象;參數(shù)data用于指定Map列表;參數(shù)resource用于指定資源標(biāo)識(shí)符(即列表項(xiàng)的視圖布局);參數(shù)from用于指定Map列表中每項(xiàng)數(shù)據(jù)所對(duì)應(yīng)的標(biāo)簽;參數(shù)to用于指定Map列表中每項(xiàng)數(shù)據(jù)在布局文件中所要匹配的對(duì)象。
在該實(shí)例中,實(shí)現(xiàn)SimpleAdapter的構(gòu)造方法如下所示:
//SimpleAdapter對(duì)象,匹配ArrayList中的元素 //Author : 依舊淡然 SimpleAdapter simpleAdapter = new SimpleAdapter (this, item, R.layout.griditeminfo, new String[] {"itemImage","itemName"}, new int[] {R.id.itemImage,R.id.itemName}) { };
實(shí)現(xiàn)了簡(jiǎn)單適配器SimpleAdapter之后,我們還需要將該簡(jiǎn)單適配器SimpleAdapter添加到GridView對(duì)象當(dāng)中去,可以通過如下方法實(shí)現(xiàn):
mGridView.setAdapter(simpleAdapter);
5.事件監(jiān)聽
在實(shí)際的應(yīng)用當(dāng)中,我們需要對(duì)用戶的操作進(jìn)行監(jiān)聽,即需要知道用戶選擇了哪一個(gè)應(yīng)用軟件。
在網(wǎng)格控件GridView中,常用的事件監(jiān)聽器有兩個(gè):OnItemSelectedListener和OnItemClickListener。其中,OnItemSelectedListener用于項(xiàng)目選擇事件監(jiān)聽,OnItemClickListener用于項(xiàng)目點(diǎn)擊事件監(jiān)聽。
要實(shí)現(xiàn)這兩個(gè)事件監(jiān)聽很簡(jiǎn)單,繼承OnItemSelectedListener和OnItemClickListener接口,并實(shí)現(xiàn)其抽象方法即可。其中,需要實(shí)現(xiàn)的OnItemClickListener接口的抽象方法如下:
public void onItemClick(AdapterView<?> parent, View view, int position, long id);
需要實(shí)現(xiàn)的OnItemSelectedListener接口的抽象方法有兩個(gè),分別如下:
public void onItemSelected(AdapterView<?> parent, View view, int position, long id); public void onNothingSelected(AdapterView<?> parent);
- Android基于OpenGL在GLSurfaceView上繪制三角形及使用投影和相機(jī)視圖方法示例
- Android開發(fā)之自定義View(視圖)用法詳解
- Android中的ViewPager視圖滑動(dòng)切換類的入門實(shí)例教程
- Android視圖控件架構(gòu)分析之View、ViewGroup
- Android應(yīng)用開發(fā)中自定義ViewGroup視圖容器的教程
- Android App中自定義View視圖的實(shí)例教程
- Android中在GridView網(wǎng)格視圖上實(shí)現(xiàn)item拖拽交換的方法
- Android listview多視圖嵌套多視圖
- Android Moveview滑屏移動(dòng)視圖類完整實(shí)例
- Android視圖的繪制流程(上) View的測(cè)量
相關(guān)文章
Android 三種動(dòng)畫詳解及簡(jiǎn)單實(shí)例
這篇文章主要介紹了Android 三種動(dòng)畫詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-04-04android獲取音樂文件的內(nèi)置專輯圖片實(shí)現(xiàn)思路及代碼
獲取音樂文件的內(nèi)置專輯圖片這是在播放音樂時(shí)的一個(gè)很不錯(cuò)的功能,下面與大家分享下具體的實(shí)現(xiàn)思路,有類似需求的朋友可以參考下哈2013-06-06Android使用Retrofit實(shí)現(xiàn)自定義Converter解析接口流程詳解
Retrofit是一個(gè)RESTful的HTTP網(wǎng)絡(luò)請(qǐng)求框架的封裝,網(wǎng)絡(luò)請(qǐng)求的工作本質(zhì)上是OkHttp完成,而Retrofit僅負(fù)責(zé)網(wǎng)絡(luò)請(qǐng)求接口的封裝2023-03-03Android實(shí)現(xiàn)ListView左右滑動(dòng)刪除和編輯
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)ListView左右滑動(dòng)刪除和編輯的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-05-05使用Eclipse配置android開發(fā)環(huán)境教程
這篇文章主要介紹了使用Eclipse配置android開發(fā)環(huán)境教程,本文講解了下載需要用到的工具、下載完需要的工具之后開始安裝、讓Ecplise自動(dòng)安裝Android開發(fā)插件(ADT- plugin)、配置Andiord SDK路徑、測(cè)試開發(fā)一個(gè)Android項(xiàng)目等內(nèi)容,需要的朋友可以參考下2015-04-04Android自定義view實(shí)現(xiàn)阻尼效果的加載動(dòng)畫
這篇文章主要介紹了Android自定義view實(shí)現(xiàn)阻尼效果的加載動(dòng)畫的相關(guān)資料,非常不錯(cuò),具有一定的參考借鑒加載,需要的朋友可以參考下2016-11-11Android開發(fā)實(shí)現(xiàn)圖片平移、縮放、倒影及旋轉(zhuǎn)功能的方法
這篇文章主要介紹了Android開發(fā)實(shí)現(xiàn)圖片平移、縮放、倒影及旋轉(zhuǎn)功能的方法,涉及Android針對(duì)圖片的讀取、寫入、屬性設(shè)置及矩陣運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下2017-10-10