我正在制作一个可以在屏幕上左右滑动事实的应用程序,我的问题是我找不到默认类来执行此操作,相反,常用的非常简单的操作需要这个:
public boolean onTouchEvent(MotionEvent event)
{
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
x1 = event.getX();
break;
case MotionEvent.ACTION_UP:
x2 = event.getX();
float deltaX = x2 - x1;
if (Math.abs(deltaX) > MIN_DISTANCE)
{
Toast.makeText(this, "left2right swipe", Toast.LENGTH_SHORT).show ();
}
else
{
// consider as something else - a screen tap for example
}
break;
}
return super.onTouchEvent(event);
}
对于基本运动来说,或者同样困难和陌生的东西。
有更简单的方法吗?我觉得这种大规模操作系统的SDK没有一个默认类来处理这个问题是不可接受的,特别是因为有一个' ACTION _'除了左右之外几乎所有的东西。
答案 0 :(得分:3)
ViewPager
,HorizontalScrollView
或RecyclerView
可以处理许多高级用例。还有一个已弃用的Gallery
小部件。
GestureDetector
可以处理许多较低级别的用例,例如this SO question上的解决方案系列。但是,您必须准确定义什么构成“基本运动”(使用您的说法)。
还有old GestureLibrary
stuff,这是我多年没见过的,所以我不知道它是否仍然实用。
对于不同的方案也有many libraries that offer swipe options(例如,列表行中的滑动到关闭)。
将来,您可能会考虑提供更具体的方案(并减少抱怨),以获得更具体的建议。您对“在屏幕上左右滑动事实”的描述相当模糊。