GridView 控件和Gallery 控件

GridView 控件
(一)概述
    GridView 控件称为网格列表,在 android 中的使用频率较高,该控件可按多行多列显示信息,表现能力很强。
(二)常用属性

属性名           Java的方法        作用

columnWidth       setColumnWidth(int)    设置列宽度
gravity           setGravity(int)    设置对齐方式
horizontalSpacing 
           setHorizontalSpacing(int)
                    设置各元素之间的水平间距
numColumns       setNumColumns(int)    设置列数
stretchMode       setStrechMode(int)    设置拉伸模式
verticalSpacing       setVerticalSpacing(int) 设置各元素间的垂直间距

 

其中,

stretchMode 有以下可选的属性值
NO_STRETCH        不拉伸
STRETCH_SPACING        仅拉伸元素之间的间距
STRETCH_SPACING_UNIFORM 表格元素本身、元素之间的间距一起拉伸
STRETCH_COLUMN_WIDTH    仅拉伸表格元素本身

 


 

 

Gallery 控件
(一)概述
    Gallery(画廊)控件与 Spinner 类相似,都是 AbsSpinner 类的子类。它们之间的区别在于:Spinner 显示的是一个垂直列表选择框,而 Gallery 显示的是一个水平列表选择框,并且 Gallery 允许用户水平拖动列表框。
    ListView 是垂直列表,Gallery 可以理解为是水平列表。

(二)常用属性

XML属性                  相关方法                            说明
Gravity                   setGravity(int)                   设置对齐方式
spacing                  setSpacting(int)                 设置列表项之间的间距
unselectedAlpha      setUnselectedAlpha(float)     设置未选中的列表项的透明度

 


(三)重要接口、方法
1、OnItemClickListener 接口:监听列表项单击事件。该接口定义了如下方法:
1)void onItemClick(AdapterView<?> parent,View view,int position,long id)
    作用:响应用户单击列表项的事件。
参数说明:
第一个参数-parent:当前的 Gallery 对象
第二个参数-view:被单击的列表项
第三个参数-position:被单击的列表项在适配器中的位置(索引值)
第四个参数-id:被单击的列表项在列表中所在列的索引值。

2)void setOnItemClickListener(OnItemClickListener listener)
    作用:设置响应用户单击事件的方法
参数说明:
Listener:实现了 OnItemClickListener 接口的对象。


实例:

package com.jxust.day_05_01_listviewdemo;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

	Gallery mGallery;
	List<GeneralBean> mGenerals; // 代表十个军事家的集合
	GeneralAdapter mAdapter;
	int[] resid = { R.drawable.baiqi, R.drawable.caocao, R.drawable.chengjisihan,
			R.drawable.hanxin, R.drawable.lishimin, R.drawable.nuerhachi, R.drawable.sunbin,
			R.drawable.sunwu, R.drawable.yuefei, R.drawable.zhuyuanzhang };

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initData(); // 初始化数据
		initView();
		setListener();		//设置监听器
	}

	private void setListener() {
		setOnItemClickListener();
		setOnItemLongClickListener();
	}

	// 长按操作
	private void setOnItemLongClickListener() {
		mGallery.setOnItemLongClickListener(new OnItemLongClickListener() {

			@Override
			public boolean onItemLongClick(AdapterView<?> parent, View view, int position,
						long id) {
				Toast.makeText(MainActivity.this, mGenerals.get(position).getName()+"被长按", 2000).show();
				//false的作用就是告诉系统自己没有处理,交给其他监听器,从而就到了短按操作的那个监听器
				//true的作用就是告诉系统自己已经处理了
				return true;	
			}
		});
	}

	// 短按操作
	private void setOnItemClickListener() {
		mGallery.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
				Toast.makeText(MainActivity.this, mGenerals.get(position).getName()+"被短按", 2000).show();
			}
		});
	}

	private void initView() {
		mGallery = (Gallery) findViewById(R.id.galleryGeneral);
		mAdapter = new GeneralAdapter(); // 创建适配器
		// 和ListView 关联起来
		mGallery.setAdapter(mAdapter);
	}

	private void initData() {
		// 将资源中的字符串数组转换为Java数组
		String[] names = getResources().getStringArray(R.array.generals);
		mGenerals = new ArrayList<GeneralBean>();
		for (int i = 0; i < names.length; i++) {
			GeneralBean bean = new GeneralBean(resid[i], names[i]);
			mGenerals.add(bean);
		}

	}

	// 定义代表军事家的适配器类
	class GeneralAdapter extends BaseAdapter {

		@Override
		public int getCount() {
//			return mGenerals.size();
			return Integer.MAX_VALUE;
		}

		@Override
		public Object getItem(int position) {
			return mGenerals.get(position);
		}

		@Override
		public long getItemId(int position) {
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			// 拿到 ListView 的布局并且转换为 View 类型的对象
			View layout = View.inflate(MainActivity.this, R.layout.item_generals, null); // root表示的是父容器
			// 找到显示军事家头像的 ImageView
			// layout的作用就是将目标转换为 layout.item_generals
			ImageView ivThumb = (ImageView) layout.findViewById(R.id.ivThumb);
			// 找到显示军事家名字的 TextView
			TextView tvName = (TextView) layout.findViewById(R.id.tvName);
			// 获取军事家中下标是 position 的军事家对象
			GeneralBean bean = (GeneralBean) getItem(position%mGenerals.size());
			// 显示军事家头像
			ivThumb.setImageResource(bean.getResid());
			// 显示军事家的姓名
			tvName.setText(bean.getName());

			return layout;
		}

	}
}

 

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/ivThumb"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:scaleType="fitXY"
        android:src="@drawable/baiqi" />

    <TextView
        android:id="@+id/tvName"
        android:layout_width="80dp"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="白起"
        android:textSize="20sp" />

</LinearLayout>

 

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Day_05_01_ListViewDemo</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
	<string-array name="generals">
	    <item >白起</item>
	    <item >曹操</item>
	    <item >成吉思汗</item>
	    <item >韩信</item>
	    <item >李世民</item>
	    <item >努尔哈赤</item>
	    <item >孙膑</item>
	    <item >孙武</item>
	    <item >岳飞</item>
	    <item >朱元璋</item>
	</string-array>
    
</resources>

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Gallery
        android:id="@+id/galleryGeneral"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:spacing="2dp" />

</RelativeLayout>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值