读书人

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

发布时间: 2013-09-11 16:26:28 作者: rapoo

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


自定义适配器

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


读书人网 >移动开发

热点推荐