歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android Gallery與ImageView的結合使用

Gallery是一個內部元素可以水平滾動,並且可以把當前選擇的子元素定位在它中心的布局組件。

本程序的運行效果如下所示:

                 
      具體實現如下: 1、建立一個新項目 2、拷貝10個圖片文件到res/drawable目錄 3、res/layout/main.xml文件的內容如下:
  1. <?xml version="1.0" encoding="utf-8"?>  
  2.   
  3. <!-- FrameLayout用來顯示層疊效果 -->  
  4. <FrameLayout xmlns:Android="http://schemas.android.com/apk/res/android"  
  5.     android:layout_width="fill_parent"  
  6.     android:layout_height="fill_parent"  
  7.     android:orientation="vertical" >  
  8.   
  9.     <!-- ImageView用來顯示背景 -->  
  10.     <ImageView  
  11.         android:id="@+id/iv"  
  12.         android:layout_width="fill_parent"  
  13.         android:layout_height="fill_parent"  
  14.         android:src="@drawable/a01"  
  15.          />  
  16.       
  17.     <!-- Gallery來展示畫廊 -->  
  18.     <Gallery xmlns:android="http://schemas.android.com/apk/res/android"  
  19.         android:id="@+id/gallery"  
  20.         android:layout_width="fill_parent"  
  21.         android:layout_height="wrap_content"  
  22.         android:spacing="5dp"  
  23.         />  
  24. </FrameLayout>  
其中我們使用FrameLayout來實現疊加效果,使用ImageView來顯示大圖,Gallery來展示畫廊,android:spacing="5dp" 屬性則是用來設置元素之間的間隔。4、在res/values/目錄中新建一個attrs.xml內容如下:其中我們使用FrameLayout來實現疊加效果,使用ImageView來顯示大圖,Gallery來展示畫廊,android:spacing="5dp" 屬性則是用來設置元素之間的間隔。4、在res/values/目錄中新建一個attrs.xml內容如下:其中我們使用FrameLayout來實現疊加效果,使用ImageView來顯示大圖,Gallery來展示畫廊,android:spacing="5dp" 屬性則是用來設置元素之間的間隔。   4、在res/values/目錄中新建一個attrs.xml內容如下:   [html] view plaincopyprint?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <resources>  
  3.         <declare-styleable name="HelloGallery">  
  4.                 <attr name="android:galleryItemBackground"/>  
  5.         </declare-styleable>  
  6. </resources>  
5、在MainHelloGallery.java中的內容如下:5、在MainHelloGallery.java中的內容如下:5、在Test_galleryActivity.java中的內容如下:
  1. package m.m.m;  
  2.   
  3. import android.app.Activity;  
  4.   
  5. import android.content.Context;  
  6.   
  7. import android.content.res.TypedArray;  
  8.   
  9. import android.os.Bundle;  
  10.   
  11. import android.view.View;  
  12.   
  13. import android.view.ViewGroup;  
  14.   
  15. import android.widget.AdapterView;  
  16.   
  17. import android.widget.AdapterView.OnItemClickListener;  
  18.   
  19. import android.widget.BaseAdapter;  
  20.   
  21. import android.widget.Gallery;  
  22.   
  23. import android.widget.ImageView;  
  24.   
  25. import android.widget.Toast;  
  26.   
  27. public class Test_galleryActivity extends Activity {  
  28.   
  29.     /** Called when the activity is first created. */  
  30.   
  31.     @Override  
  32.     public void onCreate(Bundle savedInstanceState) {  
  33.   
  34.         super.onCreate(savedInstanceState);  
  35.   
  36.         setContentView(R.layout.main);  
  37.   
  38.         // 定義UI組件   
  39.   
  40.         final ImageView iv = (ImageView) findViewById(R.id.iv);  
  41.   
  42.         Gallery g = (Gallery) findViewById(R.id.gallery);  
  43.   
  44.         // 設置圖片匹配器   
  45.   
  46.         g.setAdapter(new ImageAdapter(this));  
  47.   
  48.         // 設置AdapterView點擊監聽器,Gallery是AdapterView的子類   
  49.   
  50.         g.setOnItemClickListener(new OnItemClickListener() {  
  51.   
  52.             @Override  
  53.             public void onItemClick(AdapterView<?> parent, View view,  
  54.   
  55.             int position, long id) {  
  56.   
  57.                 // 顯示點擊的是第幾張圖片   
  58.   
  59.                 Toast.makeText(Test_galleryActivity.this"" + position,  
  60.   
  61.                 Toast.LENGTH_LONG).show();  
  62.   
  63.                 // 設置背景部分的ImageView顯示當前Item的圖片   
  64.   
  65.                 iv.setImageResource(((ImageView) view).getId());  
  66.   
  67.             }  
  68.   
  69.         });  
  70.   
  71.     }  
  72.   
  73.     // 定義繼承BaseAdapter的匹配器   
  74.   
  75.     public class ImageAdapter extends BaseAdapter {  
  76.   
  77.         // Item的修飾背景   
  78.   
  79.         int mGalleryItemBackground;  
  80.   
  81.         // 上下文對象   
  82.   
  83.         private Context mContext;  
  84.   
  85.         // 圖片數組   
  86.   
  87.         private Integer[] mImageIds = { R.drawable.a01,  
  88.   
  89.         R.drawable.a02, R.drawable.a03,  
  90.   
  91.         R.drawable.a04, R.drawable.a05,  
  92.   
  93.         R.drawable.a06, R.drawable.a07,  
  94.   
  95.         R.drawable.a08 };  
  96.   
  97.         // 構造方法   
  98.   
  99.         public ImageAdapter(Context c) {  
  100.   
  101.             mContext = c;  
  102.   
  103.             // 讀取styleable資源   
  104.   
  105.             TypedArray a = obtainStyledAttributes(R.styleable.HelloGallery);  
  106.   
  107.             mGalleryItemBackground = a.getResourceId(  
  108.   
  109.             R.styleable.HelloGallery_android_galleryItemBackground, 0);  
  110.   
  111.             a.recycle();  
  112.   
  113.         }  
  114.   
  115.         // 返回項目數量   
  116.   
  117.         @Override  
  118.         public int getCount() {  
  119.   
  120.             return mImageIds.length;  
  121.   
  122.         }  
  123.   
  124.         // 返回項目   
  125.   
  126.         @Override  
  127.         public Object getItem(int position) {  
  128.   
  129.             return position;  
  130.   
  131.         }  
  132.   
  133.         // 返回項目Id   
  134.   
  135.         @Override  
  136.         public long getItemId(int position) {  
  137.   
  138.             return position;  
  139.   
  140.         }  
  141.   
  142.         // 返回視圖   
  143.   
  144.         @Override  
  145.         public View getView(int position, View convertView, ViewGroup parent) {  
  146.   
  147.             ImageView iv = new ImageView(mContext);  
  148.   
  149.             iv.setImageResource(mImageIds[position]);  
  150.   
  151.             // 給生成的ImageView設置Id,不設置的話Id都是-1   
  152.   
  153.             iv.setId(mImageIds[position]);  
  154.   
  155.             iv.setLayoutParams(new Gallery.LayoutParams(120160));  
  156.   
  157.             iv.setScaleType(ImageView.ScaleType.FIT_XY);  
  158.   
  159.             iv.setBackgroundResource(mGalleryItemBackground);  
  160.   
  161.             return iv;  
  162.   
  163.         }  
  164.   
  165.     }  
  166.   
  167. }   
至此,完成以上功能。   總結: 1、定義Gallery 2、在res/values下 自定義attrs.xml文件   我們點擊某一張圖片,會把該子元素的圖片顯示在放在後面一層的ImageView組件中。我們點擊某一張圖片,會把該子元素的圖片顯示在放在後面一層的ImageView組件中。我們點擊某一張圖片,會把該子元素的圖片顯示在放在後面一層的ImageView組件中。我們點擊某一張圖片,會把該子元素的圖片顯示在放在後面一層的ImageView組件中。我們點擊某一張圖片,會把該子元素的圖片顯示在放在後面一層的ImageView組件中。我們點擊某一張圖片,會把該子元素的圖片顯示在放在後面一層的ImageView組件中。

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved