Android學習筆記25:畫廊控制項Gallery的使用

來源:互聯網
上載者:User

  在Android中,畫廊控制項Gallery用來顯示圖片列表,可以用手指直接拖動圖片左右移動。Gallery只能水平顯示一行,且Gallery列表中的圖片會根據不同的拖動情況向左或向右移動,直到顯示到最後一個圖片為止。

  下面我們就通過一個執行個體來示範如何?Gallery畫廊控制項功能。

1.xml布局

  在xml布局檔案中,我們使用LinearLayout對整個介面進行垂直布局。在介面上端設定一個ImageView控制項,用來顯示當前選中的Gallery列表圖片。在介面下端設定一個Gallery控制項,用來顯示Gallery列表圖片。整個布局檔案很簡單,具體源碼如下:

 1 <LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android" 2     xmlns:tools="http://schemas.android.com/tools" 3     android:orientation="vertical" 4     android:layout_width="match_parent" 5     android:layout_height="match_parent" > 6  7     <ImageView 8         android:id="@+id/imageView" 9         android:layout_width="match_parent"10         android:layout_height="wrap_content"    >11     </ImageView>12     13     <Gallery14         android:id="@+id/gallery"15         android:layout_width="match_parent"16         android:layout_height="wrap_content"17         android:spacing="2dp"18         android:layout_marginTop="5dp"    >19     </Gallery>20     21 </LinearLayout>

  其中,在Gallery屬性標籤中,android:spacing="2dp"屬性用於指定Gallery列表圖片之間的間隔為2dp。

  程式運行後的效果1所示。

圖1 主介面

 

2.ImageAdapter適配器

  要實現Gallery畫廊控制項功能,需要一個容器來存放Gallery顯示的圖片。我們可以使用一個繼承自BaseAdapter類的衍生類別ImageAdapter來裝這些圖片。

  在ImageAdapter類中我們需要實現Adapter類中的如下四個抽象方法:

  (1)public int getCount();

  (2)public Object getItem(int position);

  (3)public long getItemId(int position);

  (4)public View getView(int position, View convertView, ViewGroup parent);

  其中,getCount()方法用於擷取ImageAdapter適配器中圖片個數;getItem()方法用於擷取圖片在ImageAdapter適配器中的位置;getItemId()方法用於擷取圖片在ImageAdapter適配器中位置;getView()用於擷取ImageAdapter適配器中指定位置的視圖對象。上述四個抽象方法的具體實現方法如下:

 1   /* 2      * Function   :    ImageAdapter類,繼承自BaseAdapter 3      * Author     :    部落格園-依舊淡然 4      */ 5     public class ImageAdapter extends BaseAdapter { 6  7         Context mContext;        //內容物件 8          9         //構造方法10         public ImageAdapter(Context context) {11             this.mContext = context;12         }13         14         //擷取圖片的個數15         public int getCount() {16             return mImageResourceIds.length;17         }18 19         //擷取圖片在庫中的位置20         public Object getItem(int position) {21             return mImageResourceIds[position];22         }23 24         //擷取圖片在庫中的位置25         public long getItemId(int position) {26             return position;27         }28 29         //擷取適配器中指定位置的視圖對象30         public View getView(int position, View convertView, ViewGroup parent) {31             ImageView imageView = new ImageView(mContext);32             imageView.setImageResource(mImageResourceIds[position]);33             imageView.setLayoutParams(new Gallery.LayoutParams(120, 120));34             imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);35             return imageView;36         }37         38     }

  其中,imageView.setImageResource(mImageResourceIds[position])用於將ImageAdapter中的指定位置圖片資源載入到imageView中。imageView.setLayoutParams(new Gallery.LayoutParams(120, 120))用於設定Gallery中圖片的顯示大小。imageView.setScaleType(ImageView.ScaleType.FIT_CENTER)用於設定imageView中圖片的縮放顯示格式。

 

3.載入適配器

  實現了ImageAdapter類之後,我們可以通過setAdapter()方法把資源檔添加到Gallery中進行顯示即可。

 

4.Gallery事件監聽器

  除此之外,為了在1所示的介面上端的ImageView控制項中同步顯示Gallery控制項中的當前圖片。還需要對Gallery控制項進行事件監聽,以便獲知使用者選中了Gallery控制項中的哪一張圖片。具體的實現方法如下:

1   mGallery.setOnItemClickListener(new OnItemClickListener() {2       public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {3             mImageView.setBackgroundResource(mImageResourceIds[arg2]);4        }5    });

 

 

相關資料:

Android控制項之Gallery圖片集

http://www.cnblogs.com/salam/archive/2010/10/06/1844564.html

Android Gallery組件詳解

http://www.eoeandroid.com/forum.php?mod=viewthread&tid=182297

Android控制項Gallery 3D效果

http://android.tgbus.com/Android/tutorial/201108/362438.shtml

AndroidGUI21:ImageSwitcher常用技巧

http://blog.csdn.net/pathuang68/article/details/6541823

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.