安卓开发复习笔记——GridView组件

1、什么是GridView?

GridView(网格视图)是按照行列的方式来显示内容的,一般用于显示图片,图片等内容,比如实现九宫格图,用GridView是首选,也是最简单的。

2、正文

GridView的用法很多,网上介绍最多的方法就是自己实现一个ImageAdapter继承BaseAdapter,再供GridView使用,太多的东西我就不再重复去写,这次记录点不一样的用法。

先看下效果图:(点击应用图标以Toast的方式显示信息)

首先先说下GridView常用的XML属性:


属性名称


描述


android:columnWidth


设置列的宽度。


android:gravity


设置此组件中的内容在组件中的位置。可选的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical可以多选,用“|”分开。


android:horizontalSpacing


两列之间的间距。


android:numColumns


设置列数。


android:stretchMode


缩放模式。


android:verticalSpacing


两行之间的间距。

然后直接上代码吧,注释很全。

MainActivity.xml

 1 package com.example.gridviewtest;
 2
 3 import java.util.ArrayList;
 4 import java.util.HashMap;
 5 import java.util.List;
 6 import java.util.Map;
 7
 8 import android.app.Activity;
 9 import android.os.Bundle;
10 import android.view.View;
11 import android.widget.AdapterView;
12 import android.widget.AdapterView.OnItemClickListener;
13 import android.widget.GridView;
14 import android.widget.SimpleAdapter;
15 import android.widget.Toast;
16
17 public class MainActivity extends Activity implements OnItemClickListener {
18
19     private GridView gridView;// 声明GridView对象
20     private List<Map<String,Object>> dataList;//数据源集合对象
21     private SimpleAdapter simpleAdapter;
22     // 图标资源
23     private int images[] = { R.drawable.address_book, R.drawable.calendar,
24             R.drawable.camera, R.drawable.clock, R.drawable.games_control,
25             R.drawable.messenger, R.drawable.ringtone, R.drawable.settings,
26             R.drawable.speech_balloon, R.drawable.weather, R.drawable.world,
27             R.drawable.youtube };
28     // 图标下文字资源
29     private String[] texts= { "联系人", "日历", "照相机", "时钟", "游戏", "短信", "铃声",
30             "设置", "语音", "天气", "浏览器", "Youtube" };
31
32     @Override
33     protected void onCreate(Bundle savedInstanceState) {
34         super.onCreate(savedInstanceState);
35         setContentView(R.layout.activity_main);
36         gridView = (GridView) findViewById(R.id.gridview);// 取得对象
37         gridView.setOnItemClickListener(this);
38         dataList=new ArrayList<Map<String,Object>>();
39         /*
40          * GridView使用步骤 1、获取数据源 getData() 2、制作适配器 3、绑定适配器
41          */
42
43         //1、获取数据源
44         dataList=getData();
45         //2、制作适配器
46         simpleAdapter=new SimpleAdapter(this, dataList, R.layout.gridview_item, new String[]{"image","text"}, new int[]{R.id.image,R.id.text});
47         //绑定适配器
48         gridView.setAdapter(simpleAdapter);
49     }
50
51     private List<Map<String, Object>> getData() {
52         for(int i=0;i<images.length;i++){//每个map对象对应着一组数据
53             Map<String, Object> map=new HashMap<String, Object>();
54             map.put("image", images[i]);
55             map.put("text", texts[i]);
56             dataList.add(map);
57         }
58         return dataList;
59     }
60
61     @Override
62     public void onItemClick(AdapterView<?> parent, View view, int position,
63             long id) {
64         Toast.makeText(this,texts[position]+"应用被选择" , Toast.LENGTH_SHORT).show();
65     }
66
67 }

activity_main.xml

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     tools:context="com.example.gridviewtest.MainActivity"
 6     android:orientation="vertical">
 7
 8       <!--
 9      GridView是可滚动的网格。一般用来显示多张图片。
10      android:horizontalSpacing="5dp" 两列之间的间距是5dp
11      android:verticalSpacing="5dp" 两行之间的间距是5dp
12      android:stretchMode="spacingWidth" 缩放与列宽大小同步
13      android:numColumns="auto_fit" 本来是一行显示几个,现在改为自动分配
14     -->
15     <GridView
16             android:id="@+id/gridview"
17             android:layout_width="wrap_content"
18             android:layout_height="wrap_content"
19             android:horizontalSpacing="5dp"
20             android:verticalSpacing="10dp"
21             android:numColumns="3"
22         ></GridView>
23
24
25
26 </LinearLayout>

gridview_item.xml

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:paddingBottom="@dimen/activity_vertical_margin"
 6     android:paddingLeft="@dimen/activity_horizontal_margin"
 7     android:paddingRight="@dimen/activity_horizontal_margin"
 8     android:paddingTop="@dimen/activity_vertical_margin"
 9     tools:context="com.example.gridviewtest.MainActivity"
10     android:gravity="center"
11     android:orientation="vertical">
12
13     <ImageView
14         android:id="@+id/image"
15         android:layout_width="60dp"
16         android:layout_height="60dp"
17         android:layout_gravity="center"
18         android:src="@drawable/ic_launcher"
19         />
20
21     <TextView
22         android:id="@+id/text"
23         android:layout_width="wrap_content"
24         android:layout_height="wrap_content"
25         android:layout_gravity="center"
26         android:layout_marginTop="3dp"
27         />
28
29
30
31
32 </LinearLayout>

AndroidManifest.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="com.example.gridviewtest"
 4     android:versionCode="1"
 5     android:versionName="1.0" >
 6
 7     <uses-sdk
 8         android:minSdkVersion="8"
 9         android:targetSdkVersion="21" />
10
11     <application
12         android:allowBackup="true"
13         android:icon="@drawable/ic_launcher"
14         android:label="@string/app_name"
15         android:theme="@android:style/Theme.Black.NoTitleBar" >
16         <activity
17             android:name=".MainActivity"
18             android:label="@string/app_name" >
19             <intent-filter>
20                 <action android:name="android.intent.action.MAIN" />
21
22                 <category android:name="android.intent.category.LAUNCHER" />
23             </intent-filter>
24         </activity>
25     </application>
26
27 </manifest>

素材图片这里就不给出了,大家自己随便网上搜吧,一大堆的。

时间: 2024-10-26 06:39:03

安卓开发复习笔记——GridView组件的相关文章

安卓开发复习笔记——TabHost组件(实现底部菜单导航)

安卓开发复习笔记——TabHost组件(实现底部菜单导航) 4 来源:cnblog    阅读:1048   时间:2014-09-16 什么是TabHost? TabHost组件的主要功能是可以进行应用程序分类管理,例如:在用户使用windows操作系统的时候,经常见到如图所示的图形界面. TabHost选项卡,说到这个组件,不得不先说一件事情,翻翻谷歌提供给我们的API,我们可以发现这样的一段话: 它告诉我们,这个组件在安卓4.0之后已经被废弃了,建议我们新的程序应该使用Fragment组件

安卓开发复习笔记——WebView组件

我们专业方向本是JAVA Web,这学期突然来了个手机App开发的课设,对于安卓这块,之前自学过一段时间,有些东西太久没用已经淡忘了 准备随笔记录些复习笔记,也当做温故知新吧~ 1.什么是WebView? WebView(网络视图)能加载显示网页,可以将其视为一个浏览器,它使用了WebKit渲染引擎加载显示网页. 废话不多说,直接上代码 1.需要在xml布局文件中声明WebView组件 1 <WebView 2 android:id="@+id/webview" 3 androi

安卓开发复习笔记——ViewPager组件(仿微信引导界面&gt;)

这2天事情比较多,都没时间更新博客,趁周末,继续继续~ 今天来讲个比较新潮的组件——ViewPager 什么是ViewPager? ViewPager是安卓3.0之后提供的新特性,继承自ViewGroup,专门用以实现左右滑动切换View的效果. 如果想向下兼容就必须要android-support-v4.jar这个包的支持,这是一个来自google提供的一个附加包. 通俗点来讲,就是现在市面上大多数app,安装完第一次打开软件会出现的一个左右滑动的引导界面. 先来看下效果图:     这是一个

安卓开发复习笔记——Gallery组件+ImageSwitcher组件

什么是Gallery? Gallery是一个水平的列表选择框,它允许用户通过拖动来查看上一个.下一个列表选项. 下图是今天要实现的最终效果: 利用Gallery组件实现的一个横向显示图像列表,可以通过左.右滑动屏幕来切换图像,并加上ImageSwitcher实现一个大图片预览功能. 1.一步一步来吧,首先先解决下上半部分(图像导航) 先来看下效果图,下图是利用Gallery组件实现的一个横向显示图像列表,可以通过左.右滑动屏幕来切换图像.   直接上代码,注释很全. MainActivity.j

安卓开发复习笔记——Fragment+FragmentTabHost组件(实现新浪微博底部菜单)

记得之前写过2篇关于底部菜单的实现,由于使用的是过时的TabHost类,虽然一样可以实现我们想要的效果,但作为学习,还是需要来了解下这个新引入类FragmentTabHost 之前2篇文章的链接: 安卓开发复习笔记——TabHost组件(一)(实现底部菜单导航) 安卓开发复习笔记——TabHost组件(二)(实现底部菜单导航) 关于Fragment类在之前的安卓开发复习笔记——Fragment+ViewPager组件(高仿微信界面)也介绍过,这里就不再重复阐述了. 国际惯例,先来张效果图: 下面

安卓开发复习笔记——Fragment+ViewPager组件(高仿微信界面)

什么是ViewPager? 关于ViewPager的介绍和使用,在之前我写过一篇相关的文章<安卓开发复习笔记——ViewPager组件(仿微信引导界面)>,不清楚的朋友可以看看,这里就不再重复. 什么是Fragment? Fragment是Android3.0后新增的概念,Fragment名为碎片,不过却和Activity十分相似,具有自己的生命周期,它是用来描述一些行为或一部分用户界面在一个Activity中,我们可以合并多个Fragment在一个单独的activity中建立多个UI面板,或

安卓开发复习笔记——Menu菜单组件(选项菜单,上下文菜单,子菜单)

菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu).上下文菜单(ContextMenu)和子菜单(SubMenu). 菜单的实现方式有2种:一种是通过布局文件xml生成菜单,另一种是通过代码生成. 三种菜单内容有点多,不过大体相似,一次性讲完吧,本人偏好代码动态生成,下面就以代码为例. 1.选项菜单(OptionsMenu) 先来看下选项菜单的效果图:   在一个Activity界面中点击手机Menu键,在屏幕下方弹出的菜单

IOS开发复习笔记(3)-ARC

1.ARC 当你自己调用了release或retain语句的时候,ARC有效时编译文件会遇到错误,你可以通过-fno-objc-arc和-fobjc-arc两个编译器标志在混搭中支持ARC和非ARC的代码 如下面编译支持ARC,而文件代码不支持ARC # if !__has_feature(objc_arc) //this code do not support to ARC -(void) release{ //release your var } #endif 在ARC工程中集成非ARC的第

安卓开发入门笔记#1 初认Activity

一.Activity基本概念 Activity是安卓开发中的重要组件,它为用户提供了基本的屏幕交互空间.简单来说,我们直观看到的应用可操作界面,其基础就是托管的activity. 一个应用通常由多个activity组成,一个activity可以启动另外一个acitvity,新的activity称为子activity,其父activity将会自动停止,并被压入stack,当子activity返回时,再从stack中弹出父activity. 二.Activity的生命周期 安卓官方文档有句话:开发一