从零開始学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)
上一篇 2022年1月18日 下午10:00
下一篇 2022年1月18日 下午11:00


相关推荐

  • 最新最全的微信小程序入门学习教程,微信小程序零基础入门到精通

    最新最全的微信小程序入门学习教程,微信小程序零基础入门到精通从今天开始就来带领大家学习微信小程序了,只要你跟着我一步步来,相信你也可以上线一款属于自己的微信小程序一,认识小程序微信⼩程序,简称⼩程序,英⽂名MiniProgramMiniProgram,是⼀种不需要下载安装即可使⽤的应⽤,它实现了应⽤“触⼿可及”的梦想,⽤⼾扫⼀扫或搜⼀下即可打开应⽤1-1,微信小程序的优势1.微信有海量⽤⼾,⽽且粘性很⾼,在微信⾥开发产品更容易触达⽤⼾;2.推⼴app或公众号的成本太⾼。3.开发适配成本低。4.容易⼩规模试错,然后快速迭代。5.跨平台。

    2022年6月25日
    52
  • Linux 硬盘分区生效命令partprobe[通俗易懂]

    Linux 硬盘分区生效命令partprobe[通俗易懂]在Linux中使用fdisk命令进行分区时,有时会遇到“WARNING:Re-readingthepartitiontablefailedwitherror16:Deviceorresourcebusy.Thekernelstillusestheoldtable.Thenewtablewillbeusedatthenextreboot.”这种告…

    2022年10月21日
    4
  • Robo 3T 使用教程

    Robo 3T 使用教程这里写自定义目录标题欢迎使用 Markdown 编辑器新的改变功能快捷键合理的创建标题 有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中 居左 居右 SmartyPants 创建一个自定义列表如何创建一个注脚注释也是必不可少的 KaTeX 数学公式新的甘特图功能 丰富你的文章 UML 图表 FLowchart 流程图导出与导入导出导入欢迎使用 Markdown 编辑器你好 这是你第一次使用 Markdown 编辑器所展示的欢迎页 如果你想学习如何使用 Mar

    2026年3月18日
    2
  • inetaddress java_java中Inetaddress类

    inetaddress java_java中Inetaddress类InetAddress类InetAddress类用来封装我们前面讨论的数字式的IP地址和该地址的域名。你通过一个IP主机名与这个类发生作用,IP主机名比它的IP地址用起来更简便更容易理解。InetAddress类内部隐藏了地址数字。InetAddress类中的工厂方法InetAddress类没有明显的构造函数。为生成一个InetAddress对象,必须运用一个可用的工厂方法。工厂方法(factor…

    2022年6月23日
    21
  • Nginx域名重定向实现

    Nginx域名重定向实现网站的域名升级了 需要启用新的域名使用 但是用户却不知道 还可能使用旧的域名访问网站 需要把通过旧域名访问的来源 重定向到新的域名 语法 把当前域名的请求全部重定向到新域名 www lnmp comrewrite http www lnmp compermanent permanent 返回 301 永久重定向 浏览器地址栏会显示跳转后的 URL 地址示例配置 shop lnmp com 的请求全部重定向到 www lnmp com 中 server

    2026年3月17日
    2
  • trapz 负数_trapz

    trapz 负数_trapz概括 这道题是王冠吵同学的课后练习题 主要是关于 trapz 指导老师为魏老师 核苷酸抗代谢物 是一些碱基 氨基酸或叶酸等的类似物 它们以多种方式干扰或阻断核苷酸的合成代谢 从而进一步阻止核酸及蛋白质的生物合成 这些代谢物具有抗肿瘤作用 题目 trapz 解 采用梯形法求积分下面两种用法等效 h pi 200 t 0 h pi 2 y sin t cos 2 t z1 trapz t y z2 tr

    2026年3月20日
    2

发表回复

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

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