`

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

 
阅读更多

使用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;
    }
}
 

 

 

 

分享到:
评论
3 楼 aelam 2013-05-24  
视图没有回收机制 。。
2 楼 zerozhiqin 2013-01-21  
为什么不用gallery
1 楼 lauphai 2012-07-02  
有错啊。。。。。。。

相关推荐

    ViewPager+GridView实现宫格横向滑动切换

    首先,`ViewPager`是Android SDK中的一个强大的组件,它允许用户左右滑动来切换不同的页面,通常用于实现类似Tab布局的效果。`ViewPager`的核心在于它可以自动处理页面的缓存和滑动动画,提供流畅的用户体验。 接...

    Android ScrollView+GridView左右滑动 自动定位滑动到某一项

    在这个项目中,我们讨论的是如何结合使用ScrollView和GridView实现左右滑动,并在启动时或点击按钮时自动定位到指定项。 首先,让我们深入理解ScrollView。ScrollView是Android中的一个可滚动视图,它可以包裹任何...

    GridView 一行显示

    下面我们将深入探讨如何实现GridView一行显示以及相关的知识点。 1. GridView的基本使用 GridView继承自AbsListView,它通过Adapter来填充数据。在Android布局文件中,我们需要定义GridView的列数,例如`android:...

    GridView(带左右按钮的横向滑动单行GridView)

    然而,当我们需要实现一个横向滑动的单行GridView,并带有左右按钮来切换显示的内容时,就需要对默认的GridView进行一些定制和调整。 首先,为了实现横向滑动,我们需要改变GridView的布局参数。默认情况下,...

    GridView实现的下拉隐藏显示

    GridView继承自AbsListView,通过设置`android:numColumns`属性来定义每行显示的列数。它会自动调整单元格的大小以适应整个视图。例如: ```xml &lt;GridView android:id="@+id/grid_view" android:layout_width=...

    可以左右滚动的gridview

    在Android开发中,"可以左右滚动的gridview"是一种常见的用户界面组件,它结合了GridView和HorizontalScrollView的特性,提供了一种独特的数据展示方式。GridView通常用于显示二维网格布局的数据,而...

    GRIDVIEW实现EXCEL列冻结功能

    ### GRIDVIEW实现EXCEL列冻结功能 在日常工作中,我们经常使用Excel来处理大量数据,尤其是在数据分析、报表制作等场景中。但是当表格中的数据量过大时,滚动查看数据会变得不太方便,尤其是当我们需要同时关注多列...

    Android 仿美团网实现左右滑动查看更多分类的功能

    - **GridView**: GridView是Android中的一个布局管理器,它将数据集按行和列显示,类似于网页中的表格。在早期的Android开发中,GridView常用于展示多列列表。在仿美团网的分类展示中,我们可以用GridView来展示每个...

    gridview固定表头 横向滚动 纵向固定

    GridView是一个基于ASP.NET的数据控件,用于显示数据表格。然而,在默认情况下,GridView的表头无法固定在屏幕上,使得用户体验不佳。为了解决这个问题,本文将介绍如何实现GridView固定表头横向滚动纵向固定的功能...

    用gridview实现九宫格布局及分页

    在XML布局文件中,我们需要定义一个GridView,并为其设置属性,如列数(android:numColumns)来决定每行显示多少个元素。 要实现九宫格布局,我们首先要确定每个单元格的宽度和高度。这可以通过设置GridView的`...

    PullToRefresh嵌套GridView实现上拉刷新以及悬浮条功能

    GridView是Android的一种布局管理器,它以网格的形式展示数据,通常用于显示大量小图标或者列表项。GridView可以自适应屏幕宽度,自动将数据行进行填充和换行。 接下来,我们关注下拉刷新功能。PullToRefresh是...

    Android控件gridview实现单行多列横向滚动效果

    在Android开发中,有时我们需要创建一个布局,展示的内容是一行多列,并且支持横向滚动,以便用户可以在一行内查看所有内容。在这种情况下,可以结合使用`GridLayout`和`HorizontalScrollView`来实现这样的效果。...

    GridView横向侧滑预览

    - 要实现这个功能,首先需要对GridView进行扩展,创建一个自定义的GridView类,覆盖其滚动行为。 - 使用Android提供的`ViewDragHelper`类,这是一个用于处理视图拖放的工具类,可以帮助我们检测和处理滑动手势。 ...

    下拉抽屉菜单加上横向gridview的实现

    这样,每个单元格可以并排放置,形成一行,用户可以左右滑动查看更多的项目。 为了实现"下拉抽屉菜单加上横向gridview"的功能,我们需要以下步骤: 1. **创建抽屉布局**:在XML布局文件中,定义一个`SlidingDrawer...

    GridView使用技巧汇总

    10. **滚动事件**:可以通过监听GridView的滚动事件,如`OnScrollListener`,来实现滚动时触发的特定功能,例如加载更多数据或隐藏/显示顶部栏。 11. **动画效果**:可以利用`Animation`类为GridView的项添加进入、...

    gridview分页显示手机所有应用

    我们可以通过设置GridView的列数来决定每行显示多少个元素。 实现这个功能,我们需要以下几个步骤: 1. 创建布局文件: 在res/layout目录下创建一个XML布局文件,定义GridView,并为其设置列数。例如: ```xml ...

    GRIDVIEW固定标题固定列

    在ASP.NET开发中,GridView控件是常用的数据显示控件,尤其在展示表格数据时非常方便。标题固定功能常用于网页滚动时保持表头可见,增强用户对数据列对应关系的理解。而固定列则是进一步优化用户体验的特性,使得...

    横屏GrideView

    描述中提到的"实现了grideview横屏滑动效果,解决了横向滑动图片难点",意味着这个项目或教程可能着重于如何在横屏环境下实现GridView的水平滚动,并且可能特别关注于处理图像数据的滑动显示。 在Android的默认配置...

    android GridView+ViewPager

    通过设置`android:numColumns`属性,可以指定每行显示的列数。GridView的数据绑定通常通过Adapter来实现,常见的有BaseAdapter、ArrayAdapter或CursorAdapter。Adapter会将数据源中的项转换为View,并插入到GridView...

    RecyclerView 实现跨列的GridView

    在传统的GridView中,我们通常会设置固定的列数,但有时我们需要实现一种效果,使得视图可以根据屏幕大小动态调整列数,这就涉及到了如何使用RecyclerView实现跨列的GridView。下面将详细讲解这一知识点。 首先,...

Global site tag (gtag.js) - Google Analytics