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>
<?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
- Android复习之GridView
- Android复习之Scroller
- Android复习之布局
- Android复习之CheckBox
- Android复习之RatingBar
- Android复习之ImageView
- Android复习之ImageButton
- Android复习之Tab
- Android复习之Menu
- android复习之计划
- Android复习之BroadCastReceiver
- Android 控件之GridView
- Android 控件之GridView
- android之GridView
- Android之GridView
- android之GridView
- Android之GridView
- android学习之-GridView
- 微软数据结构+算法面试100题
- erlang lists操作
- 【蓝桥杯练习系统】 基础练习 查找整数
- 屏幕分辨率、屏幕尺寸以及屏幕适配和图片分辨率
- iOS开发学习笔记 (一)表视图基础 Table Views
- Android复习之GridView
- 获取农历方法
- 周一的感觉就像失恋一样 周二的感觉就像找不到对象一样
- android中正确导入第三方jar包
- JQuery插件第四十一:表单输入框获取指定小数位并且四舍五入
- 判断日期是今天,昨天还是明天
- 总有一段时间我们会期待被放逐放逐到无尽的开阔
- hdu1716
- 乘积的末三位