以动画方式切换View的组件 ViewFlipper 组件

本文介绍如何使用Android的ViewFlipper实现视图间的动画切换,包括水平移动与淡入淡出效果。通过设置不同的XML动画文件,实现触摸事件触发下的视图切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android.widget.ViewFlipper 类可以实现不同View 之间的切换

要实现View切换,关键是通过ViewFlipper 类的setInAnimation 和setOutAnimation方法设置下一个View进入和上一个View出去的动画

在本示例中,要为水平移动和淡入淡出效果分别编写两个动画文件。水平移动的动画文件内容如下:

translate_in.xml

<translate xmlns:android="http://schemas.android.com/apk/res/android"

        android:interpolator="@anim/linear_interpolator"  android:fromXDelta="320" android:toDelta="0"  android:fromYDelta="0"    android:toDelta="0"   android:duration="3000" />

translate_out.xml

<translate xmlns:android="http://schemas.android.com/apk/res/android"

        android:interpolator="@anim/linear_interpolator"  android:fromXDelta="0" android:toDelta="-320"  android:fromYDelta="0"     android:toDelta="0"   android:duration="3000" />

淡入淡出效果的动画文件如下:

alpha_in.xml

<alpha  xmlns:android="http://schemas.android.com/apk/res/android"  android:interpolator="@android:anim/accelerate_interpolator"      android:fromAlpha="0"   android:toAlpha="1"  android:duration="2000"  />

alpha_out.xml

<alpha  xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate|_interpolator"      android:fromAlpha="1"  android:toAlpha="0"  android:duration="2000" />

 下面是触摸事件方法的代码:

public boolean onTouch(View view, MotionEvent event)
 {
      switch (view.getId())
      {
            case R.id.imageview1:
             viewFlipper.setInAnimation(translateIn);
             viewFlipper.setOutAnimation(translateOut);
             break;
            case R.id.imageview2:
              viewFlipper.setInAnimation(alphaIn);
              viewFlipper.setOutAnimation(alphaOut);
              break;
           case R.id.imageview3:
               viewFlipper.setInAnimation(translateIn);
               viewFlipper.setOutAnimation(translateOut);
             break;
      }
  viewFlipper.showNext();
  return false;
 }

示意图  

具体代码请参见 ch11_viewflipper 工程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值