在ViewFlipper的视图之间滑动动画

Tim*_*hyP 6 android android-animation android-layout xamarin.android

在活动中,我有以下内容:

var flipper = FindViewById<ViewFlipper>(Resource.Id.flipper);
flipper.Touch += flipper_Touch;
Run Code Online (Sandbox Code Playgroud)

触摸处理程序的基本实现如下所示:

float oldTouchValue = 0;

void flipper_Touch(object sender, View.TouchEventArgs e)
{
    var flipper = sender as ViewFlipper;
    switch(e.Event.Action)
    {
        case MotionEventActions.Down:
            oldTouchValue = e.Event.GetX();
            break;

        case MotionEventActions.Up:
            float currentX = e.Event.GetX();
            if (oldTouchValue < currentX)
            {
                flipper.ShowNext();
            }
            else if (oldTouchValue > currentX)
            {
                flipper.ShowPrevious();
            }
            break;      
    }
}
Run Code Online (Sandbox Code Playgroud)

这允许我在不同的视图之间导航,但我想让它向左/向右滑动

我已经看到了一些关于如何使它工作的Java示例,但没有直接将它转换为c#的方法.

使视图滑动需要什么,有没有办法定义animationin XML
我可以使用animations定义XML和调用来使活动滑入和滑出OverridePendingTransition,但我不确定如何在这里应用这些知识.

Luk*_*rog 17

这允许我在不同的视图之间导航,但我想让它向左/向右滑动

ViewFlipper已经通过其ViewAnimator类,一些方法来设置动画的进出动作,setInAnimation()setOutAnimation().这是在Android SDK中,但应该在MonoDroid中有对应(不幸的是我不熟悉,所以我可能是错的).为了获得所需的动画,只需使用上面的两种方法来设置所需的动画(xml文件或以编程方式构建Animation),然后showNext/Previous像你当前那样调用方法.

你甚至在Android SDK中有一些幻灯片动画,但我不知道它们是否存在于MonoDroid中.

更新:这些方法确实在Monodroid中可用,并且暴露如下:

//Using one of the built in animations:
flipper.setInAnimation(this, Android.Resource.Animation.SlideInLeft);
flipper.setOutAnimation(this, Android.Resource.Animation.SlideOutRight);

//Using custom animations defined in XML
flipper.setInAnimation(this, Resource.Animation.slide_in_right);
flipper.setOutAnimation(this, Resource.Animation.slide_out_left);
Run Code Online (Sandbox Code Playgroud)

  • 要内置动画,请在Java中使用`android.R.anim.slide_in_left` (4认同)