gpt4 book ai didi

android - MonoDroid 滑动切换标签页

转载 作者:行者123 更新时间:2023-11-29 14:51:26 25 4
gpt4 key购买 nike

我搜索了几个小时以找到解决此问题的有效解决方案,并设法创建了一个。我希望有人也可以使用这个解决方案。

最佳答案

private GestureDetector _gestureDetector;
private GestureListener _gestureListener;

protected override void OnCreate(Bundle bundle)
{
_gestureListener = new GestureListener();
_gestureListener.LeftEvent += GestureLeft;
_gestureListener.RightEvent += GestureRight;
_gestureDetector = new GestureDetector(this, _gestureListener);
}

private void GestureLeft()
{
if (TabHost.CurrentTab - 1 < 0)
{
TabHost.CurrentTab = TabHost.TabWidget.TabCount - 1;
}
else
{
TabHost.CurrentTab--;
}
}

private void GestureRight()
{
if (TabHost.CurrentTab + 1 >= TabHost.TabWidget.TabCount)
{
TabHost.CurrentTab = 0;
}
else
{
TabHost.CurrentTab++;
}
}

public override bool DispatchTouchEvent(MotionEvent ev)
{
_gestureDetector.OnTouchEvent(ev);
return base.DispatchTouchEvent(ev);
}

GestureListener.cs(在网上找到这个解决方案,可惜忘记出处了,还是感谢原作者):

using System;
using Android.Views;

namespace Utils
{
public class GestureListener : Java.Lang.Object, GestureDetector.IOnGestureListener
{
public event Action LeftEvent;
public event Action RightEvent;
private static int SWIPE_MAX_OFF_PATH = 250;
private static int SWIPE_MIN_DISTANCE = 120;
private static int SWIPE_THRESHOLD_VELOCITY = 200;

public GestureListener()
{
}

public bool OnDown(MotionEvent e)
{
return true;
}

public bool OnFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
{
try
{
if (Math.Abs(e1.GetY() - e2.GetY()) > SWIPE_MAX_OFF_PATH)
return false;
// right to left swipe
if (e1.GetX() - e2.GetX() > SWIPE_MIN_DISTANCE && Math.Abs(velocityX) > SWIPE_THRESHOLD_VELOCITY && LeftEvent != null)
LeftEvent();//Toast.MakeText(view.Context, "Left Swipe", ToastLength.Short).Show();
else if (e2.GetX() - e1.GetX() > SWIPE_MIN_DISTANCE && Math.Abs(velocityX) > SWIPE_THRESHOLD_VELOCITY && RightEvent != null)
RightEvent();// Toast.MakeText(view.Context, "Right Swipe", ToastLength.Short).Show();
}
catch (Exception e)
{
// nothing
}
return false;
}

public void OnLongPress(MotionEvent e)
{
}

public bool OnScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
{
return true;
}

public void OnShowPress(MotionEvent e)
{
}

public bool OnSingleTapUp(MotionEvent e)
{
return true;
}
}

关于android - MonoDroid 滑动切换标签页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16777778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com