使用GridView达到Gallery效果
<?xml version="1.0" encoding="utf-8"?> <!-- res/layout/gridview_to_gallery.xml --> <HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:scrollbars="none"> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal"> <GridView android:id="@+id/grid" android:layout_width="1300dp" android:layout_height="fill_parent" android:gravity="center" android:columnWidth="100dip" android:horizontalSpacing="10dip" android:verticalSpacing="10dip"/> </LinearLayout> </HorizontalScrollView>
public class GridViewDemo extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gridview_to_gallery);
GridView gridview = (GridView) findViewById(R.id.grid);
ImageAdapter adapter = new ImageAdapter(this);//一个继承BaseAdapter的自定义适配器
adapter.setImages(getImages());
gridview.setAdapter(adapter);
gridview.setNumColumns(adapter.getCount());
gridview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> av, View v, int position, long id) {
Toast.makeText(GridViewDemo.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
}
/**
* 取出SD卡中的图片(也可改为取网络或数据库图片)
* @return
*/
private List<Bitmap> getImages() {
List<Bitmap> list = new ArrayList<Bitmap>();
for (int i=1; i<=12; i++) {
String imagePath = "/sdcard/image_0"+i+".jpg";
if (i >= 10) imagePath = "/sdcard/image_"+i+".jpg";
list.add(BitmapFactory.decodeFile(imagePath));
}
return list;
}
}
自定义适配器
public class ImageAdapter extends BaseAdapter {
private Context mContext;
private List<Bitmap> images = new ArrayList<Bitmap>();
public ImageAdapter(Context c) {
mContext = c;
}
public List<Bitmap> getImages() {
return images;
}
public void setImages(List<Bitmap> images) {
this.images = images;
}
public int getCount() {
return images.size();
}
public Object getItem(int position) {
return images.get(position);
}
public long getItemId(int position) {
return 0;
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageBitmap(images.get(position));
return imageView;
}
}