`

GridView 控件和Gallery 控件

阅读更多

GridView 控件
(一)概述
    GridView 控件称为网格列表,在 android 中的使用频率较高,该控件可按多行多列显示信息,表现能力很强。
(二)常用属性

属性名           Java的方法        作用

columnWidth       setColumnWidth(int)    设置列宽度
gravity           setGravity(int)    设置对齐方式
horizontalSpacing 
           setHorizontalSpacing(int)
                    设置各元素之间的水平间距
numColumns       setNumColumns(int)    设置列数
stretchMode       setStrechMode(int)    设置拉伸模式
verticalSpacing       setVerticalSpacing(int) 设置各元素间的垂直间距

 

其中,

stretchMode 有以下可选的属性值
NO_STRETCH        不拉伸
STRETCH_SPACING        仅拉伸元素之间的间距
STRETCH_SPACING_UNIFORM 表格元素本身、元素之间的间距一起拉伸
STRETCH_COLUMN_WIDTH    仅拉伸表格元素本身

 


 

 

Gallery 控件
(一)概述
    Gallery(画廊)控件与 Spinner 类相似,都是 AbsSpinner 类的子类。它们之间的区别在于:Spinner 显示的是一个垂直列表选择框,而 Gallery 显示的是一个水平列表选择框,并且 Gallery 允许用户水平拖动列表框。
    ListView 是垂直列表,Gallery 可以理解为是水平列表。

(二)常用属性

XML属性                  相关方法                            说明
Gravity                   setGravity(int)                   设置对齐方式
spacing                  setSpacting(int)                 设置列表项之间的间距
unselectedAlpha      setUnselectedAlpha(float)     设置未选中的列表项的透明度

 


(三)重要接口、方法
1、OnItemClickListener 接口:监听列表项单击事件。该接口定义了如下方法:
1)void onItemClick(AdapterView<?> parent,View view,int position,long id)
    作用:响应用户单击列表项的事件。
参数说明:
第一个参数-parent:当前的 Gallery 对象
第二个参数-view:被单击的列表项
第三个参数-position:被单击的列表项在适配器中的位置(索引值)
第四个参数-id:被单击的列表项在列表中所在列的索引值。

2)void setOnItemClickListener(OnItemClickListener listener)
    作用:设置响应用户单击事件的方法
参数说明:
Listener:实现了 OnItemClickListener 接口的对象。


实例:

package com.jxust.day_05_01_listviewdemo;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

	Gallery mGallery;
	List<GeneralBean> mGenerals; // 代表十个军事家的集合
	GeneralAdapter mAdapter;
	int[] resid = { R.drawable.baiqi, R.drawable.caocao, R.drawable.chengjisihan,
			R.drawable.hanxin, R.drawable.lishimin, R.drawable.nuerhachi, R.drawable.sunbin,
			R.drawable.sunwu, R.drawable.yuefei, R.drawable.zhuyuanzhang };

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initData(); // 初始化数据
		initView();
		setListener();		//设置监听器
	}

	private void setListener() {
		setOnItemClickListener();
		setOnItemLongClickListener();
	}

	// 长按操作
	private void setOnItemLongClickListener() {
		mGallery.setOnItemLongClickListener(new OnItemLongClickListener() {

			@Override
			public boolean onItemLongClick(AdapterView<?> parent, View view, int position,
						long id) {
				Toast.makeText(MainActivity.this, mGenerals.get(position).getName()+"被长按", 2000).show();
				//false的作用就是告诉系统自己没有处理,交给其他监听器,从而就到了短按操作的那个监听器
				//true的作用就是告诉系统自己已经处理了
				return true;	
			}
		});
	}

	// 短按操作
	private void setOnItemClickListener() {
		mGallery.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
				Toast.makeText(MainActivity.this, mGenerals.get(position).getName()+"被短按", 2000).show();
			}
		});
	}

	private void initView() {
		mGallery = (Gallery) findViewById(R.id.galleryGeneral);
		mAdapter = new GeneralAdapter(); // 创建适配器
		// 和ListView 关联起来
		mGallery.setAdapter(mAdapter);
	}

	private void initData() {
		// 将资源中的字符串数组转换为Java数组
		String[] names = getResources().getStringArray(R.array.generals);
		mGenerals = new ArrayList<GeneralBean>();
		for (int i = 0; i < names.length; i++) {
			GeneralBean bean = new GeneralBean(resid[i], names[i]);
			mGenerals.add(bean);
		}

	}

	// 定义代表军事家的适配器类
	class GeneralAdapter extends BaseAdapter {

		@Override
		public int getCount() {
//			return mGenerals.size();
			return Integer.MAX_VALUE;
		}

		@Override
		public Object getItem(int position) {
			return mGenerals.get(position);
		}

		@Override
		public long getItemId(int position) {
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			// 拿到 ListView 的布局并且转换为 View 类型的对象
			View layout = View.inflate(MainActivity.this, R.layout.item_generals, null); // root表示的是父容器
			// 找到显示军事家头像的 ImageView
			// layout的作用就是将目标转换为 layout.item_generals
			ImageView ivThumb = (ImageView) layout.findViewById(R.id.ivThumb);
			// 找到显示军事家名字的 TextView
			TextView tvName = (TextView) layout.findViewById(R.id.tvName);
			// 获取军事家中下标是 position 的军事家对象
			GeneralBean bean = (GeneralBean) getItem(position%mGenerals.size());
			// 显示军事家头像
			ivThumb.setImageResource(bean.getResid());
			// 显示军事家的姓名
			tvName.setText(bean.getName());

			return layout;
		}

	}
}

 

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/ivThumb"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:scaleType="fitXY"
        android:src="@drawable/baiqi" />

    <TextView
        android:id="@+id/tvName"
        android:layout_width="80dp"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="白起"
        android:textSize="20sp" />

</LinearLayout>

 

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Day_05_01_ListViewDemo</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
	<string-array name="generals">
	    <item >白起</item>
	    <item >曹操</item>
	    <item >成吉思汗</item>
	    <item >韩信</item>
	    <item >李世民</item>
	    <item >努尔哈赤</item>
	    <item >孙膑</item>
	    <item >孙武</item>
	    <item >岳飞</item>
	    <item >朱元璋</item>
	</string-array>
    
</resources>

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Gallery
        android:id="@+id/galleryGeneral"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:spacing="2dp" />

</RelativeLayout>

 

分享到:
评论

相关推荐

    android控件ListView. GridView.gallery应用

    ListView添加数据源,SimpleAdapter 重点是ListView事件处理,OnItemClickListener 如果和上下文菜单关联,点上下文菜单...画廊控件:gallery imageswitch HorizontalScrollView,在一个屏幕上显示出超过屏幕尺寸的内容

    Gallery+GridView使用的demo

    在Android开发中,`Gallery`和`GridView`是两种常用的布局控件,它们常用于展示图像或数据集合。本示例"Gallery+GridView使用的demo"旨在演示如何在应用程序中有效地结合这两个控件来创建一个图片浏览体验。让我们...

    android gridView实现自定义gallery

    总的来说,虽然Android原生的Gallery控件有一定的局限性,但通过巧妙地使用GridView和自定义Adapter,我们可以定制出符合需求的滚动视图,实现更丰富的交互体验。这种技术在实际开发中非常实用,尤其是在需要展示一...

    Gallery和GridView浅析

    Gallery控件的主要特点是可以响应用户点击事件,提供了一种优雅的方式来展示和选择图片。 1. XML属性: - `android:animationDuration`:设置在布局变化时动画的持续时间,单位为毫秒。默认值为300毫秒。 - `...

    gridView 实现gallery滑动

    在某些场景下,开发者可能希望结合GridView和Gallery的功能,实现一个既具有网格布局又能横向平滑滑动的效果。在本篇文章中,我们将深入探讨如何在Android中使用GridView来实现类似Gallery的滑动体验,并防止滑动过...

    一个简单的相册GridView、Gallery的结合使用

    GridView和Gallery都是Android提供的布局控件,它们在显示数据集方面有各自的优势。 ** GridView详解:** GridView是一种可以显示多列、滚动的列表视图,常用于展示网格状的数据。在本项目中,GridView用于展示图片...

    Display image gallery in ASP.NET GridView Control

    在ASP.NET开发中,GridView控件是一个非常常用的数据展示组件,尤其适合于表格形式的数据展示。本主题将深入探讨如何利用GridView控件来创建一个图片画廊。在ASP.NET应用中,实现“Display image gallery in ASP.NET...

    ListView之+GridView+Gallery图片计时滚动

    在Android开发中,ListView、GridView和Gallery是三个非常重要的组件,它们主要用于展示数据集,尤其在处理大量数据的展示时尤为常见。这三个组件都属于ViewGroup,能够动态加载子视图,提供良好的用户体验。 首先...

    Android编程滑动效果之Gallery+GridView实现图片预览功能(附demo源码下载)

    本文实例讲述了Android编程滑动效果之Gallery+GridView实现图片预览功能。分享给大家供大家参考,具体如下...首先,自定义一个GridImageAdapter图片适配器,用于填充GridView控件的图片 public class GridImageAdapte

    Android的GridView和Gallery结合Demo

    Demo介绍:首页是一个GridView加载图片,竖屏...点击某一张图片,会链接到Gallery页面,由于Android自带的Gallery控件滑动效果很不好(滑动一次会加载好多张图片),这里对Gallery进行了扩展,滑动一次只加载一张图片。

    图片浏览(带水平滑动的GridView和带gallery的ViewPage)|kobeyxyx-6235953-ImageView.zip

    在Android的默认GridView控件中,数据通常是垂直堆叠展示的。为了实现水平滚动,我们需要自定义GridView。这通常涉及到重写`onMeasure()`和`onLayout()`方法,以改变默认的测量和布局行为。同时,需要设置GridView的...

    android 自定义gridView 按日期显示图片和视频 galleryDemo

    android 自定义gridView 按日期显示图片和视频 galleryDemo android 自定义gridView 按日期显示图片和视频 galleryDemo android 自定义gridView 按日期显示图片和视频 galleryDemo 免费下载 给个好评!

    Gridview高级使用技巧

    GridView是Android开发中常见的一种控件,用于展示数据集,如图片、文本等,并以网格形式排列。在Android应用开发中,GridView的高级使用技巧能够帮助开发者创建更加灵活、交互性强的用户界面。本篇文章将深入探讨...

    android控件使用

    **GridView控件** GridView是另一种常用的布局控件,它以网格形式展示数据,每个项目占据一个单元格。GridView的主要特点包括: 1. **网格布局**:GridView可以根据设定的列数将数据排列成网格状,通常用于展示照片...

    Android_控件运用

    GridView 可以展示一个二维网格的视图,每个单元格可以包含一个控件或图片,适用于展示大量可选项目。 7. **Android 控件之 Gallery** Gallery 是一个水平滚动的视图,可以展示一系列的图片或其他视图,用户可以...

    android常见控件和使用方法

    ### Android常见控件及其使用方法 #### 基本组件 **1. 文本框(TextView)与编辑框(EditText)** - **文本框(TextView)** - **功能介绍**:`TextView`用于在屏幕上显示不可编辑的文本。它是Android UI设计中...

    gridview【支持多选】

    在Android开发中,GridView是一种非常常见的控件,用于展示数据集,通常以网格形式排列。在本示例中,我们关注的是"gridview【支持多选】",这表示GridView被配置为允许用户同时选择多个项目,类似于Gallery组件的...

    QuickPart的部署以及用QuickPart包装用户控件到Moss sharepoint

    至于"SPGridViewUserControl",这可能是一个基于SharePoint的GridView控件的用户控件示例。SPGridView是SharePoint对ASP.NET GridView的扩展,提供了与列表数据交互的更多功能,如与SharePoint列表的集成、权限控制...

    android常用控件及布局.pdf

    容器这里的容器是指采用了特定的布局并且提供了行为的控件,包含 ListView、GridView、Gallery、Spinner 等。 二、TextView 控件 TextView 控件是 Android 中最基本的控件之一,用于显示文本信息。它可以设置字体...

    Android UI控件集合

    Android UI控件集合,包括Button,TextView,EditView,CheckBox,RadioGroup,Spinner,AutoCompleteTextView,DatePicker,TimePicker,ProgressBar,SeekBar,RatingBar,ImageView,ImageButton,ImageSwicrher,Gallery,...

Global site tag (gtag.js) - Google Analytics