在活动中,我有以下内容:
var flipper = FindViewById<ViewFlipper>(Resource.Id.flipper); flipper.Touch += flipper_Touch;
触摸处理程序的基本实现如下所示:
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; } }
这允许我在不同的视图之间导航,但我想让它向左/向右滑动
我已经看到了一些关于如何使它工作的Java示例,但没有直接将它转换为c#的方法.
使视图滑动需要什么,有没有办法用XML定义动画?我能够使用XML中定义的动画和调用OverridePendingTransition使活动滑入和滑出,但我不知道如何应用知识在这里.
解决方法
This allows me to navigate between the different views but I’d like to
make it slide left/right
ViewFlipper通过其ViewAnimator类有一些方法来设置进出动作的动画,setInAnimation()
和setOutAnimation().这是在Android SDK中,但应该在MonoDroid中有对应(不幸的是我不熟悉,所以我可能是错的).为了获得所需的动画,只需使用上面的两种方法来设置所需的动画(xml文件或以编程方式构建的动画),然后像你当前那样调用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);