Android控件之ImageSwticher


1. ImageSwticher介绍

ImageSwitcher是图片切换的控件,它能实现图片切换时的动画效果,包括图片导入效果、图片消失效果等等。Android系统提供了许多不同的动画效果供我们选择。


2. 应用示例

示例说明:新建一个activity,包括一个ImageSwitcher控件。ImageSwitcher中的图片,每5秒钟变换一个。
代码说明

package com.skywang.control;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.animation.AnimationUtils;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.ViewSwitcher.ViewFactory; public class ImageSwitcherTest extends Activity implements ViewFactory { private ImageSwitcher mSwitcher; // 图片数组,用于在ImageSwitcher中切换
private Integer[] mImageIds = { R.drawable.pic1,
R.drawable.pic2, R.drawable.pic3, R.drawable.pic4 };
// 图片显示序号
private int mIndex = 0;
private ImageSwitchThread mImgThread; private static final int MSG_SWITCH_IMG = 0x00000001;
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_SWITCH_IMG: {
mIndex = (mIndex + 1) % mImageIds.length;
mSwitcher.setImageResource(mImageIds[mIndex]);
break;
}
default:
break;
}
}
}; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.image_switcher_test);
setTitle("ImageShowActivity"); mIndex = 0;
mSwitcher = (ImageSwitcher) findViewById(R.id.ImageSwitcher01);
// setFactory的具体实现参考makeView
mSwitcher.setFactory(this);
// 设置ImageSwitcher移入图片时的动画效果
mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.slide_in_left));
// 设置ImageSwitcher移除图片时的动画效果
mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.slide_out_right)); mImgThread = new ImageSwitchThread();
} @Override
protected void onResume() {
super.onResume();
if (mImgThread != null)
mImgThread.start();
}
@Override
protected void onPause() {
super.onPause();
if (mImgThread != null)
mImgThread.interrupt();
} @Override
public void onDestroy() {
super.onDestroy();
} /*
* makeView()返回的view将被添加到ImageSwitcher中。
* 也就意味着,第一次若没有设置ImageSwitcher的背景,makeView()的返回值,将作为默认背景。
* @author skywang
*/
@Override
public View makeView() {
ImageView i = new ImageView(this);
i.setBackgroundColor(0xFF000000);
i.setScaleType(ImageView.ScaleType.FIT_CENTER);
i.setLayoutParams(new ImageSwitcher.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
return i;
} /**
* 图片更新线程。每5秒更新一次图片
* @author skywang
*
*/
private class ImageSwitchThread extends Thread {
@Override
public void run() {
super.run();
try {
while (!isInterrupted()) {
// 发送消息给mHanlder更换图片
mHandler.sendEmptyMessage(MSG_SWITCH_IMG);
Thread.sleep(5000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

说明:
(01) mSwitcher.setFactory(this); setFactory()的作用是设置ImageSwitcher切换时,用于填充的两个视图。具体的实现是通过makeView()来实现的。
(02) mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.slide_in_left)); 这是来设置ImageSwitcher显示图片时的动画效果,android.R.anim.slide_in_left是android自带的动画效果,即图片显示时,从左边逐渐显示。
(03) mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.slide_out_right)); 这是来设置ImageSwitcher图片消失时的动画效果,android.R.anim.slide_out_right是android自带的动画效果,即图片消失时,从右边逐渐消失。
(04) mImgThread = new ImageSwitchThread(); 用于创建线程,线程ImageSwitchThread的作用是每隔5秒发送消息来更新ImageSwitcher中的图片。

点击下载:源代码

效果图:

Android控件之ImageSwticher的更多相关文章

  1. [Android Pro] android控件ListView顶部或者底部也显示分割线

    reference to  :  http://blog.csdn.net/lovexieyuan520/article/details/50846569 在默认的Android控件ListView在 ...

  2. Android控件Gridview实现仿支付宝首页,Fragment底部按钮切换和登录圆形头像

    此案例主要讲的是Android控件Gridview(九宫格)完美实现仿支付宝首页,包含添加和删除功能:Fragment底部按钮切换的效果,包含四个模块,登录页面圆形头像等,一个小项目的初始布局. 效果 ...

  3. Android 控件架构及View、ViewGroup的测量

    附录:示例代码地址 控件在Android开发的过程中是必不可少的,无论是我们在使用系统控件还是自定义的控件.下面我们将讲解一下Android的控件架构,以及如何实现自定义控件. 1.Android控件 ...

  4. Android - 控件android:ems属性

    Android - 控件android:ems属性http://blog.csdn.net/caroline_wendy/article/details/41684255?utm_source=tui ...

  5. Android 控件知识点,

    一.Android控件具有visibility属性,可以取三个值:visible(默认值)可见,invisible(不可见,但仍然占据原有的位置和大小,可以看做是变得透明了),gone(空间不仅不可见 ...

  6. UIAutomator定位Android控件的方法

    UIAutomator各种控件定位的方法. 1. 背景 使用SDK自带的NotePad应用,尝试去获得在NotesList那个Activity里的Menu Options上面的那个Add note菜单 ...

  7. 从Android系统出发,分析Android控件构架

    从Android系统出发,分析Android控件构架 Android中所有的控件追溯到根源,就是View 和ViewGroup,相信这个大家都知道,但是大家也许会不太清楚它们之间的具体关系是什么,在A ...

  8. Android控件系列之RadioButton&RadioGroup(转)

    学习目的: 1.掌握在Android中如何建立RadioGroup和RadioButton 2.掌握RadioGroup的常用属性 3.理解RadioButton和CheckBox的区别 4.掌握Ra ...

  9. 第三个 android控件

    android控件以及控件对应的属性:

随机推荐

  1. SpringBoot 构建RestFul API 含单元测试

    相关博文: 从消费者角度评估RestFul的意义 SpringBoot 构建RestFul API 含单元测试 首先,回顾并详细说明一下在快速入门中使用的  @Controller .  @RestC ...

  2. hdu 5053 (2014上海网赛L题 求立方和)

    题目大意:给你L到N的范围,要求你求这个范围内的所有整数的立方和. Sample Input2 //T1 32 5 Sample OutputCase #1: 36Case #2: 224 # inc ...

  3. 基于SOA的银行系统架构

    Part-1  [简述] 1.通过引入面向服务架构(SOA),企业服务总线(ESB),适配器(Adapter)及面向构件等技术,尝试打造一个统一业务流程服务平台,实现面向流程的服务集成. 2.传统银行 ...

  4. 基于图文界面的蓝牙扫描工具btscanner

    基于图文界面的蓝牙扫描工具btscanner   btscanner是Kali Linux内置的一款蓝牙扫描工具.它提供图文界面,更便于渗透测试人员查看扫描信息.该工具会自动使用主机所有的蓝牙接口,并 ...

  5. WEP自动破解工具wesside-ng

    WEP自动破解工具wesside-ng   wesside-ng是aircrack-ng套件提供的一个概念验证工具.该工具可以自动扫描无线网络,发现WEP加密的AP.然后,尝试关联该AP.关联成功后, ...

  6. OSNIT信息收集分析框架OSRFramework

     OSNIT信息收集分析框架OSRFramework OSNIT是一种从公开的信息资源搜集信息的有效方式.Kali Linux集成了一款专用分析工具集OSRFramework.该工具集包含多个常用工具 ...

  7. HTML Agility Pack:簡單好用的快速 HTML Parser

    HTML Agility Pack:簡單好用的快速 HTML Parser Codeplex 軟體套件(Package)資訊 套件名稱 HTML Agility Pack 作者 Simon Mouri ...

  8. JZYZOJ 2042 多项式逆元 NTT 多项式

    http://172.20.6.3/Problem_Show.asp?id=2042 题意:求一个次数界为n的多项式在模P并模x^m的意义下的逆元.P=7*17*2^23+1. 多项式逆元的含义以及求 ...

  9. HICON泄漏

    通常,我们使用的HICON对象只需用DestroyIcon后就不存在内存泄漏了,但是当我们使用GetIconInfo后会发现程序GDI资源存在泄漏,原因是GetIconInfo会产生2个HBITMAP ...

  10. GDI 泄漏检测方法

    方法一 1.打开电脑的[任务管理器],选择[进程]页,点击菜单项的[查看]项,选择[选择列]: 2.勾选[GDI对象(J)]即可. 3.此时,用户就可以在进程中看到每个进程对应的GDI对象,每个进程的 ...