天天看點

android galley實作畫廊效果

<a target="_blank" href="http://www.cnblogs.com/zxl-jay/">青春流水指間、</a>

每段路,都有即将要來的旅程 每顆心,都有值得期待的成分

今天在做一個軟體界面時用到了imageswitcher和gallery控件,在看api時,感覺上面的例子講的不是很具體,效率并不高。在這裡我就以一個圖檔浏覽功能來具體說明這兩個控件的用法。

首先看運作效果:

android galley實作畫廊效果

在這裡圖檔我用的是api中的圖檔。先說下這個圖檔浏覽的功能吧,首先,它要實作圖檔的切換,當點選上面的小圖時,下方會出現對象的大圖,其次就是實作上圖中最上面的樣式,即一個圖檔和一個文本。下來我們還要實作起始位置居中,滑動小圖的速率的控制,最上面小圖的無限循環等功能。下面我就将具體實作代碼附下,供大家參考。

main.xml:

android galley實作畫廊效果
android galley實作畫廊效果

在上面我是自定義視圖,引用自己定義的一個gallery,在這個gallery中我重新設定的滑動的速率,讓它滑動速度放慢,下面是我自定義的gallery

代碼:

mygallery.java:

按 ctrl+c 複制代碼

下面是在定義gallery布局檔案的代碼:

gallery_item.xml:

下面就是核心實作代碼:

pictruechangeactivity:

android galley實作畫廊效果
android galley實作畫廊效果

這裡要加載一個背景檔案,放在values目錄下,檔案名為attrs.xml,代碼如下:

android galley實作畫廊效果
android galley實作畫廊效果

這樣顯示的圖檔就有一個相框一樣的邊框。

在上面的代碼中,和api中不同的是做了四點改進:

1.實作滑動可以無限滑動,就是在上面的getcount()中,傳回的是一個integer.max_value,這樣可以做到無限滑動。

2.提高在滑動時大圖的顯示效率。就是在上面,我自定義了一個map,将滑動過的位置全部記錄下來,等到下次滑到這個位置時,就不必再去加載圖檔了,類似于緩存。這樣提高了效率。

3.在點選事件中,如果重複點選同一張圖檔,不會去加載圖檔。在這裡我設定了一個标記位置,如果标記位置和目前位置一樣,那就不去加載圖檔。

4.設定起始位置為第二位,這樣初始界面比較美觀,顯示的圖檔兩邊都有圖檔。

繼續閱讀