0
我想玩手势,但我无法让他们工作。MonoDroid手势不适合我
我有这个
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
namespace Myapp
{
[Activity(Label = "My Activity")]
public class AboutActivity : Activity
{
private TextView displayText;
private GestureDetector gestureScanner;
private GestureListener gestureListener;
protected override void OnCreate(Bundle bundle)
{
RequestWindowFeature(WindowFeatures.NoTitle);
base.OnCreate(bundle);
SetContentView(Resource.Layout.About);
displayText = FindViewById<TextView>(Resource.Id.Privacy);
gestureListener = new GestureListener(displayText);
gestureScanner = new GestureDetector(this, gestureListener);
}
public override bool OnTouchEvent(MotionEvent e)
{
return gestureScanner.OnTouchEvent(e);
}
}
public class GestureListener : GestureDetector.SimpleOnGestureListener
{
private readonly TextView view;
private static int SWIPE_MAX_OFF_PATH = 250;
private static int SWIPE_MIN_DISTANCE = 120;
private static int SWIPE_THRESHOLD_VELOCITY = 200;
public GestureListener(TextView view)
{
this.view = view;
}
public IntPtr Handle
{
get { throw new NotImplementedException(); }
}
public bool OnDown(MotionEvent e)
{
view.Text = "- DOWN -";
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)
Toast.MakeText(view.Context, "Left Swipe", ToastLength.Short).Show();
else if (e2.GetX() - e1.GetX() > SWIPE_MIN_DISTANCE && Math.Abs(velocityX) > SWIPE_THRESHOLD_VELOCITY)
Toast.MakeText(view.Context, "Right Swipe", ToastLength.Short).Show();
}
catch (Exception e)
{
// nothing
}
return false;
}
public void OnLongPress(MotionEvent e)
{
view.Text = "- LONG PRESS -";
}
public bool OnScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
{
view.Text = "- FLING -";
return true;
}
public void OnShowPress(MotionEvent e)
{
view.Text = "- SHOW PRESS -";
}
public bool OnSingleTapUp(MotionEvent e)
{
view.Text = "- SINGLE TAP UP -";
return true;
}
}
}
没什么每个触发器。
我想通了它为什么不能正常工作,这是因为我有一个滚动视图来包装我的布局,消耗所有的手势。所以现在我正试图解决这个问题。你会在哪里实现这个SetOnDoubleTapListener它只是在同一个文件中的另一种方法? – chobo2
是的,它可以在同一个类中实现。根据你的代码,你可以在GestureListener类中实现它。 –