Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android入門第十二篇之Gallery

Android入門第十二篇之Gallery

編輯:Android開發實例

   Android的Gallery控件是個很不錯的看圖控件,大大減輕了開發者對於看圖功能的開發,而且效果也比較美觀。本文介紹Gallery的用法,用反射機制來動態讀取資源中的圖片。

       本文的效果圖:

 

main.xml源碼:

 

 
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:orientation="vertical" 
  4.     android:layout_width="fill_parent" 
  5.     android:layout_height="fill_parent" 
  6.     > 
  7. <Gallery android:id="@+id/gallery" android:layout_height="fill_parent" android:layout_width="fill_parent"></Gallery> 
  8. </LinearLayout> 

 

程序源碼:

 

 
  1. package com.testImageView;     
  2.     
  3. import java.lang.reflect.Field;     
  4. import java.util.ArrayList;     
  5.     
  6. import android.app.Activity;     
  7. import android.content.Context;     
  8. import android.graphics.Bitmap;     
  9. import android.graphics.BitmapFactory;     
  10. import android.os.Bundle;     
  11. import android.view.View;     
  12. import android.view.ViewGroup;     
  13. import android.widget.AdapterView;     
  14. import android.widget.BaseAdapter;     
  15. import android.widget.Gallery;     
  16. import android.widget.ImageView;     
  17. import android.widget.AdapterView.OnItemClickListener;     
  18.     
  19. public class testImageView extends Activity {     
  20.     private Gallery mGallery;     
  21.     @Override    
  22.     public void onCreate(Bundle savedInstanceState) {     
  23.         super.onCreate(savedInstanceState);     
  24.         setContentView(R.layout.main);     
  25.              
  26.         mGallery = (Gallery)findViewById(R.id.gallery);     
  27.         try {     
  28.             mGallery.setAdapter(new ImageAdapter(this));     
  29.         } catch (IllegalArgumentException e) {     
  30.             // TODO Auto-generated catch block     
  31.             e.printStackTrace();     
  32.         } catch (IllegalAccessException e) {     
  33.             // TODO Auto-generated catch block     
  34.             e.printStackTrace();     
  35.         }     
  36.         mGallery.setOnItemClickListener(new OnItemClickListener() {     
  37.             public void onItemClick(AdapterView parent, View v, int position, long id) {     
  38.                 testImageView.this.setTitle(String.valueOf(position));     
  39.             }     
  40.         });     
  41.     }     
  42.          
  43.     /*    
  44.      * class ImageAdapter is used to control gallery source and operation.    
  45.      */    
  46.     private class ImageAdapter extends BaseAdapter{     
  47.         private Context mContext;     
  48.         private ArrayList<Integer> imgList=new ArrayList<Integer>();     
  49.         private ArrayList<Object> imgSizes=new ArrayList<Object>();     
  50.         public ImageAdapter(Context c) throws IllegalArgumentException, IllegalAccessException{     
  51.             mContext = c;     
  52.                  
  53.             //用反射機制來獲取資源中的圖片ID和尺寸     
  54.             Field[] fields = R.drawable.class.getDeclaredFields();     
  55.             for (Field field : fields)     
  56.             {     
  57.                 if (!"icon".equals(field.getName()))//除了icon之外的圖片     
  58.                 {        
  59.                     int index=field.getInt(R.drawable.class);     
  60.                     //保存圖片ID     
  61.                     imgList.add(index);     
  62.                     //保存圖片大小     
  63.                     int size[]=new int[2];     
  64.                     Bitmap bmImg=BitmapFactory.decodeResource(getResources(),index);     
  65.                     size[0]=bmImg.getWidth();size[1]=bmImg.getHeight();     
  66.                     imgSizes.add(size);     
  67.                 }     
  68.             }     
  69.         }     
  70.         @Override    
  71.         public int getCount() {     
  72.             // TODO Auto-generated method stub     
  73.     
  74.             return imgList.size();     
  75.         }     
  76.     
  77.         @Override    
  78.         public Object getItem(int position) {     
  79.             // TODO Auto-generated method stub     
  80.     
  81.             return position;     
  82.         }     
  83.     
  84.         @Override    
  85.         public long getItemId(int position) {     
  86.             // TODO Auto-generated method stub     
  87.     
  88.             return position;     
  89.         }     
  90.     
  91.         @Override    
  92.         public View getView(int position, View convertView, ViewGroup parent) {     
  93.             // TODO Auto-generated method stub     
  94.     
  95.             ImageView i = new ImageView (mContext);     
  96.             //從imgList取得圖片ID     
  97.             i.setImageResource(imgList.get(position).intValue());     
  98.             i.setScaleType(ImageView.ScaleType.FIT_XY);     
  99.             //從imgSizes取得圖片大小     
  100.             int size[]= new int[2];     
  101.             size=(int[]) imgSizes.get(position);     
  102.             i.setLayoutParams(new Gallery.LayoutParams(size[0], size[1]));     
  103.             return i;     
  104.         }     
  105.              
  106.     };     
  107. }    

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved