【Android开发】高级组件-图像切换器

图像切换器(ImageSwitcher),用于实现类似于Windows操作系统的“Windows照片查看器”中的上一张、下一张切换图片的功能。在使用ImageSwitcher时,必须实现ViewSwitcher.ViewFactory接口,并通过makeView()方法来创建用于显示图片的ImageView。makeView()方法将返回一个显示图片的ImageView。在使用图像切换器时,还有一个方法非常重要,那就是setImageResource方法,该方法用于指定要在ImageSwitcher中显示的图片资源。

下面通过一个实例来说明图像切换器的用法。

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">
	<Button
	    android:text="上一张"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:id="@+id/button1"/>
	<ImageSwitcher
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:layout_gravity="center"
	    android:id="@+id/imageSwitcher1"/>
	<Button
	    android:text="下一张"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:id="@+id/button2"/>
</LinearLayout>

MainActivity:

package com.example.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher.ViewFactory;

public class MainActivity extends Activity{
	//声明并初始化一个保存要显示图像id的数组
	private 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};
	private int index=0;//当前显示图像的索引
	private ImageSwitcher imageSwitcher;//声明一个图像切换器对象
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		imageSwitcher=(ImageSwitcher)findViewById(R.id.imageSwitcher1);//获取图像切换器
		//设置动画效果
		imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));//设置淡入动画
	 	imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));//设置淡出动画
		imageSwitcher.setFactory(new ViewFactory() {//设置View工厂

			@Override
			public View makeView() {
				ImageView imageView=null;
				imageView=new ImageView(MainActivity.this);//实例化一个ImageView类的对象
				imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);//设置保持纵横比居中缩放图像
				imageView.setLayoutParams(new ImageSwitcher.LayoutParams(
						LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
				return imageView;
			}
		});
		imageSwitcher.setImageResource(imageId[index]);//显示默认的图片

		//“上一张”和“下一张”按钮的控制
		Button up=(Button)findViewById(R.id.button1);
		Button down=(Button)findViewById(R.id.button2);
		up.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				if(index>0){
					index--;//图片索引后退一个
				}else{
					index=imageId.length-1;//图片达到最前面一张之后,循环至最后一张
				}
				imageSwitcher.setImageResource(imageId[index]);//显示当前图片
			}
		});
		down.setOnClickListener(new OnClickListener() {

					@Override
					public void onClick(View arg0) {
						if(index<imageId.length-1){
							index++;//图片索引前进一个
						}else{
							index=0;//图片达到最后面一张之后,循环至第一张
						}
						imageSwitcher.setImageResource(imageId[index]);//显示当前图片
					}
				});
	}
}

效果如图所示:

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

时间: 2024-10-23 06:45:16

【Android开发】高级组件-图像切换器的相关文章

如何在android开发中点击按钮切换多区域中其中一个区域的显示内容?

问题描述 如何在android开发中点击按钮切换多区域中其中一个区域的显示内容? 如何在android开发中将一个视图划分上下三块,上方显示图像,中间显示控制按钮,点击下方按钮,切换中间区域显示内容? 解决方案 方法1:从你的问题看来按钮点击事件我就不说了,你可以用fragment(片段),具体怎么用? 布局文件里面有个framelayout用来更改这片区域. 写一个fragment类,也就是集成fragment 在activity里面用fragmentmanager切换 -----------

Android开发中Activity之间切换出现短暂黑屏的解决方法_Android

本文实例讲述了Android开发中Activity之间切换出现短暂黑屏的解决方法.分享给大家供大家参考,具体如下: 在默认情况下,Android应用程序启动时,会有一个黑屏的时期,原因是,首个activity会加载一些数据,比如初始化列表数据.向服务器发送请求获取数据等等.同样,使用startActivity(inte -- 在默认情况下,Android应用程序启动时,会有一个黑屏的时期,原因是,首个activity会加载一些数据,比如初 始化列表数据.向服务器发送请求获取数据等等.同样,使用s

Android开发中Activity之间切换出现短暂黑屏的解决方法

本文实例讲述了Android开发中Activity之间切换出现短暂黑屏的解决方法.分享给大家供大家参考,具体如下: 在默认情况下,Android应用程序启动时,会有一个黑屏的时期,原因是,首个activity会加载一些数据,比如初始化列表数据.向服务器发送请求获取数据等等.同样,使用startActivity(inte -- 在默认情况下,Android应用程序启动时,会有一个黑屏的时期,原因是,首个activity会加载一些数据,比如初 始化列表数据.向服务器发送请求获取数据等等.同样,使用s

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 开发音频组件(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开发四大组件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开发四大组件之实现电话拦截和电话录音_Android

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

Android开发8——利用pull解析器读写XML文件

  一.基本介绍 对XML解析有SAX和DOM等多种方式,Android中极力推荐xmlpull方式解析xml.xmlpull不仅可用在Android上同样也适用于javase,但在javase环境中需自己获取xmlpull所依赖的类库,kxml2-2.3.0.jar,xmlpull_1_1_3_4c.jar.   jar包下载网址http://www.xmlpull.org/http://kxml.sourceforge.net/   二.例子 读取到xml的声明返回数字0 START_DOC

Android开发之图形图像与动画(三)Animation效果的XML实现_Android

使用XML来定义Tween Animation 动画的XML文件在工程中res/anim目录,这个文件必须包含一个根元素,可以使<alpha><scale> <translate> <rotate>插值元素或者是把上面的元素都放入<set>元素组中,默认情况下,所以的动画指令都是同时发生的,为了让他们按序列发生,需要设置一个特殊的属性startOffset.动画的指令定义了你想要发生什么样的转换,当他们发生了,应该执行多长时间,转换可以是连续的也