画廊视图(Gallery)的功能和用法
Gallery与Spinner组件有共同的父类:AbsSpinner,表明Gallery和Spinner是同一个列表框。它们之间的区别是Spinner显示的垂直的列表选择框,而Gallery显示的是一个水平的列表选择框。Gallery和Spinner还有一个区别:Spinner的作用是供用户选择,而Gallery则允许用户通过拖动来查看上一个、下一个列表项。
Gallery本身的用法非常简单——基本上与Spinner的用法相似,只要为它提供一个内容Adapter即可,该Adapter的getView方法所返回的View将作为Gallery列表的列表项。如果程序要监控到Gallery列表项的改变,通过为Gallery添加OnItemSelectedListener监听器即可实现。
实例:“幻灯片”式图片查看器
本实例也是带预览的图片浏览器,但本实例的界面更加友好,因为本实例采用Gallery作为图片预览器,Gallery会生成一个“水平列表”,每个列表项就是一张图片预览,而且Gallery生成的“水平列表”可以让用户通过拖动来切换列表项。
下面是本实例的界面布局文件。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<!-- 定义一个ImageView组件 -->
<ImageView android:id="@+id/imageView"
android:layout_width="320dp"
android:layout_height="320dp"
android:layout_gravity="center"
/>
<!-- 定义一个Gallery组件 -->
<Gallery android:id="@+id/gallery"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:unselectedAlpha="0.6"
android:spacing="2pt"/>
</LinearLayout>
上面的布局文件非常简单,仅仅定义了两个组件:ImageView和Gallery组件。接下来的主程序很简单:为Gallery传入一个Adapter对象,这样Gallery即可正常工作。
为了让ImageView可显示Gallery中选中的图片,为Gallery绑定OnItemSelectedListener监听器即可。程序代码如下:
package org.crazyit.helloworld; import android.os.Bundle;
import android.app.Activity;
import android.content.res.TypedArray;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.*;
import android.widget.AdapterView.OnItemSelectedListener; public class GalleryTest extends Activity {
int[] imageIds=new int[]{
R.drawable.shuangzi,
R.drawable.shuangyu,
R.drawable.chunv,
R.drawable.tiancheng,
R.drawable.tianxie,
R.drawable.sheshou,
R.drawable.juxie,
R.drawable.shuiping,
R.drawable.shizi,
R.drawable.baiyang,
R.drawable.jinniu,
R.drawable.mojie
}; @SuppressWarnings("deprecation")
Gallery gallery;
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gallery_test);
gallery=(Gallery)findViewById(R.id.gallery);
//获取显示图片的ImageView对象
imageView=(ImageView)findViewById(R.id.imageView);
//创建一个BaseAdapter对象,该对象负责提供Gallery所显示的列表项
BaseAdapter adapter=new BaseAdapter()
{ @Override
public int getCount() {
// TODO Auto-generated method stub
return imageIds.length;
} @Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
} @Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
} @SuppressWarnings("deprecation")
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
//创建一个ImageView
ImageView imageView=new ImageView(GalleryTest.this);
imageView.setImageResource(imageIds[position]);
//设置ImageView的缩放类型
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
//为imageView设置布局参数
imageView.setLayoutParams(new Gallery.LayoutParams( 175,
275));
//设置背景风格。Gallery背景风格定义在attrs.xml中
TypedArray typedArray=obtainStyledAttributes(R.styleable.Gallery);
imageView.setBackgroundResource(typedArray.getResourceId(R.styleable.Gallery_android_galleryItemBackground, 1)); return imageView;
}
};
gallery.setAdapter(adapter);
gallery.setOnItemSelectedListener(new OnItemSelectedListener(){
//当Gallery选中项发生改变时触发该方法
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
imageView.setImageResource(imageIds[position]);
} @Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub } });
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.gallery_test, menu);
return true;
} }
上面代码中使用了R.styleable.Gallery资源,该资源是/res/values/attrs.xml文件,其布局文件如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="Gallery">
<attr name="android:galleryItemBackground" />
</declare-styleable>
</resources>
上面的程序中粗体字代码创建了一个BaseAdapter对象,该Adapter将负责为Gallery提供列表项。运行上面的程序,将可以看到如下效果:

画廊视图(Gallery)的功能和用法的更多相关文章
- 画廊视图(Gallery)的功能和用法
Gallery与Spinner组件有共同的父类:AbsSpinner,表明Gallery和Spinner都是一个列表框.它们之间的区别在于Spinner显示的是一个垂直的列表选择框吗,而Gallery ...
- Android 自学之画廊视图(Gallery)功能和用法
Gallery与之前讲的Spinner有共同的父类:AbsSpinner,表明Gallery和Spinner都是一个列表框.他们之间的区别在于Spinner显示的是一个垂直的列表框,而Gallery显 ...
- Android应用开发学习之画廊视图
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 画廊视图Gallery能按水平方向显示一组图片,并可以拖动图片.下面我们来看一个使用画廊视图的例子,其运行效果如下: ...
- Android BaseAdapter Gallery 画廊视图 (左右拖动图片列表拖至中间时图片放大显示)
画廊视图使用Gallery表示,能够按水平方向显示内容,并且可以手指直接拖动图片和移动,一般用来浏览图片,,被选中的选项位于中间,并且可以响应事件显示信息.在使用画廊视图时,首先在屏幕上添加Galle ...
- 日历视图(CalendarView)组件的功能和用法
日历视图(CalendarView)可用于显示和选择日期,用户既可选择一个日期,也可通过触摸来滚动日历.如果希望监控该组件的日历改变,可调用CalendarView的setOnDateChangeLi ...
- <Android>列表、网格、画廊视图及适配器的绑定
列表视图和适配器的绑定 列表视图既可以使用ListView组件,也可以继承ListActivity.显示可以是ArrayAdapter,也可以是游标SimpleCursorAdapter,还可以是继承 ...
- IOS 表视图(UITableVIew)的使用方法(6)表视图的编辑功能(新增Add)
表视图的新增功能和删除功能虽然目的不同,但是工作流程是相似的 下面列出在处理新增的回调函数时,与删除所不同的逻辑部分代码. 显示下过如下: #pragma mark #pragma mark Tabl ...
- 搜索框(SearchView)的功能与用法
SearchView是搜索框组件,它可以让用户在文本框内输入汉字,并允许通过监听器监控用户输入,当用户用户输入完成后提交搜索按钮时,也通过监听器执行实际的搜索. 使用SearchView时可以使用如下 ...
- 数值选择器(NumberPicker)的功能与用法
数值选择器用于让用户输入数值,用户既可以通过键盘输入数值,也可以通过拖动来选择数值.使用该组件常用如下三个方法. setMinValue(int minVal):设置该组件支持的最小值. setMax ...
- 星级评分条(RatingBar)的功能和用法
星级评分条与拖动条有相同的父类:AbsSeekBar,因此它们十分相似.实际上星级评分条与拖动条的用法.功能都十分接近:它们都是允许用户通过拖动条来改变进度.RatingBar与SeekBar最大区别 ...
随机推荐
- C# dev gridcontrol中添加checkbox复选框
文章来源 csdn weinierbian http://blog.csdn.net/weinierbian/article/details/6255402 添加一列,FieldName为 " ...
- MFC-----在MFC中使用Picture控件加载任意图片
对于刚刚接触OpenCV的童鞋来说,如何在MFC中加载并显示一张图片.应该是初期必定会碰到的问题之一.因此本文在分享这方面经验的同时,也相当于是写给自己的一份备忘录. 本文使用的是OpenCV2.1+ ...
- C#调用SCL2008 动态库SCL_API_cdecl.dll or SCL_API_Stdcall.dll,提示找不到指定模块
在公司用的联想 ThinkPad T430i,原装配置及系统,开机巨慢.按下开机键到登陆界面超过1分钟,再到桌面这个时间就难说了,多时有超过3分钟,进入桌面还要等待几分钟才能正常操作.新年过来向公司领 ...
- python自动发邮件总结及实例说明
python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是python自带的,只需import即可使用.smtplib模块主要负责发送邮件,email模块主要负责构造邮件. sm ...
- Bootstrap环境及屏幕适配-(一)
一.环境搭建 1.目录结构 需要引用的文件有, jquery.js.bootstrap.min.js 和 bootstrap.min.css 文件,下面看下在线的文档Hello Word <!D ...
- Bootstrap学习指南
一.Bootstrap简介 二.Bootstrap安装 三.Bootstrap CSS 四.Bootstrap 布局组件 五.Bootstrap 插件 六.Bootstrap定制
- PHPCMS v9 实现首页,列表页,内容页调用点击量方法
大家好,今天有点闲,看很多朋友经常问PHPCMS v9 首页,列表页,内容页调用点击怎么弄,打算抽时间把代码全部归纳出来,以便大家日后使用,如下: 1,首页调用点击量 {pc:content acti ...
- Android 状态栏通知Notification、NotificationManager详解
http://www.cnblogs.com/onlyinweb/archive/2012/09/03/2668381.html
- 在阿里云ECS(CentOS6.5)上安装ftp
安装vsftpd 命令: yum install vsftpd –y 结果: 创建ftp存取文件的目录,用户名,密码 命令: useradd -d /home/ftp -g ftp -s /sbin/ ...
- (中等) POJ 2991 Crane , 几何+线段树。
Description ACM has bought a new crane (crane -- jeřáb) . The crane consists of n segments of variou ...