android学习---Gallery画廊视图

Gallery与Spinner有共同父类:AbsPinner,说明Gallery与Spinner都是一个列表框。它们之间的区别在于Spinner显示的是一个垂直的列表选择框,而Gallery显示的是一个水平的列表选择框。Spinner的作用是供用户选择,而Gallery则允许用户通过拖动查看上一个,下一个。

Gallery用法与Spinner的用法形似,只要为它提供一个内容Adapter就可以了。Adapter的getView方法返回View作为Gallery列表的列表项。如果程序需要监控Gallery选择项的改变,可以添加OnItemSelectedListener监听即可。

Gallery 的xml属性

下面通过一个幻灯片例子来熟悉Gallery

(1)activity_main.xml     布局一个ImageSwitcher 和Gallery         ImageSwitcher用于显示Gallery选中的图片

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <ImageSwitcher
        android:id="@+id/imgSwt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <Gallery
        android:id="@+id/gallery"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="25dp"
        android:unselectedAlpha="0.7"
        android:spacing="2pt"/>
</LinearLayout>

(2)MainActivity.java

package com.example.gallery;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.RadioGroup.LayoutParams;
import android.widget.ViewSwitcher.ViewFactory;

public class MainActivity extends Activity {

	//定义组件
	private ImageSwitcher imgSwt = null;
	private Gallery gallery = null;

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

		//获取布局组件
		imgSwt = (ImageSwitcher) findViewById(R.id.imgSwt);
		gallery = (Gallery) findViewById(R.id.gallery);

		//图片
		final int images[] = new int[]{
				R.drawable.name01,R.drawable.name02,R.drawable.name03,
				R.drawable.name04,R.drawable.name05,R.drawable.name06,
				R.drawable.name07,R.drawable.name08,R.drawable.name09,
				R.drawable.name10,R.drawable.name11,R.drawable.name12
		};
		//设置图片切换效果
		imgSwt.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
		imgSwt.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
		//设置ViewFactory对象
		imgSwt.setFactory(new ViewFactory() {

			@Override
			public View makeView() {
				ImageView imageView = new ImageView(MainActivity.this);
				imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
				imageView.setLayoutParams(new ImageSwitcher.LayoutParams(350,350));
				return imageView;
			}
		});

		//创建BaseAdapter对象,负责提供Gallery显示所有图像
		BaseAdapter adapter = new BaseAdapter() {

			@Override
			public View getView(int position, View convertView, ViewGroup parent) {
				//创建imageview
				ImageView imageView = new ImageView(MainActivity.this);
				imageView.setImageResource(images[position]);
				imageView.setScaleType(ImageView.ScaleType.FIT_XY);
				imageView.setLayoutParams(new Gallery.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
				return imageView;
			}

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

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

			@Override
			public int getCount() {
				return images.length;
			}
		};

		//给Gallery设置适配器
		gallery.setAdapter(adapter);
		//添加事件
		gallery.setOnItemSelectedListener(new OnItemSelectedListener() {

			@Override
			public void onItemSelected(AdapterView<?> parent, View view,
					int position, long id) {
				imgSwt.setImageResource(images[position]);
			}

			@Override
			public void onNothingSelected(AdapterView<?> parent) {
				// TODO Auto-generated method stub

			}
		});

	}

}

运行效果如下:

android学习---Gallery画廊视图,布布扣,bubuko.com

时间: 2024-10-11 05:52:27

android学习---Gallery画廊视图的相关文章

Android 自学之画廊视图(Gallery)功能和用法

Gallery与之前讲的Spinner有共同的父类:AbsSpinner,表明Gallery和Spinner都是一个列表框.他们之间的区别在于Spinner显示的是一个垂直的列表框,而Gallery显示的是一个水平的列表框.Gallery与Spinner有一个区别:Spinner的作用是供用户选择,而Gallery则允许用户通过拖动来查看上一个.下一个列表项. Gallery常用的XML属性及相关方法 XML属性 相关方法 说明 android:animationDuration setAnim

android学习之--网格视图(GridView)和图像切换器(ImageSwitcher)

         GridView用于在界面上按行.列分布显示多个组件.GridView和ListView有共同父类:AbsListView.GridView与ListView的区别在于:ListView只在一个方向上分布,GridView在两个方向上分布.所以使用GridView时一般都指定numColumns大于1,否则该属性默认值为1,就意味着改GridView只有一列,那就变成了ListView GridView的xml属性 android:strtchMode 的值为:      Im

Gallery画廊视图

画廊视图使用Gallery表示,能够按水平方向显示内容,并且可以手指直接拖动图片和移动,一般用来浏览图片,,被选中的选项位于中间,并且可以响应事件显示信息.在使用画廊视图时,首先在屏幕上添加Gallery组件,通常使用标记在XML而布局文件中添加. 画廊视图在4.0后已经过期,但是我们仍然可以使用,不过后面我们将用水平的ListView自定义组件来实现这个效果,在自定义视图中讲解. 常用属性:1. android:animationDuration 用于设置列表项切换时的动画持续时间2. and

android学习Gallery和ImageSwitch的使用

Gallery组件被称之为画廊,是一种横向浏览图片的列表,在使用android API 19 Platform 时会发现Gallery被画上了横线,表明谷歌已经不推荐使用该组件了, * @deprecated This widget is no longer supported. Other horizontally scrolling* widgets include {@link HorizontalScrollView} and {@link android.support.v4.view

android学习笔记15——Galley

Gallery==>画廊视图 Gallery和Spinnery父类相同——AbsSpinner,表明Garrey和Spinner都是一个列表框. 两者之间的区别是:Spinner显示的是一个垂直列表框,Gallery显示的是一个水平列表框:   Spinner的作用是供用户选择,而Gallery则允许用户通过拖动来查看上一个.下一个列表项. Garrey常用XML属性:  android:animationDuration  setAnimationDuration(int) 设置列表项切换时的

&lt;Android&gt;列表、网格、画廊视图及适配器的绑定

列表视图和适配器的绑定 列表视图既可以使用ListView组件,也可以继承ListActivity.显示可以是ArrayAdapter,也可以是游标SimpleCursorAdapter,还可以是继承BaseAdapter展示其它视图. Cursor c = getContentResolver().query(People.CONTENT_URI, null, null, null, null); //获得通讯录联系人游标对象Cursor startManagingCursor(c); //实

【转】 Pro Android学习笔记(二一):用户界面和控制(9):Gallery和SimpleAdapter

Gallery画廊式控件,如图所示,但是在API level 16,也即Android 4.1,被deprecated,可以使用HorizontableScroolView和ViewPager.但是后来者都不是AdapterView,所有我们仍快速地略过Gallery,也顺带学习一下SimpleAdapter. XML layout文件如下: <?xml version="1.0" encoding="utf-8"?> <Gallery xmlns

android学习--视图列表(ListView和ListActivity)

说明: 视图列表(ListView和ListActivity)与AutoComplete.Spinner类似,它们都需要一个供显示的列表项,可以需要借助于内容Adapter提供显示列表项 创建ListView有两种方式: (1)直接使用ListView进行创建 (2)Activity继承ListActivity ListView的常用XML属性 下面分别用两种方式创建ListView 方式一:直接使用ListView进行创建 (1)   main_activity.xml 下面布局两个listV

Android学习笔记二十四之ListView列表视图二

Android学习笔记二十四之ListView列表视图二 前面一篇我们介绍了常用的几种适配器的简单实现和ListView的简单使用,这一篇中,我们介绍一下ListView的优化和一些其它的问题. ListView优化方法一 在ListView中,我们最常用的就是自定义Adapter,在我们自定义Adapter中,需要实现两个比较重要的方法getCount()和getView(),前者是负责计算ListView的总Item数,后者是生成Item,有多少个Item就会调用getView()方法多少次