关于Gallery施用
关于Gallery使用
Grally是可以水平滚动列表元素的布局,一般用来滚动图片。
以下为简单例子:layout文件:
Activity代码中主要部分为:
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; } };