关于Gallery施用

关于Gallery使用
Grally是可以水平滚动列表元素的布局,一般用来滚动图片。

以下为简单例子:layout文件:
<?xml version="1.0" encoding="utf-8"?><Gallery xmlns:android="http://schemas.android.com/apk/res/android"     android:id="@+id/gallery"    android:layout_width="fill_parent"    android:layout_height="wrap_content"/>


Activity代码中主要部分为:

@Override
public void onCreate(
    Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
      Gallery gallery = (Gallery) findViewById(R.id.gallery);       
      gallery.setAdapter(new ImageAdapter(this));      gallery.setOnItemClickListener(new OnItemClickListener() {        public void onItemClick(AdapterView parent, View v, int position, long id) {            Toast.makeText(HelloGallery.this, "" + position, Toast.LENGTH_SHORT).show();        }    });}
 private class ImageAdapter extends BaseAdapter{
        private Context mContext;
        private ArrayList<Integer> imgList=new ArrayList<Integer>();
        private ArrayList<Object> imgSizes=new ArrayList<Object>();
        public ImageAdapter(Context c) throws IllegalArgumentException, IllegalAccessException{
            mContext = c;
            
            //用反射机制来获取资源中的图片ID和尺寸
        	Field[] fields = R.drawable.class.getDeclaredFields();
        	for (Field field : fields)
        	{
        		if (!"icon".equals(field.getName()))//除了icon之外的图片
        		{	
        			int index=field.getInt(R.drawable.class);
        			//保存图片ID
        			imgList.add(index);
        			//保存图片大小
        			int size[]=new int[2];
        			Bitmap bmImg=BitmapFactory.decodeResource(getResources(),index);
        			size[0]=bmImg.getWidth();size[1]=bmImg.getHeight();
        			imgSizes.add(size);
        		}
        	}
        }
        public int getCount() {
            // TODO Auto-generated method stub

            return imgList.size();
        }

        public Object getItem(int position) {
            // TODO Auto-generated method stub

            return position;
        }

        public long getItemId(int position) {
            // TODO Auto-generated method stub

            return position;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub

            ImageView i = new ImageView (mContext);
            //从imgList取得图片ID
            i.setImageResource(imgList.get(position).intValue());
            i.setScaleType(ImageView.ScaleType.FIT_XY);
            //从imgSizes取得图片大小
            int size[]= new int[2];
            size=(int[]) imgSizes.get(position);
            i.setLayoutParams(new Gallery.LayoutParams(size[0], size[1]));
            return i;
        }
        
    };