日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android网格视图(GridView)

發(fā)布時間:2025/1/21 Android 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android网格视图(GridView) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

GridView的一些屬性:

1.android:numColumns=”auto_fit”?? //GridView的列數(shù)設置為自動,也可以設置成2、3、4……

2.android:columnWidth=”90dp "?????? //每列的寬度,也就是Item的寬度

3.android:stretchMode=”columnWidth"//縮放與列寬大小同步

4.android:verticalSpacing=”10dp”????????? //兩行之間的邊距

5.android:horizontalSpacing=”10dp”????? //兩列之間的邊距

6.android:cacheColorHint="#00000000" //去除拖動時默認的黑色背景

7.android:listSelector="#00000000"??????? //去除選中時的黃色底色

8.android:scrollbars="none"?????????????????? //隱藏GridView的滾動條

9.android:fadeScrollbars="true"???????????? //設置為true就可以實現(xiàn)滾動條的自動隱藏和顯示

10.android:fastScrollEnabled="true"????? //GridView出現(xiàn)快速滾動的按鈕(至少滾動4頁才會顯示)

11.android:fadingEdge="none"??????????????? //GridView衰落(褪去)邊緣顏色為空,缺省值是vertical。(可以理解為上下邊緣的提示色)

12.android:fadingEdgeLength="10dip"?? //定義的衰落(褪去)邊緣的長度

13.android:stackFromBottom="true"?????? //設置為true時,你做好的列表就會顯示你列表的最下面

14.android:transcriptMode="alwaysScroll" //當你動態(tài)添加數(shù)據(jù)時,列表將自動往下滾動最新的條目可以自動滾動到可視范圍內(nèi)

15.android:drawSelectorOnTop="false"? //點擊某條記錄不放,顏色會在記錄的后面成為背景色,內(nèi)容的文字可見(缺省為false)

?下面來示例顯示程序圖標與標題:

?子元素布局:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent" ><ImageView android:id="@+id/itemImage"android:layout_width="80dp"android:layout_height="80dp"android:layout_centerHorizontal="true"/><TextView android:id="@+id/itemName"android:layout_below="@id/itemImage"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"/></RelativeLayout>

GridView布局,每列3個:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><GridViewandroid:id="@+id/gridView"android:layout_width="match_parent"android:layout_height="wrap_content"android:horizontalSpacing="2dp"android:numColumns="3"android:verticalSpacing="2dp" /></LinearLayout>

數(shù)據(jù)綁定,給定點擊事件:

package com.example.androidgridview;import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;import android.R.string; import android.os.Bundle; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.BitmapFactory.Options; import android.view.Menu; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.GridView; import android.widget.SimpleAdapter; import android.widget.Toast;public class MainActivity extends Activity {private GridView gridView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);gridView = (GridView) this.findViewById(R.id.gridView);List<Map<String, Object>> item = getData();// SimpleAdapter對象,匹配ArrayList中的元素SimpleAdapter simpleAdapter = new SimpleAdapter(this, item, R.layout.gridviewitem, new String[] { "itemImage", "itemName" }, new int[] { R.id.itemImage, R.id.itemName });gridView.setAdapter(simpleAdapter);// 添加點擊事件gridView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {int index = arg2 + 1;// id是從0開始的,所以需要+1Toast.makeText(getApplicationContext(), "你按下了選項:" + index, 0).show();}});}/*** 將圖標圖片和圖標名稱存入ArrayList中* * @return*/private List<Map<String, Object>> getData() {List<Map<String, Object>> items = new ArrayList<Map<String, Object>>();int[] listImg = new int[] { R.drawable.browser, R.drawable.email, R.drawable.camera, R.drawable.clock, R.drawable.contacts, R.drawable.gallery, R.drawable.gmail, R.drawable.gtalk, R.drawable.maps, R.drawable.market, R.drawable.messages, R.drawable.phone, R.drawable.voice, R.drawable.music, R.drawable.calender };String[] listName = new String[] { "九宮blue", "九宮email", "九宮firfox", "九宮gongju", "九宮heguo", "九宮kaiguan", "九宮letv", "九宮libray", "九宮list", "九宮luxiang", "九宮main", "九宮ooo", "九宮twite", "九宮voda", "九宮wifi" };for (int i = 0; i < listImg.length; i++) {Map<String, Object> item = new HashMap<String, Object>();item.put("itemImage", listImg[i]);item.put("itemName", listName[i]);items.add(item);}return items;}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu);return true;}}

運行效果:

?圖片資源下載

?

?運行的時候報錯:

81000-byte external allocation too large for this process.

VM won't let us allocate 81000?bytes

Google后得到信息是??Android的Dalvik VM為一個應用提供了大約16MB的內(nèi)存,一般我們處理超過8MB的圖片將會出現(xiàn)OutOfMemoryError異常(內(nèi)存溢出異常)

其中一個方法:http://stackoverflow.com/questions/8250704/external-allocation-too-large-for-this-process

在網(wǎng)上找了一下,參考網(wǎng)友的方法,通常的原因就是我們加載的圖片太大,我看了一下我的圖片,用500W像素的Defy拍的,原始大小一般都在800KB左右,這樣大的圖片才導致了內(nèi)存泄露,網(wǎng)上大神們給的通常的解決方法是,用BitmapFactory解碼時加上設置好的options指令(我就是沒用options),通常Options如下設定:

BitmapFactory.Options options=new Options();
? ??options.inDither=false; ? ?/*不進行圖片抖動處理*/
? ??options.inPreferredConfig=null; ?/*設置讓解碼器以最佳方式解碼*/
? ??options.inSampleSize=4; ? ? ? ? ?/*圖片長寬方向縮小倍數(shù)*/
? ??Bitmap?img=BitmapFactory.decodeByteArray(buffer, 0, buffer.length, options);

這樣修改后,我發(fā)現(xiàn)傳到手機上的圖片一般都是200KB左右了,即縮小為原來的1/4,而且看起來還行,沒怎么失真,幾乎不影響觀看效果,問題也解決了~

對了,最好在你使用完Bitmap之后,調(diào)用一下recycle()方法,這樣更有利于內(nèi)存回收。

我此處用到的圖片都是80KB以上的,存在drawable文件夾中,直接用R.drawable.來調(diào)用,沒用到Bitmap ,因此只能縮小圖片大小。

總結(jié)

以上是生活随笔為你收集整理的Android网格视图(GridView)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。