Android复习之GridView

来源:互联网 发布:外国域名注册网站 编辑:程序博客网 时间:2024/04/28 18:03
Android复习之GridView

GridView(网格视图)是按照行列的方式来显示内容的,一般用于显示图片,图片等内容,比如实现九宫格图.
    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

两行之间的间距。


*************************************************
java代码:

MainActivity.java
package com.mct.gridviewdemo;import java.io.File;import java.util.ArrayList;import com.mct.utils.FileBean;import com.mct.utils.FileUtils;import android.annotation.SuppressLint;import android.app.Activity;import android.os.Bundle;import android.widget.GridView;public class MainActivity extends Activity {private ImageAdapter myImageAdapter;private File [] arrayFile=null;    private ArrayList<File> picture=new ArrayList<File>();    private ArrayList<File> folders=new ArrayList<File>();    private ArrayList<FileBean> fileBean=new ArrayList<FileBean>();    private GridView mGridView;private int[] imagesRes = { R.drawable.pic1, R.drawable.pic2,R.drawable.pic3, R.drawable.pic4, R.drawable.pic5, R.drawable.pic6,R.drawable.pic7, R.drawable.pic8,R.drawable.a,R.drawable.b};@SuppressLint("SdCardPath")@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 创建适配器对象myImageAdapter=new ImageAdapter(this);//设定数据源myImageAdapter.set(imagesRes);//加载网格视图mGridView = (GridView) findViewById(R.id.m_gridview);//将适配器设置到mGridView中mGridView.setAdapter(myImageAdapter);//将SD卡中的文件中分类出来File file = new File("/sdcard/huang");        if(file.isDirectory())        {arrayFile = file.listFiles();}for (int i = 0; i < arrayFile.length; i++) {FileBean fb=new FileBean();fb.setDirectory(true);fb.setFileName(arrayFile[i].getName().toString());fb.setIcon(i);fb.setLenght(arrayFile[i].length()+"");fb.setPath("");//图片if(arrayFile[i].isFile()&& FileUtils.isImgae(FileUtils.geType(arrayFile[i].getName()))){picture.add(arrayFile[i]);}//其它文件else{folders.add(arrayFile[i]);}}}}

ImageAdapter.java
package com.mct.gridviewdemo;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.GridView;import android.widget.ImageView;import android.widget.TextView;public class ImageAdapter extends BaseAdapter {//数据源private int[] imagesRes;// 布局加载器(可以将xml布局加载为一个View对象)private LayoutInflater mInflater;private TextView myTextView;/** * 下面三行相当于初始化布局加载器 */private Context mContext;public ImageAdapter(Context c){mContext = c;//一般在Activity中我们直接用this代替,代表调用者的实例为Activity// 初始化布局加载器// mInflater = LayoutInflater.from(context);mInflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);}//数据源public void set(int[] imagesRes){this.imagesRes=imagesRes;}//配置显示的个数 public int getCount() {return null==imagesRes?0:imagesRes.length;}// 配置每个位置对应的数据源对象public Object getItem(int position) {return imagesRes[position];}//配置每个显示位置的id(这个id和布局id无关)。可以说这里是固定的。public long getItemId(int position) {return position;}//配置显示的布局public View getView(int position, View convertView, ViewGroup parent) {//ImageView imageView;//if (convertView == null) { // 如果不回收,初始化一些属性//imageView = new ImageView(mContext);//mContext=this////// 对ImageView设置布局宽高(注意当前ImageView要显示到GridView中,//// 所以布局属性对象必须使用GridView中的布局对象//imageView.setLayoutParams(new GridView.LayoutParams(85, 85));//////控制图片如何自动resized、moved来匹配ImageView的大小,CENTER_CROP/centerCrop//// 按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)//imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);//////设置边距//imageView.setPadding(8, 8, 8, 8);//} else {//imageView = (ImageView) convertView;////}////imageView.setImageResource(imagesRes[position]);//设置要显示的图片资源////return imageView;convertView = mInflater.inflate(R.layout.item_layout, null);ImageView imageView = (ImageView) convertView.findViewById(R.id.m_image);imageView.setImageResource(imagesRes[position]);myTextView=(TextView) convertView.findViewById(R.id.m_name);//myTextView.setText(text);return convertView;}}

FileBean.java
package com.mct.utils;public class FileBean {private int icon;//图片下标private String fileName;//文件名字private String path;//文件路径private String lenght; // 456KBprivate boolean isDirectory;//是否为文件夹public int getIcon() {return icon;}public void setIcon(int icon) {this.icon = icon;}public String getFileName() {return fileName;}public void setFileName(String fileName) {this.fileName = fileName;}public String getPath() {return path;}public void setPath(String path) {this.path = path;}public String getLenght() {return lenght;}public void setLenght(String lenght) {this.lenght = lenght;}public boolean isDirectory() {return isDirectory;}public void setDirectory(boolean isDirectory) {this.isDirectory = isDirectory;}public FileBean(int icon, String fileName, String path, String lenght,boolean isDirectory) {super();this.icon = icon;this.fileName = fileName;this.path = path;this.lenght = lenght;this.isDirectory = isDirectory;}public FileBean() {super();}}

FileUtils.java
package com.mct.utils;import java.io.File;import com.mct.gridviewdemo.R;public class FileUtils {/** * 获取后缀名 */public static String geType(String fileName) {int index = fileName.lastIndexOf(".");if (index > 0) {return fileName.substring(index + 1);//截取后缀名}return null;}/** * 判断是否为图像 */public static boolean isImgae(String type) {return type != null&& (type.equals("jpg") || type.equals("jpeg")|| type.equals("png") || type.equals("gif") || type.equals("bmp"));}public static final int getIcon(File file){if(file.isDirectory()){return R.drawable.a;}else{return R.drawable.b;}}}

xml代码:
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <GridView        android:id="@+id/m_gridview"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:gravity="center"        android:horizontalSpacing="3dip"        android:numColumns="3"        android:stretchMode="columnWidth"        android:verticalSpacing="3dip" >    </GridView></LinearLayout>

item_layout.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:orientation="vertical" >    <ImageView        android:id="@+id/m_image"        android:layout_width="120dip"        android:layout_height="80dip"        android:adjustViewBounds="true"        android:scaleType="fitCenter"        android:src="@drawable/ic_launcher" />    <TextView        android:id="@+id/m_name"        android:layout_width="120dip"        android:layout_height="40dip"        android:background="#666666"        android:gravity="center"        android:text="ABC"        android:textColor="#ffffff"        android:textSize="18sp" /></LinearLayout>

代码框架如下:





0 0
原创粉丝点击