天天看點

Android網格視圖(GridView)

GridView的一些屬性:

1.android:numColumns=”auto_fit”   //GridView的列數設定為自動,也可以設定成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就可以實作滾動條的自動隐藏和顯示

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

11.android:fadingEdge="none"                //GridView衰落(褪去)邊緣顔色為空,預設值是vertical。(可以了解為上下邊緣的提示色)

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

13.android:stackFromBottom="true"       //設定為true時,你做好的清單就會顯示你清單的最下面

14.android:transcriptMode="alwaysScroll" //當你動态添加資料時,清單将自動往下滾動最新的條目可以自動滾動到可視範圍内

15.android:drawSelectorOnTop="false"  //點選某條記錄不放,顔色會在記錄的後面成為背景色,内容的文字可見(預設為false)

 下面來示例顯示程式圖示與标題:

 子元素布局:

Android網格視圖(GridView)
Android網格視圖(GridView)

GridView布局,每列3個:

Android網格視圖(GridView)
Android網格視圖(GridView)

資料綁定,給定點選事件:

Android網格視圖(GridView)
Android網格視圖(GridView)

運作效果:

Android網格視圖(GridView)

 運作的時候報錯:

81000-byte external allocation too large for this process.

VM won't let us allocate 81000 bytes

Google後得到資訊是  Android的Dalvik VM為一個應用提供了大約16MB的記憶體,一般我們處理超過8MB的圖檔将會出現OutOfMemoryError異常(記憶體溢出異常)

在網上找了一下,參考網友的方法,通常的原因就是我們加載的圖檔太大,我看了一下我的圖檔,用500W像素的Defy拍的,原始大小一般都在800KB左右,這樣大的圖檔才導緻了記憶體洩露,網上大神們給的通常的解決方法是,用BitmapFactory解碼時加上設定好的options指令(我就是沒用options),通常Options如下設定:

BitmapFactory.Options options=new Options();

    options.inDither=false;    /*不進行圖檔抖動處理*/

    options.inPreferredConfig=null;  /*設定讓解碼器以最佳方式解碼*/

    options.inSampleSize=4;          /*圖檔長寬方向縮小倍數*/

    Bitmap img=BitmapFactory.decodeByteArray(buffer, 0, buffer.length, options);

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

對了,最好在你使用完Bitmap之後,調用一下recycle()方法,這樣更有利于記憶體回收。

我此處用到的圖檔都是80KB以上的,存在drawable檔案夾中,直接用R.drawable.來調用,沒用到Bitmap ,是以隻能縮小圖檔大小。

本文轉自歡醉部落格園部落格,原文連結http://www.cnblogs.com/zhangs1986/p/3619086.html如需轉載請自行聯系原作者

歡醉

繼續閱讀