【Android开发】高级组件-画廊视图

画廊视图(Gallery)表示,能够按水平方向显示内容,并且可用手指直接拖动图片移动,一般用来浏览图片,被选中的选项位于中间,并且可以响应事件显示信息。在使用画廊视图时,首先需要在屏幕上添加Gallery组件,通常使用<Gallery>标记在XML布局文件中添加。其基本语法如下:

<Gallery
    属性列表   
>
</Gallery>

Gallery组件支持的XML属性表如下:
android:animationDuration  用于设置列表切换时的动画持续时间
android:gravity    用于设置对其方式
android:spacing    用于设置列表之间的间距
android:unselectedAlpha    用于设置没有选中的列表项的透明度

使用画廊视图,也需要使用Adapter提供要显示的数据。通常使用BaseAdapter类为Gallery组件提供数据。下面通过一个具体的实例演示通过BaseAdapter适配器为Gallery组件提供要显示的图片。

res/layout/main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:id="@+id/layout"
    android:gravity="center">
	<Gallery
	    android:id="@+id/gallery1"
	    android:spacing="5px"
	    android:unselectedAlpha="0.6"
	    android:layout_width="match_parent"
	    android:layout_height="wrap_content"/>
</LinearLayout>

在res/values目录中,创建一个名为attr.xml的文件,在该文件中定义一个styleable对象,用于组合多个属性。这里只指定了一个系统自带的android:galleryItemBackground属性,用于设置各选项的背景。具体代码如下:
res/values/attr.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="Gallery">
    	<attr name="android:galleryItemBackground"/>
    </declare-styleable>
</resources>

MainActivity:

package com.example.test;

import android.app.Activity;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends Activity{

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		Gallery gallery=(Gallery)findViewById(R.id.gallery1);
		final int [] imageId=new int[]{R.drawable.img01,R.drawable.img02,R.drawable.img03,R.drawable.img04,
				R.drawable.img05,R.drawable.img06,R.drawable.img07,R.drawable.img08,
				R.drawable.img_top,R.drawable.ic_launcher,R.drawable.in,R.drawable.stop,};//定义并初始化保存图片id的数组
		//创建并改写BaseAdapter适配器
		BaseAdapter adapter=new BaseAdapter(){

			@Override
			public View getView(int position, View convertView, ViewGroup parent) {
				ImageView imageView;//声明一个ImageView的对象
				if(convertView==null){
					imageView=new ImageView(MainActivity.this);//实例化ImageView对象
					imageView.setScaleType(ImageView.ScaleType.FIT_XY);//设置缩放方式
					imageView. setLayoutParams(new Gallery.LayoutParams(180, 135));//设置ImageView宽高
					TypedArray typedArray=obtainStyledAttributes(R.styleable.Gallery);//获取自定义属性对象
					//为imageView设置背景图片的资源,使用了自定义属性对象typedArray获取自定义背景资源值
					imageView.setBackgroundResource(
							typedArray.getResourceId(R.styleable.Gallery_android_galleryItemBackground, 0));
					imageView.setPadding(5, 0, 5, 0);//设置内边距
				}else{
					//如果以前new过View就使用convertView的缓存
					imageView=(ImageView)convertView;
				}
				imageView.setImageResource(imageId[position]);
				return imageView;
			}

			//功能:获得当前选项的id
			@Override
			public long getItemId(int position) {
				return position;
			}

			//功能:获得当前选项
			@Override
			public Object getItem(int position) {
				return position;
			}

			//获得数量
			@Override
			public int getCount() {
				return imageId.length;
			}

		};

		gallery.setAdapter(adapter);
		gallery.setSelection(imageId.length/2);
		gallery.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View v, int position,
					long id) {
				Toast.makeText(MainActivity.this, "您选择了第"+String.valueOf(position)+"张图片",
							Toast.LENGTH_SHORT).show();
			}
		});
	}
}

效果如图:

转载请注明出处:http://blog.csdn.net/acmman/article/details/44978267

时间: 2024-10-06 04:38:42

【Android开发】高级组件-画廊视图的相关文章

Android开发之自定义View(视图)用法详解_Android

本文实例讲述了Android开发之自定义View(视图)用法.分享给大家供大家参考,具体如下: View类是Android的一个超类,这个类几乎包含了所有的屏幕类型.每一个View都有一个用于绘图的画布,这个画布可以进行任意扩展.在游戏开发中往往需要自定义视图(View),这个画布的功能更能满足我们在游戏开发中的需要.在Android中,任何一个View类都只需重写onDraw 方法来实现界面显示,自定义的视图可以是复杂的3D实现,也可以是非常简单的文本形式等. 为了实现自定义View,需要创建

Android开发之自定义View(视图)用法详解

本文实例讲述了Android开发之自定义View(视图)用法.分享给大家供大家参考,具体如下: View类是Android的一个超类,这个类几乎包含了所有的屏幕类型.每一个View都有一个用于绘图的画布,这个画布可以进行任意扩展.在游戏开发中往往需要自定义视图(View),这个画布的功能更能满足我们在游戏开发中的需要.在Android中,任何一个View类都只需重写onDraw 方法来实现界面显示,自定义的视图可以是复杂的3D实现,也可以是非常简单的文本形式等. 为了实现自定义View,需要创建

Android开发中获取View视图宽与高的常用方法小结

本文实例讲述了Android开发中获取View视图宽与高的常用方法.分享给大家供大家参考,具体如下: 一.根据WindowManager管理器获得 1)这两种方法在屏幕未显示的时候,还是处于0的状态,即要在setContentView调用之后才有效. 2)Activity必须如此设置才能获得view的宽高 //设置为无标题 requestWindowFeature(Window.FEATURE_NO_TITLE); //设置为全屏模式getWindow().setFlags(WindowMana

Android 开发音频组件(Vitamio FAQ)详细介绍_Android

 一.Vitamio介绍   1.1 Vitamio是什么?    Vitamio是Android平台视音频播放组件,支持播放几乎格式的视频以及主流网络视频流(http/rtsp/mms等),详细的中文介绍: 这里.    Vitamio官网:http://vitamio.org/    Vitamio微博:http://weibo.com/vitamio     VPlayer官网:http://vplayer.net    Vitamio豆瓣:http://site.douban.com/1

Android开发四大组件Activity/Service/Broadcast Receiver/Content Provider详解

Android开发的四大组件一.Activity详解二.Service详解三.Broadcast Receiver详解四.Content Provider详解外加一个重要组件 intent的详解. 一.Activity详解 Activty的生命周期的也就是它所在进程的生命周期. 一个Activity的启动顺序: onCreate()-->onStart()-->onResume() 当另一个Activity启动时:第一个Activity onPause()-->第二个Activity  

Android 开发音频组件(Vitamio FAQ)详细介绍

一.Vitamio介绍 1.1 Vitamio是什么? Vitamio是Android平台视音频播放组件,支持播放几乎格式的视频以及主流网络视频流(http/rtsp/mms等),详细的中文介绍: 这里. Vitamio官网:http://vitamio.org/ Vitamio微博:http://weibo.com/vitamio VPlayer官网:http://vplayer.net Vitamio豆瓣:http://site.douban.com/145815/ 1.2 关于Vitami

Android开发四大组件之实现电话拦截和电话录音_Android

一.问题描述 使用BordercastReceiver和Service组件实现下述功能: 1.当手机处于来电状态,启动监听服务,对来电进行监听录音. 2.设置电话黑名单,当来电是黑名单电话,则直接挂断. 当拨打电话或电话状态发生改变时,系统就会发出有序广播,因此我们可以使用BordercastReceiver接受广播,因BordercastReceiver执行时间短不能执行耗时任务也不能使用子线程,因此我们应启动一个Service来监听电话并进行处理 二.加入AIDL文件 Android没有对外

【Android开发】高级组件-网格视图

网格视图(GridView)是按照行.列分布式的方式来显示多个组件,通常用于显示图片或是图标等.在使用网格视图时,首先要在屏幕上添加GridView组件,通常使用<GridView>标记在XML布局文件中添加,其基本语法如下: <GridView     属性列表 > <GridView> GridView组件支持的XML属性如表所示:1.android:numColumns="4"   //GridView的列数设置为4列 2.android:co

一个帖子学会Android开发四大组件

原贴地址http://www.cnblogs.com/pepcod/archive/2013/02/11/2937403.html 写的非常不错.