`

Android学习之GridView网格视图

阅读更多

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" 
	android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<GridView
		android:id="@+id/myGridView"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:numColumns="3"
		android:stretchMode="columnWidth"/>
</LinearLayout>

 

 

 

grid_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="horizontal" 
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:background="#000000">
	<ImageView
		android:id="@+id/img"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:scaleType="center"
		android:padding="3px"/>
</LinearLayout>

 

 

 

show_img.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" 
	android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<ImageView
		android:id="@+id/showImg"
		android:layout_width="fill_parent"
		android:layout_height="fill_parent"/>
</LinearLayout>

 

 

 

MyGridViewDemo.java:

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Gallery.LayoutParams;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.SimpleAdapter;

public class MyGridViewDemo extends Activity {
	private List<Map<String,Integer>> list = new ArrayList<Map<String,Integer>>() ;
	private SimpleAdapter simpleAdapter = null; 				// 适配器
	private GridView myGridView = null ;						// GridView组件
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);					// 调用布局管理器
		this.myGridView = (GridView) super.findViewById(R.id.myGridView) ;	// 取得组件
		this.initAdapter() ;									// 初始化适配器
		this.myGridView.setAdapter(this.simpleAdapter) ;		// 设置图片
		this.myGridView.setOnItemClickListener(new OnItemClickListenerImpl()) ;
	}

	private class OnItemClickListenerImpl implements OnItemClickListener {
		@SuppressWarnings("unchecked")
		@Override
		public void onItemClick(AdapterView<?> parent, View view, int position,
				long id) {										// 选项单击事件
			ImageView showImg = new ImageView(MyGridViewDemo.this); // 定义图片组件
			showImg.setScaleType(ImageView.ScaleType.CENTER);	// 居中显示
			showImg.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
					LayoutParams.WRAP_CONTENT));				// 布局参数
			Map<String, Integer> map = (Map<String, Integer>) MyGridViewDemo
				.this.simpleAdapter.getItem(position); 			// 取出Map
			showImg.setImageResource(map.get("img")); 			// 设置显示图片
			Dialog dialog = new AlertDialog.Builder(MyGridViewDemo.this)	// 创建Dialog
					.setIcon(R.drawable.pic_m)					// 设置显示图片
					.setTitle("查看图片")							// 设置标题
					.setView(showImg)							// 设置组件
					.setNegativeButton("关闭",				// 设置取消按钮
							new DialogInterface.OnClickListener() {
								public void onClick(DialogInterface dialog,
										int whichButton) {
								}}).create();					// 创建对话框
			dialog.show();										// 显示对话框

		}
	}
	public void initAdapter(){									// 初始化适配器
		Field[] fields = R.drawable.class.getDeclaredFields(); 
		for (int x = 0; x < fields.length; x++) {	
			if (fields[x].getName().startsWith("png_")){ 		// 所有png_*命名的图片
				Map<String,Integer> map = new HashMap<String,Integer>() ;	// 定义Map
				try {
					map.put("img", fields[x].getInt(R.drawable.class)) ;
				} catch (Exception e) {							// 设置图片资源
				}
				this.list.add(map) ;							// 保存Map
			}
		}
		this.simpleAdapter = new SimpleAdapter(this, 			// 实例化SimpleAdapter
				this.list,										// 要包装的数据集合
				R.layout.grid_layout, 							// 要使用的显示模板
				new String[] { "img" }, 						// 定义要显示的Map的Key
				new int[] {R.id.img });							// 与模板中的组件匹配
	}
}

 

分享到:
评论

相关推荐

    android ViewFlipper + Gridview 实现网格视图由上向下自动滑动效果

    通过学习和理解这些代码,开发者可以更好地掌握如何结合使用ViewFlipper和GridView来创建动态的、自动滚动的网格视图效果。在实际开发中,可以根据项目需求调整动画的参数、定时器的间隔,甚至可以加入手势识别,让...

    Android程序技术:网格视图.pptx

    Android 程序技术 ...网格视图GridView 网格视图GridView GridView支持的XML属性如表5所示: 高级控件-网格视图 Advanced controls - Grid view 属 性 描 述 android:columnWidth 用于设置列的宽度 android:gravi

    iOS GridView 网格视图

    在iOS开发中,GridView是一种常见的布局方式,它类似于Android中的GridView或者Web开发中的CSS Grid,可以灵活地展示多行多列的数据。这种视图通常用于显示不确定行数和列数的信息,比如图片、图标或者简单的文字...

    Android高仿支付宝gridview网格布局

    以上就是实现“Android高仿支付宝gridview网格布局”的关键步骤和技术点。在实际开发中,你可能还需要根据具体需求进行调整和优化,确保布局既美观又高效。通过不断实践和学习,你可以创造出更具特色的网格布局,...

    android 网格视图(GridView)

    在Android开发中,网格视图(GridView)是一种非常常见的布局管理器,它允许开发者将数据以网格的形式展示出来,通常用于创建类似相册、菜单或图标列表等界面。本篇文章将深入探讨Android中的GridView及其使用方法。...

    Android之GridView视图实现

    你可以运行应用,看到一个包含图片和文字的网格视图。当然,这只是一个基础示例,实际应用中可能需要处理更多复杂情况,比如点击事件、动态加载数据、自定义动画等。 在进一步优化GridView时,还可以考虑使用...

    Android中在GridView网格视图上实现item拖拽交换的方法

    在Android开发中,GridView是一种非常常见的控件,它允许开发者以网格的形式展示数据。在GridView中实现item(单元格)的拖拽交换功能可以提供更好的用户体验,让用户能够自由调整元素的顺序。相比于ListView,虽然...

    Android网格视图

    在Android开发中,网格视图(GridView)是一种非常常见的布局管理器,它允许开发者以网格的形式展示数据,通常用于创建照片库、应用列表等场景。这个"Android网格视图"主题涉及的知识点主要包括以下几个方面: 1. *...

    Android网格视图(GridView)

    以下是对标题和描述中提及的Android网格视图(GridView)相关知识点的详细解释: 1. **android:numColumns**:“auto_fit”或具体数字:这个属性决定了GridView的列数。当设置为“auto_fit”时,系统会根据可用空间...

    Android中利用ListView和GridView实现列表视图和网格(图标)视图的相互切换显示

    2. **GridView**:则以网格形式展示数据,每行可以有多个列,适合展示图标或者小图片的列表,如应用列表或照片墙。 要实现这两种视图的切换,我们需要以下步骤: **步骤1:创建布局** 为ListView和GridView创建两...

    C#网格视图控件GridView的方法

    ### C#网格视图控件GridView的方法 #### 网格视图控件GridView简介 在C#开发中,尤其是在Windows Forms应用开发中,GridView 控件是一种常用的展示数据的方式,它能够有效地展示表格形式的数据,并支持多种交互...

    android Gridview分页实现

    在Android开发中,GridView是一种常用的布局控件,它允许我们以网格的形式展示数据。当我们处理大量数据时,分页加载可以提高应用性能,减少内存消耗,并提供更好的用户体验。本篇文章将详细讲解如何在Android中利用...

    Android GridView宫格视图实践项目(资源)

    在Android开发中,GridView是一种非常常见的布局控件,它允许开发者以网格的形式展示数据,通常用于创建类似照片墙、应用快捷方式或者菜单等界面。在本项目“Android GridView宫格视图实践项目”中,我们将深入探讨...

    Android网格视图GridView的使用

    在Android开发中,GridView是一个非常实用的控件,它能够以网格的形式展示数据,通常用于显示多行多列的内容,例如图片、应用图标等。在本文中,我们将深入探讨GridView的使用方法及其主要属性。 首先, GridView的...

    Android GridView宫格视图实践

    在Android开发中,`GridView`是一种常见的用户界面组件,用于显示网格形式的数据列表,如相册、商品展示等场景。通过`GridView`可以很容易地实现宫格式布局效果。 #### 二、项目准备 1. **新建工程**:首先,在...

    android ListView 网格布局

    由于标题提到的是“ListView的网格视图”,我们将主要讨论使用GridView的情况。GridView是一个二维的列表视图,可以设置每行的列数,从而达到网格效果。 以下是一步一步实现这个功能的过程: 1. 创建布局文件:...

    android学习——GridView

    在Android开发中,GridView是一种非常常用的布局控件,它允许我们以网格的形式展示数据,通常用于创建像照片墙、应用列表等多列显示的内容。在本教程中,我们将深入探讨如何在Android应用中使用GridView。 首先,...

    android 自定义控件 GridView

    GridView作为一种常见的布局控件,通常用于展示网格状的数据,如图片、列表项等。在本主题中,我们将深入探讨如何创建两个可相互拖拉的自定义GridView控件,实现数据交互。 首先,了解GridView的基本用法。GridView...

Global site tag (gtag.js) - Google Analytics