Android实战简易教程<八>(ImageSwitcher用法实例)

ImageSwitcher 组件的主要功能是完成图片的切换显示,例如用户在进行图片浏览时,可以通过单击按钮逐张切换显示的图片,在进行切换时还可以加入一些动画效果。

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

android.widget
接口 ViewSwitcher.ViewFactory

包容类:
ViewSwitcher

 

public static interface ViewSwitcher.ViewFactory

Creates views in a ViewSwitcher.


 

方法摘要
 ViewmakeView() 
          Creates a new View to be added in a ViewSwitcher.
 

方法详细信息

makeView

View makeView()
Creates a new View to be added in aViewSwitcher.

返回:
a View

本接口中只存在一个makeView()方法,此方法的主要功能是返回一个View对象的多干设置参数。

下面看一下代码:

1.main.xml代码:

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:id="@+id/MyLayout"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     android:orientation="vertical" >  
  7.   
  8.     <ImageSwitcher  
  9.         android:id="@+id/imageSwitcher"  
  10.         android:layout_gravity="center"  
  11.         android:layout_width="wrap_content"  
  12.         android:layout_height="wrap_content" />  
  13.   
  14.     <LinearLayout  
  15.         android:layout_width="fill_parent"  
  16.         android:layout_height="wrap_content"  
  17.         android:orientation="horizontal" >  
  18.   
  19.         <Button  
  20.             android:id="@+id/btnPrevious"  
  21.             android:layout_width="wrap_content"  
  22.             android:layout_height="wrap_content"  
  23.             android:layout_weight="1"  
  24.             android:enabled="false"  
  25.             android:text="上一张" />  
  26.   
  27.         <Button  
  28.             android:id="@+id/btnNext"  
  29.             android:layout_width="wrap_content"  
  30.             android:layout_height="wrap_content"  
  31.             android:layout_weight="1"  
  32.             android:enabled="true"  
  33.             android:text="下一张" />  
  34.     </LinearLayout>  
  35.   
  36. </LinearLayout>  


2.MainActivity.java代码如下:

[java]  view plain copy
  1. package org.yayun.demo;  
  2.   
  3. import android.R.anim;  
  4. import android.R.integer;  
  5. import android.app.Activity;  
  6. import android.os.Bundle;  
  7. import android.view.View;  
  8. import android.view.View.OnClickListener;  
  9. import android.view.ViewGroup.LayoutParams;  
  10. import android.view.animation.Animation;  
  11. import android.view.animation.AnimationUtils;  
  12. import android.widget.Button;  
  13. import android.widget.ImageSwitcher;  
  14. import android.widget.ImageView;  
  15. import android.widget.ViewSwitcher.ViewFactory;  
  16.   
  17. public class MainActivity extends Activity {  
  18.     private ImageSwitcher imageSwitcher;  
  19.     private Button btnPrevious;  
  20.     private Button btnNext;  
  21.     private int foot=0;  
  22.     private int[] imgRes=new int[]{R.drawable.ispic_a,R.drawable.ispic_b,R.drawable.ispic_c,R.drawable.ispic_d,R.drawable.ispic_e,};  
  23.       
  24.     public void onCreate(Bundle savedInstanceState) {  
  25.         super.onCreate(savedInstanceState); // 生命周期方法  
  26.         super.setContentView(R.layout.main); // 设置要使用的布局管理器  
  27.     imageSwitcher=(ImageSwitcher)findViewById(R.id.imageSwitcher);  
  28.     btnPrevious=(Button)findViewById(R.id.btnPrevious);  
  29.     btnNext=(Button)findViewById(R.id.btnNext);  
  30.       
  31.     imageSwitcher.setFactory(new ViewFactory() {//设置转化工厂  
  32.           
  33.         public View makeView() {//覆写方法  
  34.             ImageView imageView=new ImageView(MainActivity.this);  
  35.             imageView.setBackgroundColor(0xFFFFFFFF);  
  36.             imageView.setScaleType(ImageView.ScaleType.CENTER);//居中显示  
  37.             imageView.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));//定义组件  
  38.             return imageView;  
  39.         }  
  40.     });  
  41.     imageSwitcher.setImageResource(imgRes[foot++]);//初始化时显示,必须放在工厂后面,否则会报NullPointerException  
  42.     imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));//设置动画  
  43.     imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));//设置动画  
  44.     btnPrevious.setOnClickListener(new OnClickListener() {  
  45.           
  46.         public void onClick(View v) {  
  47.             MainActivity.this.imageSwitcher.setImageResource(imgRes[foot--]);  
  48.             MainActivity.this.checkBtnEnable();  
  49.               
  50.         }  
  51.     });  
  52.     btnNext.setOnClickListener(new OnClickListener() {  
  53.           
  54.         public void onClick(View v) {  
  55.             MainActivity.this.imageSwitcher.setImageResource(imgRes[foot++]);  
  56.             MainActivity.this.checkBtnEnable();  
  57.               
  58.         }  
  59.     });  
  60.   
  61.     }  
  62.   
  63.     protected void checkBtnEnable() {//判断按钮可用状态  
  64.         if(this.foot<this.imgRes.length-1){  
  65.             this.btnNext.setEnabled(true);  
  66.         }else{  
  67.             this.btnNext.setEnabled(false);  
  68.         }  
  69.         if(this.foot==0){  
  70.             this.btnPrevious.setEnabled(false);  
  71.         }else {  
  72.             this.btnPrevious.setEnabled(true);  
  73.         }  
  74.           
  75.     }  
  76. }  


3.运行实例如下:

总结

1.不设置setFactory()方法会出现NullPointerException错误。

2.设置动画的方法:setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));

3.自定义判断按钮是否可用的方法checkBtnEnable()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值