是否有可能在正常的Android活動中檢測到用戶左/右滑動?或者我必須使用SwipeView?檢測正常Android活動上的滑動
2
A
回答
2
如果你正在尋找一個Xamarin/C#示例
實施GestureDetector.IOnGestureListener
Activity
(或查看)並計算OnFling
方法中的觸摸方向:
[Activity(Label = "Swiper", MainLauncher = true, Icon = "@mipmap/icon")]
public class MainActivity : Activity, GestureDetector.IOnGestureListener
{
GestureDetector gestureDetector;
const int SWIPE_DISTANCE_THRESHOLD = 100;
const int SWIPE_VELOCITY_THRESHOLD = 100;
public bool OnDown(MotionEvent e)
{
return true;
}
public bool OnFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
{
float distanceX = e2.GetX() - e1.GetX();
float distanceY = e2.GetY() - e1.GetY();
if (Math.Abs(distanceX) > Math.Abs(distanceY) && Math.Abs(distanceX) > SWIPE_DISTANCE_THRESHOLD && Math.Abs(velocityX) > SWIPE_VELOCITY_THRESHOLD)
{
if (distanceX > 0)
OnSwipeRight();
else
OnSwipeLeft();
return true;
}
return false;
}
void OnSwipeLeft()
{
Button button = FindViewById<Button>(Resource.Id.myButton);
button.Text = "Swiped Left";
}
void OnSwipeRight()
{
Button button = FindViewById<Button>(Resource.Id.myButton);
button.Text = "Swiped Right";
}
public void OnLongPress(MotionEvent e)
{
}
public bool OnScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
{
return false;
}
public void OnShowPress(MotionEvent e)
{
}
public bool OnSingleTapUp(MotionEvent e)
{
return false;
}
public bool OnTouch(View v, MotionEvent e)
{
return gestureDetector.OnTouchEvent(e);
}
public override bool OnTouchEvent(MotionEvent e)
{
gestureDetector.OnTouchEvent(e);
return false;
}
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.Main);
gestureDetector = new GestureDetector(this);
}
}
2
與https://developer.android.com/training/gestures/detector.html
您可以在活動類實現GestureDetector.OnGestureListener和覆蓋onFling或根據onScroll
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
Log.d(DEBUG_TAG, "onScroll: " + e1.toString()+e2.toString());
return true;
}
@Override
public boolean onFling(MotionEvent event1, MotionEvent event2,
float velocityX, float velocityY) {
Log.d(DEBUG_TAG, "onFling: " + event1.toString()+event2.toString());
return true;
}
相關問題
- 1. 在ListView上檢測滑動
- 2. 設計滑動活動android
- 3. 在Android中檢測滑動區域
- 4. Android中的語音活動檢測
- 5. 檢測Android中的活動已關閉
- 6. 在Android中的活動中滑動
- 7. 滑動在Android中的活動
- 8. android:如何停止在android API 7上的新活動中滑動滑入?
- 9. 正確檢測Android中ViewPager中放置的GridView上的滑動操作
- 10. 檢測IIS活動
- 11. 在特定元素上的Android滑動檢測
- 12. Android:當活動返回到前一活動時檢測
- 13. 正常活動和標籤活動
- 14. 在Android活動中滑動面板
- 15. 如何在Android中滑動活動
- 16. android - 在活動之間滑動
- 17. 檢測在UINavigationBar中滑動
- 18. Android - 從libgdx活動更改爲「正常」活動
- 19. 檢測滑動手勢時,有一個滾動型的Android
- 20. Android上的活動
- 21. 如何檢測Android上的電話不活動
- 22. JQuery - 檢查滑動滑動時滑動
- 23. 檢測用戶活動
- 24. 檢測通信活動c#
- 25. 仿真器上的Android震動檢測
- 26. 保持活動在Android上正常運行並退出
- 27. 10px的滑下欄上的活動
- 28. 的Android左至右活動滑動動畫
- 29. 檢測iOS上的向上滑動手勢
- 30. 在活動之間滑動