Android网格布局GridView学习使用

应用开发的时候,有时我们需要将一些图片进行预览,例如:相片管理的应用。这个时候用ListView的话就显得不是太合适了,因为ListView的展现形式毕竟不适合这种预览要求,那么通过什么视图组件可 以实现呢?这里就可以使用GridView,android中的网格布局来实现了。

GridView控件用于把一系列的控件组织成二维网格的形式显示出来,应用较多的也就是图片的组合显示了。关于GridView的使用直接看例子程序。

先看效果图:

具体实现方式如下:

主布局文件main.xml

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/gridview"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:numColumns="auto_fit"
 android:verticalSpacing="10dp"
 android:horizontalSpacing="10dp"
 android:columnWidth="90dp"
 android:stretchMode="columnWidth"
 android:gravity="center"
/>

适配器ImageAdapter.java(继承BaseAdapter)

package com.yarin.android.Examples_04_19; 

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView; 

public class ImageAdapter extends BaseAdapter
{
 // 定义Context
 private Context  mContext;
 // 定义整型数组 即图片源
 private Integer[] mImageIds =
 {
   R.drawable.img_1,
   R.drawable.img_2,
   R.drawable.img_3,
   R.drawable.img_4,
   R.drawable.img_5,
   R.drawable.img_6,
   R.drawable.img_7,
   R.drawable.img_8,
   R.drawable.img_1,
 }; 

 public ImageAdapter(Context c)
 {
  mContext = c;
 } 

 // 获取图片的个数,从而知道需要加载的Item的数目与getView()配合循环加载
 public int getCount()
 {
  return mImageIds.length;
 } 

 // 获取图片在库中的位置
 public Object getItem(int position)
 {
  return position;
 } 

 // 获取图片ID
 public long getItemId(int position)
 {
  return position;
 } 

 public View getView(int position, View convertView, ViewGroup parent)
 {
  ImageView imageView;
  if (convertView == null)
  {
   // Item没有被加载过,给ImageView设置资源
   imageView = new ImageView(mContext);
   // 设置布局 图片60*60显示
   imageView.setLayoutParams(new GridView.LayoutParams(65, 65));
   // 设置显示比例类型
   imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
  }
  else
  {
   //Item已经被加载过,直接返回convertView
   imageView = (ImageView) convertView;
  } 

  imageView.setImageResource(mImageIds[position]);
  return imageView;
 } 

}

主Activity:

package com.yarin.android.Examples_04_19; 

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener; 

public class Activity01 extends Activity
{ 

 @Override
 public void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main); 

  //取得GridView对象
  GridView gridview = (GridView) findViewById(R.id.gridview);
  //添加元素给gridview
  gridview.setAdapter(new ImageAdapter(this)); 

  // 设置GridView的背景
  gridview.setBackgroundResource(R.drawable.bg0); 

  //事件监听
  gridview.setOnItemClickListener(new OnItemClickListener() {
   public void onItemClick(AdapterView<?> parent, View v, int position, long id)
   {
    Toast.makeText(Activity01.this, "你选择了" + (position + 1) + " 号图片", Toast.LENGTH_SHORT).show();
   }
  });
 }
}

上面这种方式实现了图片的单选功能,但是多选功能怎么实现呢?下篇文章为大家介绍。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • Android 图片网格布局控件示例代码
  • Android RecyclerView网格布局(支持多种分割线)详解(2)
  • Android App中的GridView网格布局使用指南
  • Android应用开发中使用GridView网格布局的代码示例
  • Android中使用GridLayout网格布局来制作简单的计算器App
  • Android布局之GridLayout网格布局
(0)

相关推荐

  • Android RecyclerView网格布局(支持多种分割线)详解(2)

    上篇Android RecyclerView 详解(1)-线性布局 记录了下RecyclerView的使用方法,并且讲述了线性布局列表的使用方法,在此基础上加上了万能分割线,支持颜色分割线和图片分割线,同时支持对分割线设置线宽. 这篇是总结一下网格布局的使用,同样也支持两种分割线和线宽的设置. 主要的相关类: 1. RecyclerView.Adapter 2. GridLayoutManager 网格布局管理器 3. RecycleView.ItemDecoration 分割线 下面就直接通过

  • Android中使用GridLayout网格布局来制作简单的计算器App

    关于GridLayout 在android4.0版本之前,如果想要达到网格布局的效果,首先可以考虑使用最常见的LinearLayout布局,但是这样的排布会产生如下几点问题: 1.不能同时在X,Y轴方向上进行控件的对齐. 2.当多层布局嵌套时会有性能问题. 3.不能稳定地支持一些支持自由编辑布局的工具. 其次考虑使用表格布局TabelLayout,这种方式会把包含的元素以行和列的形式进行排列,每行为一个TableRow对象,也可以是一个View对象,而在TableRow中还可以继续添加其他的控件

  • Android布局之GridLayout网格布局

    网格布局标签是GridLayout.这个布局是android4.0新增的布局.这个布局只有4.0之后的版本才能使用. 不过新增了一些东东 ①跟LinearLayout(线性布局)一样,他可以设置容器中组件的对齐方式 ②容器中的组件可以跨多行也可以跨多列(相比TableLayout直接放组件,占一行相比较) 因为是android 4.0新增的,API Level 14,在这个版本以前的sdk 都需要导入项目,等下会详细介绍 常用属性: 排列对齐: ①设置组件的排列方式:   android:ori

  • Android应用开发中使用GridView网格布局的代码示例

    基本布局演示 1. 定义包含GridView 的 main.xmk <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fi

  • Android App中的GridView网格布局使用指南

    零.常用属性 首先我们来看看GridView的一些常用的属性吧 1.android:numColumns="auto_fit" //GridView的列数设置为自动 2.android:columnWidth="90dp " //每列的宽度,也就是Item的宽度 3.android:stretchMode="columnWidth"//缩放与列宽大小同步 4.android:verticalSpacing="10dp" //两

  • Android 图片网格布局控件示例代码

    项目地址:MultiPictureView MultiPictureView是一个可以将多张图片以网格的方式显示的View,通过简单的接口实现烦人的布局,从此解放你的小手手 显示效果 支持设置图片数量上限 支持设置最多显示列数 支持动态布局和静态布局两种模式(见下图) 支持编辑模式和展示模式(编辑模式可以增加和删除图片) 布局方式 动态布局 静态布局 编辑/显示模式 如何使用 1. 在布局中声明 <com.goyourfly.multi_picture.MultiPictureView andr

  • Android网格布局GridView学习使用

    应用开发的时候,有时我们需要将一些图片进行预览,例如:相片管理的应用.这个时候用ListView的话就显得不是太合适了,因为ListView的展现形式毕竟不适合这种预览要求,那么通过什么视图组件可 以实现呢?这里就可以使用GridView,android中的网格布局来实现了. GridView控件用于把一系列的控件组织成二维网格的形式显示出来,应用较多的也就是图片的组合显示了.关于GridView的使用直接看例子程序. 先看效果图: 具体实现方式如下: 主布局文件main.xml <?xml v

  • Android网格布局GridView实现漂亮的多选效果

    上一篇文章中主要讲了GridView的简单应用,以网格的形式展示了一些图片,对于图片也有点击监听操作.但是,如果我们在浏览图片的时候需要一些选中操作.甚至是多选操作的时候.这样的功能我们又该如何实现呢? 可以使用ActionBar +GridView的形式实现!在谈及具体实现之前,首先我们先了解一下什么是 ActionBar: Action Bar是活动中的一种控件,用以代替传统的品目顶端的标题栏,它提供了多便利性.有关其详细内容会在以后研究,现在主要考虑上述需求的实现. 先上效果图 首先是关于

  • Android网格视图GridView的使用

    GridView(网格视图)是按照行列的方式来显示内容的,一般用于显示图片,图片等内容,比如实现九宫格图,用GridView是首选,也是最简单的.主要用于设置Adapter. 网格视图GridView的排列方式与矩阵类似,当屏幕上有很多元素(文字.图片或其他元素)需要按矩阵格式进行显示时,就可以使用GridView控件来实现. GridView常用的XML属性: 本文将以一个具体的实例来说明如何使用GridView控件实现手机屏幕上各个应用软件图标的摆放,以及应用软件名称的显示. 完成后的程序运

  • Android 利用ViewPager+GridView实现首页导航栏布局分页效果

    最近我尝试使用ViewPager+GridView实现的,看起来一切正常,废话不多说,具体代码如下: 如图是效果图 首先分析下思路 1.首先是怎么布局:整体是一个ViewPager将GridView作为一个View添加到ViewPager的adapter中,下方是圆点 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.a

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

    GridView基础 新建一个HelloGridView的工程 修改main.xml代码如下: <?xml version="1.0" encoding="utf-8"?> <GridView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gridview" android:layout_width=&q

  • Android RecyclerView网格布局示例解析

    一个简单的网格布局 activity_main.xml <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/ap

随机推荐