ViewFlipper实现简单的幻灯片效果

屏幕切换指的是在同一个Activity内屏幕见的切换,最长见的情况就是在一个FrameLayout内有多个页面。


有个android.widget.ViewAnimator类继承至FrameLayout,ViewAnimator类的作用是为FrameLayout里面的View切换提供动画效果。该类有如下几个和动画相关的函数:
l setInAnimation:设置View进入屏幕时候使用的动画,该函数有两个版本,一个接受单个参数,类型为android.view.animation.Animation;一个接受两个参数,类型为Context和int,分别为Context对象和定义Animation的resourceID。
 
  • setOutAnimation: 设置View退出屏幕时候使用的动画,参数setInAnimation函数一样。
  • showNext: 调用该函数来显示FrameLayout里面的下一个View。
  • showPrevious: 调用该函数来显示FrameLayout里面的上一个View。
一般不直接使用ViewAnimator而是使用它的两个子类ViewFlipper和ViewSwitcher。ViewFlipper可以用来指定FrameLayout内多个View之间的切换效果,可以一次指定也可以每次切换的时候都指定单独的效果。该类额外提供了如下几个函数:
 
  • isFlipping: 用来判断View切换是否正在进行
  • setFilpInterval:设置View之间切换的时间间隔
  • startFlipping:使用上面设置的时间间隔来开始切换所有的View,切换会循环进行
  • stopFlipping: 停止View切换
下面看看ViewFlipper实现的效果吧:
                                                             

package com.shao.flipper; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.AnimationUtils; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import android.widget.ViewFlipper; public class FlipperActivity extends Activity { public final static int VIEW_TEXT = 0; public final static int VIEW_IMAGE = 1; boolean autoflag = true; Button previous,next,autoStart; ViewFlipper flipper; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initiaView(); //添加视图 flipper.addView(addTextByText("动画开始.....")); flipper.addView(addImageById(R.drawable.photo1)); flipper.addView(addImageById(R.drawable.photo2)); flipper.addView(addImageById(R.drawable.photo3)); flipper.addView(addImageById(R.drawable.photo4)); flipper.addView(addImageById(R.drawable.photo5)); flipper.addView(addImageById(R.drawable.photo6)); flipper.addView(addImageById(R.drawable.photo7)); flipper.addView(addImageById(R.drawable.photo8)); flipper.addView(addTextByText("动画结束.....")); } private void initiaView(){ previous = (Button) findViewById(R.id.previousButton); next = (Button) findViewById(R.id.nextButton); autoStart = (Button) findViewById(R.id.autoButton); flipper = (ViewFlipper) findViewById(R.id.flipper); flipper.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in)); flipper.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out)); previous.setOnClickListener(listener); next.setOnClickListener(listener); autoStart.setOnClickListener(listener); } private OnClickListener listener = new OnClickListener(){ public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()){ case R.id.previousButton: flipper.showPrevious(); break; case R.id.nextButton: flipper.showNext(); break; case R.id.autoButton: if(autoflag){ //自动播放 flipper.setAutoStart(autoflag); flipper.startFlipping(); autoStart.setText("停止"); autoflag = false; }else{ //取消自动播放 flipper.stopFlipping(); autoStart.setText("开始"); autoflag = true; } break; }//switch }//onClick };//OnClickListener public View addTextByText(String text){ TextView tv = new TextView(this); tv.setText(text); tv.setGravity(1); return tv; } public View addImageById(int id){ ImageView iv = new ImageView(this); iv.setImageResource(id); return iv; } }

OVER !

转载于:https://www.cnblogs.com/android-html5/archive/2011/07/21/2534130.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值