Android GridView九宫图

属性名称

描述

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

两行之间的间距。

 案例一:

1.定义一个布局文件:gridview.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">
    <GridView
        android:id="@+id/gridview_main"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:numColumns="auto_fit"
        android:verticalSpacing="1dp"
        android:horizontalSpacing="1dp"
        android:columnWidth="90dp"
        android:stretchMode="columnWidth"
        android:gravity="center"
        >
    </GridView>
</LinearLayout>

 android:numColumns="auto_fit"--列数设置为自动;

android:columnWidth="90dp"--每列的列宽,也就是item的宽度

android:verticalSpacing="1dp"--两行之间的边距

android:horizontalSpacing="1dp"--两列之间的边距

android:stretchMode="columnWidth"--缩放与列宽大小同步

 2。接下来定义gridview_item.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/gridview_imageview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
     >
    </ImageView>
    <TextView 
        android:id="@+id/gridview_textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView01"
        android:gravity="center"
      />
</LinearLayout>

3.最后定义Java的源代码了,GridViewDemo.java

package com.test;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.SimpleAdapter;
public class GridViewDemo extends Activity {
	int [] image={R.drawable.android,R.drawable.blackberry,R.drawable.windowshone,R.drawable.windowshone,R.drawable.blackberry,R.drawable.android,R.drawable.windowshone,R.drawable.ios,R.drawable.blackberry};
	private GridView gridView;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.gridview_main);
		
		gridView = (GridView)findViewById(R.id.gridview_main);
		//生成动态数组,并且转入数据 
		ArrayList<HashMap<String, Object>>  list=new ArrayList<HashMap<String,Object>>();
		
		for(int i=0;i<9;i++)
		{
			HashMap<String, Object>  map = new HashMap<String, Object>();
			
			   map.put("ItemImage", image[i]);//添加图像资源的ID  
			   map.put("itemtext","Amigos_pop-"+String.valueOf(i));
			   list.add(map);
		}
		 //生成适配器的ImageItem <====> 动态数组的元素,两者一一对应  
		SimpleAdapter   adapter=new SimpleAdapter(this, //数据来源 
				list,R.layout.gridview_item,//XML实现  
				new String[]{"ItemImage","itemtext"}, //动态数组与ImageItem对应的子项          
				new int[]{R.id.gridview_imageview,R.id.gridview_textview}//  //ImageItem的XML文件里面的一个ImageView,两个TextView ID  
		       );
		 //添加并且显示  
		gridView.setAdapter(adapter);
		//添加消息处理
		gridView.setOnItemClickListener(clickListener);
	}
	  //当AdapterView被单击(触摸屏或者键盘),则返回的Item单击事件  
	private  OnItemClickListener  clickListener=new OnItemClickListener() {

		@Override
		public void onItemClick(AdapterView<?> arg0,//The AdapterView where the click happened   
                View arg1,//The view within the AdapterView that was clicked  
                int arg2,//The position of the view in the adapter  
                long arg3//The row id of the item that was clicked  
				) 
		{
			
			HashMap<String, Object>  item=(HashMap<String, Object>)arg0.getItemAtPosition(arg2);
			
			setTitle((String)item.get("itemtext"));
		}
	};
}

4:执行效果:

 ===============================================================================

案例二:同样的效果:

布局文件使用上面一样的:

定义一个ImageAdapter类,此类继承BaseAdapter如下:

package com.test;

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 GridViewAdapter extends BaseAdapter {

	//定义Context
	private Context  mContext;
	
	//定义整形数组 (图片资源)
	private  int []  mimages=
	{
	 R.drawable.android,R.drawable.blackberry,R.drawable.windowshone,
	 R.drawable.windowshone,R.drawable.blackberry,R.drawable.android,
	 R.drawable.windowshone,R.drawable.ios,R.drawable.blackberry
	
	};
	
	public GridViewAdapter(Context  c) 
	{
		mContext=c;
	}
	
	//获取图片的个数
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return mimages.length;
	}
   // 获取图片在库中的位置
	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return position;
	}
  
	//获取图片ID
	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) 
	{
       ImageView mimageView;
       if(convertView==null)
       {
    	   //给Imageview设置资源
    	   mimageView = new ImageView(mContext);
    	   //设置布局图片120*120显示
  	 
    	   mimageView.setLayoutParams(new GridView.LayoutParams(85, 85));
    	   
    	   mimageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    	   
    	   mimageView.setPadding(8, 8, 8, 8);
       }else
       {
    	   mimageView=(ImageView) convertView; 
       }
       mimageView.setImageResource(mimages[position]);
	   return mimageView;
	}
}

package com.test;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class GridViewDemo_2 extends Activity {
	private GridView  gridView;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.gridview_main);
		
		gridView = (GridView)findViewById(R.id.gridview_main);
		
		gridView.setAdapter(new GridViewAdapter(this));//调用GridViewAdapter
		
		gridView.setOnItemClickListener(clickListener);
	}
	
	private  OnItemClickListener  clickListener =new OnItemClickListener() {

		@Override
		public void onItemClick(AdapterView<?> arg0, View arg1, int position,
				long id) {
			Toast.makeText(GridViewDemo_2.this, ""+position,Toast.LENGTH_SHORT).show();//显示信息; 
			
		}
	};
}

 效果:

 

 

 

 

 

 

转载于:https://my.oschina.net/amigos/blog/62263

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值