标签:android 自学 android开发 android基础学习 android xml
网格视图GridView其实就类似与电视上的九宫格,一般用于罗列多个元素的时候。要掌握GridView的用法首先要掌握BaseAdapter基础数据适配器的使用。
GridView的一些属性:Android:columnWidth 列的宽度
Android:gravity 对齐方式
Android:horizomtalSpacing 列 间距
Android:stretchMode 缩放模式
Android:verticalSpacing 行 间距
getAdapter()获得与此组件相关的适配器
setOnItemClickListener()对GridView的子项进行监听 以便对子项进行具体操作
下面就依照此图做一个实例
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"
/>
主Java类:
package com.tw.ganasky;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.Toast;
//网格视图实例 继承自Activity
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 设置一个Activity的显示界面,显示界面在res下的layout中
setContentView(R.layout.activity_main);
// 取得GridView对象
GridView gridview=(GridView)findViewById(R.id.gridview);
// 添加元素给GridView
gridview.setAdapter(new ImageAdapter(this));
// 设置Gallery的背景
gridview.setBackgroundResource(R.drawable.bg0);
// 事件监听
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
DisplayToast("您单击了" + (position + 1) + " 号图片");
}
});
}
//显示Toast
public void DisplayToast(String str){
Toast toast=Toast.makeText(this, str, Toast.LENGTH_SHORT);
// 设置toast的显示位置
toast.setGravity(Gravity.TOP, 0,180);
// 显示该toast
toast.show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
新建一个ImageAdapter类:
package com.tw.ganasky;
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上下文,在本例中是指MainAcitivity.java
private Context mContext;
// 定义整型数组 即图片数据资源
private Integer[] mImages={
R.drawable.img1,
R.drawable.img2,
R.drawable.img3,
R.drawable.img4,
R.drawable.img5,
R.drawable.img6,
R.drawable.img7,
};
// 构造函数
public ImageAdapter(Context c) {
// TODO Auto-generated constructor stub
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;
}
//当列表中每一项显示在页面的时候,都会调用Adapter的getView方法返回一个View
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ImageView imageView;
if(convertView == null){
// 给ImageView设置资源
imageView=new ImageView(mContext);
// 设置布局 图片85*85显示
imageView.setLayoutParams(new GridView.LayoutParams(85,85));
// 设置显示比例类型
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
}
else
{
imageView=(ImageView) convertView;
}
imageView.setImageResource(mImages[position]);
return imageView;
}
}
看书笔记!
标签:android 自学 android开发 android基础学习 android xml
原文地址:http://blog.csdn.net/farley119/article/details/39925439