GridView实现一起显示并左右滚动

GridView实现一行显示并左右滚动
使用GridView达到Gallery效果
[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!-- res/layout/gridview_to_gallery.xml -->  
  3. <HorizontalScrollView  xmlns:android="http://schemas.android.com/apk/res/android"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="wrap_content"  
  6.     android:scrollbars="none">  
  7.         <LinearLayout   
  8.             android:layout_width="fill_parent"  
  9.             android:layout_height="fill_parent"   
  10.             android:orientation="horizontal">  
  11.             <GridView android:id="@+id/grid"  
  12.                 android:layout_width="1300dp"  
  13.                 android:layout_height="fill_parent"  
  14.                 android:gravity="center"  
  15.                 android:columnWidth="100dip"  
  16.                 android:horizontalSpacing="10dip"  
  17.                 android:verticalSpacing="10dip"/>  
  18.         </LinearLayout>  
  19. </HorizontalScrollView>  


[java] view plaincopy
  1. public class GridViewDemo extends Activity {  
  2.     @Override  
  3.     public void onCreate(Bundle savedInstanceState) {  
  4.         super.onCreate(savedInstanceState);  
  5.         setContentView(R.layout.gridview_to_gallery);  
  6.           
  7.         GridView gridview = (GridView) findViewById(R.id.grid);  
  8.         ImageAdapter adapter = new ImageAdapter(this);//一个继承BaseAdapter的自定义适配器  
  9.         adapter.setImages(getImages());  
  10.         gridview.setAdapter(adapter);  
  11.         gridview.setNumColumns(adapter.getCount());  
  12.   
  13.         gridview.setOnItemClickListener(new OnItemClickListener() {  
  14.             @Override  
  15.             public void onItemClick(AdapterView<?> av, View v, int position, long id) {  
  16.                 Toast.makeText(GridViewDemo.this"" + position, Toast.LENGTH_SHORT).show();  
  17.             }  
  18.         });  
  19.     }  
  20.     /** 
  21.      * 取出SD卡中的图片(也可改为取网络或数据库图片) 
  22.      * @return 
  23.      */  
  24.     private List<Bitmap> getImages() {  
  25.         List<Bitmap> list = new ArrayList<Bitmap>();  
  26.         for (int i=1; i<=12; i++) {  
  27.             String imagePath = "/sdcard/image_0"+i+".jpg";  
  28.             if (i >= 10) imagePath = "/sdcard/image_"+i+".jpg";  
  29.             list.add(BitmapFactory.decodeFile(imagePath));  
  30.         }  
  31.         return list;  
  32.     }  
  33. }  


 

自定义适配器

[java] view plaincopy
  1. public class ImageAdapter extends BaseAdapter {  
  2.     private Context mContext;  
  3.     private List<Bitmap> images = new ArrayList<Bitmap>();  
  4.   
  5.     public ImageAdapter(Context c) {  
  6.         mContext = c;  
  7.     }  
  8.   
  9.     public List<Bitmap> getImages() {  
  10.         return images;  
  11.     }  
  12.     public void setImages(List<Bitmap> images) {  
  13.         this.images = images;  
  14.     }  
  15.   
  16.     public int getCount() {  
  17.         return images.size();  
  18.     }  
  19.   
  20.     public Object getItem(int position) {  
  21.         return images.get(position);  
  22.     }  
  23.   
  24.     public long getItemId(int position) {  
  25.         return 0;  
  26.     }  
  27.   
  28.     // create a new ImageView for each item referenced by the Adapter  
  29.     public View getView(int position, View convertView, ViewGroup parent) {  
  30.         ImageView imageView;  
  31.         if (convertView == null) {  // if it's not recycled, initialize some attributes  
  32.             imageView = new ImageView(mContext);  
  33.             imageView.setLayoutParams(new GridView.LayoutParams(8585));  
  34.             imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);  
  35.             imageView.setPadding(8888);  
  36.         } else {  
  37.             imageView = (ImageView) convertView;  
  38.         }  
  39.   
  40.         imageView.setImageBitmap(images.get(position));  
  41.         return imageView;  
  42.     }  
  43. }