读书人

关于Gallery施用

发布时间: 2012-09-07 10:38:15 作者: rapoo

关于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代码中主要部分为:

@Overridepublic 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;        }            };

读书人网 >编程

热点推荐