- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 LinearLayout 上添加一个 fling Action 。为此,我使用了以下代码。
public class NewsActivity extends Activity {
..........
...........
private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
private GestureDetector gestureDetector;
View.OnTouchListener gestureListener;
@Override
public void onCreate(Bundle savedInstanceState) {
.....................
.....................
.....................
LinearLayout newDeailsBlock = (LinearLayout) findViewById(R.id.newdeailsblock);
// Gesture detection
gestureDetector = new GestureDetector(new MyGestureDetector());
gestureListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if (gestureDetector.onTouchEvent(event)) {
return true;
}
return false;
}
};
newDeailsBlock.setOnTouchListener(gestureListener);
}
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
try {
Log.d("move","Swipe test");
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) {
Log.d("move","Left Swipe");
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Toast.makeText(NewsActivity.this, "Right Swipe", Toast.LENGTH_SHORT).show();
Log.d("move","Right Swipe");
}
} catch (Exception e) {
// nothing
}
return false;
}
}
}
但它根本不工作 amd gestureDetector.onTouchEvent(event)
返回 false。我的代码有什么问题?
最佳答案
尝试让您的 Activity 扩展下面的抽象类,然后使用您想要的功能实现抽象方法 next()
和 previous()
。
public abstract class SwipeActivity extends Activity {
private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
private GestureDetector gestureDetector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
gestureDetector = new GestureDetector( new SwipeDetector() );
}
private class SwipeDetector extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// Check movement along the Y-axis. If it exceeds SWIPE_MAX_OFF_PATH, then dismiss the swipe.
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
// Swipe from right to left.
// The swipe needs to exceed a certain distance (SWIPE_MIN_DISTANCE) and a certain velocity (SWIPE_THRESHOLD_VELOCITY).
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
next();
return true;
}
// Swipe from left to right.
// The swipe needs to exceed a certain distance (SWIPE_MIN_DISTANCE) and a certain velocity (SWIPE_THRESHOLD_VELOCITY).
if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
previous();
return true;
}
return false;
}
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
//TouchEvent dispatcher.
if (gestureDetector != null) {
if (gestureDetector.onTouchEvent(ev))
//If the gestureDetector handles the event, a swipe has been executed and no more needs to be done.
return true;
}
return super.dispatchTouchEvent(ev);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
protected abstract void previous();
protected abstract void next();
}
关于Android onfling 概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7766966/
我有一个简单的列表 Activity ,我为每个列表项定义了 onTouchEventListener 类。 问题是 onFling 事件永远不会发生,而不是按照事件顺序发生:onDown,onSho
我想在 LinearLayout 上添加一个 fling Action 。为此,我使用了以下代码。 public class NewsActivity extends Activity { .
首先我是 android 新手,所以首先想到任何新手错误 我正在尝试在我的代码中添加一个 fling 函数。 public class MainGamePanel extends SurfaceVie
我正在尝试在我的应用程序中实现手势,但由于某种原因,没有调用 onfling()。我尝试阅读许多关于此的帖子并尝试修复我的代码,但它不起作用。下面是我的代码。请看: public class Main
我有一个 ViewPager,它包含一个 RecyclerView 我将一个 OnTouchListener 添加到 RecyclerView 中的 ImageView 的项目,尝试使用 Gestur
我的线性布局:main_linear_layout包含四个线性布局:ll1 ll2 ll3 ll4.每个LinearLayout 都包含Buttons。我正在尝试在 main_linear_layou
像这样的问题有很多,但大多数都是问如何将 GestureDetector 设置为 View。我已经这样做了,现在我想知道,android 没有提供任何让图像快速播放的功能。我遇到的问题是我不知道如何处
所以我正在开发一个应用程序,其中有一个栏,用户应该能够“拉开”。当用户向上滑动时它应该展开。我一直在考虑如何做到这一点。我知道我可能可以在布局上使用 GestureDetector 中的 OnFlin
我在这个 Android 应用程序上实现了一个 SimpleOnGestureListener,它是基本实现并且一切正常: 该类实现了 OnTouchListener,我将它设置为正确 View 的
我有一个 Activity,它实现了一个手势检测器来捕捉用户的快速输入以导航到其他屏幕。这工作正常 - 但是 - 我最近更新了一个派生自 BaseActivity 的类以添加一个 onClick 函数
更新:查看扩展问题的赏金。 我在 ListView 上设置了一个 GestureDetector。 ListView 是一个完整的 fragment ,来自窗口的一侧并部分覆盖另一个 fragment
所以,我已经关注了这个特定的线程(How to stop scrolling in a Gallery Widget?),但我无法让它正常工作。 我创建了一个扩展 Gallery 的自定义 MyGal
我有一个扩展 ListActivity 的类。此类显示一个 AbsListView,其中每行都填充了总线 ID 和总线名称...当我在...('onFling')上做滑动手势时,我尝试处理行的总线名称
这是我在 StackOverflow 上的第一篇文章!我有一个正在运行的后台服务,我想知道我是否真的可以模拟水平滑动触摸屏手势,而不是仅仅检测它被调用。 我可以弄清楚如何捕获此事件,但我想实际模拟触摸
我已经实现了 SimpleOnGestureListener.onFling(),但我必须非常快地挥动才能触发它。有什么办法让它更灵敏吗? 提前致谢... 最佳答案 触发 onFling() 事件所需
我有一个使用 GestureDetector 的应用程序,我正在用 onDown 和 onFling(又名 onUp)替换一些图像。然而,在某些情况下,不会调用 onFling 并且结果并不漂亮:)
我想在 ListView 上捕获事件 onFling。我的目标是仅当我不在 onFling 事件中时才在我的 ListView 适配器中从 Internet 加载图像。几个月前我找到了一个 fragm
我正在尝试编写一个程序来检测和处理手势。我设法使 onFling 和 onScroll 事件起作用(这些事件在 Activity 内部的监听器类中实现)。但是,每次我进行滑动 (onFling) 时,
我有一个可扩展 ListView 。我正在执行删除每个项目的向左滑动的 listItem。 我正在使用自定义适配器来填充 ListView 项。 public class InsightsListAd
我正在尝试检测 TextView 对象的 onFling 事件。下面的代码非常适合 onDown 事件,但是它无法获取 onScroll 或 onFling 事件。有什么指点吗? 谢谢 package
我是一名优秀的程序员,十分优秀!