从零開始学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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ubuntu apache2配置详解(含虚拟主机配置方法)[通俗易懂]

    ubuntu apache2配置详解(含虚拟主机配置方法)[通俗易懂]在Windows下,Apache的配置文件通常只有一个,就是httpd.conf。但我在UbuntuLinux上用apt-getinstallapache2命令安装了Apache2后,竟然发现它

    2022年7月3日
    40
  • Nutch使用汇总

    Nutch使用汇总网上有好多的 Nutch 使用的文章 但其实只是几篇文章翻来覆去的拷贝而已 1 Nutch 初体验很经典 讲了 nutch 与 lucene 以及其他一些爬虫的比较 和建立一个抓取企业内部网 Intranetcraw 实例 但是可能是版本的问题 其中少了关键的一步 2 Tutorial 0 8 x nbsp 这里是官方的那个文档 补全了少的那一步 否则出现后果为 Fetcher se

    2025年6月14日
    0
  • vue响应式原理理解

    vue响应式原理理解要理解响应式原理,首先要理解两个问题,数据改变后,Vue是如何监听的,要通知哪些人然后进行界面的刷新首先来理解一下下面这这个监听数值改变与监听获取数据的函数,首先创建一个对象,然后这个对象就是用来被监听的,首先使用forEach来把对象里面所有的值取出来放到value这里,然后再defindeProperty里面重新定义,这个方法里面有一个set和get方法,分别是处理监听数据改变和数据被获取…

    2022年5月1日
    30
  • WEB框架本质和第一个Django实例

    Web框架本质我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端。这样我们就可以自己实现Web框架了。半成品自定义web框架可以说We

    2022年3月29日
    39
  • Android Hook技术详解

    Android Hook技术详解代理模式详解,动态代理原理分析,AndroidHook技术详解以及其在插件化,性能优化上的一些案例分析。

    2022年5月25日
    137
  • bat批量修改文件名_bat批量修改文件夹名称不成功

    bat批量修改文件名_bat批量修改文件夹名称不成功在测试的时候,经常会遇到修改host的情况,每次都打开host手动添加,很繁琐地,怎么写个批处理文件,双击下就把host修改了呢,请看下面代码:@echooffcolor0F@attrib-r”%windir%\system32\drivers\

    2022年10月9日
    0

发表回复

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

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