android imageview 图片切换动画,Android UI控件之ImageSwitcher实现图片切换效果-程序员宅基地

技术标签: android imageview 图片切换动画  

本文实例为大家分享了geSwitcher实现图片切换效果的具体代码,供大家参考,具体内容如下

从该名字就可以看出来,ImageSwitcher是一个图片切换控件,可以在一系列的图片中,逐张的显示特定的图片,利用该控件可以实现图片浏览器中的上一张,下一张的功能。其使用方法也较 为简单,不过需要注意的是ImageSwitcher在使用的时候需要一个ViewFactory,用来区分显示图片的容器和他的父窗口。

具体的用法直接看实例,照例,先上效果图

02490862e68ab32599b2405918f74063.png

看看下一张的效果:

b65c132ced8db0819c171a8f2ebf2db3.png

98b18a3cbd9b00702bdc9847c821b279.png

布局文件就不多谈了直接看MainActivity代码部分吧:

package com.kiritor.ui_imageswitcher;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.ImageSwitcher;

import android.widget.ImageView;

import android.widget.ViewSwitcher.ViewFactory;

/*注意,此处直接让该类实现ViewFactory和OnClickListener接口*/

public class MainActivity extends Activity implements ViewFactory, OnClickListener {

/*获取图片资源集*/

private static final Integer[] images = {

R.drawable.first,

R.drawable.second,

R.drawable.third,

};

private ImageSwitcher is;

private Button btnPrev,btnNext;

private static int index = 0;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

/*通过ID获取控件*/

is = (ImageSwitcher) findViewById(R.id.image_switchter);

btnPrev = (Button) findViewById(R.id.pre);

btnNext = (Button) findViewById(R.id.next);

is.setFactory(this);//设置ImageSwitcher所需的ViewFactory

is.setImageResource(images[index]);//设置初始的图片资源

/*由于本类实现了OnClickListen而接口,所以这里参数可以直接用this*/

btnPrev.setOnClickListener(this);

btnNext.setOnClickListener(this);

}

/*因为实现了接口,需要实现接口中未实现的方法*/

public void onClick(View v) {

switch(v.getId()){

case R.id.next:

index++;

if(index>=images.length){

index = 0;

}

is.setImageResource(images[index]);

break;

case R.id.pre:

index--;

if(index<0){

index = images.length - 1;

}

is.setImageResource(images[index]);

break;

default:

break;

}

}

/**

* 该方法返回一个View的实例

* 这个实例就是要在ImageSwitcher中所显示的

* 此处就用ImageView来显示内容

* 所以直接返回一个新的ImageView的实例

*/

public View makeView() {

return new ImageView(this);

}

}

以上代码中需要注意的是:

1. 本类实现了两个接口,于是在类中就要实现这两个接口中的方法,而这样写的好处在于:

便于重用,之后的代码中在需要用到这两个接口的地方,可以直接用this关键字。

2.images作为一个整型数组静态常量,里面存放的,是所有图片的ID,这需要将图片复制到res目录下的drawable目录下。

3.setFactory()方法告诉系统,ImageSwitcher要以什么样子来显示内容,而setImageSource()则告诉系统,要显示的那些图片从哪里获得。

4. makeView()方法是ViewFactory接口定义的方法,该方法返回一个View,而ImageSwitcher就会按照这个View的布局来显示内容。

好了一个简单的图片浏览器就算完成了!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39798943/article/details/117286896

智能推荐

迷信一把:三才数理吉凶_113易经数字代表什么-程序员宅基地

文章浏览阅读1.2w次。所谓三才即天才、人才、地才,它们分别是天格、人格、地格数字的个位 数。4U,byhN0五行之间的关系是:木、火、土、金、水相临相生,相隔相克。这样,根据数理与五行之间的内在联系,推算出来的配置关系即为三才配置。从中观察三才配置的凶吉,可以判断把握您的综合运势,预测您的事业成功 率以及身体状况. 111 成功顺利伸展,希望圆满达成,基础安定,_113易经数字代表什么

群晖 半洗白_黑群晖利用DDSM半洗白教程-程序员宅基地

文章浏览阅读1.2w次,点赞5次,收藏9次。半洗白原理半洗白原理:DSM6 以上的系统。群晖Docker中会增加一个叫做DSM的功能。简单来说,就是利用Docker在你的群晖系统中,虚拟一个群晖系统。然而,令我们庆幸的是。这个虚拟出来的小群晖。在Docker中是自带生成序列号(SN)的。只不过这个序列号我们只能用来半洗白而不能全洗白。所以,我们只需要将这个小群晖的序列号和MAC 提取出来。替换到你物理机安装的群晖引导当中,就可以实现半洗白咯..._2020年黑群晖还能洗白吗

Bestcoder7(1004)hdu4988(经典问题:树状数组套treap求解动态逆序对)_hdu 4988-程序员宅基地

文章浏览阅读1.7k次。Little Pony and Boast BustersTime Limit: 20000/10000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 83 Accepted Submission(s): 32Problem Description_hdu 4988

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".-程序员宅基地

文章浏览阅读48次。调试Mina程序出现如下错误:SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: Defaulting to no-operation (NOP) logger implementationSLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBin...

vs2012配置python_安装适用于Visual Studio 2012(PTVS)的Python工具-程序员宅基地

文章浏览阅读220次。I installed the version for VS 2010 a few weeks ago, and it went flawlessly. I am not having such good luck for the version for VS 2012. What did I do wrong? I ran, in order, two installers from Micro..._vs2012 installing a python interpreter will let you run your project, and wi

无线网络安全与解决方案(Wireless Security)_wifi security-程序员宅基地

文章浏览阅读9k次,点赞9次,收藏44次。讲解几种无线网络安全问题(Wireless Security)以及相应的解决方案。_wifi security

随便推点

java获取tomcat端口_获取当前Tomcat实例的端口-程序员宅基地

文章浏览阅读1.3k次。有时需要在当前代码中获取当前Server实例的端口号, 通过HttpServletRequest请求可以, 但有时也需要在没有请求的情况下获取到端口号.用以下方法是可以获取到的:public int getHttpPort() {try {MBeanServer server;if (MBeanServerFactory.findMBeanServer(null).size() > 0) {..._java获取tomcat端口号

qml红色下划线去除_qt 的qml文件中总是红色错误线-程序员宅基地

文章浏览阅读750次。红色下划线_qt 的qml文件中总是红色错误线

Kafka Consumer 执行 poll 操作时获取空数据的原因分析(2)_consumer.poll获取不到数据-程序员宅基地

文章浏览阅读6.1k次。上一个问题的回答:https://blog.csdn.net/weixin_37392582/article/details/1046851911. 场景当用户需要获取数据时,后端从指定 topic 下消费1条数据;每次操作的间隔为 0~;每个 topic 只有一个 消费者。2. 现象多个topic同时消费数据,经常出现“获取数据失败”的问题;所有的消费者均在一个 group 内。..._consumer.poll获取不到数据

SCRATCH 小游戏-程序员宅基地

文章浏览阅读6k次。scratch 小游戏《五连子》

修改caffe中resize的方式_caffe resize-程序员宅基地

文章浏览阅读824次。opencv的resize默认的是使用双线性插值INTER_LINEAR,也可以是尝试其他的方式进行插值操作if (param.random_interpolation_method()) { // 0: INTER_NEAREST // 1: INTER_LINEAR // 2: INTER_CUBIC // 3: INTER_AREA // 4: IN..._caffe resize

vue路由URL拼接全局参数_vue 在路由拦截里,给url加参数-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏6次。vue-router地址栏URL拼接全局参数业务需求:vue单页面项目,需要在URL地址栏拼接固定的参数,在所有页面使用。默认采用vue路由的history模式;hash模式也可以同样适用。主要是在 vue-router 导航守卫的全局前置守卫中实现。即 vue-router 生命周期钩子函数 router.beforeEach 中进行路由拦截处理。主要代码:router.beforeEach((to, from, next) => { if (Object.keys(to.quer_vue 在路由拦截里,给url加参数

推荐文章

热门文章

相关标签