从零開始学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拖拉组件

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 【智能家居篇】wifi网络接入原理(上)——扫描Scanning「建议收藏」

    【智能家居篇】wifi网络接入原理(上)——扫描Scanning

  • vscode配置和快捷键

    vscode配置和快捷键以下内容转载自https://www.cnblogs.com/qianguyihao/archive/2019/04/18/10732375.html本文的最新内容,更新于2020-06-19。大家完全不用担心这篇文章会过时,因为随着VSCode的版本更新和插件更新,本文也会随之更新。本文的最新内容,也会在GitHub上同步更新,欢迎star。VSCode软件实在是太酷、太好用了,越来越多的新生代互联网青年正在使用它。前端男神尤雨溪大大这样评价VSCode:.

  • MYSQL 修改密码的几种方式「建议收藏」

    MYSQL 修改密码的几种方式「建议收藏」MYSQL修改密码的几种方式1、最简单的方法就是借助第三方工具NavicatforMySQL来修改2、用SETPASSWORD命令先登录MySQL输入命令mysql-uroot-

  • ubuntu降低内核版本后无网络_Ubuntu换内核为旧版

    ubuntu降低内核版本后无网络_Ubuntu换内核为旧版1、最近原来写的测试代码在Ubuntu18可以内核版本,在新的安装的Ubuntu20上无法运行,各种操作后想排除下是否是因为内核版本过高的原因,因此用到降低ubuntu内核版本的操作:原ubuntu18内核版本Ubuntu20内核版本2、首先通过apt-cachesearchlinux|grep5.4.0-80查看目前的版本3、然后输入下面命令进行安装:sudoapt-getinstalllinux-headers-5.4.0-80-generi…

  • CentOS 怎么设置某个目录包括子目录的写入权限 777呢「建议收藏」

    CentOS 怎么设置某个目录包括子目录的写入权限 777呢「建议收藏」chmod-R777文件夹例如:chmod-R777/varvar的权限就变成777,var下的所有子目录和文件权限都将变成777

  • arm与stm32的关系_STM32系列处理器常见型号与特性

    arm与stm32的关系_STM32系列处理器常见型号与特性ARM介绍1978年,奥地利籍物理学博士HermannHauser,和他朋友,一位英国工程师ChrisCurry,共同创建了一家名为“CambridgeProcessorUnit,CPU”的公司,中文字面意思就是“剑桥处理器单元”,主要从事研发当地电子仪器设备的业务,比如街头游戏机之类的。1979年,在经营逐渐进入正规后,原来的公司名不怎么合适了,那个年代喜欢找个吉祥物作为公司名字,比如Apple公司。这俩就以橡子为吉祥物,取名为“AcronComputer”,中文字面意思就是“橡果公

发表回复

您的电子邮箱地址不会被公开。

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