从零開始学android<ImageSwitcher图片切换组件.二十六.>

从零開始学android<ImageSwitcher图片切换组件.二十六.>

大家好,又见面了,我是全栈君。

ImageSwitcher组件的主要功能是完毕图片的切换显示,比如用户在进行图片浏览的时候。能够通过button点击一张张的切换显示的图片,并且使用ImageSwitcher组件在每次切换的时候也能够为其添加一些动画的效果,此类定义例如以下:
java.lang.Object
  

android.view.View
    

android.view.ViewGroup
      

android.widget.FrameLayout
        

android.widget.ViewAnimator
          

android.widget.ViewSwitcher
            

android.widget.ImageSwitcher


用到的方法

1
public ImageSwitcher(Context context)
构造
创建ImageSwitcher对象
2
public void setFactory(ViewSwitcher.ViewFactory factory)
普通
设置ViewFactory对象。用于完毕两个图片切换时ViewSwitcher的转换操作
3
public void setImageResource(int resid)
普通
设置显示的图片资源ID
4
public void setInAnimation(Animation inAnimation)
普通
图片读取进ImageSwitcher时的动画效果
5
public void setOutAnimation(Animation outAnimation)
普通
图片从ImageSwitcher要消失时的动画效果


假设要想实现图片的切换功能。则定义的Activity类还必须实现ViewSwitcher.ViewFactory接口,以指定切换视图的操作工厂,此接口定义例如以下:

public
static
interface ViewSwitcher.ViewFactory {
/**
 *
创建一个新的
View
显示,并将其增加到
ViewSwitcher
之中
 *
@return
新的
View
对象
 */


public
abstract View makeView() ;
}


private
class ViewFactoryImpl
implements ViewFactory {
@Override
public View makeView() {
ImageView img =
new ImageView(MyImageSwitcherDemo.
this);
//

例化图片显示
img.setBackgroundColor(0xFFFFFFFF);
//
设置背景颜色
img.setScaleType(ImageView.ScaleType.
CENTER);
//
居中显示
img.setLayoutParams(
new ImageSwitcher.LayoutParams(
//

适应图片大小
LayoutParams.
FILL_PARENT, LayoutParams.
FILL_PARENT));
//
定义组件
return img;
}
}


XMl文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <ImageSwitcher        android:id="@+id/imageSwitcher1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_centerHorizontal="true"        android:layout_marginTop="114dp" >    </ImageSwitcher>    <Button        android:id="@+id/button1"        style="?

android:attr/buttonStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/button2" android:layout_alignBottom="@+id/button2" android:layout_marginRight="20dp" android:layout_toLeftOf="@+id/imageSwitcher1" android:text="上一张" /> <Button android:id="@+id/button2" style="?android:attr/buttonStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toRightOf="@+id/imageSwitcher1" android:text="下一张" /></RelativeLayout>

JAVA文件 

package com.example.imageswitcher;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
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 {
	private Button ButNext, ButPrevious;//初始化button
	private ImageSwitcher imageSwitcher;//初始化组件
	private int Images[] = { R.drawable.a1, R.drawable.a2, R.drawable.a3,
			R.drawable.a4, R.drawable.a5, R.drawable.a6 };//设置图片数据
	private int foot = 0;//设置角标

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		imageSwitcher = (ImageSwitcher) this.findViewById(R.id.imageSwitcher1);//获得组件
		ButNext = (Button) this.findViewById(R.id.button1);
		ButPrevious = (Button) this.findViewById(R.id.button2);
		imageSwitcher.setFactory(new Myfactory());//为组件设置组件工厂
		imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(
				MainActivity.this, android.R.anim.fade_in));//设置图片进入动画
		imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(
				MainActivity.this, android.R.anim.fade_out));//设置图片离开动画
		imageSwitcher.setImageResource(Images[foot++]);//设置图片

//		button事件监听
		ButNext.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View view) {
				// TODO Auto-generated method stub
				imageSwitcher.setImageResource(Images[foot++]);
				MainActivity.this.CheckEnable();//设置button是否可用防止数组越界

			}
		});
//		button事件监听
		ButPrevious.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				imageSwitcher.setImageResource(Images[foot--]);
				MainActivity.this.CheckEnable();
			}
		});

	}

	class Myfactory implements ViewFactory {

		@Override
		public View makeView() {
			// TODO Auto-generated method stub
			ImageView image = new ImageView(MainActivity.this);//设置图片组件
			image.setBackgroundColor(Color.GRAY);//设置对齐效果
			image.setScaleType(ImageView.ScaleType.CENTER);//设置剧中
			image.setLayoutParams(new ImageSwitcher.LayoutParams( // 自适应图片大小
					LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); // 定义组件
			return image;//返回图片

		}
	}

	public void CheckEnable() {
		if (this.foot < this.Images.length - 1) {
			this.ButNext.setEnabled(true); // button可用
		} else {
			this.ButNext.setEnabled(false); // button不可用
		}
		if (this.foot == 0) {
			this.ButPrevious.setEnabled(false); // button不可用
		} else {
			this.ButPrevious.setEnabled(true); // button可用
		}

	}
}

从零開始学android&lt;ImageSwitcher图片切换组件.二十六.&gt;


从零開始学android&lt;ImageSwitcher图片切换组件.二十六.&gt;+

Textswitcher与该组件的操作基本同样。不再做详细介绍,读者可自行练习

下节预报:
gallery拖拉组件

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116612.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 信息系统项目管理师高级论文_信息系统项目管理师历年论文题目

    信息系统项目管理师高级论文_信息系统项目管理师历年论文题目本系列文章将会对信息系统项目管理师考试中出现的十大管理论文进行分析,并给出参考范文,帮助考生备考复习。更多复习内容请在微信搜索小程序“信息系统项目管理师高频考点”。2021上半年论文真题范围管理论文试题一论信息系统项目的范围管理项目范围管理必须清晰地定义项目范围,其主要工作是要确定哪些工作是项目应该做的,哪些不应该包括在项目中。请以“论信息系统项目的范围管理”为题进行论述∶1.概要叙述你参与管理过的一个信息系统项目(项目的背景、项目规模、发起单位、目的、项目内容、组织结构

    2022年9月14日
    3
  • 用python写一个简单的表白代码

    用python写一个简单的表白代码fromturtleimport*color(‘black’,’red’)begin_fill()penup()goto(50,50)pendown()right(45)goto(100,0)left(90)fd(120)circle(50,225)penup()goto(0,0)pendown()left(135)fd(120)circle(50,225…

    2022年5月18日
    46
  • 微信web开发者工具详解_微信web开发者工具官方下载

    微信web开发者工具详解_微信web开发者工具官方下载一、微信小程序web开发工具下载地址 1.1 在微信公众平台-小程序里边去下载开发工具下载地址。1.2下载后安装一下就可以使用了:二、创建项目 2.1 微信小程序web开发工具需要扫码登陆,所以必…

    2025年5月27日
    4
  • ubuntu 设置不见了_微信莫名其妙的被注销了

    ubuntu 设置不见了_微信莫名其妙的被注销了        今天学习GTK+,所以下载了源码包,然后安装了必要的依赖,装好后,因为默认安装是安装在/usr/local/include/目录下了,为了编程的方便,所以就建立了符号链接到/usr/include/目录下。       一晃就是一天了,现在打开某些程序,发现怎么显示不对,跟我的gentoo安装了gnome时的默认界面一样,很朴素的样子,怎么回事?一看Firefox还好,还没

    2022年9月15日
    2
  • 前端框架bootstrap和layui有什么区别

    前端框架bootstrap和layui有什么区别做前端的小伙伴肯定都用过或听过Bootstrap和LayUi,小编我虽然不是专业的前端程序员,但是对于前端还是颇有研究,闲暇事情会经常研究各种前端框架的源码,一来可以借鉴优秀框架的思想,二来可以顺便学习可以提高自己,好了,不废话了。web前端全栈资料粉丝福利(面试题、视频、资料笔记、进阶路线)先看百度Bootstrap的定义Bootstrap是美国Twitter公司的设计师MarkOtto和JacobThornton合作基于HTML、CSS、JavaScript开发的简洁、直观、强悍的前端

    2022年6月25日
    45
  • Java 构造函数的详解

    Java 构造函数的详解我们人出生的时候,有些人一出生之后再起名字的,但是有些人一旦出生就已经起好名字的。那么我们在java里面怎么在对象一旦创建就赋值呢?1.构造方法的作用:构造方法作用:对对象进行初始化.如图:2.构造函数与普通函数的区别:(1). 一般函数是用于定义对象应该具备的功能。而构造函数定义的是,对象在调用功能之前,在建立时,应该具备的一些内容。也就是对象的初

    2022年7月8日
    23

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号