展会信息港展会大全

Android GridView九宫图实现方法详解
来源:互联网   发布日期:2015-10-03 10:46:18   浏览:3205次  

导读:属性名称描述android:columnWidth设置列的宽度。android:gravity设置此组件中的内容在组件中的位置。可选的值有:top、bottom、left、right、center_vertical、 fill_vertical、center_horizontal、fill_horizo......

属性名称

描述

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 <====> 动态数组的元素,两者一一对应

SimpleAdapteradapter=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单击事件

privateOnItemClickListenerclickListener=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 ContextmContext;

//定义整形数组 (图片资源)

privateint []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(Contextc)

{

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 GridViewgridView;

@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);

}

privateOnItemClickListenerclickListener =new OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> arg0, View arg1, int position,

long id) {

Toast.makeText(GridViewDemo_2.this, ""+position,Toast.LENGTH_SHORT).show();//显示信息;

}

};

}

效果:

赞助本站

人工智能实验室

相关热词: GridView 九宫图

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港