画廊Gallery控件的使用

Gallery为一个画廊控件,只能显示一行,并支持左右滑动的效果。如下:


 

 

 

如上效果的实现包括了Gallery组件和ImageSwitcher组建的使用,完成的效果是点击图片则显示其大图片,程序说话:

package mobile.android.ch05.gallery;

import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher.ViewFactory;

public class Main extends Activity implements ViewFactory {
	private Gallery gallery;
	private ImageSwitcher imageSwitcher;
	private ImageAdapter imageAdapter;

	private int[] resIds = new int[] { R.drawable.item1, R.drawable.item2,
			R.drawable.item3, R.drawable.item4, R.drawable.item5,
			R.drawable.item6, R.drawable.item7, R.drawable.item8,
			R.drawable.item9, R.drawable.item10, R.drawable.item11,
			R.drawable.item12, R.drawable.item13, R.drawable.item14,
			R.drawable.item15 };

	//设置适配器类
	public class ImageAdapter extends BaseAdapter {
		int mGalleryItemBackground;
		private Context mContext;

		public ImageAdapter(Context context) {
			mContext = context;
			TypedArray typedArray = obtainStyledAttributes(R.styleable.Gallery);
			// 获取背景资源ID
			mGalleryItemBackground = typedArray.getResourceId(
					R.styleable.Gallery_android_galleryItemBackground, 0);
		}

		// 返回传入的图片ID数组的长度,也就是图片的总数。既然是数组,那么一定要注意越界问题。
		public int getCount() {
			return Integer.MAX_VALUE;
		}

		// 返回position所对应的图片对象
		public Object getItem(int position) {
			return position;
		}

		// 取得列表中与指定位置的行关联的ID.
		public long getItemId(int position) {
			return position;
		}

		/**
		 * 设置图像的显示风格图像资源
		 */
		public View getView(int position, View convertView, ViewGroup parent) {
			ImageView imageView = new ImageView(mContext);

			//设置imageView的源,并循环显示
			imageView.setImageResource(resIds[position % resIds.length]);
			// 设置图片的显示方式
			imageView.setScaleType(ImageView.ScaleType.FIT_XY);
			// 将图片缩小设置
			imageView.setLayoutParams(new Gallery.LayoutParams(136,88));
			//设置imageView的图像资源
			imageView.setBackgroundResource(mGalleryItemBackground);
			return imageView;
		}
	}

	

	// 返回一个视图,这个视图用来填充imageSwitcher,此为重写 的ViewFactory接口中的类,相当与getView().
	public View makeView() {
		ImageView imageView = new ImageView(this);
		// 设置背景色 
		imageView.setBackgroundColor(0xFF000000);  
		// 设置图片显示的缩放方式 
		 imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); 
		// 设置显示的图片对相对容器的填充方式
		 imageView.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
		return imageView;
	}
	
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		gallery = (Gallery) findViewById(R.id.gallery);
		imageAdapter = new ImageAdapter(this);
		gallery.setAdapter(imageAdapter);
		
//		 gallery.setUnselectedAlpha(0.5f);                   // 设置未选中图片的透明度   
//		 gallery.setSpacing(0);                         // 设置图片之间的间距  

		imageSwitcher = (ImageSwitcher) this.findViewById(R.id.imageswithcher);
	
		imageSwitcher.setFactory(this);

		//设置淡入淡出效果
		imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
				android.R.anim.fade_in));
		imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
				android.R.anim.fade_out));
		
//		//为ImageSwitcher组建设置其图片源,是当图片滑到屏幕正中,则视为自动选中,在滑动的过程中会触发
//		gallery.setOnItemSelectedListener(new OnItemSelectedListener() {
//
//			public void onItemSelected(AdapterView<?> arg0, View arg1,
//					int arg2, long arg3) {
//				imageSwitcher.setImageResource(resIds[arg2%resIds.length]);
//				
//			}
//
//			public void onNothingSelected(AdapterView<?> arg0) {
//				// TODO Auto-generated method stub
//				
//			}
//			
//		});
		
		//是需要用手点击才触发,滑动时不触发
		gallery.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				// TODO Auto-generated method stub
				imageSwitcher.setImageResource(resIds[arg2 % resIds.length]);
				
			}
			
		});

	}
}

 

 

 

Gallery的使用主要包括如下几个步骤:


1 资源文件,复制进res/drawable文件夹中
2 定义Gallery 组件的背景样式文件
3 含有Gallery组件和ImageSwitcher组件的main.xml文件
4 BaseAdapter类,并实现其中的方法
5 Gllery组件绑定Adapter
6 Gallery组件的onItemSelected方法,为ImageSwitcher组件设置其图片源
7 ImageSwitcher中的ImageView控件

 

附录:

** TypedArray typedArray = obtainStyledAttributes(R.styleable.Gallery);R.styleable.Gallery是res/values/attr.xml文件中一个属性资源ID.在<declare_styleable>标签中声明的style属性会在R.styleable类中自动生成静态变量名为<declare_styleable>和<attr>标签中name属性值的组合,中间用下划线链接

 

** 对于BaseAdapter类中getView()方法的解析:

 

  public abstract View getView (int position, View convertView, ViewGroup parent)  此为抽象方法,一般与ListView这个组件一起使用。

  三个参数的意义:POSITION就是LISTVIEW中的位置,如果你对LIST几个特殊位置的VIEW要改变,比如TITLE要改变,那么就是加判断
if(position == 0){
     //加入自己的view
     return view;
}
convertView是系统的,如果你在重写的时候没有绑定自己的VIEW就调用这个。

 

最后,关于Gallery的响应事件:

 

1、点击事件OnItemClickListener,是需要用手点击才触发,滑动时不触发

2、选中事件OnItemSelectedListener,是当图片滑到屏幕正中,则视为自动选中,在滑动的过程中会触发

适用场景:

1、点击事件OnItemClickListener,是在确定要选中该项时,才点击进行逻辑处理

2、选中事件OnItemSelectedListener,可以用来提醒用户,当前获取焦点的项,如果确认为该项则需要点击      OnItemClickListener后,进行下一步的逻辑处理。
 

实现高精度卷积混响--MATLAB仿真篇 一、前言 之前在STM32F407上现实了直播声卡,实现的经典Schroeder混响模型和Moorer混响模型,得到不错效果。后来得知卷积混响最为真实地表现空间的特性,所以也就尝试在MCU上实现一个高精度的卷积混响(卷积点数为32768),目前MCU出来的混响效果算得上一流水准,本人也在计划在ADI的21489或者SC584上更高精度的卷积混响。 二、卷积方式 1、conv1是使用MATLAB自带卷积函数conv 2、conv2和conv3是改进后卷积过程,具有减少运算量特点,方便嵌入式移植 clear; 阅读详情

相关推荐

Trae编程工具Cline插件深度集成与Claude 3.7 API Key高级配置实战

本文详细介绍了如何在Trae编程工具中深度集成Cline插件并配置Claude 3.7 API Key的高级技巧。通过实战案例,展示了如何提升代码补全质量、实现多轮对话记忆及自定义代理设置,特别适合全栈工程师和需要私有化AI服务的团队。文章还涵盖了安装流程、API Key获取方式及企业级部署的最佳实践。

weixin_28829903的博客 436

Android 3D画廊采用Gallery实现无限循环、自动轮播

公司最近有一个需求,是打算做一个轮播图的展示界面,不过和传统意义上不同,并非是在手机app的顶部展示几张定时切换的固定大小宽高的图片,而是中间长方形,两边向里倾斜,形成对称感的特殊界面,如下图: 需要实现功能:无限循环,自动跳转,倒影效果。 (原本的企划是动画轮播的时候,下面会呈现一条Listview,里面会因为展示的不同界面而呈现不同的内容,但是后面放弃了。) 下面开始上代码:

Giousa的博客 2万+

从波形图到参数调优:一次无感BLDC电机启动失败的深度解析

本文深入解析无感BLDC电机启动失败案例,通过波形分析揭示参数不匹配和IPM保护机制触发等关键问题。详细探讨了过零点检测、PWM周期设置及强拖参数调优的底层逻辑,并分享IPM模块保护机制与实战调优技巧,最终实现99.98%的启动成功率。

weixin_29182481的博客 820

画廊效果Gallery控件的使用(横向列表)

笔记:Gallery与Spinner两个控件具有共同的父类:AbsSpinner,表示Gallery和Spinner都是一个列表框。它们之间的区别在于Spinner显示的是一个垂直的列表可选择框,而Gallery显示的是一个水平的列表拖动框,而且支持水平滑动的效果。

张圣华的博客 1435

保姆级教程:用ROS2 Humble + Gazebo Classic 从零搭建一个能键盘控制的差分AGV模型

本文提供了一份详细的ROS2 Humble与Gazebo Classic教程,指导用户从零开始搭建一个键盘控制的差分AGV模型。内容涵盖环境配置、Xacro文件设计、Gazebo仿真集成以及键盘控制实现,特别针对常见问题提供解决方案,帮助开发者快速掌握ROS2机器人仿真技术。

weixin_30387423的博客 169

ARM架构UOS实战:从源码编译Qt 5.15.2到定制Qt Creator的全流程解析

本文详细解析了在ARM架构统信UOS系统上,从源码编译Qt 5.15.2到定制Qt Creator开发环境的完整流程。内容涵盖环境准备、依赖部署、源码配置、编译优化、错误处理及IDE集成,旨在帮助开发者在国产化平台上构建自主可控的高性能Qt开发环境,解决特定ARM平台的兼容性与性能优化问题。

mango的博客 411

高级控件之画廊视图(Gallery)

画廊视图使用Gallery表示,能够按水平方向显示内容,并且可以手指直接拖动图片和移动,一般用 来浏览图片,,被选中的选项位于中间,并且可以响应事件显示信息.在使用画廊视图时,首先在屏幕 .

wenzhi的博客 4130

Cadence17.2 > Allegro > 检查PCB Layout信号线组等长

Cadence17.2 > Allegro > 检查PCB Layout等长和配线

DL_62532的专栏 1万+

Android 滑动效果入门篇(二)—— Gallery

Gallery 是Android官方提供的一个View容器类,继承于AbsSpinner类,用于实现页面滑动效果。 从上面的继承关系可以看出,AbsSpinner类继承自AdapterView,因此我们可以自定义实现Adapter,来填充Gallery容器的数据。 本示例通过自己实现一个Adapter,来填充Gallery容器的图片数据,首先看效果: Activity import a...

编程开发资料库 672

手把手教你完成YOLOv10 PySide6目标检测界面搭建,使用Qt6设计YOLOv10检测系统,前台系统+后台管理系统开发实战,可用于大论文凑工作量或毕设必备,全网最详细教程

手把手教你完成YOLOv10 PySide6目标检测界面搭建,使用Qt6设计YOLOv10检测系统,前台系统+后台管理系统开发实战,可用于大论文凑工作量或毕设必备,全网最详细教程

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1733

如何让C++程序生成dump文件?生成dump文件的方式有哪些?如何使用Windbg分析dump文件?

本文详细介绍了如何让C++程序生成dump文件、生成dump文件的多种方式以及如何使用Windbg分析dump文件,并给出了对应的实战分析案例,有一定的实战参考价值。

dvlinker的技术专栏 5万+

安卓Gallery配合ImageSwitcher不显示图片

Gallary装的是缩略图(thumb),ImageSwitcher装的是大图。 不显示图片的一个可能原因是gallery没设置代理器,另一个原因是没使用相对布局。 GalleryActivity.java: 1 public class GalleryActivity extends Activity implements OnItemSel...

weixin_30615767的博客 171

使用Simulink对液流电池在微电网中的动态响应进行建模与仿真

本文介绍了使用Simulink对液流电池在微电网中的动态响应进行建模与仿真的方法。通过搭建包含液流电池、双向DC-DC变换器、分布式能源和负载的微电网模型,并设计基于SOC的控制器,详细说明了从模型创建到仿真运行的完整流程。重点分析了液流电池在不同负载条件下的动态特性,评估了系统响应速度、充放电效率和稳定性等性能指标。该仿真方法为验证液流电池在微电网中的应用提供有效工具,有助于优化参数设计和提升系统可靠性。

amy_mhd的博客 136

画廊控件Gallery的使用

画廊控件Gallery用来显示图片列表,可以用手指直接拖动图片左右移动。Gallery只能水平显示一行,且Gallery列表中的图片会根据不同的拖动情况向左或向右移动,直到显示到最后一个图片为止。   下面我们就通过一个实例来演示如何实现Gallery画廊控件功能。 1.xml布局   在xml布局文件中,我们使用LinearLayout对整个界面进行垂直布局。在界面上端设置一个

ZSQ_ANDROID的专栏 1451

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【Android 开发】:UI控件之 Gallery 画廊控件的使用

Gallery控件一般是用于显示图像列表,因此也称为是画廊控件, Gallery只能水平显示一行,而且支持水平滑动效果。也就是说,单击、选中或者拖动Gallery中的图像, Gallery图像中的列表会根据不同的情况向左向右移动,直到显示到最后的一个图像为止。     1. 在学习Gallery控件之前,我们需要掌握一些准备知识 1) Adapter (适配器) 查看这个 Adapt

AHuier_Techblog :如果我不在写代码,你就 @me 3877

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

安卓控件使用系列24:Gallery画廊控件的使用方法

在安卓中有一些应用程序需要循环滑动查看一系列图片的效果,就像一个画廊一样,下面我们来一起分享一下它的使用方法。 这个例子实现的是水平循环滑动查看一系列图片的效果。 整体思路:在xml文件中添加一个Gallery控件,在values文件目录中定义一个attrs.xml文件,写入相应的属性,在活动中定义一个图片数组,定义一个计数器,定义一个图片适配器类继承BaseAdapter,并重写里面的方法,

luoshiwutai的博客 1157

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android学习笔记25-画廊控件Gallery的使用

在Android中,画廊控件Gallery用来显示图片列表,可以用手指直接拖动图片左右移动。Gallery只能水平显示一行,且Gallery列表中的图片会根据不同的拖动情况向左或向右移动,直到显示到最后一个图片为止。   下面我们就通过一个实例来演示如何实现Gallery画廊控件功能。 1.xml布局   在xml布局文件中,我们使用LinearLayout对整个界面进行垂直布局。在界面上端...

weixin_34416754的博客 159

Android学习笔记25:画廊控件Gallery的使用

  在Android中,画廊控件Gallery用来显示图片列表,可以用手指直接拖动图片左右移动。Gallery只能水平显示一行,且Gallery列表中的图片会根据不同的拖动情况向左或向右移动,直到显示到最后一个图片为止。   下面我们就通过一个实例来演示如何实现Gallery画廊控件功能。 1.xml布局   在xml布局文件中,我们使用LinearLayout对整个界面进行垂直布...

weixin_30553065的博客 115

Android 高级UI设计笔记11:Gallery(画廊控件)之Gallery基本使用

1. 这里要向大家介绍Android控件Gallery(画廊控件)   Gallery控件主要用于横向显示图像列表,不过按常规做法。Gallery组件只能有限地显示指定的图像。也就是说,如果为Gallery组件指定了10张图像,那么当Gallery组件显示到第10张时,就不会再继续显示了。 2. Gallery基本用法: 步骤如下: (1)首先我们新建一个Android工程,工程目录...

weixin_30412013的博客 243

四、画廊控件Gallery的使用

参照连接:http://www.cnblogs.com/menlsh/archive/2013/02/26/2934434.html 转载于:https://www.cnblogs.com/suinuaner/archive/2013/02/27/four.html

weixin_30822451的博客 79

UI组件之AdapterView及其子类(四)Gallery画廊控件使用

听说 Gallery现在已经不使用了,API使用ViewPaper代替了,以后再学专研ViewPaper吧现在说说Gallery画廊,就是不停显示图片的意思 Gallery是用来水平滚动的显示一系列项目。Gallery组件可以横向显示一个图像列表,当单击当前图像的后一个图像时,这个图像列表会向左移动一格,当单击当前图像的前一个图像时,这个图像列表会向右移动一样。也可以通过拖动的方式来向左和向右移

tuke_tuke的博客 1467

Gallery画廊

这是一个画廊视图,用于展示一组图片,用固定在中间位置的水平滚动列表显示列表项的视图。android最新的API文档中了解到,在Android4.1(Android API level16)之后,就不再赞成使用这个控件,但还对其有支持,所以这里简单讲解一下如何使用。在这篇博客中,将了解到Gallery的一些常用属性、方法、以及样式的设置,最后会以一个小示例来展示如何使用Gallery展示一个画廊

Ou19981024的博客 493

android画廊控件,android gallery 画廊控件示例

gallery.xml:android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" >android:layout_height="wrap_content"android:text="这是一个Gallery画廊控件的案例"/>android:...

weixin_31832681的博客 240

安卓开发实现画廊效果

画廊 使用Gallery表示,按水平方向显示内容,并且可以用手指直接拖动图片移动,一般用来浏览图片,被选中的选项位于中间,可以响应事件显示信息。 xml布局文件基本语法 <Gallery 属性列表 /> Gallery支持4中xml属性 属性名称 描述 android:animationDuration ...

defukwanmcth26174的博客 325

如何实现Gallery实现画廊的功能

在Android中,画廊控件Gallery用来显示图片列表,可以用手指直接拖动图片左右移动。Gallery只能水平显示一行,且Gallery列表中的图片会根据不同的拖动情况向左或向右移动,直到显示到最后一个图片为止。   下面我们就通过一个实例来演示如何实现Gallery画廊控件功能。 1.xml布局   在xml布局文件中,我们使用LinearLayout对整个界面进行垂直布局。...

weixin_30299539的博客 169
上一篇: eclipse+android环境搭建
下一篇: android源码导入
vivismiledddd
博客等级 码龄16年 0粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值