我的家園

          我的家園

          Gallery 是Android官方提供的一個View容器類,繼承于AbsSpinner類,用于實現頁面滑動效果。


          從上面的繼承關系可以看出,AbsSpinner類繼承自AdapterView,因此我們可以自定義實現Adapter,來填充Gallery容器的數據。


          本示例通過自己實現一個Adapter,來填充Gallery容器的圖片數據,首先看效果:




          Activity

           


          ImageAdapter.java

           

           


          main.xml

           


          源碼下載


           

          示例分析:

          1、ImageAdapter中,是繼承BaseAdapter自定義實現的,重載了BaseAdapter的幾個虛方法,其中重要的有兩個

          getCount() : 返回資源的大小(總長度)

          getView(int position, View convertView, ViewGroup parent) : 返回當前顯示的資源(獲取焦點)

          2、GalleryActivity中,通過gallery.setAdapter(imgAdapter); 設置資源,然后設置gallery的點擊監聽事件。

          3、main.xml中,是布局文件,顯示一個TextView和Gallery,RelativeLayout是相對布局

          總體來說,Gallery 上述的示例很簡單,結構比較清晰,能夠滿足基本的應用。



          Gallery 高級應用

          上面的示例,僅僅是最簡單的Gallery應用,如果我們想做的更酷、更炫的效果:

          1、Gallery 圖片顯示能夠循環播放,即向右滑到左側第一張圖片后,需要接著顯示最后一張圖片;向左滑到最后一張圖片后,需要接著顯示第一張圖片,往復不間斷顯示的循環效果。

          2、選中圖片高亮,未選中圖片陰影,更加突出當前獲取焦點的選中圖片

          3、區分“點擊”與“選中”圖片事件的區別和適用場景



          效果1 —— 高亮顯示

          沒有選中,在GalleryActivity中,設置gallery.setUnselectedAlpha(0.3f); 透明度為0.3

          選中,在ImageAdapter的getView(int position, View convertView, ViewGroup parent)中,設置imageview.setBackgroundColor(Color.alpha(1)); 背景色為1


          效果2 —— 循環播放

          原理:Gallery循環播放的原理,跟循環鏈表的思想一樣,首尾item連接都是通過“取余”實現

          修改1、ImageAdapter中的getCount() 方法中,修改返回值為無窮大 return Integer.MAX_VALUE;

          修改2、ImageAdapter中的getView(int position, View convertView, ViewGroup parent)方法中,設置imageview.setImageResource(imgs[position % imgs.length]); 取余

          修改3、GalleryActivity中,設置gallery.setSelection(imgAdapter.imgs.length * 100); 使gallery顯示圖片的位置從中間開始顯示(即imgAdapter.imgs.length * 100)

          修改解釋:

          修改1,主要是為了是循環接近無限往復循環,使position無限大,循環在實踐應用上不容易結束(理論上會結束,即2^31-1約20億次循環后)

          修改2,通過取余,使圖片能夠重復利用并顯示

          修改3,由于起始位置如果是0,則向右滑動左側將無法循環(此時左側將為-1,超出了imgs[]數組的下邊界),因此開始應設置起始位置為imgAdapter.imgs.length的整數倍

           


          效果3 —— “點擊”和“選中”事件

          1、點擊事件OnItemClickListener,是需要用手點擊才觸發,滑動時不觸發

          2、選中事件OnItemSelectedListener,是當圖片滑到屏幕正中,則視為自動選中,在滑動的過程中會觸發

          適用場景:

          1、點擊事件OnItemClickListener,是在確定要選中該項時,才點擊進行邏輯處理

          2、選中事件OnItemSelectedListener,可以用來提醒用戶,當前獲取焦點的項,如果確認為該項則需要點擊OnItemClickListener后,進行下一步的邏輯處理


          高級應用完整代碼:


          Activity

           

           



          ImageAdapter.java

           


          源碼下載



          參考推薦:

          Gallery

          Gallery tutorial


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 定日县| 海阳市| 伊宁县| 岳阳市| 临颍县| 青海省| 茂名市| 北安市| 广南县| 周至县| 东城区| 栾城县| 阜康市| 泾川县| 甘洛县| 云阳县| 隆昌县| 合山市| 兖州市| 海阳市| 昌图县| 罗平县| 唐河县| 柳林县| 六盘水市| 平江县| 民和| 新密市| 宁陕县| 建瓯市| 望谟县| 赤峰市| 于都县| 泸西县| 唐海县| 深州市| 德化县| 嘉定区| 沂南县| 当阳市| 安仁县|