首页 > 代码库 > 从零开始学android<ImageSwitcher图片切换组件.二十六.>
从零开始学android<ImageSwitcher图片切换组件.二十六.>
ImageSwitcher组件的主要功能是完成图片的切换显示,例如用户在进行图片浏览的时候,可以通过按钮点击一张张的切换显示的图片,而且使用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;//初始化按钮 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++]);//设置图片 // 按钮事件监听 ButNext.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // TODO Auto-generated method stub imageSwitcher.setImageResource(Images[foot++]); MainActivity.this.CheckEnable();//设置按钮是否可用防止数组越界 } }); // 按钮事件监听 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); // 按钮可用 } else { this.ButNext.setEnabled(false); // 按钮不可用 } if (this.foot == 0) { this.ButPrevious.setEnabled(false); // 按钮不可用 } else { this.ButPrevious.setEnabled(true); // 按钮可用 } } }
+
Textswitcher与该组件的操作基本相同,不再做具体介绍,读者可自行练习
下节预报:
gallery拖拉组件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。